# SKYVVA Documentation — Full Corpus Source: https://help.skyvva.com Generated: 2026-06-12 Total articles: 1582 This file contains the full SKYVVA documentation corpus as plain markdown, intended for AI assistants to ingest and ground answers in. Each article is preceded by a metadata block. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: (General) Title: SKYVVA Administration Guide Slug: skyvva-administration-guide-v2-41-lightning URL: https://help.skyvva.com/#article/skyvva-administration-guide-v2-41-lightning ================================================================================ # SKYVVA Administration Guide This guide gives you an overview of the administration task you have to carry out to maintain the SKYVVA software. You will need, for example, to upgrade the SKYVVA software from an old to a new version or you want to set up your test system from the development instance. Another housekeeping job is, for example, cleaning the messages and logs to reduce the database spaces. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is SKYVVA? Title: 1. What is SKYVVA? Slug: install-skyvva URL: https://help.skyvva.com/#article/install-skyvva ================================================================================ # 1. What is SKYVVA? #### #### Introduction **SKYVVA** available in Enterprise, Performance, Unlimited, Developer, and Database.com Editions **SKYVVA** is a client application for the bulk import or export of data. Use it to insert, update, delete, or export Salesforce records. When importing data, Data Loader reads, extracts, and loads data from comma-separated values (CSV, XML) files or from a database connection. When exporting data, it outputs CSV, XML files. **SKYVVA** integration app is the act of combining different cloud-based systems into an integral whole. The term may also refer to joining cloud-based systems with on-premises systems. The ultimate goal of cloud integration is to connect the distinct elements of various cloud and local resources into a single, universal environment that allows administrators to seamlessly access and manage applications, data, services and systems. #### How SKYVVA Integration app works There is no single means of implementing **SKYVVA** integration app, but there are several common concepts to consider. **For example**, an IT team can achieve **SKYVVA** integration app using mediation or federation. Mediation works between applications, the **SKYVVA** integration app platform recognizes an event in one application and then triggers a response that is sent to another connected application. By comparison, federation acts as a front end for two or more federated applications where the **SKYVVA** integration app platform can intercept and process events from outside of those applications and trigger corresponding actions. It's also possible to combine these two approaches so mediation handles the actions between applications and federation handles the actions from outside of the connected applications. **SKYVVA** integration app can function **asynchronously** or **synchronously** depending on the communication taking place. **Asynchronous** integration communicates data and commands without having to wait on a response from the receiving application. This prevents unnecessary delays in sending or originating data because it does not need to wait for the receiving or target application to respond. **Synchronous** integration will wait for a response from the receiving application, which ensures the applications are fully synchronized before continuing. #### SKYVVA Integration platforms Commonly use adapters or connectors, which are **SKYVVA** software modules intended to interact with specific business applications. Thus, a **SKYVVA** integration platform can implement an **Agent** that handles security and authentication, while specific adapters accommodate the applications being integrated. The connector performs the communication and notifications. ![](../images/2018/10/Bild-16.png) Adapters can be for specific applications, such as **SAP**, or can be vendor-neutral, using standard communications protocols, such as simple mail transfer protocol (**SMTP**) message exchanges, simple object access protocol (**SOAP**) messaging, application programming interfaces (**APIs**) and the Java connector architecture (**JCA**). For data integration, **SKYVVA** integration platforms commonly use an application independent data format, such as extensible markup language (**XML**). Each adapter will translate the application's specific format to the independent format before it performs any translations or conversions, and can then exchange that common data with the receiving application. #### Benefits of SKYVVA Integrating App **SKYVVA** Integration App is a technology in which user can shared software’s, information, and resources can be accessed through multiple devices over a network, usually the Internet. It allows the use of cloud applications without the hassle of installation and access personal and business files from any location through remote Internet access. This technology can improve computing efficiencies by centralizing storage, bandwidth, memory and processing. **SKYVVA** is basically a physical location where IT resources such as operating systems, networks, computer hardware, databases, and storage and software applications can be stored and accessed instantly through an Internet connection. The **SKYVVA** allows incomparability, real-time information exchange and agility making it a better choice for companies than just on-premise applications. To draw the maximum benefit from the **SKYYVA**, it is desirable to implement cloud computing integration of the multiple enterprise applications needed for various business processes in an organization. This helps to configure multiple on-premise or cloud applications to share data over the cloud. ![](../images/2018/10/0.jpg) **Up-to-date Information:** As all the applications on the **SKYVVA** are in-sync with each other, the end-users are able to fetch the most recent data or information related to various activities. A change made by one user reflects on another application almost instantaneously. **Improved functioning:** Changing all the manual segments to automated ones improves the accuracy level of various operations. This facilitates in a friction-less system-to-system process automation and eventually improves the overall efficiency of information sharing. **Streamline business goals:** Integration of businesses on **SKYVVA**, lines up the various aspects of a business like achievement or eCommerce management, logistics etc. A clear projection of the various entities can be drawn in the perspective of workforce. **Safe:** Username & password is allocated to each and every user in order to verify themselves to gain access to **SKYVVA**. Set of security protocols are also followed so that the information can’t be modified/altered by someone who doesn’t have the access to do so. **Flexibility and Scalability:** Enterprise applications and infrastructure’s integration with the **SKYVVA** facilitates a simple solution for organizations to upgrade or downgrade the version as per business requirements. This helps businesses to maintain the cost of various operations related to different projects or tasks. **Higher availability:** **SKYVVA** integration app provides higher availability of different resources to the end users. As all the services are hosted on a cloud, it improves the efficiency of the organization’s infrastructure. Since only an internet connection is needed to access this cloud, there is no limitation on boundaries or on-premises flexibility. ![](../images/2018/10/Screenshot-339.png) After installation how **SKYVVA** managed package look like, it contains Package Name, Publisher, Version Number, Namespace Prefix, Tabs, Objects and many more. ***We listen. Over the last decade, we’ve built our business by meeting organizations where they are—we solve the problems that matter to you, regardless of how simple or complex they may be*****.** ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an integration? Title: 1. What is an integration? Slug: integration URL: https://help.skyvva.com/#article/integration ================================================================================ # 1. What is an integration? In SKYVVA you create an interface for different purposes. Normally the company has different and many interfaces to exchange data between existing applications. You could have integration to connect SAP, Google or eBay to Salesforce. If you put all interface into one single view you would lose easily the overview. Therefore, the best approach is to create a logical folder or group to hold an interface belonging to the same specific business context. SKYVVA integration is such a concept to create a container or folder to keep related interface together. Therefore, in this example, you can create an integration with the name "Salesforce SAP Integration” in which you create all interfaces related to the SAP connection. Another integration name could be "Salesforce-Google Integration" to hold all interface related to Google business. Another good use for creating different integration and not only having to put everything together is for training purposes. Therefore, you can create in your company different integration for different training purposes. One integration is for the real business and another integration is for training so you do not mess up the interfaces between training and production integration. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 1. What is an interface? Slug: interface URL: https://help.skyvva.com/#article/interface ================================================================================ # 1. What is an interface? An Interface is the second main object in SKYVVA after the integration. The interface describes the structure of data to exchange between Salesforce and other applications. It has other property which defines the processing mode e.g. synchronous or asynchronous, batch or bulk, etc. #### Important attributes to be considered while creating an Interface #### **Fields ** **Description** Name Mandatory field based on which interface is created. Status You should always set the status to deployment to make sure the interface activated. Sequence The sequence is automatically incremented as and when you create a new interface. Only 2 digits are accepted, which means the max value is 99. Adapter Select a corresponding adapter based on your requirement to connect to a legacy system or homegrown database or CSV file, let us say if you want to connect to the database, you need to select related Jdbc/Odbc Adapter. Source Name For inbound scenario, always a sObject name for ex: Account since we are either inserting or updating the SObject in salesforce. Type It could be Inbound or Outbound based on your requirement, Inbound is generally External system to SFDC and Outbound is from SFDC to any external legacy or homegrown systems. Operation Type Select the operation based on the Type. If you select the Type Inbound then Operation Type could be Upsert, Update, Insert, and Delete. If you select the Type Outbound then you must select the operation type: none or upsert Connect with Middleware Mainly used if you are connecting to any legacy system through middleware.  For instance, if you want to connect to SAP through PO we can set this flag. MetaData Provider Specify the Provider where the message type belongs to. Processing Mode You can select the mode either synchronous or Asynchronous depending on business logic. Bulk Mode If this flag is checked, then the interface will run in a bulk mode using Salesforce BULK API. Batch Mode If this flag is checked, then batch processing activated and messages processed in bulk. Typically, baskets have created in SKYVVA. Repository Select the repository, which contains the message type to be used for the interface. This field is a control field for selecting the message type. If don’t set all message type from all repository is listed which is huge. Search in Source/Target Message Type The message type from the iRepository. You need to define first a message type in the iRepository. For the inbound interface, it is used as the source type. For outbound interface as target type. Description To give a meaningful description of your interface. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Important thing to note, only outbound interface requires an adapter. For the outbound scenario, it could be a sObject name or IDoc-Bapi name or Database name or Filename based on the requirement. Operation Type – ‘Query’ works for both directions ‘Inbound’ as well as ‘Outbound’ [/su_box] ** Interface List** The interface List includes operations for the following: Positional access — manipulates elements based on their numerical position in the list. ![](../images/2018/10/9-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Workflow Title: 1. Workflow Slug: workflow URL: https://help.skyvva.com/#article/workflow ================================================================================ # 1. Workflow Workflow is a filtered message condition to do integration base on a series of workflow rules. It provides the condition to one or many interfaces. It defines the condition that checks true or false on the statement. For example, Users have one integration and have two interfaces such as Account and contact. If Workflow Account is false will check workflow Contact then it is false too. It will not do both integrations. If Account is true, it will do the integration and check contact too. Contact is false, so it only does Account. ![](../images/2018/10/1-9.png) **The main parameter of workflow:-** **Functions/Buttons name** **Description** Processing Mode Contain 2 modes:- - Pass all message to the next step (Default) - Pass only matched message to the next step Runtime Behavior Contain 3 modes:- - Continue when an error occurred. - Stop when an error occurred. - Rollback when an error occurred. Action when all Conditions not met Contain 5 modes:- - Set Message Status to 'Pending'. - Update Message status to 'Cancelled'. - Update Message status to 'Completed'. - Update Message status to 'New'. - Delete Message. Selected Source Interface & Number of Condition - Name of source interface that we clicked on. - Number of workflow conditions that we have created to specify the source interface. New IWorkflow Condition Click on this button to create a new workflow condition. Refresh Click on this button to Refresh the workflow screen. (i.e. After deleted a condition or reordering them) Reorder To reorder the condition, which one you want to execute first. Delete To delete the condition. Save Settings To save the three workflow settings. Import and Export IWorkflow User need to add the import, export, and transport to other org workflow functions in the workflows screen to make it easy and friendly for the user can back up, restore, or transport to another org. **Create a workflow ** After getting to know some rules of workflow it will be easy for you to create it. To create the workflow, there are some steps must be followed: - Open Integration Detail page - Click on Workflows tab - Select the source Interfaces. - After clicking on Interface, the screen will look the same as shown in the picture given below. ![](../images/2018/10/12.png) - Choose Processing Mode. - Choose Runtime Behaviour. - Choose Action when all Conditions not met. - By clicking on New IWorkflow Condition, we can see the screen as shown below. ![](../images/2018/10/nwf-2.png) - We can build condition in the condition builder as per our requirement. - We can create a New Target in Target interface as shown in the picture given below:- ![](../images/2018/10/12.1.png) - In this way, we can create a workflow. **Delete a workflow** To delete Workflow you can click on the "Delete" button as the screenshot below. ![](../images/2018/10/nwf2.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Transporting of SKYVVA object Title: 1. Transporting of SKYVVA object Slug: transporting-of-skyvva-object URL: https://help.skyvva.com/#article/transporting-of-skyvva-object ================================================================================ # 1. Transporting of SKYVVA object #### Indroduction In this unit, we will see how we can transport integration or interface. So basically, we have two options one is Backup & Restore, and another one is using the Transport routes. Both the functionality have their advantages. - **Backup & Restore:** **Advantages:** Simplicity: Backup & Restore is often a straightforward process. - Quick Recovery: In case of failures or issues, the user can quickly restore the system to a known good state. - Suitable for smaller setups or scenarios where data consistency is critical. - **Considerations:** Downtime: Depending on the backup's size and the org's complexity, restoring may require downtime. - **Transport Routes:** **Advantages:** Transport routes allow for more control over the objects being transported. - Better suited for large-scale and complex integration landscapes. - Transport routes often involve version control, helping to manage changes systematically **SKYVVA Integration Application:** - **SKYVVA** is known for providing integration solutions on the Salesforce platform. - It often involves the exchange of data between Salesforce and other systems. - The choice between Backup & Restore and Transport routes may depend on the specific requirements and the scale of the integration project. #### Restore and Backup of an integration - Firstly, we will understand that when we need to restore and back up an integration, for example, when setting up a test or production instance from your development instance. When you restore and backup on the integration level every object belonging to an Integration will be restored and backup e.g. all interfaces, adapters, etc. If you do not want the whole objects but only some interfaces, you have to Restore and backup on the interface level. - We do not recommend restoring, or backup the outbound adapter since the physical data like URL, user, and password is different, and therefore it makes no sense. On the test and production instance, you will have a different URL, user, and password. **Backup an integration ** - Navigate to the tab "Integration" and select the integration you want to restore e.g. "Account". - Click on the button "Backup Integration". ![](../images/2018/10/image_2024_01_16T15_18_30_191Z.png) - We can save the exported file. As shown below. ![](../images/2018/10/7-9.png) - Click on the button "Save" to save the Backup file to your local PC. - Now you can restore this file into a new integration. **Restore an integration ** - In your target instance, open the tab "Integration” and click on “Restore Integration”. ![](../images/2018/10/image_2024_01_18T14_27_15_987Z.png) - Click on the button "Upload Files" to restore the integration you have exported before. - Browse your file and open it. ![](../images/2018/10/9-7.png) - Now click on the button "Upload" then select your Integration and click on “Import”. ![](../images/2018/10/10-7.png) - The import process is running asynchronously in the background. Just wait for a few seconds and open again the tab "Integration Admin" ![](../images/2018/10/11-5.png) - To monitor the progress of the import you can look into the apex job monitor. If the import has been done successfully, you will see this line in the apex job monitor. ![](../images/2018/10/12-6.png) #### Advantage: The advantage of having backup and restore integration files is that we can easily reuse those files. It's like a backup. So whenever we need that integration we can import it in our org. #### Transport to other org directly using Transport Route In the picture given below, we will backup the integration of ‘Accounts’ from one org to another. As we can see here we have export integration from the sandbox org and import it into production org directly using the transport route. ![](../images/2018/10/image_2024_01_18T14_20_59_950Z.png) **Steps to be followed to achieve backup-restore functionality(Export to other org)** **Step 1: **Create a Remote Site Setting in the source Organisation. (SendersOrg) - Go to Setup - Enter remote site settings in the quick-find box - There are 2 remote site settings to create. Login Url: [https://login.salesforce.com](https://login.salesforce.com) (Production) or [https://test.salesforce.com](https://test.salesforce.com) (sandbox) - Target Org Url: [https://ap5.salesforce.com](https://ap5.salesforce.com) (sample) (Classic URL) - Remote site settings for Login Url. Check the picture given below. ![](../images/2018/10/T.R.png) - Remote site settings for Target Org Url(Classic URL). Check the picture given below. ![](../images/2018/10/T.R7-2.png) - Hence both the remote site settings are created. **Step 2:** **Create a Connected App in Source Organization(Receivers org)** - Go to Setup - Enter App Manager in the quick find box - Click on New Connected Apps ![](../images/2018/10/transport2.png) - Please, add **Full Access** to **Selected Oath Scopes**. ![](../images/2018/10/T.R1.png) ![](../images/2018/10/T.R2.png) - In the connected app, you will get the **Consumer Key** And **Consumer Secret**. And use these values to create a Transport Route. **Step 3:** **Create a Transport Route(Senders org)** - Click on the Integration Cloud Tab - Open Transport Route - Click on New - Fill all the fields - Enter Consumer Key and Consumer Secret of Target org. - Check the details page as shown below. - Username, password, and security token we will enter of target org. Check the picture given below. ![](../images/2018/10/T.R3.png) **Step4: Transport Route** - Go to the Integration Cloud Tab - Integration - Select the Integration that we want to export - Click Transport To Other Org. ![](../images/2018/10/image_2024_01_16T14_46_59_605Z.png) - Choose Transport Route and Click Transport. ![](../images/2018/10/image_2024_01_16T14_51_04_498Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you do not see the Export To Other Org button, you need to edit the layout on SKYVVA__Integration__c SObject. For export other SKYVVA SObjects like IStructure, IMapping, IChained, IWorkFlow, IForeign Key, etc. You need to edit the layout on SKYVVA__Interface__c Sobject to add the button Export To Other Org into the related List. All SObjects that you export will be overridden on Target Org.[/su_box] - In the Target Organization, there is the same Integration. ![](../images/2018/10/image_2024_01_16T14_54_07_021Z.png) #### Advantage: The advantage of using the Transport route is that we can send more than one integration at a time. And most importantly we can directly send it to the other org. #### Summary The SKYVVA Integration application streamlines the transportation of objects by enabling seamless transfer of integration components between Salesforce environments. This functionality ensures efficient migration of integration metadata, configurations, and custom objects, promoting consistency and reducing manual effort during deployments and updates across different Salesforce instances. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 1. Mapping Slug: mapping URL: https://help.skyvva.com/#article/mapping ================================================================================ # 1. Mapping After you use the Mapping tool to define and configure a transformation's source and target, the Mapping screen appears. It is in this screen where you establish a relationship between the appropriate fields and/or records (also known as data elements or elements) of your source and target. #### Mapping Mapping is the process of selecting which source data element relates to which target data element. To do the integration for a specific interface, it is required to have a single External ID mapping, through which the data sent from the external system goes to a correct sObject record on Salesforce. There are three ways of mapping rule: - Flat: one – one mapping - Formula: complex mapping rules - Hierarchical:  Tree mapping #### Mapping Tool SKYVVA's Mapping tool is a tool to map other system objects and fields with the SFDC object field. A mapping is a collection of key-value pairs where each unique key maps to a single value. Here we will map source fields with target object fields. Mapping Tool (Drag and Drop/ Auto Mapping) Two-Way to do mapping is to use Mapping tool at the interface detail page to do mapping for the interface integration: - Drag and Drop: From Source Definitions to sObject Field: Drag the desired element in the **Source**  pane and drop to the corresponding **target data element** in the Target  pane. - Auto Mapping: Auto-mapping by clicking button Auto Mapping in the mapping tool.  Map all fields, which have the same name and do node by node. - The mapped relationship appears in the down section of mapping tool. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - To do auto mapping, we need to open the tree node both source and target first. After that, we click button Auto Mapping, so it will auto-create mapping on each leaf node, which has the same, name and writable. - When using a formula for a child field and inside that formula, we need to refer to the parent we need to create the field with full reference from child to parent. **Optional:** If you need to manipulate the value of the source data element relative to the target data element, click the **Formula checkbox **to launch the Formula Builder - Both the query editor and from the mapping of the SOQL statement can be overwritten. The user has both ways to change the SOQL using the query editor or the mapping by drag&drop in the graphical mapping screen. From both sides, we can overwrite each other the SOQL and the field mapping in the data mapping section have to be adjusted accordingly.[/su_box] **Graphical Mapping Editor** ![](../images/2018/10/2019-09-24_14-55-06.png) [su_box title="Warning" box_color="#F7DC6F" title_color="#000000"] - The mapping editor is removed from the interface screen to have as an own screen. - Some button like Save and Cancel has to be taken out from the data mapping section and put in the global section of the new screen. - When save the screen is not close but remains open but gets refreshed. The user can still change the mapping. Only after he closes the screen it will return to the interface screen.[/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 1. Batch Processing Slug: batch-processing URL: https://help.skyvva.com/#article/batch-processing ================================================================================ # 1. Batch Processing Batch Processing uses for running batch jobs. It has more capability than synchronous and you can check job monitoring. Records have more than 200 but less than 5000, so we use batch processing. It can store many records in one batch, and you can set the time interval in batch processing scheduler of Skyvva to run anytime that you want. #### Priority Handling The priority handling is based on the interface group and not on the interface itself. When you define an interface group, e.g. IG_A you have chosen the priority e.g. High, Medium or Low. Both Schedulers (attachment process and attachment reprocess scheduler) works with a configuration table for priority handling. The table is set the default to this value: ![](../images/2018/10/1-25.png) The configuration table for the priority handling looks like this: ![](../images/2018/10/2-24.png) The number specified in this table is the ratio between the priorities class High, Medium and Low. We use this number as a ratio because the processing of the attachment with the scheduler is done by the apex job. The maximum apex job size you can use at a given time is 5. Therefore, the number for the priority class High is set to 5. For medium, we have chosen the number 3 and for Low 1. Thus, we have a ration like 1/5 for Low, 3/5 for Medium and 5/5 for High. ![](../images/2018/10/3-22-300x69.png) The priority-handling algorithm is a weighted round robbing based on the priority ratio. To enable a weighted round robbing logic we have defined a so-called priority counter which is set dynamically by the processing of the attachment. Whenever data from a queue/interface group is processed the appropriate counter will be increased. ![](../images/2018/10/4-21.png) To understand the logic of the processing based on the priority ration let us look to this example. The queue type is EO. The package size was not defined. Skyvva default interface group is not used. We have defined each interface as a separate interface group. ![](../images/2018/10/5-19.png) We have 3 High interface group, 2 Medium interface group, and 2 Low interface group. ![](../images/2018/10/6-19.png) Here is the initial state before the scheduler run. The counter is still at 0-0-0 meaning High = 0, Medium = 0 and Low = 0. The scheduler is scheduled to run every 2 minutes. After the first scheduler round/run, it looks like this: ![](../images/2018/10/7-17.png) What happened now? While the scheduler run, we still have the 5-apex job available at that moment. Therefore, we can parallel the processing and use the 5-apex job at one time to process the interface group/queue. Each apex job that is used to process the interface group e.g. to process the data package of the interface group is called a "Worker". The scheduler is called the "Scheduler" and do not post the data. Its task is only to distribute the task to the worker. The worker will be posting the data into the application. Whenever a worker is running, it will increase the counter of the appropriate priority class. Imagine that the first worker/apex job process the interface group "Opportunity_Balint" from line 13 in the above table. Then it increases the counter for the priority High from 0 -> 1 because the interface group/queue is of priority High. The next worker will process the interface group/queue "Lead_Balint" and again increase the counter of the priority class High from 1 -> 2. The next worker will process the interface group/queue "Product_Balint" and increase the counter of the priority class High from 2 -> 3. The next worker will process the interface group/queue "Case_Balint" and therefore set the priority class Medium from 0 -> 1. Note that the processing depends on the data existing in the working basket. Because there are no more data from priority class High the next priority is Medium and not Low. Therefore, Medium is processed before Low. The next worker will process the interface group/ queue "Contact_Balint" and increase the priority class Medium from 1 -> 2. Now all 5 workers/apex job has done their work and coz. We do not have more apex jobs available than the maximum number of 5 the processing of the first round is done. For further processing, we have to wait for the next scheduler run, which will be in the next 2 minutes. Here the result of the second scheduler run/round. ![](../images/2018/10/8-16.png) After the first scheduler run, the counter stand was 3-2-0. The second scheduler runs pick now the data of the priority class Low because in the basket there are no more data from priority High or Medium. If there were still data from priority, High or Medium than the second will first process those data before processing data from priority Low. The interface group/queue "Account_Balint" is now processed and the counter is set for the priority Low from 0 -> 1. e.g. the total counter stand is 3-2-1. To summarize the general logic of the priority-based round robbing scheduling we have seen is that first the data of priority High will be processed before Medium and Medium before Low. Imagine further that we still have data to process and that at a given time we increase the counter for each priority class High, Medium and Low to its maximum number e.g. 5-3-1. This case means that data of each priority has been processed according to the ratio definition based on the ratio table above. In this situation, the counter is reset to the initial value 0-0-0 so that the processing can be rescheduling again with the initial stand. This is necessary because we want that each priority also priority Low will be processed even there are many data from class High. Therefore, this algorithm is a weighted round robbing scheduling and not an absolute round robbing algorithm. Imagine that you have 100 % of the data in the working basket. This could be 100, 2500, 124.312, ... attachments with different priority residing in the working basket. Then over time with this algorithm, we ensure that at least 10% of priority Low will also be processed and not 0 %. However, most data will be data from priority High and Medium, which will have been processed. This is the feature of priority based handling for processing interface group/queue. With this feature, you are able to define the priority for your business data and ensure that very important data will be posted before low important data. The priority-based handling feature only applied for the processing of the interface group/queue within an integration. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Bulk Processing Title: 1. Bulk Processing Slug: bulk-processing URL: https://help.skyvva.com/#article/bulk-processing ================================================================================ # 1. Bulk Processing Bulk Processing uses for running attachment as batch too. It has more ability than synchronous, batch and running with huge records at high speed. The Records have more than **5000**, so user uses with bulk processing. It can contain many records in an attachment, and the user can set the time interval in bulk processing scheduler of **SKYVVA** or **Agent Scheduler** to run anytime that you want. However, there are two options of bulk processing which is including **SKYVVA** bulk and **SFDC** bulk. The following section will be explained more detail about these two modes. #### SKYVVA Bulk Interface Processing **SKYVVA** Bulk Interface Processing is an interface uses for running bulk attachments. When the user has much data, using Bulk Interface Processing is necessary (over **5000** records). Before configuring Bulk Interface Processing, the user has to know about the parameters: - **BULK Mode**: Check this flag if you want to run interface in a bulk mode using Salesforce BULK API. - **Bulk Version**: We support SFDC pure bulk mode in version 1.0 or 2.0. Then we have our own **SKYVVA** bulk mode. This uses **SKYVVA** workflow and mapping and thus is more powerful but slower than the pure bulk API technique from Salesforce. This one is **SKYVVA's** own bulk mode. - **Bulk Processing Mode**: This field indicates the two-mode, which is support with bulk version 1.0. With bulk, version 2.0 only parallel mode is supported. Therefore, the value here depends on the selection of the field bulk version e.g. when we want to use ‘Serial’ then we need to choose ‘Bulk V 1.0’. There are two modes which are: - **Parallel:** When you select this processing mode, it will run parallel. - **Serial:** When you select this mode, it will not run at the same time. - **Bulk Package Size:** This parameter determines how many records are split into Bulk data size. If your Message contains **10.000** records and the value for this parameter is 1000 so the user will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be kept. - **Bulk Sch Frequency:** This is the schedule time frequency for the bulk scheduler on the interface. - **Bulk Integrate Time Interval (minute)**: The interval (minutes) used to integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. #### Configuring of Bulk Interface Processing This section will be explained by the configuring of Bulk Interface Processing. Assuming you are already created Integration and interface. To understand the process, please follow the steps below: - Enter Interface page detail - Scroll down the page to the Streaming and Bulk API Configuration section and configure the parameters as: Check the flag on BULK Mode Choose the Bulk Version and Bulk Processing Mode ![](../images/2018/10/1-17.png) When the user checks this flag, it means you activate the bulk processing and your data will be integrated from Agent. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]After user done configuring the bulk processing, you can do mapping in Salesforce. You have to remember that creating, editing and deleting interface has to do in Salesforce.[/su_box] #### Monitoring in Bulk Control Board As you did integrate, your data you might want to check or monitor if all your data are successfully integrated. To monitor bulk data, please log in to Salesforce and enter Bulk Control Board. If you want to know more and how to use Bulk Control Board, please kindly look for this documentation ([How to use Bulk Control Board](https://drive.google.com/open?id=1PocHTOtQUv-t56mmKMlTdKyY3uMA_QoK)). There are three orders to monitor bulk processing: - New Baskets - Current Processing Baskets - Processed Baskets #### To monitor in New Baskets When data pushed from the client using Bulk API, they will appear in this section. As you can see below, there are 1000 records are integrated from Agent. There are five attachments that you can do manual reprocessing by checkbox and click on “Process Bulk Attachment” or you can set the time and then start the scheduler in Scheduler Tab. ![](../images/2018/10/freesnippingtool.com_capture_20211026234943.png) #### Set the scheduler This section will allow you to set the Scheduler and start it. ![](../images/2018/10/3-16.png) #### To monitor in Current Basket Processing Bulk Data Processing is using to store data that are processing. These data will remove after it has done to the Bulk Monitor section. Whenever all the attachments that store has faced some problems like crashing you can use the delete button to eliminate them. However, if you want to stop these attachments processing you need to go to Apex job to abort them. Otherwise, the attachment will keep on processing. You can do reprocessing by checkbox and click on the “Re-Initialload” button. ![](../images/2018/10/freesnippingtool.com_capture_20211026234943.png) #### To monitor in Processed Baskets At the same time, all the attachments will also move to “Bulk monitor“. In this section, you can monitor the total records of attachments, total batch and batches that had processed. Likewise, you can also know if the attachment is completed, failed or pending. ![](../images/2018/10/freesnippingtool.com_capture_20211026234943.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Message Monitoring Title: 1. Message Monitoring Slug: message-monitoring URL: https://help.skyvva.com/#article/message-monitoring ================================================================================ # 1. Message Monitoring #### Message Monitoring - As we all know that how important is the result of anything we perform so in simple words message monitoring is used to check the integration result after processing the Inbound or Outbound interface. - The integration result includes Pending, Failed, Completed, Cancelled status. - It also shows the reason why the message got failed. - Additionally, we can know the real sObject is integrated successfully with completed status. - We have so many features inside message monitoring which we are going to check in this chapter of message monitoring. **Message Monitoring divided into three sections which are:-** ** Storage Usage**, **Filters**, and **Messages**. All three sections are described below in detail. #### 1. Storage Usage This is the first section of message monitoring, This section is to check the amount of space we have used and how much is available for you. **It includes three sections Data Storage, File Storage Big, and Object Storage.** (1) Data Storage. (2) File Storage Big. (3) Object Storage. - The description of Data Storage, File Storage, and Big Object Storage is shown in the table given below. **Storage type** **Description** Data Storage It contains all the messages stored in the table. File Storage It contains all the attachments. Big Object Storage It contains all the massive amounts of data on the Salesforce. - The picture is given below for a better understanding of the storage usage section on Message Monitoring. ![](../images/2018/10/mem2.png) #### 2. Filters With the message monitor, you can search over different criteria. For example, you can search message by date e.g. the creation or modified date. You can select any of the mode from the picklist like Message, API or Event message monitoring. You can sort the view and search message over its content. Likewise, you can search for messages and see if it gets posted or failed. You can see the different statuses of messages e.g. green, red, yellow and grey. **Following are the search criteria you can use** Fields Description Mode It Contains option All, Message, API and Event monitoring. Integration Name The name of the integration Interface Name The name of the interface Message Name The key to the message Message Status The status of the message Message Content(Data) The content of the message Maximum Of Records Use this filter to limit the result in the Message Monitoring to prevent the time out due to many messages. Transaction Id You can use this field to define a unique transaction id for all messages belonging to a logical object. Basket Name Use to filter the specific basket. System External Id You can filter and reference the message Id of an external system. It also can save the system Id. Date You can specify Creation or Modified date From The from date To The to date Sort By You can specify Creation date, Modified date or Message Name Order By Use to filter the message in order by Ascending or Descending. Message Direction You can specify to see Inbound and Outbound Message separately. Business External Id This is the id of the business object.So we can enter Id here in this field. Transfer Id This field is a unique id to identify the transfer package. Comment Content You can filter both comment short and long for the full error text. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - The Value of TRANSACTION ID generates automatically. - The Value of TRANSFER ID set by the user on sap. - You can't set the maximum number of records to more than 10000. - The difference between System External Id and Business External Id is that Business external id is a sales order number whereas system external id is a message id of the middleware like SAP-PO.[/su_box]. #### Fields: Mode We provide two more modes to search API and Event message monitoring. It simplifies our work, and now we can easily search and differentiate. We can see in the picture given below. - We can select any of the modes. ![](../images/2020/04/mem.png) #### Field: Interface Name You can see the different fields and their content. You can change the field content and do a reprocessing with the changed value. SKYVVA provides an option for the user to exclude and include the particular interface to search the messages on the Message Monitoring Board. You can either search the specific interface by excluding the one you do not want to search for the message. Overall, you can select multiple interfaces to include or exclude. ![](../images/2018/10/2019-09-10_11-35-36.png) #### Field: Message Status You can select the message over the message status: ![](../images/2018/10/2019-09-10_18-07-20-1.png) **The following are the description of message status:** - **None**: Select all the status. - **New**: This status corresponds to the color blue. This status occurs when users use CDD/CDT (Change Data Detection/ Change Data Transfer) Scheduler to run as a job regularly. CDD collect changes and create the message with status “New” - **Completed**: This status corresponds to the color green. A message with this status could be posted successfully. - **Failed**: This status corresponds to the color red. A message with this status could not be posted successfully due to some error situations. You have to look at the error description and fix the error. A message with this status can be reprocessed. - **Pending**: This status corresponds to the color yellow. A message with this status is in the waiting state because it has to the dependent relationship to other messages which could not be posted successfully. Such a message can be reprocessed as well. - **Canceled**: This status corresponds to the color grey. This status corresponds to the color grey. The user is not able to delete messages with status pending so he had to cancel them at the first. As a result, we will get messages with status Cancelled and the user will be able now to delete them. #### Field: Maximum of Records In case there are too many messages then we will run into time out, use this filter to limit the result in the Message Monitor. #### Field: Message Direction The screenshot of Message Direction is given below ![](../images/2018/10/mem4.jpg) The description of Message Direction: **Message Direction** **Description** Inbound Use this value when you want to search for Inbound messages. Outbound Use this value when you want to search for Outbound messages. --None-- Use this value when you want to search for Inbound and Outbound messages. The following action is applied to the search screen: #### Button: ![](../images/2018/10/mem3.jpg) Here the description's function of the button in filter: **Button** **Description** [su_button url="#" style="flat" size="6"]Search[/su_button] After specifying all the search criteria push on this button to start the search. [su_button url="#" style="flat" size="6"]Reset[/su_button] With this button, you reset e.g. clear the search criteria you have entered before. #### 3. Messages This section will be displayed all types of messages as Failed, Pending, Cancelled, Completed, and New. The following action for the result screen can be applied: **Button** **Description** [su_button url="#" style="flat" size="6"]Select All[/su_button] Select all the entry in the result screen. [su_button url="#" style="flat" size="6"]Deselect All[/su_button] Deselect all the entry in the result screen. [su_button url="#" style="flat" size="6"]Reprocess[/su_button] Reprocess the selected message entry / entries. [su_button url="#" style="flat" size="6"]Delete[/su_button] Delete selected messages [su_button url="#" style="flat" size="6"]Delete All[/su_button] Delete all messages in the result screen. [su_button url="#" style="flat" size="6"]Cancel[/su_button] Cancel the message. You can for example cancel a message with status red but not message with status green. [su_button url="#" style="flat" size="6"]Cancel All[/su_button] Cancel all the messages. You can for example cancel a message with status red but not message with status green. ![](../images/2018/10/mem5-1.png) You can jump into the detail of a message. Click on the message name to jump into the detail. Here is an example of a message detail. ![](../images/2018/10/mem6.png) ![](../images/2018/10/mem7.png) The user can also select (1) all the entry only per page and then he can apply an action (2) for the result screen. ![](../images/2018/10/4-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Change Data Control (CDC) Title: 1. Change Data Control (CDC) Slug: change-data-contro-cdc URL: https://help.skyvva.com/#article/change-data-contro-cdc ================================================================================ # 1. Change Data Control (CDC) #### What is Change Data Control? Change Data control is a function that provided to record all data changes (Change Pointer) you create on any business object. It is capable to send the deleted records to the receiver as well. This means it executes the find/fetch record base on Salesforce’s query. With the SOQL query statement, you can fetch the deleted records in the recycle bin as well with the “ALL ROWS” keyword. Overall, it handles the change data in salesforce. You can send all your change data using CDC Scheduler or manually. #### CDC Setting This section is created for some fields that use CDC features. Before configuring the CDC you need to know about these parameters which require to set on the interface. ![](../images/2018/10/2019-11-13_11-29-20.png) ![](../images/2018/10/2019-11-13_11-33-24.png) - **Use SKYVVVA Outbound Scheduler: **This flag use for CDC Processing. When you check this flag, it's mean that you activate the CDC processing. It activates both CDD and CDT. You can set an interface for running only CDD or CDT in some time. - **CDC Mode Only: **This field is used for separating the process of CDD and CDT follow flag Use SKYVVA Outbound Scheduler. Select CDD to run only CDD for interface or select CDT to run only CDT. Select None to run both CDD and CDT at the same time. You can select the picklist value to specify the run time. - **CDT Worker Query Limit: **This field is used to define the number of the query record. When the CT worker runs the start method will query record to send out. If it is too much we will run into a CPU time out. Set this field to an appropriate value so that you don't any error. - **Interface Control Runtimes: **Interface Control Runtime could be used for another purpose. for CDD, it is used where the user can set LastRun DateTime that CDD finds the record change which is record's LastModifiedDate>that date. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]CDD Scheduler LastRun is obsolete now. No need to check this flag for defining the change data anymore. The Interface Control Runtimes for the Last Run Date is created automatically by the CDD scheduler. [/su_box] #### When to use Change Data Control? Use Change Data Control to: - To Detect or record all data (Change Pointer) that create, change, update, delete in Salesforce - Transfer data to the external system anytime without disturbing your online business - Overcome the limitation of sending changed record by record CDC is made up of two components, the CDD, and the CDT. These two-component have different functionality. **CDC Component** **Description** CDD CDD stand for Change Data Detection. CDT CDT stands for Change Data Transfer. **Change Data Detection** With CDD, you can detect all the changed data in Salesforce to any external system. CDD is a scheduler that is running to call batch Apex in order to collect data change and save all those data into the Change Pointer table. **Change Data Transfer** CDT is another scheduler that is running to collect the records from the Change Pointer Object and sent to the external System such as SAP… etc. The Schedule will execute callout as the parallel of future, queueable, batch based on priority, integration resource and interface group type (EO/EOIO). #### The configuration of the CDC **Step 1: Create an outbound adapter** An outbound interface can be processed with the different adapters to configure CDC. For example, we use SFDC2SAPPI adapter, Rest Adapter, Soap adapter. Follow the given step to process the outbound interface using the adapter. We are using **SFDC2SAPPI** adapter as an example, you can follow the given steps: - Go to an Adapter tab - Click on New Button - Fill the username, endpoint, and password ![](../images/2018/10/2019-11-13_11-56-13.png) **Step 2: Create a Remote Site** - From Setup, enter Remote Site Settings in the Quick Find box, then select Remote Site Settings. - Click New Remote Site. - Enter a descriptive term for the Remote Site Name. - Enter the URL for the remote site. - Optionally, enter a description of the site. - Click Save. ![](../images/2018/10/2019-11-13_12-06-34.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]**Remote Site URL**: **Paste the same link **as in the** Property Value **that you have just created a moment ago.[/su_box] ![](../images/2018/10/2019-11-13_12-14-54.png) **Step 3: Create an outbound Interface** In order to configure the CDC for an Interface, you have to create an interface. - Open it and scroll down to the CDC setting section. - Specify the parameter - Check the “Use Skyvva Outbound Scheduler” checkbox. ![](../images/2018/10/2019-11-13_14-15-36.png) **Step 4: Schedule CDD and Monitor it on CDC Control Board** After you have done configuring the CDC processing you have to set the scheduler for CDD in order to collect the change data (CP records). To schedule CDD, follow the given steps: - Open Integration Detail Page and navigate to Custom Link section then click on CDC Control Board - Select Scheduler Tab - Set the time as you prefer and start the scheduler ![](../images/2018/10/2019-11-13_14-35-21.png) - Select on Change Pointer Tab and apply the filter on Integration Name, Interface Name, Status and click Search ![](../images/2018/10/2019-11-13_15-31-42.png) **Step 5: Schedule CDT and monitor it on Apex Job** After collecting all the change pointer records you can transfer those records out by using the CDT scheduler. To schedule CDT, just follow some steps below: - If you are in CDC Control Board, just select on Scheduler Tab and set the time as you wish. Then click the scheduler to start ![](../images/2018/10/2019-11-13_14-51-03.png) - Enter Apex Jobs Monitoring to see CDT workers: - Future - Worker (Batch) Process ![](../images/2018/10/2019-11-13_15-37-50.png) **Step 6: Check the result on Message Monitoring Board** - Enter integration detail and click on Message Tab ![](../images/2018/10/2019-11-13_15-43-56.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 1. Adapter Slug: adapter URL: https://help.skyvva.com/#article/adapter ================================================================================ # 1. Adapter An adapter is a device for connecting pieces of equipment that cannot be connected directly. The adapter is also important; without it, you cannot transfer the data to the external system. It provides the interface between a computer and a network connection. There are many different types of adapters such as File Adapter, Database Adapter, FTP/SFTP Adapter, SAP-R/3 Adapter, and SAP-ERP Adapter. File Adapter and Database Adapter supported for Agent. However, SAP-R/3 and SAP-ERP Adapter are used to connect to SAP-R/3. We have 11 types of adapters: - File Adapter ( CSV, Excel, XML) - JDBC Adapter (ORACLE, SQLServer, MySQL, MsAcess) - FTP/SFTP Adapter - HTTP - EMAIL - SFDATALOADER - SAP-R/3 - SFDC2SAPPI - Data Loader - REST - SOAP ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Interface Group Title: 1. Interface Group Slug: interface-group URL: https://help.skyvva.com/#article/interface-group ================================================================================ # 1. Interface Group #### Interface Group Interface group is a unit to group logical interfaces together. For example you can group interfaces which is related to each other e.g. Account and Contact to one interface group. There are two kind of interface group: - Business related logical group - Technical group An example of an business related logical group is when you put the interface account and contact to one group e.g. the group "Account_Contact". This group is business related because the contact can only be posted after the account has been posted. In this example there is an order of business process. To keep this order you can define the group "Account_Contact" and set the property to "EOIO" meaning Exactly Once In Order. In this way the skyvva runtime ensure that the account will be posted before contact interface. The technical group is for example to increase the performance for the posting of data. Imagine that you have five interfaces which do not related in a business way to each other. Those 5 interfaces are quite small e.g. small amount data will be send to Salesforce. In this example you will waste resource and time when you create five interface group for each interface and post the interface separately. The best way is to put these five interface into the same group and set the property of this group as "EO" meaning Exactly Once. This mean that the processing of those five interface in the group is not important. An overtaken can be happened and will not harm the business. By putting them together the scheduler will process much more data in one run than if the scheduler process them separately. ![](../images/2018/10/Capture1.png) Here are some example of interface group Note that interface group has a 1:1 relationship to a queue.  After you have created an interface group you will have a queue corresponding to this interface group. The queue will be there at runtime e.g. after a message is send for this interface group into Salesforce. The interface group describe the smallest unit for the queue processing e.g. the element of the queue are data of the interface group. #### Parameter/Fields: Before creating an interface group, there is some property you must know: **Fields** **Description** Interface Group Name It is the name of an interface group. Integration The interface group, which you created, belongs to this integration. Remember that only one interface group belongs to an integration. Type This is a type of interface group. The value of the group can be (EO, EOIO). Package Size This is the number of records to bundle together and pass to a batch worker because of the optimization. Priority This property will allow you to define what priority you want to set your interface group to process faster. There are 3 types of Priorities such as High, Medium, and Low. Number of Records Per Batch This property indicating the number of records to be processed per execute () used for basket processing batch. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - EO: Exactly Once - EOIO: Exactly Once in Order [/su_box] **When to use interface group** Interface group is used when you want to speed up interface processing. You can manually create interface group and assign the interfaces which you want to run beside the default IG. We have to create an interface group. This is an optional step because the Skyvva engine create a default interface group for each integration. This default interface group contain all interfaces existing in an integration. For each interface group the Skyvva runtime will create a corresponding queue and inherit some property from the interface group to the queue. For example the queue will become the type attribute e.g. EO or EOIO and the priority e.g. High, Medium or Low from the interface group. Since the Skyvva default group contain all interfaces from an integration the Skyvva default queue bit complex queue for processing the attachment data. Therefore we recommend to create suitable and appropriate interface group to have an optimal way for queue processing. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Scheduler Title: 1. Scheduler Slug: scheduler URL: https://help.skyvva.com/#article/scheduler ================================================================================ # 1. Scheduler #### The overview of SKYVVA Scheduler SKYVVA Schedulers is a type of scheduled job which runs regularly bases on-time setting (ie. every 10 minutes).  There are three categories of Schedulers. - Schedule per integration: is a global scheduler process all interfaces on integration, it will skip either Interface group or interface that is running its scheduler. - Schedule per-interface group: process all interfaces in the group, if the scheduler has been started then all the schedule of the interface in this group will stop automatically. - Schedule per interface: it will process a specific interface. It cannot be started if its interface group scheduler has already started. #### The functionality of SKYVVA Schedulers ![](../images/2018/10/scheduler.png) These schedules are important. They play different roles. To know more details about this scheduler, you can check them below: **Scheduler Type** **Description** Alert Alert Threshold of CDC, Batch, EOIO BatchProcess Process basket attachments BatchREprocess Reprocess basket attachments CDD_PerIntegration Collect Data Change CDT_PerIntegration Process outbound Checker Checking the other schedulers' running status DoMaintenance Automatic data maintenance, Delete logs, Delete ILogs. MessageReprocessPerIntegration Reprocess messages without basket attachment. Interface Execution Scheduler The scheduler uses the method invokeCallout2() to execute the outbound interface #### Administration of the Scheduler After the installation of the SKYVVA software, there is no scheduler running. ![](../images/2018/10/1-26.png) After a fresh installation of the Skyvva software, there are currently two general schedulers: The maintenance and the Checker scheduler. - The DoMaintenance scheduler: are responsible for deleting Messages, Logs and attachment history. - The Checker scheduler has the task to check if other Schedulers are still running. If a scheduler is stopped for whatever reason, the checker will restart the scheduler again. In fact, when you create a new Integration, for this Integration 3 Schedulers are created: - BatchProcess - BatchReprocess - ChangeDataDetection - ChangeDataTransfer - MessageReprocessPerIntegration ![](../images/2018/10/2-25.png) This table describes the field in the Scheduler view. **Field** **Description** Action The action you can apply for the scheduler Scheduler The Name of the scheduler. This is the different type of Scheduler Integration or Group The name of the integration or Integration group ( Our recommendation to not use Integration group anymore) Status The status of the scheduler (green, red, grey) Comment Comment to describe some situation e.g. stopped by admin Time interval The time interval for the scheduler run Job Id The Job Id Job Name The job name. The name is concatenated with the Id of the integration group Submitted By The user who starts the scheduler Submitted The Date and time when the Scheduler was started Started The start time Next Scheduler Run The time when the next run is started Description Description of the scheduler As an admin, you can configure some setting which is useful for your operation. The following steps will describe the configuration and setting you can do in the current version. #### Start/ Stop the scheduler You can start or stop the scheduler to handle different situations. For example in case of resource shortage and there're many messages entering the system you can stop some scheduler which is not that important. Therefore, you can manage the data load and adjust the resource shortage situation. To stop the scheduler click on the link "Stop". ![](../images/2018/11/1-26.png) ![](../images/2018/11/2-26.png) Confirm with the button "OK". ![](../images/2018/11/3-24.png) The color turns into green and the Action you can do next is "Start". ![](../images/2018/11/4-18.png) ![](../images/2018/11/5-15.png) The Color turns into red. You see the Job Id and Job Name. You can go to the monitoring of the scheduled job to see the scheduled job correspond to the scheduler ![](../images/2018/11/6-13.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: 1. Metadata Provider Slug: repository URL: https://help.skyvva.com/#article/repository ================================================================================ # 1. Metadata Provider #### Metadata Provider In the big data era, enterprises are collecting and storing more data than ever before. Metadata Provider tells the data processing layer of a library which metadata fields (types) they can extract. In Skyvva,Istructure repository is stored in metadata. Basically metadata provider is use for grouping. This metadata includes important object properties and their relationships with other objects. **Lets take an example of SAP** So right here sap is a metadata Name. If we are talking about the other organisation like  Google, Salesforce and many all,they provides metadata api. ![](../images/2018/10/admin.meta1_.png) In the picture, we can see the hierarchical repository where different level are organise hierarchically. We can build a hierarchical structure of the repository. And in the table, we can see the example of the type and Hierarchical repository objects. Different API  organise in the single repository. There are some Repository Object like BAPI, IDOC, and Enterprise Service with type Folder. **Types** **Hierarchical repository objects** BAPI 1. BAPI_SALESORDER_CREATEFROMDAT2 2. BAPI_CREATE_DIPS_EXT 3. BAPI_0036_GET_DETAIL IDOC 1. ORDERS05 2. DEBMAS06 3. MATMAS03 Enterprise Service 1. CreateSalesOrder 2. CreateEquipment 3. GetListSalesOrder In the Repository, we have a message type. Message Type uses to represent the hierarchical structure of the Repository. For example, a service using Webservice. Message Type can be used to describe its request and response. In Skyvva, when we create metadata, the Name field is an only mandatory field. On MetaData the Name cannot be duplicated. **Metadata Provider screen looks like as shown in the picture given below:-** ![](../images/2018/10/admin.meta_.png) **The description of the highlighted fields(shown in the picture) is showed below:-** **Button Name** **Description** [su_button url="#" style="flat" size="6"]Export MetaData Provider[/su_button] Use this button to Export MetaData Provider to the local computer. [su_button url="#" style="flat" size="6"]Import MetaData Provider [/su_button] Use this button to Import MetaData Provider from the local computer. [su_button url="#" style="flat" size="6"]Export MetaData Provider To Other Org[/su_button] Use this button to export the MetaData Provider to other organization. [su_button url="#" style="flat" size="6"]New[/su_button] Use this button to create New MetaData Provider. [su_button url="#" style="flat" size="6"]Delete[/su_button] Use this button to Delete existing MetaData Provider. #### How to create a metadata Provider? There are two different ways of creating the metadata: - Manually create - Using Import function 1 In the Metadata tab, perform the following steps: - Click on New  button on the Metadata provider page. A page appears with one mandatory field i,e Metadata Name. - Click on the Save button with the required Field. ![](../images/2018/10/metadata4.png) - Enter Metadata name in the MetaData Provider Name field. ![](../images/2018/10/metadata1.png) 2.  By importing the file matadata can be created. We can Import metadata provider from our local machine if we have existing metadata in our local machine of the same repository and message type as we needed. #### Metadata Page: There are two section on metadata page. - Detail - Related **Detail Page:-** Repository can be created by clicking on the "New" button from this page. This page contains detail information about metadata. Only name field is mandatory field here. - MetaData Provider Name - Owner ID - Description - Created By ID - Created Date - Last Modified By ID - Last Modified Date ![](../images/2018/10/metadata2.png) - The Detail page and related page contains same 5 Buttons at the top, Please check the table below:- **Button Name** **Description** [su_button url="#" style="flat" size="6"]Export MetaData Provider To Other Org[/su_button] Use this button to export the MetaData Provider to other organization. [su_button url="#" style="flat" size="6"]Export MetaData Provider [/su_button] Use this button to Export MetaData Provider to the local computer. [su_button url="#" style="flat" size="6"]Import Reository[/su_button] Use this button to Import Repository from the local machine. [su_button url="#" style="flat" size="6"]Delete[/su_button] Use this button to create Delete MetaData Provider. [su_button url="#" style="flat" size="6"]Change Owner[/su_button] Use this button to change Owner. **2. Related Page:-** ![](../images/2018/10/metadata3.png) - In the Related page we can see two sections:- **1. Interface:-  **Here we can see the list of Interfaces in which we have used this metadata provider. **2. Repository:- **In this section, we can click on New and can create a repository. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Housekeeping Title: 1. Housekeeping Slug: housekeeping URL: https://help.skyvva.com/#article/housekeeping ================================================================================ # 1. Housekeeping We can see the picture given below to check what basically housekeeping job is:- ![](../images/2018/10/housekeeping.png) We use it to configure the message and log deletion to save database space in a productive environment. Attachment from the attachment basket has physically deleted when it was processed successfully. The attachment basket history contains only the header data of an attachment, which had processed successfully. When talking about attachment deletion then the entry of the history basket is deleted and not the physical attachment because it is already removed after successful processing. As of release 2.x, the logs do the deletion of attachment history basket, messages, the global scheduler “DoMaintenance”. #### Logs type:- Logs categorized into three levels as below: - Error-Level log: used for logging exception occur, technical error or setup error like "No mappings error"... - Warning-level log: this level for warning like (case workflows: No messages match to the condition of the workflow...) - Info-level log: this level for information Mostly you will see logs with the level error in the log screen. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For alert mail only logs with “Error”, level have created.[/su_box] #### Configuration of Message If your screen under the section "Message Setup" does not look like this screen you have to customize it. ![](../images/2018/10/12-8.png) Following is the description and explanation of the fields for the configuration. #### Automatic Reprocessing You have to set this flag when you want that this integration should be taken into account by the scheduler "MessageReprocess".  For each integration, you have to decide to set or not set this flag. When this flag is set then the messages of this integration will be reprocessed. When this flag is not set then any reprocessing of messages from this integration will be done. #### Delete Messages You have to set this flag when you want that this integration should be taken into account by the scheduler "DoMaintenance". For each integration, you have to decide to set or not set this flag. When this flag is set then the messages of this integration will be deleted after the retention time. When this flag is set then no deletion of messages from this integration will be done. Note that setting this flag only tells the scheduler to consider this integration. By default, only messages with status "Completed" is deleted. If you want to delete other statuses then the status "Completed" then you have to add the additional statuses available under the section "Additional Message Statuses to Delete". #### Additional Message Statuses to Delete By default when the flag "Delete Messages" is set only messages with the status "Completed" is deleted. But sometimes you need also to delete messages with another status e.g. Cancelled. In this case, you have to add this status into the Box "Chosen" on the right side in the below screen. ![](../images/2018/10/13-5.png) In this screen, you can set the status of messages to be deleted additionally to the status "Completed".  In the box "Available" you have the statuses you can choose. Mark one entry and click on a ![](../images/2018/10/14-5.png)button to add from the left to the right box. You can remove from the box "Chosen" by marking the entry in this box and click on the button![](../images/2018/10/15-5.png). ![](../images/2018/10/16-5.png) #### Number of Days to Keep Messages In this field, you enter the number of days to keep messages in the database before they get deleted. If the value of this field is blank then the message will be deleted immediately regardless of when the message was created or modified. If the value is not blank for example 14 then messages will be kept 14 days in the database before they get deleted. The records’ Last Modified Date is relevant for the calculation – in other words, keep those records which was last modified within 14 days (counting from today). ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What to do after refreshing the instance? Title: 1. What to do after refreshing the instance? Slug: what-to-do-after-refreshing-the-instance URL: https://help.skyvva.com/#article/what-to-do-after-refreshing-the-instance ================================================================================ # 1. What to do after refreshing the instance? When a sandbox or development instance got refresh by a production instance, some information or data gets lost. The following have to be renewed or create again. - Skyvva license key - certificate - Keystore **License key** After refreshing, the license key is not valid anymore. You will see this error message when trying to send data to Salesforce. Before refreshing your sandbox, you can save your old license key somewhere to use later. ![](../images/2018/10/1-27.png) We have to add a new license key. To do this go to the user used for the integration. ![](../images/2018/10/2-26.png) ![](../images/2018/10/3-23.png) ![](../images/2018/10/4-22.png) Here the SKYVVA license key. This is now invalid after a refresh. To generate a new license key following information is needed: ![](../images/2018/10/5-20.png) - Organization Name e.g. SKYVVA - Salesforce.com Organization ID e.g. 00D6F000002TBb2 Old license key: x+xEkW4TGfboVpynKj7MvF3fzZc=????MTY3NzY5MDAwMDAwMA== Old/New license key: Now you can apply the old/new license key. Go to edit mode and enter the new key provided by mail: ![](../images/2018/10/6-20.png) Here is the mail you got after acquired a new key. Dear Lyna, Below find the requested License Key: Account: SKYVVA Contact Name: Reach Pech Contact Email: vannphareachpech@gmail.com Org Name: SKYVVA Org ID: 00D6F000002TBb2 Product: SKYVVA Integration Suite - Unlimited Edition Environment: Production Status: Contract Valid to: 11/09/2023 License Key: **QG//+O/KJ4PAvFubkyDsEqNNQ8s=????MTY5NDQ1MTYwMDAwMA==** For activating the license key just do the following: - Go to the "User Page Layout" and add the field "SKYVVA License Key" - Go to the "User" in charge for the integration and insert the license key in the field "SKYVVA License Key" In case you need, further help does not hesitate to contact the SKYVVA support team ([support@skyvva.com](mailto:support@skyvva.com)). SKYVVA Simply Native Salesforce Integration The Organization Id is different in both instances on sandbox and Production. The question was raised if the Org-Id became overwritten by the ord Id of the production. The answer is No. The org id between Sandbox and productive is different. - Prod-Org Id:               00DU0000000K46I - Sandbox Org-Id:        00DZ0000000pc6o However, why has the org id been changed in the sandbox after a refresh? This is a normal case in SF while refreshing an instance. ![](../images/2018/10/7-18.png) Because of the Org-Id. has been reset and a new one has generated the license key is not valid again. ** Certificate** For example, after refreshing a dev/sandbox instance from a productive instance, the certificate got lost and you have to create it again. However, you do not have to create them again. We are talking here about download each certificate and export Keystore. Note: Please remember that, before you refresh your sandbox you have to save your certificate otherwise the Keystore will override.  However, if you don’t have any Keystore then please skip the steps below. - Download certificate After you have created the certificate, you can download it and install into a reverse proxy or other components. ![](../images/2018/10/1-28.png) Open the list of certificate management screen and click on the appropriate certificate, which you want to download from Salesforce. ![](../images/2018/10/2-27.png) Open the certificate you have created and click on the button "Download Certificate". You have to save it to a directory on your PC at your choice. ![](../images/2018/10/3-24.png) Here how the certificate looks like. Now you can use this certificate e.g. import it into the SAP Web dispatcher. - **Save Keystore** To save keystore you can follow some steps below: Here you can check the certificate and key management in Salesforce. ![](../images/2018/10/4-23.png) ![](../images/2018/10/5-21.png) Click on "Export to Keystore" button. ![](../images/2018/10/6-21.png) Input the password and click the Export button to save the keystore. ![](../images/2018/10/7-19.png) **Adapt the outbound Adapter if needed** This step you need only if the name of the certificate has been changed when created it again after a refresh. If you keep the old name then you do not need to adapt the adapter.  Not that this step is optional. Currently, the adapter for the outbound interface looks like this: ![](../images/2018/10/1-29.png) Therefore, the name used here is "GRT_SAPDis". Now we change the name to the new one e.g. to "CPQIntegrationUserCert". Note: we recommend creating a new self-signed certificate with the old name. In this case, you do not need to adopt the certificate in the adapter. ![](../images/2018/10/2-28.png) Take care to enter the correct name into the adapter. You have to take the name under the field "Unique Name" here in this example "CPQIntegrationUserCert". Do not take the Label on the left side. In this example, we have given both fields the same name. Therefore, it is not a good example for showing about difference name. Now go to the adapter and adopt the name of the certificate if you name it differently from the old one. ![](../images/2018/10/3-25.png) Click on "Edit" to change the value. ![](../images/2018/10/4-24.png) Now save it. ![](../images/2018/10/5-22.png) This is now the result after changing the certificate name of the adapter object. **User and Password in the adapter (outbound call)** After refresh, the user and password are encrypted again when inserting the new data. So it is double encrypted and the decryption is not working. Therefore, the user and password have to be adapted as well. We can test the adapter and we can see this error now: ![](../images/2018/10/1-30.png) Now we change the user and password. ![](../images/2018/10/2-29.png) ![](../images/2018/10/3-26.png) After changing user and password, we do not get the error with "unauthorized" anymore. Here is the test result: ![](../images/2018/10/4-25.png) So now, we can resend error message from the SKYVVA monitoring again to SAP. Here the error in the SKYVVA monitoring before we change the user and password: ![](../images/2018/10/5-23.png) ![](../images/2018/10/6-22.png) When we select the entire message and reprocess it will do in batch via an Apex job. Here we can see the apex job for the reprocessing. ![](../images/2018/10/7-20.png) The number of “Total Batches" is 5 e.g. it was 5 messages to be reprocessed. ![](../images/2018/10/8-17.png) Now the reprocess is completed. Now the message is green in SKYVVA monitoring. ![](../images/2018/10/9-16.png) **Test Connectivity** In Skyvva we can do a connection test from Salesforce to SAP. We can do technical ping. Here is an example where the ping is not successful. The problem was not clear and after the restart, the sap web dispatcher the ping test is working. Here is the result. ![](../images/2018/10/4-26.png) Now we do a test connection with the test payload. The result of the test looks like this: ![](../images/2018/10/5-24.png) This is ok since the test payload is not correct we get this exception from the soap sender channel. ![](../images/2018/10/6-23.png) This error is ok at the SAP-PI adapter side. We see that the connection went through the firewall and that the soap sender channel received the data from Salesforce. Nevertheless, this data is not correct and this is ok like this. We just want to test the pure technical connectivity and if the firewall is, open for Salesforce. Here the error message last time while the connectivity was not working. ![](../images/2018/10/7-21.png) Now we resend this message again after we restart the sap web dispatcher. The message was successfully reprocessed. ![](../images/2018/10/8-18.png) **Adapt the integration Id in PI-Mapping and Module** In the mapping of the SF-Inbound interface, you have to adapt the integration Id in the interface determination in the directory. ![](../images/2018/10/1-31.png) Like shown in this screen in the mapping you will need the integration id but you pass the integration Id from the directory at the configuration time at the interface determination. ![](../images/2018/10/2-30.png) Here in the interface determination, you have to enter the new integration Id. The integration id is used in the SKYVVA module as well and here you have to adapt it as well. ![](../images/2018/10/3-27.png) The parameter session pooling. Integration ID has to be adapted to the new integration Id value. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an integration? Title: 2. The parameter and Fields of Integration Slug: 5-1-the-parameter-and-required-setting-on-integration URL: https://help.skyvva.com/#article/5-1-the-parameter-and-required-setting-on-integration ================================================================================ # 2. The parameter and Fields of Integration Before creating the integration there are some require settings or parameters you must know. On the integration object, there are fields, which are required, and fields, which are optional. The only field that is required to successfully save the integration is the name fields. Other fields are optional. However, you should give your integration a meaningful description so that you know later what is the object or goal of this integration. E.g., the max number of retry, which is an optional field, which can be set.  On the other hand, there is some important parameter, which is optional and has default value already when you do not set them... For example, the parameter  "Max Number of Retry" is default by 5 which mean that failed or pending message are going to be reprocessed automatically only 5 times. If exceed 5 times the message will remain in status failed/pending forever. If your requirement is to do message reprocessing more the 5 times (default value) you can set this parameter to any value you like for example 17. This would mean that the failed/pending messages would be re-process max. 17 times. Please see the example in the picture. ![](../images/2018/10/111-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Note that creating the integration object is a pre-requisite for further learning steps like creating the interface, mapping, etc... Without having an integration, you cannot continue to develop an interface.[/su_box] On the screen, you could see other fields and parameters like for example: - Number of Integrate Batch Concurrent Job - Integration Group - Integration Group Sequence - Sender - Source There is also the section called "**Agent**". This is not relevant to this part of the document. This functionality will be explained in other documents. #### Tabs ![](../images/2018/10/integration1.png) #### Custom Link ![](../images/2018/10/integration2.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an integration? Title: 3. Creating and clone the integration Slug: creating-an-integration URL: https://help.skyvva.com/#article/creating-an-integration ================================================================================ # 3. Creating and clone the integration The first task in developing the interface is to create an integration. Integration can be though as a logical group-to-group logical interface together. For example, you could have an integration holding interfaces for the region of Asia and Europe. Other logical separation could be on integration for the transactional interfaces and another one for the master data interfaces. To create an integration log on to the instance of your choice where the SKYVVA software has installed. Open the Integration. ![](../images/2018/10/1-6.png) Click on the button "New Integration" to create a new integration. ![](../images/2018/10/2-5.png) You need only to specify the Name of the integration e.g. "Account" and give a short description. Other available fields can leave at its default value. Click button "Save" to save your integration. After saving the integration, your integration will look for example like this: ![](../images/2018/10/3-3.png) ![](../images/2018/10/4-5.png) - You will get six Tabs: Details, Interfaces, Workflows, Scheduler, Messages, and Logs. - You can clone the integration by clicking the button below. ![](../images/2018/10/clone.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an integration? Title: 6. Automated report for failed and pending message Slug: 6-9-automated-report-for-failed-and-pending-message URL: https://help.skyvva.com/#article/6-9-automated-report-for-failed-and-pending-message ================================================================================ # 6. Automated report for failed and pending message #### What is Automate Report? An automated report for failed/rejected messages per-interface needs to created and emailed on a specified frequency. We need a daily report, the emails that are triggered every time a message fails are not useful because we receive several hundred/thousands per day (also if the message is reprocessed automatically) and they are unmanageable. #### How to use Automate Report To monitor the message, you can follow the steps below: Click on Integration Cloud-> Reports & Links -> Message Report ![](../images/2018/10/26-1024x246.png) ![](../images/2018/10/27-1024x578.png) Then filters on Integration Name, Interface Name, Message Status as below ![](../images/2018/10/28-1024x570.png) Click on search button you will see all the failed messages ![](../images/2018/10/29-1024x740.png) Note: You can search two or more statuses at the same time (Pending, Failed). To show the messages fields, you just click on Additional view option. ![](../images/2018/10/30-1024x474.png) If you need to export the message report, there are two options for you to choose from: - **Send Report with All Result by email** - **Download Current Display Result** ** **When you click on **Send Report with All Result by email**, you will get all of the messages in your email automatically. - Filter email or user ![](../images/2018/10/31-1024x500.png) - Check your email ![](../images/2018/10/32-1024x500.png) ![](../images/2018/10/33-1024x500.png) ![](../images/2018/10/34-1024x555.png) On the other hand, you can also set the time to get the message by email too. To set it, you can just: - Filter on Schedule Option ![](../images/2018/10/35-1024x500.png) - Start the time ![](../images/2018/10/36-1024x341.png) However, when you click on Download Current Display Result, you will get only 10 failed messages that show on the screen and it will download directly as CSV file. ![](../images/2018/10/38-1024x555.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 2. Create and delete an Interface Slug: create-an-inbound-interface URL: https://help.skyvva.com/#article/create-an-inbound-interface ================================================================================ # 2. Create and delete an Interface #### Create an inbound interface There are three different categories of interface technology we support: Synchronous and real-time (synchronous), batch (asynchronous), bulk (asynchronous). When the interface is running, messages will be created. Here we will see how to create an interface for different use cases. ** The different use case we support are:** - Do real-time interface using synchronous mode - Do batch processing using batch mode - Do Bulk processing using bulk mode - Use our standard CDC feature to create an interface to push data out #### Synchronous and real-time synchronous To create the synchronous and real-time synchronous interface, you have to follow the following steps: - Click on Integration Tab. - Select Interfaces to create a new interface. - Click on New Interface. ![](../images/2018/10/interface.png) - Fill in and choose as the screenshot below - We can see 6 mandatory fields Name, Source Name, Status, Operation Type, Sequence, Type. - The default value of Processing Mode is "Synchronous". - Save it. ![](../images/2018/10/interface1.png) #### Batch (Asynchronous) We can use Batch Mode when we want to upload more amount of data. Records should be more than 200 but less than 5000, Its capacity is more than Synchronous and real-time. Then we can prefer to use Batch Mode. - Open Interface - Scroll down to the basket setting section. - Check batch mode flag. (As shown in the picture given below) ![](../images/2020/01/batchad1.png) #### The bulk (Asynchronous) Bulk Mode is using when there is a mass amount of data you would like to upload. It should be larger than the Batch mode. Then we can prefer to use Bulk Mode. - Open Interface. - Scroll down to the Bulk setting section. - Check batch mode flag. (As shown in the picture given below) ![](../images/2018/10/bulkint.png) #### Creating an outbound interface The process of creating an outbound interface is similar to an inbound interface, except the direction type that is supposed to be Outbound. To create an outbound interface, there some steps to be the following: - Click on Integration Tab and select on Interfaces to create a new interface. - Fill in and choose as the screenshot below: ![](../images/2018/10/bulkint-1.png) #### CDC CDC can provide an ability to record all data changes you create on any business object. It will be automatically pushed to your external system at any time you scheduled. When you checkbox the flag it's mean that you activate CDC. This flag is used to activate both CDT and CDD “Use SKYVVA Outbound Scheduler”. - Open Interface. - Scroll down to the CDC setting section. - Check the Use Skyvva Outbound-Scheduler flag. (As shown in the picture given below) ![](../images/2018/10/cdcint-1.png) - This field is used by the Agent and CDC. The agent sets the time when it has process the data. CDD set this field after it has detected new changes. This field is set automatically by both processes. Change this field only in emergency cases for CDD only. #### Creating and linking the hierarchical interface The hierarchical interface is interface arrange in order. Interfaces rank according to levels of importance in structure. For example, the Account interface is the parent’s contact interface because of Contact inherited External ID from Account. One more thing, one Account can store many Contacts, but one Contact cannot store many Accounts. To create the hierarchical interface you must have two single interfaces. Link 2 interfaces each other so we need to create a formula on interface contact. Please click Integration Tab->integration name->click interface Name on integration level->Cross down to Mapping Section->Tick on Formula->Click on field that tick Formula. The formula on Contact: ![](../images/2018/10/19-1.png) Write Expression: VLOOKUP (Account, id, Name, Name) The Expression means we find Account that has External id on Target Account name is Name and mapping on Source Account name is Name. ![](../images/2018/10/20-1.png) - Manual Load to Account Interface. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]You need to load data Account first because Contact need to check External ID on Account. If you do not do this, it cannot link to Account[/su_box] ![](../images/2018/10/21-1.png) - Account Records successfully created. ![](../images/2018/10/22-1.png) - Manual Load to Contact Interface ![](../images/2018/10/23-1.png) - Contact Records successfully created. ![](../images/2018/10/24-1.png) - The result is shown in the picture given below.![](../images/2018/10/25-1.png) #### Delete an interface Delete an interface is not hard at all, you just need to click on Delete, which located beside each interface. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 3. Ichain Slug: ichain URL: https://help.skyvva.com/#article/ichain ================================================================================ # 3. Ichain #### iChained Interface We use iChained Interface to create a chain between the parent interface with the child interface. **How to create iChained Interface?** - To create an IChained Interface user need to have Interface that has hirachical mapping. user can use the properites in Ichained Interface.  To configuration IChained Interface, User need to go to Interface and Related page and scroll down to find IChained Interface section. - Click the Interfaces name ![](../images/2018/10/1-22.png) - Click Edit button. ![](../images/2018/10/2-12.png) - Now we can see How many Section in IChained  Interface. ![](../images/2018/10/3-6.png) - Parent Interface refers to the Interface that we choose as the parent In this example we use using hierarchical mapping so the first mapping is the parent Interface. - Sequence is refers  to creating an order, an order sequence number is generated and can be used to identify the order. - Child Interfaces refers to the Interfaces that we selected the other interface as the child. In this case if user want to use other Interface they can create the new IChain to config , If the user want to use the child interface as the match as the hierarchical mapping, user just select the Child Interface that contain _ParentInterface_ChildInterface_1.2 meaning that this is get from mapping, If  the mapping have more object in one Interface it will generated the Interface to suffix  1.3,1.4 so on. - Parent Relationship Name / Foreign Field is refers to the primary key between Parent Object to child Object depends on the primary key of each Objects. Example: We have many fields to look up to account depend on ID or depend on name so we can select the fields that we want to look up meaning that if the records that parents is exits as the same parent payload it will update the parent records and insert the child payload. - Init Operation is the useful functions that allow users to modify the child Interface when we do inbound. In this function there are 5 operation such as None, Delete First, Delete Specific Child, Delete Child anyway,  and Delete+ Upsert (we can Called delta ).  See the picture below. ![](../images/2018/10/4-10.png) There are 5 Init Operations and it is working in difference ways. - When user using **"None" **meaning that it is working normal when we do inbound processing ,example if the parent records is not exits it will insert the parent payload and child payload , if  the parent records is exits  and the child has exits  it will update the child records, if the parent records is exit and the child has not exits it will insert the child records. - When user using **"Delete First"** ​meaning that when the parent records is exits in salesforce and have many child records, it will delete the only the  first child and keep another child and Insert the new child of payload. For example, the message comes with message A. If A contains a child record then the deletion works. In this case, we delete all existing children and create the new child coming with the new message. But if we send only the parent data only parent data get updated. No children get deleted.** “Delete First”** in Chain is that when we have child record in the message e.g. Parent + Child then it delete first all existing children and then adds the new children which come with the current message. The sender needs always to send all children. The sender cannot send only children which have been changed at the sender system. If he only sends a changed record which has been changed at the sender system the situation on both systems. e.g. sender and Salesforce are not consistent anymore. This mode does not support that the sender sent deltas. This mode works only correctly when the sender always sends in full mode e.g. all children every time! - When user using **"Delete Specific Child "** ​meaning that when the parent record is exits in salesforce and the child Interface is exist and we want to change the some field in  child record so it will delete the child records that has specific child  external id and add the new child with the same. - When user using  **"Delete +Upsert " **meaning that when Parent interface for object Quote * Child interface for object QuoteLineItem * Existing records in system: * Quote XYZ * Quote Line Item 1 * Quote Line Item 2 * Incoming: * Quote XYZ * Quote Line Item 2 * Quote Line Item 3 * Expected result: * Quote XYZ updated * Quote Line Item 1 deleted * Quote Line Item 2 updated (IMPORTANT: THIS DOES NOT MEAN "DELETE"+"INSERT") * Quote Line Item 3 inserted. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 6. Runtime Configuration-General Slug: runtime-configuration-general URL: https://help.skyvva.com/#article/runtime-configuration-general ================================================================================ # 6. Runtime Configuration-General In the Interface Detail page, we have a section "Runtime Configuration-General". In this chapter, we will understand all the fields contains in the Runtime Configuration-General. Check the picture given below of the Runtime Configuration-General. ![](../images/2018/10/rc-general.png) As we can see in the picture there are eight fields, which are defined below. #### Max Number of Retry This is the maximum number of retry (message reprocessing). #### Activate Message Deletion Rules This is an indicator of the message-deleting rules. If unchecked, no check the rules; if checked, check the rules. #### Number of days to keep Messages This parameter is to set a number for this field to define how many days the message will be kept before it gets deleted. #### Post Feed Check this field if we want to show the message link on the sObject which was created or modified by this message. With this feature, the user can see that this record was created by the SKYVVA message XXXX. The user can jump from the record to the SKYVVA Message. #### Number of Records per Batch/Upload It is indicating the number of records to be processed per upload/execute used for the batch load (for example manual load, buffer, Right90, etc). It located in Salesforce. #### Delete Completed but keep other Message Set this flag if you don't want to persist the message on the database. The default value is "uncheck" meaning that message will be persisted by default. Note that only successful messages are deleted but not failed and pending messages. #### Custom Processing Tick this in case the business logic for integration is very complex that automatic processing is not possible to manage. And it needs a custom apex class to handle this custom processing for this interface. #### Custom Processing Class The custom processing class full name (including namespace if any) in case custom processing is used. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 2. Email Adapter Slug: email-adapter URL: https://help.skyvva.com/#article/email-adapter ================================================================================ # 2. Email Adapter An email adapter a support sending email to Salesforce using an attachment (source file) to carry the business data. The functionality is to pass parameters to the email subject and body. You can pass business data with the subject and body. As soon as the Email arrives, the data import is initiated automatically. #### The configuring of email service on Salesforce This section will explain the process of configuring the Service on Salesforce. You can follow the steps below: Log in to Salesforce and go to Setup then click on Custom Code ![](../images/2018/10/1-4.png) Click the button 'new Email service'![](../images/2018/10/2-4.png) ![](../images/2018/10/3-3.png) There are some fields you must know on the Email Service Information Page: - Email Service Name: E.g. E-mail Adapter - Apex Class: search for “IAdapterEmailDataLoader” - Accept Attachments: All - Check icon ‘Active’ - On Failure Response Setting: Click on the Dropbox field and configure how Salesforce response when an attempt to access this email service falls for the reason shown below. - Click on “Save and New Email Address” [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you did not Check icon 'Active'  the Email Service is created deactivated in this case you can of the active manually, You will see under Setup -> App Setup -> Custom Code-> Email Service -> Click on your Email Service Name[/su_box] ![](../images/2018/10/4-3.png) - Email Service activation. - Create a new Email Address : ![](../images/2018/10/5-2.png) Email Address: e.g.      [e-mail_adapter@k-v7q9ktay1frsnh00m0qwgvne3gsfpkhbzk9qdrz5vnwzdp75y.28-bakieae.ap6.apex.salesforce.com](e-mail_adapter@k-v7q9ktay1frsnh00m0qwgvne3gsfpkhbzk9qdrz5vnwzdp75y.28-bakieae.ap6.apex.salesforce.com) **Creating an Email adapter** For this part, the explanation will focus on creating an email adapter. To create an adapter you can follow the steps below: - Click on the TAB “Adapter” then “New” and input the information in the required field: - Name: E.g. E-Mail Adapter - Type: Select from the Dropbox=> Email => Click Save Property1: Name: select from Dropbox -> filetype Value: e.g. CSV Adapter: e.g. E-Mail Adapter. Property2: Name: select from Dropbox -> Separator Value: e.g., Adapter: e.g. E-Mail Adapter. ![](../images/2018/10/6-3.png) ![](../images/2018/10/7-3.png) **Editing on Interface ** You can enter your existing interface and edit by choosing an adapter. E.g. E-mail Adapter. ![](../images/2018/10/8-3.png) **Subject Line of your Email** Accept the email address from salesforce.com by email. The subject line of the email should read as follows: integration=your_IntegrationID;interface=Name_of_the_Interface Note: Provide the IntegrationID and the name of the Interfaces. The IntegrationID is found in the URL of the actual Integration. When you are there, search for a 15-digit ID (id= ....) ![](../images/2018/10/9-3.png)Attach the record that you want to import and send the email. ![](../images/2018/10/10-3.png) - E-mail address generated by Salesforce. - Integration=your_IntegrationID;interface=Name_of_the_Interface. - The record you want to import (must be the same in the structure that implements our interface). In addition, send the email. [su_box title="Tip" box_color="#2a8af0" title_color="#000000"]Be sure to test the mapping of your integration first (manual upload). If this works, then get to work with the mail import.[/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Interface Group Title: 2. Type of interface group Slug: type-of-interface-group URL: https://help.skyvva.com/#article/type-of-interface-group ================================================================================ # 2. Type of interface group There are two types of interface group which are the Business related logical group and the Technical group. This section will be explained in detail what these interface group types are. #### Business-related logical group This group is business-related since the contact can only be posted after the account has been posted ( when you put the interface account and contact with one group). It’s all about an order of business process. To keep this order you can define the group and set the property to “EOIO”. When you set this way the account will be posted before the contact interface. #### Technical group The technical group is to increase the performance for the posting of data. You need to create this group to group the interfaces which are not related to business and these interfaces are quite small. Without wasting time and resources, you can send these interfaces once at the same time by setting this group to “EO”. #### Creating the interface group To create a new interface group, let us look at some steps to follow: - Open “Integration Admin” and “Interface Group” tabs - Click on “New Interface Group” to create a new one ![](../images/2018/10/1-5.png) - Enter a name for an interface group and then select the integration where the interface group belongs to. ![](../images/2018/10/2-5.png) - Choose the type of the interface group ![](../images/2018/10/3-4.png) - Select the priority for the interface group then click Save ![](../images/2018/10/4-4.png) - Click on “Add Interfaces” to add an interface to the group ![](../images/2018/10/5-3.png) - Select the interface you want to add to this new interface group ![](../images/2018/10/6-4.png) - Here is the result of creating an interface group. ![](../images/2018/10/7-4.png) ### ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Workflow Title: 5. Using Formula in workflow Slug: using-formula-in-workflow URL: https://help.skyvva.com/#article/using-formula-in-workflow ================================================================================ # 5. Using Formula in workflow 4There are many functions to choose to do in the workflow. However, this documentation will be explained two specific functions, which are: - VLOOKUP - IF #### VLOOKUP Formula VLOOKUP function uses to retrieve a field value from the custom/standard object. You can use this function to look up for the value of the field if it is available in Salesforce. The result will be True or False base on the condition you set. - Syntax: VLOOKUP(Standard/CustomObjectName,FieldToRetrieve,FieldCondition1,Condition1,FieldCondition2,Condition2,...) To set condition for workflow, you can: - Choose function and insert it into the Condition box by clicking on Insert Function button. - Input the Source Fields and Operators - Test Formula to see if the result. ![](../images/2018/10/nwf4.png) #### IF Formula IF function is used to check whether a condition is true and return one value if TRUE and another value if FALSE. - Syntax: IF(logical_test, value_if_true, value_if_false) To set the condition for workflow, you can: - Choose function and insert it into the Condition box by clicking on the Insert Function button. - Input the Source Fields and Operators - Test Formula to see if the result. - Checks whether a condition is true and returns one value if TRUE and another value if FALSE. ![](../images/2018/10/nwf5.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Transporting of SKYVVA object Title: 2. Backup/Restore every SKYVVA object Slug: backup-restore-every-skyvva-object-using-rest-api URL: https://help.skyvva.com/#article/backup-restore-every-skyvva-object-using-rest-api ================================================================================ # 2. Backup/Restore every SKYVVA object - The requirement is to Backup and Restore every **SKYVVA** object that you need to transport from one instance to another instance. It means that you can restore only the Adapter, Workflow, or Interface (For example: You go to the tab Adapters and choose one or more, then press the Restore Adapter button). - Now when the user restores Integration we backup also Interfaces, adapters, and workflow that were included in this Integration. [su_table responsive="yes"] ### Backup Process: ### Restore Process: - **Identify Dependencies: ** Before starting the backup process, identify the dependencies between Adapters, Workflows, and Interfaces. Understand the relationships between them to ensure a complete backup. - **Backup Adapters:** Allow users to select one Adapter to backup. Capture all relevant configuration settings and metadata associated with the selected Adapters. - **Backup Workflows:** For each selected Adapter, backup the associated Workflows. Include information about the sequence, logic, and settings. - **Backup Interfaces:** For each selected Workflow, backup the corresponding Interfaces. Capture information about the data mappings, settings, and other relevant details. - **Backup Data:** Store the backup data in a structured format. This could be in a file or a database, depending on our SKYVVA integration application's architecture. - **Select Integration:** Allow users to select a previously backed-up Integration to restore. - **Restore Interfaces:** Based on the selected Integration, restore the Interfaces along with their associated configurations, mappings, settings, and transformations. - **Restore Workflows:** For each restored Interface, restore the associated Workflow with its sequence and logic. - **Restore Adapters:** For each restored Workflow, restore the associated Adapter with its configuration settings and metadata. - **Update Dependencies:** Ensure that dependencies between Adapters, Workflows, and Interfaces are updated correctly during the restore process. - **Validation:** After the restore process, perform validation checks to ensure that the restored Integration functions correctly. This may include running tests or validations to confirm the integrity of the restored configuration. [/su_table] - There are **4 Steps **to be followed to achieve Backup-Restore functionality. For example: **Step 1: **Create a Remote Site Setting in the source Organisation. (SendersOrg) OrgA. - Go to Setup - Enter remote site settings in the quick-find box - There are 2 remote site settings to create. Login Url: [https://login.salesforce.com](https://login.salesforce.com) (Production) or [https://test.salesforce.com](https://test.salesforce.com) (sandbox) - Target Org Url: [https://ap5.salesforce.com](https://ap5.salesforce.com) (sample) (Classic URL) [https://akashtest-dev-ed.my.salesforce.com](https://akashtest-dev-ed.my.salesforce.com) - Remote site settings for Login Url. Check the picture given below. ![](../images/2018/10/image_2022_03_25T13_08_13_340Z.png) - Remote site settings for Target Org Url(Classic URL)/ Lightning URL. Check the picture given below. ![](../images/2018/10/image_2022_03_25T13_10_18_881Z.png) - Hence both the remote site settings are created. ![](../images/2018/10/image_2022_03_25T13_12_15_023Z.png) **Step 2:** **Create a Connected App in Source Organization(Receivers org) OrgB** - Go to Setup - Enter App Manager in the quick find box - Click on New Connected Apps ![](../images/2018/10/transport2.png) - Please, add **Full Access** to **Selected Oath Scopes**. ![](../images/2018/10/image_2022_03_25T13_18_02_610Z.png) ![](../images/2018/10/image_2022_03_25T13_19_32_809Z.png) - In the connected app, you will get the **Consumer Key** And **Consumer Secret**. And use these values to create a Transport Routes. **Step 3:** **Create a Transport Routes(Senders org)** - Click on the Integration Cloud Tab - Open Transport Route - Click on New - Fill all the fields - Enter Consumer Key and Consumer Secret of Target org. - Check the details page as shown below. - Username, password, and security token we will enter of target org. Check the picture given below. ![](../images/2018/10/image_2022_03_25T13_26_13_413Z.png) **Step4: Transport Route** - Go to the **SKYVVA** integration app - Click on Integration - Select the Integration that we want to Restore - Click Export Integration To Other Org. ![](../images/2018/10/image_2024_01_16T14_46_59_605Z.png) - Choose Transport Route and Click Transport. ![](../images/2018/10/image_2024_01_16T14_51_04_498Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you do not see the Transport To Other Org button, you need to edit the layout on SKYVVA__Integration__c SObject. For Restore other **SKYVVA** sObjects like IStructure, IMapping, IChained, IWorkFlow, IForeign Key, etc. You need to edit the layout on SKYVVA__Interface__c Sobject to add the button Transport To Other Org into the related List. All SObjects that you Restore will be overridden on Target Org.[/su_box] - In the Target Organization, there is the same Integration. ![](../images/2018/10/image_2024_01_16T14_54_07_021Z.png) #### Advantage: The advantage of using the Transport routes is that restore can send more than one integration at a time. And most importantly we can directly restore it to the other org. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Housekeeping Title: 3. Deleting logs Slug: configuration-of-logs URL: https://help.skyvva.com/#article/configuration-of-logs ================================================================================ # 3. Deleting logs #### Delete Log You set this flag when you want that the log files get also deleted when the scheduler "DoMaintenance" is running. Without setting this flag, the log files will not be deleted. #### Delete Log Files You set this flag when you want to delete log files. #### Log Levels to Delete You have to select log levels to be covered for log deletion when the scheduler runs. For example, if the value is “Info” then all logs with this status will be deleted. ![](../images/2018/10/1-13.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Note that here there is no default status that will be converted. If you don't select any status no log will be deleted. So choose at least one status![/su_box] #### Number of Days to Keep Logs & Log Files In this field, you enter the number of days to keep logs in the database before they get deleted. If the value of this field is empty then the log will be deleted immediately. If the value is not empty for example 14 then logs will be kept 14 days in the database before they get deleted. The records’ Last Modified Date is relevant for the calculation – in other words, keep those records which was last modified within 14 days (counting from today). #### Log Example:- This tab of the Integration allows you to find out what is exactly the error. Alternatively, in the case of too long error messages, you can use the Iservice_Logs to see the complete error message. ![](../images/2018/10/7-11.png) [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] IServicesUtil.searchObjectByExtId:Database.query>lst size>1 IServicesUtil.searchObjectByExtId:DONE IServicesUtil.autoloadInBatch: obj:Account; chained:true; isParent:true; opType:upsert; fromReprocess:false IServicesUtil.autoloadInBatch:autoMap> Account:{Name=Peabody Coal Comp Inc., BillingCountry=DE, BillingCity=Hamburg, BillingPostalCode=22767, Fax=987-666-444, BillingStreet=Goethestrasse 140, null, BillingPOBox__c=null, ERP_DEBTOR_ID__c=0000001171, Id=001A000000LOQsPIAX} IServicesUtil.autoloadInBatch:autoprocessMessagesInBatch:DONE IServicesUtil.autoupsertSObjectsInBatch>END upsertDataInBatch: SINGLE message linked to an sobject IServicesUtil.autoloadInBatch:autoupsertSObjectsInBatch:DONE:iResult.listMessage:(skyvvasolutions__IMessage__c:{skyvvasolutions__Related_To__c=001A000000LOQsPIAX, skyvvasolutions__Integration__c=a0IA0000001QglxMAC, skyvvasolutions__Status__c=Completed, skyvvasolutions__Modification_Date__c=2012-01-13 04:00:09, skyvvasolutions__Comment__c=Modification of Account, skyvvasolutions__Type__c=Inbound, skyvvasolutions__Interface__c=a0JA0000002F37dMAC, skyvvasolutions__Creation_Date__c=2012-01-13 04:00:08, Name=IM#2012-01-13 05:00:08.598000, skyvvasolutions__ExtValue__c=0000001171, skyvvasolutions__Is_Alerted__c=false, skyvvasolutions__External_Id2__c=a0JA0000002F37dMACIM#2012-01-13 05:00:08.59800013264272085993E0bCPvEYVgIz4iompijDqjzMSxUp6RcSS6xyQ0wBQs=, Id=a0EF000000ApMx3MAF}) IServicesUtil.autoWorkflow:WORKFLOW COUNTER:2; skyvvasolutions__IWorkFlow__c:{Name=I-00000057, skyvvasolutions__Operation_Type__c=upsert, skyvvasolutions__Active__c=true, skyvvasolutions__Filter_Messages__c=false, skyvvasolutions__InFixToPostFix__c=PARNR¤]¤<>¤PARNR¤]NULL¤<>¤&, skyvvasolutions__TargetInterfaceId__c=a0JA0000002FZLjMAO, skyvvasolutions__InterfaceSourceId__c=a0JA0000002F37dMAC, Id=a0HA00000032AxMMAU, skyvvasolutions__IntegrationId__c=a0IA0000001QglxMAC, skyvvasolutions__CheckNext__c=false} IServices.autoWorkflow:filterMessagesBasedOnWorkflow:DONE IServicesUtil.autoWorkflow:No messages were matched to the condition of the workflow I-00000057 with ID a0HA00000032AxMMAU IServices.integrate():integrateOne:DONE - 5:09:00, 180 [IServices integrate() log] :COMPLETE [/aux_code] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Housekeeping Title: 4. Deleting Attachments Slug: configuration-of-attachments URL: https://help.skyvva.com/#article/configuration-of-attachments ================================================================================ # 4. Deleting Attachments The attachment basket history contains only the header data of an attachment, which has been processed successfully. When talking about attachment deletion then the entry of the history basket is deleted and not the physical attachment because it is removed after successfully processing already. #### Delete Basket Histories If it is checked, the Maintenance scheduler will perform Basket History Deletion for this integration. ![](../images/2018/10/2-13.png) #### Number of Days to Keep Basket Histories This field is referring to the number of days to keep Basket Histories. If the value is blank, then it will delete immediately ![](../images/2018/10/3-12.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Housekeeping Title: 5. Configuration examples Slug: configuration-examples URL: https://help.skyvva.com/#article/configuration-examples ================================================================================ # 5. Configuration examples Below are some example scenarios: #### Scenario 1: ![](../images/2018/10/4-12.png) Based on the above figure, below is a short explanation: - “Automatic Reprocessing” checked: This integration will be covered for message reprocessing when the MessageReprocess scheduler run - When the Maintenance scheduler runs, it will perform as follows: - Log deletion: since the “Number of Days to Keep Logs & Log Files” is blank and “Log Levels to Delete” are “Error; Warning; Info” and “Delete Log Files” and “Delete Logs” are checked, then it will delete both logs with the specified levels and log files immediately – no matter when records lastly modified. Note: as per run, only 1000 logs and 1000 log files will be covered. - Message deletion: since the “Number of Days to Keep Messages” is blank and the “Delete Messages” checked and no other message statuses selected, then it will delete only “completed” messages immediately – no matter when records lastly modified. #### Scenario 2: ![](../images/2018/10/5-11.png) Based on the above figure, below is a short explanation: - “Automatic Reprocessing” unchecked: This integration will not be covered for message reprocessing when the MessageReprocess scheduler run - When the Maintenance scheduler runs, it will perform as follows: - Log deletion: since the “Number of Days to Keep Logs & Log Files” is blank and “Log Levels to Delete” are “Error; Warning; Info” and “Delete Log Files” and “Delete Logs” are checked, then it will delete both logs with the specified levels and log files immediately – no matter when records lastly modified. Note: as per run, only 1000 logs and 1000 log files will be covered. - Message deletion: since the “Number of Days to Keep Messages” is blank and the “Delete Messages” checked and no other message statuses selected, then it will delete only “completed” messages immediately – no matter when records lastly modified. #### Scenario 3: ![](../images/2018/10/6-12.png) Based on the above figure, below is a short explanation: - “Automatic Reprocessing” unchecked: This integration will not be covered for message reprocessing when the MessageReprocess scheduler run - When the Maintenance scheduler runs, it will perform as follows: - Log deletion: since the “Number of Days to Keep Logs & Log Files” is 10 days and “Log Levels to Delete” are “Error; Warning; Info” and “Delete Log Files” and “Delete Logs” are checked, then it will keep those logs with the specified levels and log files for 10 days - those records last modified within 10 days and the others will be covered for deletion. Note: as per run, only 1000 logs and 1000 log files will be covered. - Message deletion: since the “Number of Days to Keep Messages” is 7 days and the “Delete Messages” checked and no other message statuses selected, then it will keep messages for 7 days - those records last modified within 7 days and the others will be covered for deletion. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 3. Formula In Mapping Slug: using-formula URL: https://help.skyvva.com/#article/using-formula ================================================================================ # 3. Formula In Mapping #### What is Formula Mapping? Formula mapping is a complex mapping rule – for example, a combination of source fields or a combination of functions and source fields mapped to one sObject field. we can do formula mapping using different functions. #### VLOOKUP Formula VLOOKUP is one of SKYVVA formula functions, which is better than the function of Salesforce that can retrieve the value from both standard and custom objects, different fields, e.g. Id and Name, etc. with many conditions. To add any formula in mapping, you have to check on the Formula box at the right as in the picture below and choose any kind of function or double click on a row to open a Formula and expression window. Here is the syntax of VLOOKUP: ***“VLOOKUP(Standard/CustomObjectName,FieldToRetrieve,FieldCondition1,Condition1,FieldCondition2,Condition2,...)”*** The popup window below will show when you check the flag and click on the line. - Choose function = VLOOKUP then click Insert Select Function button - Enter the values - Clicks on Test Formula to see output if it is true or failed than Save. ![](../images/2018/10/6.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If the output is failed, it means that your formula is incorrect. In conclusion, after you map all fields, do the formula and choose the External ID, please save. Just in case you forget to save, all your Data Mapping will be lost.[/su_box] #### IF Formula IF is also one of the formula to use in mapping. IF function is using to test for or evaluate certain conditions, and then react differently depending on whether the test was TRUE or FALSE. The IF function can perform a logical test and return one value for a TRUE result, and another for a FALSE result. You can use it to test for a specific condition or more than one. Here is the syntax: ***IF(logical_test, value_if_true, value_if_false)*** This section will only focus on how to use formula, so the steps will show at Data Mapping Editor where you have to check the flag on the Formula box and click the line in order to get the popup window. - Choose function = IF then click Insert Select Function button - Enter the values - Clicks on Test Formula to see output if it is true or failed than Save. ![](../images/2018/10/7.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If the output is failed, it means that your formula is incorrect. In conclusion, after you map all fields, do the formula and choose the External ID, please save. Just in case you forget to save, all your Data Mapping will be lost.[/su_box] #### Add Apex class to use as Formula This feature enables the end-user to map fields not only with basic functions like (CONCAT, CONTAINS, IF, ISNULL, MAX, MIN…) but also with Apex Class. In this Class user, write the apex logic. We add also this Functionality to the Formula for defining workflow conditions as well. This feature enables the user to extends the function of mapping formula to execute their apex class. Sometimes, the standard formula cannot handle the complex business logic. So the user can write the apex script to execute the business logic. The apex class must be extended to SKYVVA’s based class <***skyvvasolutions.IFormulaBase***> and override some methods: - ***public override String executes (Map record)***: execute when processing mapping. The user can define the formula based on data in map ***record ***and return their result as text (of Number, Date, DateTime, Id) is required by integration. - ***public override void preExecute(List> records)***: execute before ***executing (…) ***and processing mapping, It is optional. But important in case execute query statement to search existing record in Salesforce and cached result for using accordingly. [su_box title="Warning" box_color="#F7DC6F" title_color="#000000"] Does not execute the query in method execute(…) because it is called when processing mapping every message record data, It can exceed the query limit in salesforce. Please override the method preExecute(…) then query and cached the result for using in execute(…). Invoke apex class with formula APEXCLASS("SkyvvaCustomFormula"): The apex class must be surrounded by double-quotes. [/su_box] **Mapping** ![](../images/2018/10/8.png) This apex query all accounts based on ERP_DEBTOR_ID number to get each account id to map to the target field AccountId for contact. #### Sample Apex Class: `***public override void preExecute(List> records)***`: Queries all accounts in salesforce based on ERP_DEBTOR_ID’s values and caches result in Map. ***public override String execute(Map record)***: Get account id from cached and return the id. **global with sharing class **SkyvvaCustomFormula **extends **skyvvasolutions.IFormulaBase{ //cache of account Id Map erpIdAccountId=**new **Map(); /* Query accounts based on ERP_DEBTOR_ID and cache the result in map erpIdAccountId @param records:          Collection of map data of every messages i.e: list of map record records [{email=test1@gmail.com, ](mailto:email%3Dtest1@gmail.com)erp_debtor_id=RES001, firstname=test1, lastname=test1} [{email=test2@gmail.com, ](mailto:email%3Dtest2@gmail.com)erp_debtor_id=RES002, firstname=test2, lastname=test2} */ `**public override void **preExecute(List> records){ //System.debug('>SkyvvaCustomFormula.preExecute: message- records:'+records.size()); //add value of erp_debtor_id into set **Set** erpIds=**new Set**(); **for**(Map m: records){ //key must be lower case String erpId=m.**get**('erp_debtor_id'); **if**(String.isNotBlank(erpId))erpIds.add(erpId); } //System.debug('>SkyvvaCustomFormula.preExecute: Set erpIds:'+erpIds); //>Set erpIds:{RES001, RES002} //Query accounts based on set erpIds and put to cache **for**(Account a: [**select **erp_debtor_id c,id **from **Account **where** ERP_DEBTOR_ID c **IN**:erpIds]){ erpIdAccountId.put(a.erp_debtor_id c, a.Id); } //System.debug('>SkyvvaCustomFormula.preExecute: cache erpIdAccountId: '+erpIdAccountId); //>erpIdAccountId:{RES001=001F000001hGGJhIAO, RES002=001F000001mv8F4IAI} } /* Find account id based on ERP_DEBTOR_ID from cache @param record: map contains key/value of each message-data. the key of must be lowercase` `` `e: record[{email=test1@gmail.com, ](mailto:email%3Dtest1@gmail.com)erp_debtor_id=RES001, firstname=test1, lastname=test1}` ` */ **public override **String execute(Map record){ //System.debug('>SkyvvaCustomFormula.execute: '+record); //key must be lowercase String erpIdVal=record.**get**('erp_debtor_id'); //return account-id **return **erpIdAccountId.**get**(erpIdVal); } }` #### Remove leading zeros To handle incoming values with leading zeros in an inbound interface using the **SKYVVA** integration app, you can utilize Salesforce's Apex code to process the data. Let's assume you receive the string `000234898923` and want to extract the number without the leading zeros `(234898923)` - In this example, a global class formulaClass extends skyvvasolutions.IFormulaBase. Inside the execute method, the field value is retrieved from the incoming record using record.get('UHL_SalesAssistant1__c'). The Integer.valueOf() function is then used to convert the string to an integer. This process automatically removes any leading zeros from the number. - The relevant part of the code is: `Integer personnelNo = Integer.valueOf(record.get('UHL_SalesAssistant1__c')); ` - After obtaining the integer value, a query searches for a matching contact using the personnel number. If a match is found, the Contact ID is returned; otherwise, an empty string is returned. - This approach effectively handles strings with an unknown number of leading zeros, converting them to integers using the Integer.valueOf() method. This ensures that only the significant digits are processed, making it a robust solution for incoming data fields with variable-length numbers. `global with sharing class formulaClass extends skyvvasolutions.IFormulaBase { global override void preExecute(List> records){ //system.debug(records); } global override String execute(Map record){ Integer personnelNo = Integer.valueOf(record.get('UHL_SalesAssistant1__c')); //234898923 List cons = [SELECT Id From Contact Where UHL_PersonnelNo__c=:personnelNo Limit 1]; return (cons.size()>0? cons[0].Id : ''); } }` ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 2. Mapping Method Slug: enable-hybride-mapping URL: https://help.skyvva.com/#article/enable-hybride-mapping ================================================================================ # 2. Mapping Method #### Mapping Mapping is the term to map source data fields to their related target data fields. It depends on the key concepts. To check the fields in the UI/Front end forms and mapped consistently with the corresponding DB table. #### Purpose In order to figure out how the **data** needs to be formatted or **mapped**. It must also explain the primary key in the source system. SKYVVA provided the following possibilities for mapping in both inbound processing. If you either set the flag **"External Mapping"** or **"Internal Mapping"**. If both flags are checked then you have created another new method called **"Hybrid-Mapping"**. **External Mapping** **Internal Mapping** **Description** **Comment** x Mapping in Sender e.g. SAP-P) Fields are Salesforce field names. A mapping editor is not shown. x Internal Mapping Fields are not Salesforce field names. A mapping editor is shown. x x Hybrid Mapping Fields in Salesforce Field names. A mapping editor is shown. #### External Mapping Indicate the interface is over PI (SAP-PI-SF). In this case, no mapping is required. In other words, the mapping and business logic are managed by an external system. To use external Mapping you have to create an interface and check the flag in order to activate. ![](../images/2018/10/1PM.png) As mentioned above in the table, the mapping editor is just shown the root **Node** when using **External Mapping.** ![](../images/2018/10/2PM.png) #### Internal Mapping Create an inbound Istructure on the interface. To use Mapping in SFDC you have to create an interface and check the flag in order to activate. ![](../images/2018/10/3PM.png) As mentioned above in the table, the mapping editor is shown when using **Internal Mapping**. ![](../images/2018/10/4PM.png) #### Hybrid Mapping Hybrid Mapping is a combination of both External Mapping and Internal Mapping.  Fields Mapping in SFDC will overwrite the Fields in External Mapping. To use Hybrid Mapping you have to create an interface and check the flag in order to activate. ![](../images/2018/10/5PM.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If External Mapping and Internal Mapping are checked, Hybride mapping will be applied.[/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 4. Set type for imapping record for REST request mapping Slug: set-type-for-imapping-record-for-rest-request-mapping URL: https://help.skyvva.com/#article/set-type-for-imapping-record-for-rest-request-mapping ================================================================================ # 4. Set type for imapping record for REST request mapping When making rest API call we want to use our mapping tool to map the request structure of the API. **Test Case: **Create Rest Request Type with Outbound Interface -Create One **MetaData Providers**->Create three **IStructure Repository** as **the screenshot** below: ![](../images/2018/10/1-14.png) Click **Others** in IStructure Repository Name->Create some Message Type below: ![](../images/2018/10/2-14.png) Create some IStructure like the screenshot in Other Istructure Repository ![](../images/2018/10/3-13.png) Add some **MsgType** Filed Entries in **Header** Message Type: ![](../images/2018/10/4-13.png) ![](../images/2018/10/5-12.png) Add some **MsgType** Filed Entries in **Recipients **Message Type: ![](../images/2018/10/6-13.png) Create an **Outbound** interface->add message type in this interface as the screenshot below: ![](../images/2018/10/8-11.png) Navigator to Mapping section->Map Target and source filed->Save ![](../images/2018/10/9-11.png) Enter to IMapping section in Interface->click IMapping Name ![](../images/2018/10/10-11.png) Check UsageType in **UsageType** Field: ![](../images/2018/10/11-9.png) Please verify it with the message type: Result: it is the same Imapping Details ![](../images/2018/10/12-10.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 5. Mapping of complex and hierarchical object Slug: 20-4-enhance-mapping-tool-to-have-hierarchical-tree-view-and-map-data-of-parent-child-in-one-shot URL: https://help.skyvva.com/#article/20-4-enhance-mapping-tool-to-have-hierarchical-tree-view-and-map-data-of-parent-child-in-one-shot ================================================================================ # 5. Mapping of complex and hierarchical object #### Introduction To arrange interfaces in order means a hierarchical interface. It is a structure in which interfaces are ranked according to levels of importance. - We enhance the Skyvva mapping tool to hierarchical tree view and map data of parent/child in one shut. - A Skyvva tree mapping is a visual method for displaying hierarchical data related to the parent interface and child interface. - Skyvva tree mapping feature is built to reduce the complexity of manual work. #### What Is Mapping? - Mapping is one of the most useful and important features of SKYVVA. - It is basically a data transformation tool. - It's UI is in graphical form. - Mapping is a term to map source data fields to their related target data fields. It depends on the key concept. To check the fields in the UI/Front end forms and mapped consistently with the corresponding DB table. - In order to figure out how the data needs to be formatted or mapped. It must also explain the primary key in the source system. - We can do mapping in two ways i.e, Inbound and Outbound mapping. - In Outbound mapping, we have only one mode available which is Internal mapping or Mapping in SFDC. - In Inbound mapping, we have 3 modes available which are Internal mapping, External mapping, and Hybrid mapping. #### What is Hierarchical Mapping? Hierarchical mapping is a mapping in which you can map all different parts of data from different sObject into the tree target structure. We can do it in two ways:- - Hierarchical mapping by using vlookup . - Hierarchical mapping by using Foreign key. **Advantage** - Reduce the complexity of manual work. - hierarchical data related to parent interface and child interface can see in one shut. - We have to create a message type for Istructure. We can easily get a hierarchical Istructure using message type. Also, It is reusable in another interface. **Pre-requisite** - Create  Integration -> Go to integration tab -> fill name field -> Save it. - Create one inbound interface. I,e Account. (Create account interface only, child interface will be automatically created in it ) **Follow the steps given below** To see the hierarchical data in the mapping tool some basic configuration is needed. **1.1  Create MetaData Providers -> New MetaData Providers** ![](../images/2018/10/mapping4.png) **1.2 Create IStructure Repository click on New IStructure Repository** ![](../images/2018/10/mapping5.png) **1.3  Create 2 New Message Type (account, contact) click on New Message Type** **Account Interface:** ![](../images/2018/10/mapping6.png) **Contact Interface:** ![](../images/2018/10/mapping7.png) **1.4  Click on Message Types Related tab then click on Message Type field entry ->New button:-** ![](../images/2018/10/HM-07.png) - **New Button Navigate to:-** ![](../images/2018/10/HM-08.png) ![](../images/2018/10/HM-09.png) *** Follow the same steps for contact Interface.** Create an Interface which Lookup to MetaData - How to create Metadata, Repository, and Message type ![](../images/2018/10/hierarchical-mapping.png) - Enter the Interface detail page, which you had just create, and mapping with the flat field that includes Account and Contact with sObject tree and then make VlookUp account with Contact. - Check this tutorial to learn How formula in mapping works. [#article/using-formula](#article/using-formula) ![](../images/2018/10/2-15.png) - The following screen display that the Interface is automatically chained with contact after done mapping and VLOOKUP. ![](../images/2018/10/6-14.png) - Integrate the data to Salesforce ![](../images/2018/10/3-14.png) - Monitor the result in Message Monitoring Board ![](../images/2018/10/7-13.png) And the below screenshot shows a result in detail of Account ![](../images/2018/10/4-14.png) ![](../images/2018/10/5-13.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Message Monitoring Title: 2. Change the Message Name Slug: change-message-name URL: https://help.skyvva.com/#article/change-message-name ================================================================================ # 2. Change the Message Name As the system will be used by multiple countries, where each country is responsible for its own data, we are thinking of naming logic to include for example country code and customer number. This will allow us to have different overviews for different countries. The screenshot given below shows the default format of message name. ![](../images/2018/11/mf3.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If we want a default message name format then we need to empty the formula screen.[/su_box] To change the Message Name: - On Interface related page click the Combobox to drop the Message Name Format button on the top of the page. ![](../images/2018/11/2019-09-16_15-35-43.png) - Then you change the default Message Name format ![](../images/2018/11/mf2.png) - The Message Name is now changed to data ![](../images/2018/11/mf1.png) - Explanation on the message name format: see below figure (message detail page): ![](../images/2018/11/mf4.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Message Monitoring Title: 3. Reprocessing of Messages Slug: reprocessing-of-messages URL: https://help.skyvva.com/#article/reprocessing-of-messages ================================================================================ # 3. Reprocessing of Messages MessageReprocess Job is the process to be used for reprocessing failed and a pending message from the previous integration. It might be failed if the user does not edit or edit wrong business logic in IMessage Data. #### The configuration of Reprocessing Message Following, we will see how to use the MessageReprocess job to correct the message records in different cases. The different cases we support are: - Pending Message (Yellow) - Failed Message (Red) **1.  Pending Message** The message is Pending because of a lot of reasons. They have been shown in Comment. It is one of many reasons that causes Pending, as an example below “The message is not met a condition of all workflows.“ As shown in the picture given below. ![](../images/2018/11/mmr5-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]You must correct your data to meet the condition of all workflows first before you can reprocess.[/su_box] **2. Failed Message** If we get failed messages at that time we can reprocess those messages after recorrecting the issue. #### Manual process. - We can see failed messages in the picture given below. ![](../images/2018/11/mmr.png) - As we can see in comment the reason for the failed message is given that no data passed for external id (Name). So click on the edit button on the failed message. ![](../images/2018/11/mmr2.png) - Enter some data in the Name field. ![](../images/2018/11/mmr1.png) - And Now click on the Reprocess button. ![](../images/2018/11/mmr3.png) - In the picture given below, we can see a reprocessed message which shows now a green flag. ![](../images/2018/11/mmr4-1.png) #### Scheduler Process: Like you can see a failed message in message monitoring just edit it and move to the scheduler screen. For reference, the picture is shown below. ![](../images/2018/11/mmr6.png) - Navigates to Integration Admin -> Scheduler -> MessageReprocess - Finds which Integration name you would like to use schedule - Sets how many minutes you would like the schedule to run. A picture is shown below. ![](../images/2018/11/mmr8.png) - As I set the scheduler time for two minutes. So we will check message monitoring after two minutes. ![](../images/2018/11/mmr7.png) - And finally, the message reprocessed. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Pending Messages sometimes might have become Failed because of missing.[/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Message Monitoring Title: 4. Jump to Interface from message Monitor Slug: jump-to-interface-from-message-monitor URL: https://help.skyvva.com/#article/jump-to-interface-from-message-monitor ================================================================================ # 4. Jump to Interface from message Monitor On the page Integration Admin, we can open the message Monitor.  The messages of all Integration will be shown there. You can now jump to an Interface from the list view. Steps to configure this feature: - Click on the Integration tab - Choose an Integration name - Click on Messages tap - Select the Search button to see all messages **Example: **See screenshot below: ![](../images/2018/11/interface.png) - Click on the interface to see the detail page: ![](../images/2018/11/interface.png) The result after clicking on the interface: ![](../images/2018/11/interface1-1.png) #### Search by external Value in message monitor Before this version, the filter does not have the External value, but now it quite easy for the user to search more messages base on External value. This version adds the possibility to search with an 'external value'. As you can see the screenshots below show the External Value was added on the filter. If you want to find any message which has the same external value you can enter the value there so the messages will show the result on the section message. ![](../images/2018/11/interface3.png) ![](../images/2018/11/interface4.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Message Monitoring Title: 5. Jump from Task to SKYVVA message Slug: jump-from-task-to-skyvva-message URL: https://help.skyvva.com/#article/jump-from-task-to-skyvva-message ================================================================================ # 5. Jump from Task to SKYVVA message As we know alert can be created as a task. Before it was not possible to jump from that task to correlated SKYVVA message. Because of this, we lose the overview on which SKYVVA message causes the error. Now it is possible to jump. #### Create Task for user:- - Enter in interface detail page. - Scroll down to the "Alerting setup" section. - And the select user. As shown in the picture given below. ![](../images/2018/11/task.png) - When we check message monitoring and if we get failed messages then we can click on Taskbar and check the auto-generated Task. As shown below. ![](../images/2018/11/task1.png) - We can see the screen below in that we can see the links in the comment for failed messages and directly open any failed message from there. ![](../images/2018/11/task2.png) - We can see the picture given below which shows the SKYVVA messages. ![](../images/2018/11/task3.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Message Monitoring Title: 6. Message summarization report Slug: message-summarization-report URL: https://help.skyvva.com/#article/message-summarization-report ================================================================================ # 6. Message summarization report We can run a report to see a message volume per interface. Open the integration and go to the message monitor. ![](../images/2018/11/reports.png) Click the link "Integration Message Report" to run the report. Here is an example run. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If there is a storage overflow or too many messages in the message table then the report will not run and get the timeout.[/su_box] ![](../images/2018/11/reports1.png) As you can see above screenshot, This report is used to see which interface has the most messages. The full detail is given in this report. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Change Data Control (CDC) Title: 5. Send Change Pointer records manually Slug: emergency-pushing-new-messages-for-cdc URL: https://help.skyvva.com/#article/emergency-pushing-new-messages-for-cdc ================================================================================ # 5. Send Change Pointer records manually Besides using CDT to transfer the change data, you are now can send these changes pointers out manually. SKYVVA provider a manual action to process the cp records manually by selecting the CP record and process them. This means you don't have to wait for the scheduled time of the CDT but can do the process for change pointers at any time. All you can do is click on the button then it will process. #### Use this feature: - Push or transfer the data at any time. - No need to wait for the scheduled time - No need to worry if the data have been changed or not ![](../images/2018/11/2019-11-13_16-54-40.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Change Data Control (CDC) Title: 2. Change Pointer table Slug: filter-application-id-in-the-cp-table-for-manual-processing URL: https://help.skyvva.com/#article/filter-application-id-in-the-cp-table-for-manual-processing ================================================================================ # 2. Change Pointer table We can process or sent data for an outbound interface using CDC. To be concrete CDT will do the sent job. CDD will detect changes and create change pointer records and store to the change pointer table. This table is specially designed to hold the change pointer for CDT only. #### What is Change Pointer Table? Change Pointer table is a table used to save the record change created by CDC processing, process Builder and CP Query editor. Besides saving all those CP records it displays the monitor screen so users can see a bit more detail data of CDC records. The CDD creates a record to this table and the CDT reads records from this table. After processing by CDT the CDT deleted the records from this table. Likewise, you can select all the Change Pointer records and send them manually. ![](../images/2018/11/2019-11-13_17-19-09.png) #### Why use the Change Pointer table? Use Change Pointer table to: - Monitor CDC records (Change Pointer) - See more detail data like sObject type and sObject Name - Search Change Pointer records manually - Create or delete Change Pointer manually #### Filter The filter section is added to make it easy for the user.  You can filter for CP records base on Integration Name, Interface Name, Status, and Application Id, etc. This filter allows you to input many application-Ids and separate them by the comma. **Fields** **Description** Integration Name The name of the integration Interface Name The name of the interface Status The status of the change pointer Max. Number of Records Use this filter to limit the result in the CDC  monitoring to prevent the time out due to many change pointers. Application Ids Show change pointer records Ids Date You can specify Creation or Modified date From The from date To The to date Sort By You can specify Creation date, Modified date or change pointer Name Order By Use to filter the change pointer in order by Ascending or Descending. #### Button ![](../images/2018/11/2019-11-13_23-38-34.png) ![](../images/2018/11/2019-11-13_23-38-47-1.png) **Buttons** **Description** CP Query Editor Build a query using the query editor to create Change Pointer records. Clear Application Ids Clear all the application Ids Search All the results will be shown if you click this button. Select All Select all result Deselect All Unselect all the records from the result list Send Send the CP out manually Delete Use to delete the Change Pointer record manually. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Change Data Control (CDC) Title: 4. Create Change Pointer records using Process Builder Slug: cdd-more-accurate-detection-of-record-changes-using-trigger-and-process-builder URL: https://help.skyvva.com/#article/cdd-more-accurate-detection-of-record-changes-using-trigger-and-process-builder ================================================================================ # 4. Create Change Pointer records using Process Builder #### What is the process builder? A process builder is a powerful tool that you can use to create Change Pointer record. The process will check the sObject record if it has been changed. It can check on individual fields and not only on the LastModifiedDate as the CDC process does. You can define a process builder to listen for change for example with the event isChanged and if something is changed SKYVVA API immediately calls an apex class. This apex class calls the SKYVVA invokes callout2()-method to push data out. #### Why use Process Builder to create a Change pointer? Besides using CDD to create CP records, SKYVVA offers users to use the Process Builder to create them. Use Realtime CDC with process builder to: - Creates change pointer records for CDT scheduler processing - Execute callout #### Actions Available In Process Builder for outbound processing: **Trigger Apex code**: You can use the Salesforce process builder to invoke Apex code you have written within Salesforce. Apex can be anything from custom logic to save a record to complex business processes. **Create a record**: This will allow you to create new records and set certain field values for the new record. **Update records:** Update one or more records that are related to the record that started the process. You can update the record with manually entered values or by using the values from related records. You can update records of parent or child The following will be shown to use Create Change pointer I,e CP record for outbound processing. #### The configuration on the interface Before configuring on the interface there are some criteria you should know: - **Use SKYVVA Outbound Scheduler:** This flag use for CDC Processing. When you check this flag, it's mean that you activate the CDC processing. It activates both CDD and CDT. - **Create Change Pointer Mode: **If you check this flag the CDD Scheduler will skip the interface if the value is specified. The interface could be set creating change pointer by process builder or trigger. Steps to configure on the interface level: - Create Outbound Interface - To be able to execute callout, you have entered interface page detail and scroll down to CDC Setting section then check the flag “Use Skyvva Outbound Scheduler”. * - The interface could be set creating change pointer by process builder or trigger. You have to select SKYVVA API. ![](../images/2018/11/2019-11-14_1-44-23.png) Note: Change Pointer Mode is by added by default. If you want to add this field on interface level then please go to this document: [How to add Create Change Pointer field on interface Level?](#article/20-8-how-to-add-create-change-pointer-field-on-interface-level) #### The configuration of the process with Process Builder This part of the document is showing how to create a process with a process builder in order to get Change pointer records. Scheduler CDD will skip this interface if the value is specified. To create a process using process builder follow the given steps: Setup =>Create =>Build=>Process builder=>New* - From Setup, enter Process Builder in the Quick Find Box, click Process Builder - Then click the New button. ![](../images/2019/01/PB-3.png) - Enter process Name. - Enter a description of the process. - Finally, choose process type - Click on save ![](../images/2019/01/PB-4.png) - Choose the object name on which you want to perform the task. - Choose the start process type. ![](../images/2019/01/PB-6.png) - Add the Criteria to define it for Action Group: Set condition field. Choose condition type. 1. Enter the criteria name. 2. Choose Criteria condition to formula evaluate to true 3. Set condition field and Choose condition type. Build Formula by inserting the Function and Field 4. Click on Save ![](../images/2019/01/PB-7.png) - Add the actions to execute when the criteria are met by: 1. Select the Action Type: Apex 2. Select the Action Name: Create CP Record 3. Select Apex Class: SKYVVA Callout/Create CP. When you section it, some of the dropdown lists will appear for you to choose from. Then click Add Row to add 2 more. ![](../images/2019/01/PB-8.png) ![](../images/2019/01/PB-9.png) To be able to execute the process builder, just click on the Activate button. ![](../images/2019/01/PB-10.png) **To monitor change pointer records** You can check the change pointer records in CDC Control Board. ![](../images/2019/01/process1.png)![](../images/2019/01/process2-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 12. Process Attachment basket manually Slug: process-attachment-basket-manually URL: https://help.skyvva.com/#article/process-attachment-basket-manually ================================================================================ # 12. Process Attachment basket manually Normally basket is reprocessed using attachment reprocess scheduler. This feature enables you to process the attachment manually when the scheduler, for example, is hanging. This feature can be very helpful in an error situation and emergency case. **Steps to process the attachment basket manually:** - Open Batch Control Board and click on Inbound Processing. There are two sections of batch monitoring which are Working Baskets and Batch Basket Histories. - Select on the items you want to manually process by clicking on the “Reprocess“ button. ![](../images/2018/11/1-20.png) ![](../images/2018/11/2-20.png) **How to monitor:** Go to Apex Jobs and check the Manual Basket process. ![](../images/2018/11/3-18.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 13. Add "Interface" tab to the Batch Control Board Slug: add-interface-tab-to-the-batch-control-board URL: https://help.skyvva.com/#article/add-interface-tab-to-the-batch-control-board ================================================================================ # 13. Add "Interface" tab to the Batch Control Board Actually, the interface is shown in the Integration screen with a different attribute in an integration. Likewise, you can see the Batch Control board which specific to batch processing and thus contain information about batch processing. Adding the “Interface” tab will be a good choice to show only batch interfaces. However, the “Interface” tab will not be shown if you un-checkbox the “Batch Mode”. The screenshot below shows that there is no interface in the “Interface” tab because the “Batch Mode” is unchecked. ![](../images/2018/11/1-25.png) ![](../images/2018/11/2-25.png) On the other hand, the Interface is shown in the second and third screenshot, as the “Batch Mode” is checked. ![](../images/2018/11/3-23.png) ![](../images/2018/11/4-17.png) #### Rename delete buttons in 'Batch Control Board' page Optimization at the 'Batch Control Board' page by adding and removing action buttons (eg we rename the ‘Delete all history basket button' to' Delete All '). In the previous version which has both buttons Delete All and Delete All History Basket were located in related list integration layout. We decided to rename the Delete All History Basket button to “Delete All” which means this name already existed. Mostly user is confusing to understand each of the functions.  “Delete All” button is referring to delete all the basket history from the organization. However, the other Delete All (Delete All History Basket is referring to delete all Basket Histories of an integration. ***Note: ***In Case for Delete All (Integration) users need to choose a specific integration. Otherwise, they might not know which integration they want to delete ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 12. Query Editor Slug: use-query-editor-in-edit-mode URL: https://help.skyvva.com/#article/use-query-editor-in-edit-mode ================================================================================ # 12. Query Editor #### What is a Query Editor? Query Editor is used to querying specific objects and fields from the Database in order to send it to an external system. As of now, you can use Query Editor in Edit mode includes the changing of existing SOQL statement. ** To use Edit mode, you can navigate to the following path:** - Go to the "Interfaces" tab - Open any outbound interface record - On the detail page, click on "Query Editor" quick action - Explore the query editor functionalities ![](../images/2018/11/editor6.png) ![](../images/2018/11/3-31.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 3. Org.2-Org. Adapter Slug: rest-adapter URL: https://help.skyvva.com/#article/rest-adapter ================================================================================ # 3. Org.2-Org. Adapter Rest adapter is used to call out data from SKYVVA – Salesforce to other SKYVVA Salesforce instance. #### The creation of an app To be able to call out the data from an instance to another instance, you need to create an app in order to connect.  This part of the tutorial will be explained the example of two instances A&B. The following steps will show you how to create an app in instance **B**: - Go to Setup => Platform Tools => Apps=> App Manager=>Connected Apps => Click New Connected App ![](../images/2019/01/1.png) - Fill in the Basic Information section as below - Connected App Name: Rest_App_Connection - Contact Email: [xxxxxxxxx@gmail.com](mailto:xxxxxxxxx@gmail.com) - Fill in API (Enable OAuth Settings) section - Enable checkbox - Callback URL - Add Selected OAuth Scopes - Save ![](../images/2019/01/2.png) - Click on **Continue** button ![](../images/2019/01/3.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Copy your Consumer Key in notepad. Then click to reveal Consumer Secret and copy to notepad.[/su_box] - After you done creating apps, saving both **Consumer Key** and **Consumer Secret** please go to back to **Setup**=>**Apps **=> **Connected Apps=> Manage Connected Apps=> Rest App Connection** => Click on **Edit Policies** ![](../images/2019/01/4.png) - Scroll down to **OAuth policies** section then: - Click on **Permitted Users** drop-down list then select **Admin approved users are pre-authorized.** - Click on the **IP Relaxation** drop-down list and select **Enforce IP restrictions**. - **Refresh Token Policy**: Select **Refresh token is valid until revoked** - Then Save ![](../images/2019/01/5.png) - Scroll down to Profiles section and click on Manage Profiles => Enable System Administrator Profile => Save ![](../images/2019/01/6.png) ![](../images/2019/01/7.png) System Administrator Profile is now Associate with Apps. #### The creating of REST Adapter You have to login access to Instant **A** in order to create the Adapter for connection to Instance **B**. To create REST Adapter, there are steps you must follow: - Enter Adapter Tab => click “New Adapter” => choose Adapter Type=REST => Save ![](../images/2019/01/8.png) For Property requirement: **1. username** - Name: username - Value: akash@cba.com **2. Password ** - Name: password - Value: Put Password+Security Token of Instance **B** **3. OAuth_20_Flow** - Name: Oauth_20_Flow - Value: Username-Password Credential (Keyword) **4. OAuth 2.0 client-id** - Name: OAuth 2.0 client-id - Value: Consumer key from connected Apps on client-side’ Instance B‘(copy from notepad as we mentioned earlier) **5. OAuth_2.0_client-Secret** - Name: OAuth_2.0_client-Secret - Value: Consumer Secret number from  client-side’ Instance B‘ **6. REST_Token_Endpoint_URL** - Name: REST_Token_Endpoint_URL - Value: (URL of client side Org B) + /services/oauth2/token **7. REST_API_Service_Endpoint_URL** - Name: REST_API_Service_Endpoint_URL - Value: (URL of client side Org B) + /services/data/v40.0/sobjects/Account **8. REST_Authentication_Type** - Name: REST_Authentication_Type - Value: ‘OAuth2.0‘ **9. REST_Operation** - Name: REST_Operation - Value: ‘POST‘ **10. TargetIntegrationId** - Name: targetIntegrationId - Value: (Enter Integration ID, a0R6A000001IvK9UAK) **11. targetInterfaceName** - Name: targetInterfaceName - Value: ‘Account‘ **12. REST_Media_Type** - Name: REST_Media_Type - Value: ‘application/json‘ (keyword) **13. Max_Request_Timeout** - Name: Max_Request_Timeout - Value: 1-120 [su_box title="Note" box_color="#2a8af0" title_color="#000000"]You might not find this parameter property in the property picklist. So if you can't find it you can add this parameter value by navigating to Setup => Object Manager=> Select Property => Field & Relationships=> click on Name field=> Scroll down to Value section then try to find the "Max_Request_Timeout" if you can't find it please select on "New" button on the top of Value section. Add the picklist value in the box then click Save.[/su_box] ![](../images/2019/01/2019-04-03_17-23-25.png) After Save, you will see the value picklist at the bottom. ![](../images/2019/01/2019-04-03_17-27-35.png) Just navigate to Adapter then select the existing REST Adapter and click on "New Property" => Select Add New=> Select the property picklist " Max_Request_Timeout" and complete the value with "120". ![](../images/2019/01/2019-04-03_17-45-22.png) - The last step is to click on Test Connection ![](../images/2019/01/9.png) #### Configure the Integration and Outbound Interface, for Instance, A side Create an Outbound Interface and input REST Adapter, choose Asynchronous for Processing Mode. Select fields from sObject for Query and do the mapping. ![](../images/2019/01/10.png) ![](../images/2019/01/11.png) #### The configuring of invoking callout using Auto mode To do invoke callout, the user can follow the steps below: - Log in to Salesforce and enter developer console => click on Debug => open Execute Anonymous Window (CTRL+E) ![](../images/2019/01/12.png) [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] *List ids=new List();* *for(Account a: [select id from Account limit 10]){* *ids.add(a.Id);* *}* *skyvvasolutions.IServices.invokeCallout('interfaceID', ids, 'BATCH');* [/aux_code] - Enter Apex code above then Execute the code ![](../images/2019/01/13.png) - See status Success ![](../images/2019/01/14.png) - Monitor the messages in the Message Monitoring Board ![](../images/2019/01/15.png) - All Data sent is reflected =>Records are showing ![](../images/2019/01/16.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 4. Data Loader Adapter Slug: data-loader-adapter URL: https://help.skyvva.com/#article/data-loader-adapter ================================================================================ # 4. Data Loader Adapter Data Loader is a client app for the bulk import and export of data. With data in a comma-separated values (CSV) file, Data Loader can create, edit, or delete Salesforce records for any standard or custom object. Data Loader exports Salesforce records into CSV files. You can then edit those CSV files or use them as templates for importing data into Salesforce. #### Creating of Data Loader Adapter This is for an example of creating a new Adapter. There are many types of Adapter, now we are going to create Adapter with type as Data Loader The following steps will let you know how to create this adapter: - Log in to Salesforce, click on the adapter tab and select New Adapter ![](../images/2019/01/1-1.png) - Choose type as Data Loader ![](../images/2019/01/2-1.png) - For properties requirement: - Filetype: CSV. - SuppressNullValue: we use to allow export blank value or not. Example: - **SuppressNullValue **= **True** (do not export fields that have blank value). - **SuppressNullValue **= **False** (normally export). ![](../images/2019/01/3-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Change Data Control (CDC) Title: 7. Using Alert Scheduler to notify by email when CDC table is full Slug: creating-alert-when-the-cdc-table-is-full URL: https://help.skyvva.com/#article/creating-alert-when-the-cdc-table-is-full ================================================================================ # 7. Using Alert Scheduler to notify by email when CDC table is full #### What is CDC Alert Scheduler? CDC Alert Scheduler is used to notify the users by sending an external email or Salesforce user. The alert will work ( send by mail or write into chatter group) depending on how you customize the alerting setup. This Scheduler checks the number of change pointer records if it exceeded the value you have set in the threshold. #### Why use Alert Scheduler? Use Alert Scheduler to: - Monitor the CDC table if the threshold from the alert tab is smaller than the CDC table value, a notification email will be sent to the assigned alert channels. #### The configure of Alert Scheduler To set Alert Scheduler you can follow the below steps: - Enter the CDC Control Board and click on the Alert tab to configure the Threshold and Alert setup. ![](../images/2019/01/1-2.png) - Navigate to Scheduler tab and start the schedule ![](../images/2019/01/2-2.png) - Check the mail This screenshot is shown when your CDC data have reached the threshold you have set ![](../images/2019/01/3-2.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Transporting of SKYVVA object Title: 3. Backup and Restore of an interface Slug: backup-and-restore-of-an-interface URL: https://help.skyvva.com/#article/backup-and-restore-of-an-interface ================================================================================ # 3. Backup and Restore of an interface In this unit, we will see how we can Backup and Restore an interface. Users must carry out this task when they want to update their existing interfaces or bring new ones from the source instance into the target instance. Unlike the function of Backup and Restore the whole integration, the user backup and restores only specific interfaces. Therefore, this will result in a faster run because you do not do a full backup and restore. [su_table responsive="yes"] **Backup Process:** **Restore Process** - **Select Interfaces:** Users choose the specific interfaces they want to backup from the source instance. - **Configuration Options:** Users may have configuration options to specify backup settings, such as whether to include related configurations, mappings, or dependencies. - **Initiate Backup:** Users initiate the backup process, and the application creates a backup file containing the selected interface configurations. - **Backup File:** The backup file is stored securely, and users have the option to download the file or store it in a designated location. - **Select Target Instance:** Users specify the target instance where they want to restore the interfaces. - **Upload Backup File:** Users upload the previously created backup file containing the interface configurations. - **Configuration Mapping:** The **SKYVVA** integration application provides options for mapping configurations if there are differences between the source and target instances. - **Initiate Restore:** Users initiate the restore process, and the application updates the target instance with the configurations from the backup file. - **Validation:** The application may perform validation checks to ensure a successful restore and provide feedback on any issues encountered. [/su_table] - Open the source integration e.g. "ABC" and mark the interfaces you want to Backup. ![](../images/2019/01/image_2024_01_17T15_25_43_025Z.png) - Click on the button "Backup Interface" to Backup the marked Interface. ![](../images/2019/01/image_2024_01_17T15_28_09_722Z.png) - Download and click the show in folder. ![](../images/2019/01/image_2024_01_17T15_29_50_839Z.png) - Now open the target integration in the same instance or a different instance. You have to create a target integration first. The target integration will be an empty instance. ![](../images/2019/01/image_2024_01_17T15_38_24_440Z.png) - In this example, the integration, "Backup Integration" does not contain any interfaces. Now do the Restore by clicking on the button "Restore". ![](../images/2019/01/image_2024_01_17T15_40_40_257Z.png) - Click on the button "Browse" to browse your backup file. ![](../images/2019/01/image_2024_01_17T15_51_18_961Z.png) - Choose your export file from your PC and click "Open". ![](../images/2019/01/image_2024_01_17T15_52_48_838Z.png) - Now click on the button "Upload" to restore the file. ![](../images/2019/01/image_2024_01_17T15_47_40_253Z.png) - In this screen, you get the option to again select or deselect interfaces, which you want to import. After making your choice click on the button "Restore Interfaces" to import. ![](../images/2019/01/image_2024_01_17T15_55_43_530Z.png) - The import is under processing. Wait for some minutes and then check the interface tab in the target integration. ![](../images/2019/01/image_2024_01_17T16_03_54_582Z.png) - You can check the progress of the import by looking into the apex job monitor. Here you see that the restore process is completed. The restore process is completed in the **SKYVVA** integration application, it indicates that the data import or restoration has been successfully executed. Users can use the Apex job monitor to review details such as job status, execution time, and any potential errors that may have occurred during the process. ![](../images/2019/01/image_2024_01_17T16_07_31_415Z.png) - Here in the target integration on the tab "Interfaces", you can see the result. In this example, all four interfaces have been restored. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Change Data Control (CDC) Title: 3. CP Query Editor Slug: create-new-cp-record-using-query-editor URL: https://help.skyvva.com/#article/create-new-cp-record-using-query-editor ================================================================================ # 3. CP Query Editor With **Query Editor**, you can navigate, define, and perform data transform operations over a data source. To display the **Query Editor** dialog box, connect to a data source, and click Edit **Query** in the Navigator pane or double-click a **query** in the Workbook **Queries** pane. #### CP Query Editor CP Query Editor is a button on CDC Control Board and when you click on it you will be able to build a query using query editor. For a simple query (all references in a single table), use the **Simple Query** pane on the left and check the **Items** to be included in your query. As you do so, they will be added to the **Query string** in the right pane. Using the **Filter** text entry box, the **Select All,** and **Remove ** buttons can help you quickly specify each field. and there are also two options for you to choose (1) "Create CP Record & Copy" and (2) " Copy to Application ID". - Create CP Record & Copy: If you click on this button then CP records will be created and Ids will copy to the "Application ID" text area on the CDC Control Board screen. - Copy to the Application ID: If this button is clicked then the records Ids will be only copied to the "Application ID" text area on the CDC Control Board screen. ![](../images/2019/01/2-4.png) #### Why use this feature? You can use this feature to: - Create a CP records and store them in the CP table - Select the records, mark them and send them out directly - Enter the SOQL statement to detect the change records - Search for business records and send them out - Save or Canel the operation #### Create Change Pointer using CP Query Editor To configure this function involve s some steps below: - Log in to Salesforce and click on the "Integration " tab and open any existing integration record - Select CDC Control Board link on Custom Link section - On Change Pointer Tab, select "CP Query Editor " button ![](../images/2019/01/1-4.png) - Build a SOQL query using the editor then select "Create CP Record & Copy" ![](../images/2019/01/2-4.png) ![](../images/2019/01/5-2.png) - Check the records from the result table ![](../images/2019/01/4-4.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 5. Put URL parameter to the SFDC2SAPPI adapter Slug: 7-5-put-url-parameter-to-the-sfdc2sappi-adapter URL: https://help.skyvva.com/#article/7-5-put-url-parameter-to-the-sfdc2sappi-adapter ================================================================================ # 5. Put URL parameter to the SFDC2SAPPI adapter A new URL parameter is created to pass the URL as a string and append to the endpoint string in the adapter. You can put any parameter to the URL as a URL parameter value. The adapter type, SFDC2SAPPI, execute callout base on the endpoint of the receiver. We need to construct the URL query parameter in the endpoint for the adapter SFDC2SAPPI. You can enter the URL query parameter manually into the URL in the parameter endpoint. You have two options to pass the URL parameter to the endpoint: - Put the URL parameter as fix string is for the static destination. It just appends to the endpoint string in the adapter. - Pass the URL parameter through the method invokeCallout2() is dynamic. It will pass the URL parameter for a different purpose. **Pre-requisite to use this feature** - Create an integration and an outbound interface - Then create SFDC2SAPPI adapter - Mapping ![](../images/2019/04/3.png) **How to pass URL parameter** To pass the URL parameter through the method invokeCallout2(), let look at some steps to be follow: - From the Nagivating Setup, click developer Console ![](../images/2019/04/4.png) - Enter the code then execute ![](../images/2019/04/5.png) [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] ***skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl();*** ***c.returnListRecord=true;*** ***String param = '?QueueId=';*** ***List ids=new List();*** ***List l=[select Id from Account limit 1];*** ***for(integer i=0;i old value was Deletion - CDD Change Data Detection - CDT Change Data Transfer - Batch Processing => old value was Batch - Bulk Processing => old value was Bulk - Interface Execution [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We don't provide the category 'Checker' to the list because we have only a global scheduler and not many based on integration, interface group or interface level. The current test result that this scheduler always gets shown is correct. We can keep this behavior. But the Scheduler 'DoMaintenance' is the Message Deletion and should only be shown when the category 'Message Deletion' is selected as well.[/su_box] #### Schedulers on a different level: ![](../images/2019/04/scheduler1.png) #### Why we use this feature? We use this feature to filter the specific scheduler. It’s easy for the user to filter any Scheduler they want. #### How to filter the Scheduler by a functional group? To use filter the Scheduler by functional group, you can. - Navigate to Scheduler Tab and choose Integration Name ![](../images/2019/04/1-2.png) - Choose Interface Group - Choose Interface Name - Choose Functional Category - Click Apply Filter button ![](../images/2019/04/2-2.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an integration? Title: 7. Generate Metadata Slug: 5-14-managemiddlewarewsdl URL: https://help.skyvva.com/#article/5-14-managemiddlewarewsdl ================================================================================ # 7. Generate Metadata #### Generate Metadata The Export function creates an export file for each format(xsd, wsdl, json Schema, swagger and openApI), and that export files are consolidated into that specific format. You can use the same file  if you want to use the files as import files (for example, when importing file to create msg type by importing function). Skyvva provide flexible export. SKYVVA provides a feature of exporting metadata where we can find in the message type. ![](../images/2019/05/Untitled1.png) **Middleware:** Software that provides a link between separate software applications. Middleware is sometimes called plumbing because it connects two applications and passes data between them. Middleware allows data contained in one database to be accessed through another. Middleware is especially integral to modern information technology based on XML, SOAP, Web services, and service-oriented architecture. **Endpoint:**  Simply put, an **endpoint** is one end of a communication channel. When an **API** interacts with another system, the touchpoints of this communication are considered **endpoints**. For **APIs**, an **endpoint** can include a URL of a server or service. ... The place that **APIs** send requests and where the resource lives are called an **endpoint**. **targetNamespace** annotation is on a **service** implementation bean that does reference a **service** endpoint interface (through the endpoint interface attribute), the **targetNamespace** is used for only the WSDL: **service**(and associated XML elements). #### Prerequisite: **Step1: **We have to create one integration. Please refer our tutorial to create integration() **Step2**: We have to create an interface. **Note: Mapping is not mandatory here.** ## Export metadata from Integration. To process the message type-based interface we have to follow the given steps: **Step1:  **We have to Create a hierarchical Message type. There is some pre-requisite to creating a message type. - Create a metadata provider. - Create IStructure repository in metadata provider - We can manually create a message type or we also can use the upload file feature to create a message type. **Step2:  **We have to create Integration. - Go to detail tab of integration - Click on customLink "Generate Metadata. ![](../images/2020/08/1-2.png) - Select Interface -> choosing a format file = XSD -> and click export button. ![](../images/2020/08/13-2.png) - After we click the Export button, we will receive the message “file generated successfully,” and we will see the XSD file in the class file. Click the View button to download the XSD file. ![](../images/2020/08/14-2.png) - Here’s the XSD file that we have generated. ![](../images/2020/08/12-3.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 14. Inbound Posting Behavior Slug: 6-23-inbound-posting-behavior URL: https://help.skyvva.com/#article/6-23-inbound-posting-behavior ================================================================================ # 14. Inbound Posting Behavior #### Introduction We call data from Soap UI with Integrate Method to SKYVVA/salesforce with selecting any one of the options from the "Inbound Posting Behavior" picklist on interface detail. #### How to use "Inbound Posting Behaviour"? #### Pre-requisite: - We have to create Integration - We have to create Interface. - Do mapping with Skyvva mapping tool. **Case1**: Call data from Soap with Inbound Posting Behavior = None The data will transfer to the salesforce database immediately after called from soap **Case2**: Call data from Soap with Inbound Posting Behavior = Immediately The data will transfer to salesforce database immediately after called from soap it is like case1 **Case3**: Call data from Soap with Inbound Posting Behavior = Future Apex The data will transfer to the salesforce database with Future processing after called from soap ![](../images/2019/05/img2-1.png) **Case4**: Call data from Soap with Inbound Posting Behavior = Queueable Apex The data will transfer to the salesforce database with Queueable processing after called from soap **Case5**: Call data from Soap with Inbound Posting Behavior = Batch Apex The data will transfer to the salesforce database with Batch processing after called from soap ![](../images/2019/05/img3-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 15. Handle request and response as a transaction for synchronous call Slug: 6-24-handle-request-and-response-as-a-transaction-for-synchronous-call URL: https://help.skyvva.com/#article/6-24-handle-request-and-response-as-a-transaction-for-synchronous-call ================================================================================ # 15. Handle request and response as a transaction for synchronous call #### Introduction A synchronous call consists of a request (outbound message) and a response (inbound message) which builds a logical unit and pair. The nature of a real synchronous call is that it happens within an HTTP callout and while the callout takes place the process is waiting until the response is delivered. As long as the response is not delivered the user transaction or the apex transaction is a block. The apex transaction will wait until it gets a timeout. Unlike this, the asynchronous call is fire and forget and doesn't wait for a response. Even the service could return a response it will not wait and the apex calling transaction is immediately free and not blocked. This is the technical view. For example: For the user who uses a real-time scenario or transaction like checking the available seat in a cinema or in flight, they want to see the result immediately and they are waiting to see the response on their screen. If they do not get a result then they will issue the request again. This means that they don't need a monitor to reprocess a failed request. A failed synchronous request doesn't necessarily need to reprocess by an admin using a message monitor. This is not the correct way. If the request fails the user will do it again from their screen. Because of this nature normally, synchronous calls do not need to persist message for reprocessing. Reprocess is needed for asynchronous messages. **Pre-requisite:** - We have to create Integration. - Create SFDC2SAPPI adapter - We have to create two interfaces where one should inbound interface and the other is an outbound interface. #### How to Handle requests and responses as a transaction for a synchronous call? We need two interface one is inbound and the other is outbound. Outbound interface for request calling and inbound interface for responding. **step1: ** - Create an outbound interface for request calling - Create an inbound interface for responding - Enter adapter (SFDC2SAPPI) for Outbound Adapter - Enter inbound interface Id for Invoke Outbound/Inbound Interface - Do mapping for the outbound interface. ![](../images/2019/05/img1-3.png) - Do mapping in the inbound interface to respond data from SAP come back in Skyvva ![](../images/2019/05/immg2.png) **step2**: Navigate to Setup => Developer Console => Open Execute Anonymous Window after that use method InvovkeCallOut2 to data. Here is Method InvovkeCallOut2: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnxml=true; c.returnListRecord=true; c.iscreatemessage=true; skyvvasolutions.IServices.invokeCallout2('InvokeCallOut','AccountRequest',new String[]{'0011j0000063flLAAQ'}, 'SYNC', c); ![](../images/2019/05/img3-2.png) The result on message monitoring after executed ![](../images/2019/05/img4-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 16. View chain definition in an interface as tree Slug: 7-25-view-chain-definition-in-a-interface-as-tree URL: https://help.skyvva.com/#article/7-25-view-chain-definition-in-a-interface-as-tree ================================================================================ # 16. View chain definition in an interface as tree #### Introduction Currently, if we look to the root chain interface, we need to click down the interface and we do not see in one view of the tree structure. It would be nice when we open this section it shows the tree structure. On the tree, we can click and navigate to the corresponding interfaces. #### Why we use this feature? This feature is created to view the chain in an interface as a tree. #### Prerequisite - Create integration - Create two interfaces Account and Contact then create IChain to show as a tree - Do mapping #### How to view chain definition in interfaces as a tree? To view chain definition in interfaces as a tree you have to follow the steps below: - First, go to your integration create three interfaces “Account and Contact” after that go to the “Account” interface and create IChained with “Contact” as a child > Save. ![](../images/2019/05/1-1.png) - Now we got the “Contact” interface in IChained as a child of “Account”. The next step is clicking on the “Contact” interface it will navigate you to interface detail. ![](../images/2019/05/2-1.png) - Once we are in Contact interface detail, navigate to the “Related list”. Create a new IChained interface to choose the “Case” interface as a child. ![](../images/2019/05/3-1.png) - Now go back to the Account interface, and you will see IChained tree with “Contact and Case” as a child. ![](../images/2019/05/4-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 7. Mapping of Imported WSDL request/respons/fault Slug: 19-6-mapping-of-imported-wsdl-request-respons-fault URL: https://help.skyvva.com/#article/19-6-mapping-of-imported-wsdl-request-respons-fault ================================================================================ # 7. Mapping of Imported WSDL request/respons/fault #### Introduction When WSDL is imported, message-types are generated for each complex-type within the WSDL, and we have to implement Mapping for this with Salesforce-Objects. This support the following use cases: - Multiple interfaces( targets) can be assigned to a single source-structure One source-message-Type -> n targets E.g., source-data from flat file which joins Parent-child: e.g. from one source-structure -> Account + Contact - Multiple interfaces( source-structure) can be assigned to a single target - Simple case each source is linked to only one target and vice versa ( This is the case which we support at the moment ) #### Case 1: #### Prerequisite - Create Integration - Create a MessageType that contain IStructures of Account and Contact ![](../images/2019/05/1-2.png) - Create an Inbound interface for Account and create Inbound Interface for Contact after that add Message Type with both interfaces #### How to do mapping with Message Type? - Navigate to Account Interface page detail and scroll down to Mapping section The below screenshot shows Message Type use with account interface for Mapping ![](../images/2019/05/2-2.png) Here is Message Type use with contact interface for mapping ![](../images/2019/05/3-2.png) - Navigate to Related tab and scroll down to Foreign Key section then Create a foreign key on contact interface to lookup field account and contact sObject ![](../images/2019/05/4-2.png) - Create ichained interface in the account interface to make the parent-child interface. ![](../images/2019/05/5-1.png) - Navigate to manual load Import data ![](../images/2019/05/6-1.png) Here is a result of the message in message monitoring after pushed by the manual load. ![](../images/2019/05/7-1.png) #### Case 2: #### Prerequisite - Create Integration - Create 2 MessageType for Account and Contact and join parent-child ![](../images/2019/05/8.png) - Create an inbound interface Account and inbound interface Contact and then add Message Type for both interfaces to do mapping #### How to do mapping with Message Type? -           Navigate to Account Interface page detail and scroll down to mapping section The below screenshot shows Message Type use with account interface for Mapping ![](../images/2019/05/9.png) Here is message type to do mapping for Contact interface ![](../images/2019/05/10.png) - Create a foreign key on contact interface to lookup field account and contact sObject ![](../images/2019/05/11.png) - Create ichained interface in the account interface to make parent-child interface. ![](../images/2019/05/12.png) - Navigate to manual load to import data ![](../images/2019/05/13.png) - Here is a result of the message in message monitoring after pushed by the manual load. ![](../images/2019/05/1-3.png) #### Case 3: **The implementation of the hierarchy’s message type and multiple related SFDC-objects. In this case, the Ichain/Interfaces are generated automatically behind the scene when source and target-structures are linked (mapped).** #### Prerequisite - Create Integration - Create a hierarchies message type E.g message type for Account and Contact as parent-child ![](../images/2019/05/2-3.png) - Create an Account interface for the parent and add message type for the interface. A note child interface is generated based on the message type with target sObject on mapping ![](../images/2019/05/1-4.png) - Create foreign key just double click on node row then choose the External ID field that mapped for parent interface. ![](../images/2019/05/2-4.png) - And here is child interface has generated automatically base on hierarchy message type that mapped with sObject ![](../images/2019/05/3-5.png) - Here is a foreign key which is created in child interface ![](../images/2019/05/4-4.png) - Then navigate to manual load to import data ![](../images/2019/05/5-3.png) Here is result data in message monitoring after pushed. ![](../images/2019/05/6-3.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 7. Use message type in response interface for REST adapter Slug: 7-6-use-message-type-in-response-interface-for-rest-adapter URL: https://help.skyvva.com/#article/7-6-use-message-type-in-response-interface-for-rest-adapter ================================================================================ # 7. Use message type in response interface for REST adapter The Representational State Transfer (REST) adapter enables you to exchange messages between remote clients or web service servers and the Integration Server. It supports dynamic URLs, REST API polling, multiple operations per channel as well as XML and JSON data formats. The rest adapter is used for data processing of both directions. I,e Inbound and outbound. **REST request-> Outbound interface** **Rest response-> Inbound Interface** #### Set-Up: #### Step 1: Create Adapter - First Insert Adaptor Record By giving prefer Name and select Type = REST - Now Insert PropertiesIf Need Authorization. - REST API Service Endpoint URL: “”, Insert Endpoint URL where Request will direct - Username: “”, Your Endservice UserName - Password: “”, Your Endservice Password - Authentication: “BASIC” - REST Operation: “POST” ![](../images/2019/01/Rest_Adapter1-1.png) Click on the Save button. It should navigate to: ![](../images/2019/01/rest_adapter01.png)![](../images/2019/01/Rest_Adapter02.png) #### Step 2: Create Metadata Now, Insert METADATA record By giving prefer details. In SKYVVA, when we create metadata, the Name filed is only a mandatory field. On MetaData the Name cannot be duplicated. ![](../images/2019/01/Rest_Adapter4.png) #### Step 3: Create Istructure repository ![](../images/2019/01/Rest_Adapter5.png) #### Step 4: Create a Message Type Now Create Message Types for IStructure Repository. The free define message type is a type and structure definition which is stored in the Repository. The message type can be resided in a WSDL, in SAP IDoc, SAP Bapi, etc… It can be stored in a file in CSV, XML or another format. For the Message Type, you have to use our defined Structure. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "REST API" : { "Request" : { "URL" : { "Query" ; {}, "Path" : {} }, "Header" : { "AuthId" : "", "Id" : "" }, "Body" : { "Account" : { "Name" : "", "Phone" : "", "Contact" : { "FirstName" : "", "LastName" : "", "Email" : "" } } } }, "Response" : { "Body" : { "Account" : { "Name" : "", "Phone" : "", "Contact" : { "FirstName" : "", "LastName" : "", "Email" : "" } } } } } }[/aux_code] - Go to your IStructure repository and click on the open editor button. ![](../images/2019/01/Rest_Adapter6.png) - Select file type as JSON and give input to open text box as below: ![](../images/2019/01/Rest_Adapter7.png) Click on save button and check created massage type. ![](../images/2019/07/test2-1.png)![](../images/2019/07/test3-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Please check the type of your msg-type. it should be the same as shown on screen.[/su_box] #### Step 5. Create Integration. Refer  tutorial (How to create integration.) - Link adapter we created earlier - Max Number of Retry (This means the number of times should we retry if the request fails the first time). ![](../images/2019/01/Rest_Adapter9.png) #### Step 6. Create Interface (Inbound/Outbound). Refer tutorial to create Interface. (How to create Interface?) **Create outbound Interface for request** Must fill this fields of Outbound Interface :   -  Outbound Adapter: Select we created earlier   - Metadata Provider: Select we created earlier  - IStructure Repository: Select created IStructure Repo.  - MessageTypes: Select MessageType (Selected MsgType TYPE should always be REST REQUEST)  - Source/Target Name:  Select Any Object  - Query: Query needs to be inserted and the query should always include all fields we have mapped or going to map.  - Map Fields ![](../images/2019/01/Rest_Adapter905.png) - Scroll down the page to the mapping section. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Workflow Title: 2. Dependent Workflow processing Slug: dependent-workflow-processing URL: https://help.skyvva.com/#article/dependent-workflow-processing ================================================================================ # 2. Dependent Workflow processing #### Introduction The current workflow processing is independent which means that we always pass all messages. But now we are providing dependent Workflow processing, which works like we have joined the condition of step 1 with AND-operation with condition 2 of the second step. Such a use case we could have where we do not pass all the 50 messages to the next step but only those messages which have been passed e.g. evaluated to 'true' by the first step. We have to remove the messages which do not match the condition from the map. This means that the map will be reduced in size every time the condition of a step doesn't match. #### Why we use this feature? We use this feature to pass the match condition message to the next step and remove the message which not match any condition. We provide two value options for the user to desire their own needs business. The followings are a workflow processing mode: Workflow Processing Mode Description Pass all messages to the next step This is the current behavior and should be set as the default value. Pass only match messages to the next step The message that matches the workflow condition will pass to the next step/ New processing mode behavior #### How does the processing mode of workflow work **Configuring the workflow processing mode:-** To activate the workflow processing mode you have to choose the picklist value which you want to use in order to pass the message: - Select the workflows tab and you can find the processing mode of workflow in the INTERFACE WORKFLOW SETTINGS section. - Click on the Processing mode then choose the mode in which you want to pass your messages. ![](../images/2019/07/nwf6.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Message Monitoring Title: 8. Create hypertext link to jump to Failed Message Slug: 25-11-show-the-comment-where-a-message-is-waiting-on-another-message-as-a-hypertext-link-to-jump-to-that-message URL: https://help.skyvva.com/#article/25-11-show-the-comment-where-a-message-is-waiting-on-another-message-as-a-hypertext-link-to-jump-to-that-message ================================================================================ # 8. Create hypertext link to jump to Failed Message #### Introduction Previously, when a message is waiting on another message due to failed, we show the link in the comment field box. However, to make it easier we provide a hyperlink to jump to that message. The hypertext link is only available for Pending Message. So, when you click on the link in the comment field box it will jump to Failed Message. #### Why we use this feature? Since we want to know why the message is Pending we decide to create this feature. We use a hypertext link to jump to the fail message. #### How to use a hyperlink To be able to jump directly to Fail Message: - Navigate to Message Monitoring after you pushed the data - Select Integration and Interface Name then click the **Search** button - Click on the hypertext link which displays in the comment field box ![](../images/2019/07/hypertext.png) - After clicking on the hypertext link we can check detail about a Fail Message. ![](../images/2019/07/hypertext1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If workflow condition doesn't met and we get pending messages at that time we will not see any hypertext link.[/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 17. How to Edit and Delete Istructure on interface related page. Slug: 6-26-create-combobox-on-istructure-section-in-interface-detail-page URL: https://help.skyvva.com/#article/6-26-create-combobox-on-istructure-section-in-interface-detail-page ================================================================================ # 17. How to Edit and Delete Istructure on interface related page. #### Introduction To make it easy for editing on IStructure field, we have a Combobox on IStructure section. This Combobox contain two buttons which are Edit and Delete. You don’t have to click IStructure to edit on the page anymore. #### Why we use this feature? We create these actions Edit and Delete buttons that can be done to rows on IStructure in IStructure section to make it easy. When you click on one of the actions, you can make the change immediately. **Prerequisite:** - Create Integration - Create Interface #### Steps to view Edit and Delete button on Istructure in IStructure section: - Open your Integration and click on interface tab - Navigate to interface detail => Related button => IStructure section - Click on the Combobox as shown below where we will get two options Edit and Delete. ![](../images/2019/07/Screen-Shot-2019-07-19-at-3.22.25-PM.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 18. What to do with failed message field? Slug: 6-24-what-to-do-with-failed-message-field URL: https://help.skyvva.com/#article/6-24-what-to-do-with-failed-message-field ================================================================================ # 18. What to do with failed message field? #### What is “What to do with the failed message”? “What to do with failed message” is a picklist field in Runtime configuration- Inbound section which gives an option to do with the fail message. Previously there are four picklist values provide as an option. However, to enhance this feature we have added two more picklist value to this field. There is six picklists value available for this field now: **Picklist value type** **Description** 1.     None: If set this field to -None- new red message will be created. 2.     Overwrite failed message: Existing If set this field to “Overwrite failed message” the existing red message will be overwritten and post again. 3.     Merge failed message: If set this field to “Merge failed message” it will merge the old and new payload and before it processes again. 4.     Delete failed message: If set this field to “Delete failed message” all failed messages will be deleted. However, you must check the field “Don’t persist message” along to be able to delete all failed messages. 5.  Overwrite failed message and delete pending: If set this field to “Overwrite fail message and delete pending” the existing red message will be overwritten and post again but the pending message will be deleted. 6.    Merge failed message and delete pending: If set this field to “Merge failed message and delete pending” it will merge the old and new payload before it processes again then the pending message will be deleted. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For “Delete failed message” picklist value requires to check the flag “Don’t persist message” too. For “Merge failed message” old and new payload must have the same external ID. [/su_box] As of now, we have provided two new more picklist values for this field in order to handle some strange behavior. We have changed the behavior of the option, so both failed/pending which have the same external Id will be deleted in the run-time. #### How do these two new options works? - **Overwrite failed message and delete pending-** The old failed and pending message with the same external value will be deleted when you post another new message which has the same external value of the old failed message. The new one is in the monitoring. - **Merge failed message and delete pending-** The old failed and pending message with the same external value will be merged and save into a new posting message and then those old messages **(failed and pending)** will be deleted and the new one is in the monitoring. #### Before setup the picklist value Before you begin to set up the picklist value, create integration, and interface. Then do the mapping on the interface. #### Setup or configure the picklist value To activate these fields you need to configure the steps below: - Open interface page detail which you have created. - Scroll down the page to Runtime Configuration – Inbound to find the picklists value field you want to configure. - Click the field to drop the picklist value. - Choose the option you want to activate. **![](../images/2019/08/Picture1.png)** [su_box title="Warning" box_color="#F7DC6F" title_color="#000000"] If you upgrade SKYVVA App to the newest release you have to add the new picklist value manually since it will not overwrite. However, if you install the App you will have those picklist values included in the package. [/su_box] #### Adding the picklist value As mention above in the warning, the picklist value has to add manually when you try to upgrade the SKYVVA App. In general, each type of picklist requires to set up in Fields & Relationships of the interface. It’s a custom field. - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager”. - Click on Object Manager then scroll down the page to find the “Interface” object, click it. - On the left side of the page, you will the panel select “Field & Relationship” field. - You can search the “What to do with the failed message” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2019/08/Picture2.png) - You will land on the “Add Picklist Values” page, just write the value in the text box area and the label name must be the same as API Name. You can add one or more picklist values here. ![](../images/2019/08/Picture3.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Change Data Control (CDC) Title: 6. CDC support to send the deleted records to the receiver Slug: 26-9-enhance-cdc-to-support-undelete-of-object URL: https://help.skyvva.com/#article/26-9-enhance-cdc-to-support-undelete-of-object ================================================================================ # 6. CDC support to send the deleted records to the receiver SKYVVA offer CDC to help you record all your change data, which you have created on any business object and send out to the external system at any time. As of now, our CDC can be able to send the deleted records to the receiver as well. CDC executes the find/fetch record base on Salesforce’s query. With the SOQL query statement, you can fetch the deleted records in the recycle bin as well with “ALL ROWS”. #### What are ALL ROWS? ALL ROWS is a keyword using to find or fetch the deleted records in the recycle bin. If you input this keyword in the SOQL statement, CDC will fetch both normal and deleted records. Only records inside the recycle bin will be fetched. Therefore, all the records that you empty from the recycle bin cannot be fetched at all. ![](../images/2019/08/1.jpg) for trigger **after delete** it is working when query selection with keyword ALL ROWS E.g SELECT BillingCity,BillingCountry,Name,Id,Description From Account ALL ROWS From the perspective of the receiver they don't see the differences if the record is deleted or not. The deleted records are kept in the recycle bin. The purpose of sending deleted records is thatThey could need it because they want to make a reports on the receiving system "how many records has been deleted in the last few days". They could want to be able to send deleted records which they still not empty from the recycle bin. [su_box title="Note" box_color="#e0ddbb" title_color="#00000"] ALL ROWS is only use for function to execute Query only (Query Editor on interface). You cannot use this keyword to fetch the deleted records by using CP Query Editor. [/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 8. Auto Create Query based on do mapping Slug: 19-7-auto-create-query-based-on-do-mapping URL: https://help.skyvva.com/#article/19-7-auto-create-query-based-on-do-mapping ================================================================================ # 8. Auto Create Query based on do mapping Previously, when you do the mapping no query will be created. However, to make the thing quite easier we enhance our tool (Mapping Editor) to have a better performance. When you mapping on Outbound Interface, it will auto-generate the query in the SOQL Query to select sObject data section on the interface page, after saving. All you do is just drag and drop the field you want to select. To generate IStructure, you have to edit Query Manually on SOQL Query to select sObject data Field. Likewise, it will generate IStructure automatically if you edit the query with the Query Editor button. #### Why we use this feature? We use this feature to auto-create Query to select sObject data field, and generate auto IStructure in Query Editor. #### Using auto create query base on mapping To auto-create query, you need to follow the steps below: - After creating integration and interface, enter page detail of interface and scroll down to the Mapping Section. Do Mapping by drag and drop in Data Mapping grid. - Click Save the mapping field then navigate to SOQL Query to select sObject data section. You will see the fields are auto-generating. ![](../images/2019/08/Screen-Shot-2019-08-02-at-10.52.12-AM.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Applicable Delete All Mapping and Delete All Query will result: - When Delete All Mapping, it won't Delete all Query. - When Delete All Query, it won't Delete all Mapping. [/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 8. Status of adapters Slug: status URL: https://help.skyvva.com/#article/status ================================================================================ # 8. Status of adapters Status is a field, which is created in the adapter showing the status of an adapter whether it is still inactive or ready to run. To deactivate the adapter, we have created the field that contains a two-picklist value like the following: **Picklist Name** **Description** 1.      Active If set to “Active” the adapter is ready to run. 2.      Inactive If set to “Inactive” the adapter is still on development. ![](../images/2019/09/2019-11-13_10-49-28.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]No need to set the status of the interface to “Undeployed” as the right place to deactivate is in the adapter.[/su_box] [su_box title="Warning" box_color="#F7DC6F" title_color="#000000"] If you upgrade SKYVVA App to the newest release, you have to add the new picklist value manually since it will not overwrite. However, if you install the App you will have those picklist values included in the package.[/su_box] #### Adding the picklist value As mention above in the warning, the picklist value has to add manually when you try to upgrade the SKYVVA App. In general, each type of picklist requires setting up in Fields & Relationships of the interface. It is a custom field. - You can click “Setup” on the top of the interface page. - In the “Quick Find” box, type the word “Object Manager”. - Click on Object Manager then scroll down the page to find the “Interface” object, click it. - On the left side of the page, you will the panel select “Field & Relationship” field. - You can search the “What to do with the failed message” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. - You will land on the “Add Picklist Values” page, just write the value in the text box area and the label name must be the same as API Name. You can add one or more picklist values here. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: SKYVVA Trigger Title: 1. SKYVVA Trigger Slug: 27-skyvva-trigger URL: https://help.skyvva.com/#article/27-skyvva-trigger ================================================================================ # 1. SKYVVA Trigger SKYVVA Trigger generation app is used to generate a script of trigger automatically. Here you can generate the invokeCallout2() call into the trigger so that the developer doesn't need to write code. The code can copy from our generation screen and paste to the trigger implementation. The developer can copy the script and customize the trigger. We provide 3 types of Trigger for you to generate the sample script. It can generate 3 kinds of scripts: Trigger Button, Trigger Apex, trigger Change Event, and Quick Action. **Trigger Type** **Description** Button Use to generate script then you can copy and paste in custom button-through execute javascript. This button will call SKYVVA Service. Apex Trigger Use to generate script and invoke apex. Change Event Trigger Use to generate the script to Send Salesforce CDC Change Event to the receiver. Quick Action Quick Action button and Button are the same, but Button isn't supported with Skyvva classic. We use the Quick Action button for support with Skyvva lightning. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The Lightning Experience doesn't support on click JavaScript buttons.[/su_box] The following screenshot displays the SKYVVA Trigger generation app. #### #### Generate Script Trigger Button To generate the script to use with the custom button you can follow the steps below: - Click the SKYVVA Trigger among other SKYVVA Integration Cloud - Then select the Trigger Type “BUTTON” - You can select the Integration Name and  Interface Name (show only outbound interface) - sObject Name also have to select - Choose Trigger Mode: Sync,Future,Batch - Click button “Generate Script” - Now you will see the script trigger button in the box and can copy to use it ![](../images/2019/09/2-2.png) #### Generate Script Trigger Apex:- - Select Trigger Type “APEX TRIGGER” - Tick Trigger Event (can tick more than one) - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode : None,Auto,Future,Batch - Click button “Generate Script” - Now you will see the script apex trigger in the box and can copy to use it - In the script, change to your own name to your own name [su_box title="Note" box_color="#e0ddbb" title_color="#00000"] At the last select with Trigger Mode, the button “Generate Script” will visible.[/su_box] ![](../images/2019/09/5.png) #### Generate Script Trigger Change Event Change Event Trigger is another picklist value created to generate the script (trigger code) to use with SKYVVA invokeCallout() method for Salesforce CDC. - Select Trigger Type “Change Event Trigger”. - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name. - Select Operation change type. - Select Trigger Mode: NONE, FUTURE, BATCH, AUTO - Click button “Generate Script”. - Now you will see the script Change Event in the box and can copy to use it. ![](../images/2019/10/re_cdc_change_event2.png) #### Generate Script Quick Action Button Due to lightning version does not support with custom button, So we need to implement our tool to generate a script of the lightning component to use with quick action instead of the button. - Select the Trigger Type “QUICK ACTION” - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode: SYNC, FUTURE, BATCH, AUTO - Click button “Generate Script” - Now you will see the script trigger button in the box and can copy to use it ![](../images/2019/09/4.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 20. Bypassing message layer Slug: 6-26-bypassing-message-layer URL: https://help.skyvva.com/#article/6-26-bypassing-message-layer ================================================================================ # 20. Bypassing message layer #### What is bypassing the message layer? Bypassing message layer is a field or a flag that created on the interface level. With this flag, you can bypass the message layer. When you checkbox this flag all messages (New, Pending, Failed) will not be created. It bypasses saving the message into the SKYVVA message layer. It dominates the interface mode whether it is synchronous or asynchronous. [![](../images/2019/09/msg_Layer.png)](../images/2019/09/msg_Layer.png) #### When to use the bypass message layer? You can use the bypass message layer when you want to save your data storage as it consumes less and fast. Use this feature to: - Skip creating message step - Hard-deleted message #### Bypassing Message layer To activate this field you need to configure the steps below: - Open the interface page detail which you have created - Scroll down the page to find Bypassing Message layer field - Checkbox the field ![](../images/2019/09/3.png) [su_box title="Warning" box_color="#F7DC6F" title_color="#000000"]If you upgrade SKYVVA App to the newest release you have to add this field manually since it will not overwrite. However, if you install the App you will have the field value included in the package.[/su_box] #### Adding the field As mention above in the warning, the field value has to add manually when you try to upgrade the SKYVVA App. In general, each type of field requires to set up in the page layout of the interface. It’s a custom field. - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager”. - Click on Object Manager then scroll down the page to find the “Interface” object or type the Interface in the "Quick Find" box, click it. - On the left side of the page, you will see the panel, select the “ Page Layouts" field. - Select "Interface Layout" - Click on "Fields" and look for Bypassing Message field then drag it to the Information section - Click Save ![](../images/2019/09/Captu000re.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: 3. Message Type and Different ways of creating message type. Slug: 17-1-message-type URL: https://help.skyvva.com/#article/17-1-message-type ================================================================================ # 3. Message Type and Different ways of creating message type. #### What is Message Type? Message Type uses to represent the hierarchical structure of service (aka Repository). For example, a service using Webservice. Message Type can be used to describe its request and response. The message type can be generated in different ways:- **1.  By importing different files format, such as:-** - CSV - XML - JSON - JSON Schema - XSD - WSDL 1.1/2.0 - Open API 2.0 (Swagger 2.0) / Open API 3.0 **2. We can import from sap metadata as table, bapi, idoc and create a message type:-** **3. Creating manually.** #### For example we can see how to upload JSON to model interface data structure:- This tool will allow us to parse the JSON schema. JSON Schema is a hierarchical structure.  It can be described with our Message Type and IStructure Structure. The node that has children will be considered as MessageType otherwise it will be considered as IStructure. A MsgTypeFieldEntery will be created accordingly if there is an IStructure connected with a MessageType. **How to create a message type by uploading a JSON file.** For message type, we have to create a metadata provider and IStructure . This is the pre-requisite for the message type. - Open the Integration Admin tab and create a new MetaData Provider. - Create New Istructure Repository by clicking it under the MetaData Provider detail page. ![](../images/2019/04/img1-4-e1555671468914.png) - MetaData Provider Name – MetaData_test - IStructure Repository Name - IstructureRepo_test ![](../images/2019/04/img4-2.png) ![](../images/2019/04/img5-1-e1555674220264.png) ![](../images/2019/04/img6.png) Upload JSON File - Click on the upload button - Choose the file and Save. ![](../images/2019/04/img7.png) - Click on the related tab to check the created message type. ![](../images/2019/04/img8.png) **Create an Interface (Inbound/ Outbound) and use the message type** Create a new inbound interface. We have select metadata provider, IStructure repository, and message type. And save the interface. For message type, we have to create a metadata provider and Istructure . This is the pre-requisite for the message type. - Open the Integration Admin tab and create a new MetaData Provider. - Create New Istructure Repository by clicking it under the MetaData Provider detail page. ![](../images/2019/04/img9.png) Click on the created interface to see Istructure in the mapping section. ![](../images/2019/04/img10.png) When we clicked on interface it should navigate to the following page. (Scroll down the page to mapping section) ![](../images/2019/04/img11.png) **Use message type to model interface data structure** With message type, you can create a message type for example by importing a WSDL from an external system. You can create a message type which links to other message types to create a hierarchy of message type. After you have created the message type simply, use it as an interface data type. The advantage of using a message type is that you can reuse that message type repeatedly for other interfaces. With the old concept, you can only create structure, which bound only to a local interface. The message type needs to be stored in a catalog. Such a catalog is the repository concept. A repository contains different message types like a library contains different functions. In other to logically group similar repository from a system let says Google, Amazon or SAP we provide the concept of the Meta Data Provider. The MetaData Provider denotes a system or a vendor. For example, you want to create messages type to connect to SAP. Therefore, you need first to create the Metadata provider with the name “SAP”. Now you can create different repository below this name. This is like building a logical category. There are several ways to create Message Type: - **SAP** - **Upload File** - **Open Editor** - **Open Database** - **The manually created Message type** - **Salesforce sObject** The WSDL generation is currently based on sObject fields. But for the future, we need to change this generation logic to use the message type. In order to be backward compatible we need to do as follow: - If the interface doesn't use message type (old style) then use the old logic - If the interface uses the message type then use the new logic. So the main purpose of this export feature is to give input format to third-party users to give us input in this format. **Generate WSDL, swagger 2.0 and openAPI for metadata exchange between Skyvva and another platform:-** This task is to add the functionality to generate XSD from our interface. When we use our interface as the basis for the generation we can generate hierarchical objects based on our chain interface concept.  We now can use Message Type and Interface to generate the metadata file. We can create a Swager 2.0 and OpenAPI 3.0 definition file for message type exchange. When we generate WSDL or swagger/open API, we use the interface name as the top-level name and for the type definition the sObject or message type name. For WSDL and swagger/open API, we need to generate the binding parameter so that a consumer can use it to invoke our API right away. When a user wants to generate the WSDL or swagger/openAPI for an interface he has to choose for which API he wants to generate. For soap and rest we provide the following API: - createMessage - processMessage - IntegrateSynchronous - Integrate - integrateBatch - SearchService - integrate3 - integrate3Synchronous You can generate six different types of file as below: - XSD - WSDL 1.1 - WSDL 2.0 - JSON Schema - Swagger 2.0 - OpenApi 3.0 #### Why we use this feature? We are implementing this functionality to generate different file formats from our interface. For the easy and smart way, we can provide client or external applications to directly get the format by calling an API e.g. soap or rest. If the external client is soap then it can call our soap API and if it is a rest based client then use the rest API. Therefore we provide a soap/rest API to get the format we export and generate as files. We need to give our interface data structure to the consumer so that they know how to consume our services. There are two ways to generate metadata for file: - sObject Type - Message Type For metadata file which generates through sObject type we have two way: - Old way - (Using sObjectName) In the Old way, we have to generate the file using sObjectName for Element in XSD and WSDL and Object Name for JSON Schema and Swagger. - New Way – (Using Interface Name ) In New way, we have to use Interface Name for Element in XSD and WSDL and Jason schema and Swagger. The default way is New Way Using Interface Name. #### Prerequisite: - We have to create Integration - We have to create two Interfaces, one using sObject (Account) and another one using Message Type. #### How to generate WSDL, Swagger 2.0 and OpenAPI 3.0? - Navigate to Manage MiddleWare WSDL which located in your integration detail page ![](../images/2019/05/1.png) - Choose your desired API and format (XSD, WSDL, JSON Schema, Swagger and OpenAPI) ![](../images/2019/05/2.png) - Then download your file that just generated. ![](../images/2019/05/3.png) - For XSD and JSON Schema, we take the sObject name or the root message type name to write as the complex type or object type. Have a look at the screenshot below: ![](../images/2019/05/4.png) - For **WSDL** and **Swagger/OpenAPI**, we use the interface name as the top-level name and for the type definition the sObject or message type name. ![](../images/2019/05/5.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For the header field, some API has a special parameter. If you are using to SOAP-UI to integrate you will have to add it manually, but it can be auto-generating by using an adapter.[/su_box] The header for Integrate API: ![](../images/2019/05/6.png) For Integrate3x we define a header format: ![](../images/2019/05/7.png) **What is the use of that exported WSDL file?** Let's take an example, Consider we have one inbound interface. In this case, the user needs to call our web service URL. While calling this service they need to provide input the same as we have the structure in message type. For this purpose, they need to check the SalesForce structure, but as we provide exported (WSDL) files, they will easily get which field they need to send and which hierarchy they need to send. Also, this file will help to know what type of req they need to send and what type of response they will get. WSDL file used for the SOAP request structure. **Pre-requisite :** - We have to create hierarchical Message type: - We have to create Integration. - We have to creation Interface. ## How to process message type based Interface? To process the message type-based interface we have to follow the given steps: **Step1:  **We have to Create a hierarchical Message type. There is some pre-requisite to creating a message type. - Create a metadata provider. - Create IStructure repository in metadata provider - We can manually create a message type or we also can use the upload file feature to create a message type. **Step2:  **We have to create Integration. **Step3: ** We have to create an outbound interface. - Select sObject for a query statement - Select message type existing for interface **Step4: **Do mapping using SKYVVA mapping tool - Scroll down the page until the source definition section. - Map the fields using drag and drop.![](../images/2019/04/img1-2.png) **Step5: **Export  WSDL File using Export metadata button - We have to click on the “ExportMetadata“ button. ![](../images/2019/04/img2-1.png) - ExportMetadata button should navigate to : ![](../images/2019/04/img3-1.png) - WSDL file is generated when we click on the export button. We have to check the structure of the exported file. #### Here we can see an example of creating message type manually:- #### Go to MetaData Providers Tab - Click on New - Create MetaDeta Providers ![](../images/2020/01/Screenshot-912.png) - Create IStructure Repository ![](../images/2020/01/Screenshot-913.png) - Save - Create **Message Type** as **Hierarchical** ![](../images/2020/01/Screenshot-914.png) - Create Message Type Name & Select Plain structure from **Type** picklist - **Root_MSG-Test, AccountTestV3**, **ContactTestV3 & CaseTestV3** message type Name - Save User Just Create **Root_MSG-Test** Message Type - Click on Related List ![](../images/2020/01/Screenshot-915-1.png) - Click on Message Type **(Child)** New button ![](../images/2020/01/Screenshot-916-1.png) - User Just Create **AccountTestV3 **Message Type - Click on Related List - Click on New Button of **Message Type Field Entry** ![](../images/2020/01/Screenshot-917.png) - Create Account Number IStructure **AccountNumber** - Create IStructure **Name** - Create Account_ID** IStructure Account_ID** - Create Billing City IStructure **BillingCity** - Create Billing Country IStructure **BillingCountry** - Save **Great user Create Message Type Field Entry Successfully** ![](../images/2020/01/Screenshot-918.png) **Now the user has to Go to Related List** - Click on Message Type **(Child)** New button - Save ![](../images/2020/01/Screenshot-923.png) - User Just Create **ContactTestV3 **Message Type - Click on Related List - Click on New Button of **Message Type Field Entry** ![](../images/2020/01/Screenshot-921.png) - Create Cont_ID Istructure **Cont_ID** - Create First Name Istructure **FirstName** - Create Last Name Istructure **LastName** - Create Email Istructure **Email** - Save **Great user Create Message Type Field Entry Successfully** ![](../images/2020/01/Screenshot-922.png) **Now the user has to Go to Related List** - Click on Message Type **(Child)** New button - Save ![](../images/2020/01/Screenshot-924.png) - User Just Create **CaseTestV3 **Message Type - Click on Related List - Click on New Button of **Message Type Field Entry** ![](../images/2020/01/Screenshot-920.png) - Create Subject Istructure **Subject** - Create Supplied Phone Istructure **SuppliedPhone  ** - Save **Great user Create Message Type Field Entry Successfully** ![](../images/2020/01/Screenshot-925.png) **Go to ** **Istructure Repository Details page** ![](../images/2020/01/Screenshot-926.png) - See how Hierarchical Type look in **Tree** ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is SKYVVA? Title: 6. SKYVVA Integration Cloud ( SKYVVA App) Slug: 1-1-skyvva-integration-cloud-skyvva-app URL: https://help.skyvva.com/#article/1-1-skyvva-integration-cloud-skyvva-app ================================================================================ # 6. SKYVVA Integration Cloud ( SKYVVA App) After installation and switch to the lightning version, you will land on Salesforce Manu. To be able to use the SKYVVA app you have to click on App Launcher, which is an app of Salesforce. Then you can search for SKYVVA Integration Cloud. When you click on this app, you will see SKYVVA Integration. ![](../images/2018/10/12-1024x500.png) **The Detail of each Cloud Tab** Cloud Tab is very flexible since the most column is able to add, remove and sort dynamically. **Integration Tab** Integration Tab is used to monitor all the integrations that have been created. You can create a new integration, import Integration, export Integration, edit and delete integration. ![](../images/2019/10/2019-10-10_10-56-42.png) **Agent Control Board Tab** Agent Control Board Tab is used to set up integration property to be connected to Salesforce. You can either create an adapter and set a Scheduler to run an integration service. Likewise, it allows you to set up the Agent server credential for using SKYVVA Agent Control Board. ![](../images/2019/10/2019-10-10_11-07-57.png) **Adapter Tab** This tab is no different from the integration tab, you can monitor all your adapters from A-Z letter, create the new adapter, import, export, edit and delete them. ![](../images/2019/10/2019-11-13_17-35-08.png) **Message Monitoring Tab** Message Tab is working as the Message Monitoring Board which is located in Integration Tab. It is used to check the integration results after processing the Inbound or Outbound interface. The integration result includes Pending, Failed, Completed, Cancelled status and the reason why it failed. Likewise, you can filter the message by integration name, interface name, message name, creation date 9(From-To). Additionally, we can know the real sObject is integrated successfully with completed status. You can also see at any time the amount of space, you have used and how much more is available for your Data Storage (1) and your File Storage (2). ![](../images/2019/10/mm.png)![](../images/2019/10/2019-11-13_17-38-58.png) ![](../images/2019/10/2019-11-13_17-40-00.png) **Repository** This Tab uses to store Istructure Repository. You can search for them from A-Z. Likewise, you can also edit and delete them. ![](../images/2019/10/mm1.png)![](../images/2019/10/2019-11-13_18-19-08.png) **Reports & Link Tab** This Tab is dividing into two sections SKYVVA Reports and SKYVVA Links. The first section contains three reports which are: All CDC Overview, All interfaces Overview, and Message Report. If you want to see the detail of each report you can click on each of them. The second section contains the link which is related to Change Batch Job Limit and Enables Bulk Delete Rest. ![](../images/2019/10/2019-10-09_16-39-02.png) **SKYVVA Reports** **Description** All CDC Overview All the CDC Records Status will be displayed here for you to monitor. Every CDC overview report available here. All Interfaces Overview All the records of Interfaces will display here. This one is to report the overview of all interfaces in your organization. Message Report It’s a place where you can view messages ( Failed, Cancelled, Pending, New) and can download it directly, or send it to email at any time or through the scheduler. **SKYVVA Link** **Description** Change Batch Job Limit To limit the batch job. The lesser, the better. Enable Bulk Delete Rest To hard-delete the messages. It’s will delete only when the record is greater than 10000. **License Tab** All active users are stored in this tab. You can use this tab to renew your license key which is expired. This tab shows the expiration date of your license key. ![](../images/2019/10/2019-10-09_16-46-09.png) **Integration Resource Tab** This Tab uses to set the processing / reprocessing of Batch and CDT base on priority and free resources of each priority. There are three types of priorities such as High, Medium, and Low. it's divided into three parts which are: Processing/ Reprocessing Basket, Reprocess Message, and CDT. However, only the Processing/Reprocessing Basket and CDT are working. ![](../images/2019/10/2019-10-09_16-48-06.png) **Interface Group Tab** Interface Group Tab is used to create a manual interface group and store all the interface groups both default and manually. ![](../images/2019/10/2019-10-09_16-49-48.png) **Queue Tab** This Tab uses to monitor the batch queue and filters the queue base on Integration Name, Interface Group, Interface Name, and Queue Status. You can also delete them. These fields play an important role to hold information for monitoring purposes. ![](../images/2019/10/2019-10-09_16-52-34.png) **Basket Tab** All the incoming baskets will store in both Batch Control Board’s Inbound processing tab and here, so you can monitor the baskets. However, this tab will only show the basket name. You still can edit and delete the basket you don’t want. ![](../images/2019/10/2019-10-09_16-55-29.png) It is difficult to know the total number of the basket in the Basket monitoring overview page. The total numbers of the basket have added to make customers more easily see the backlog. The following screenshot display the Total number of baskets: ![](../images/2018/10/1-16.png) **Basket History Tab** All the baskets that done processed will be the move to Basket Histories. Basket Histories Tab is used to store all the processed baskets. If you want to delete them you can click Delete or Delete All button. ![](../images/2019/10/2019-10-09_16-57-45.png) **Integration Group** This Tab is no different from the Interface group but this tab use to store and create an integration group. You can view or search base on the letter from A-Z. ![](../images/2019/10/2019-10-09_16-59-38.png) **Scheduler Tab** Scheduler Tab is used to store all SKYVVA Scheduler. The scheduler screen layout divided into four sections to have the logical group as for Inbound, Outbound, Inbound/Outbound, and Others. The filter section is easy to use in order to filter any scheduler you want to search base on Integration Name, Interface Group, and Interface Name, Status, and Functional category then Set the schedule and start them easily. This filter section added to display all the overview list of schedulers. change the screen layout for the scheduler to have the logical group as Inbound, Outbound, Inbound/Outbound, and Others. ![](../images/2019/10/2019-10-09_17-43-30.png) **SKYVVA Trigger Tab** SKYVVA Trigger tab uses to generate script trigger automatic for Button and Apex Trigger. It can generate two kinds of script such as Trigger Button and Trigger Apex. ![](../images/2019/10/2019-10-09_17-58-52.png) **Transport Route Tab** “Transport Route” Tab use to create Transport Route to import and export from Source Organization to Target Organization. When we export Integration, we’ll also export some sObjects, such as Interfaces, adapters, iStructure, mapping, and iChain ... etc, which were parts of this Integration. You can also edit or delete them. ![](../images/2019/10/2019-10-10_10-58-35.png) **Metadata Provider Tab** This Tab uses to store the MetaDAta Providers. When you create a new MetaData Provider, it stores here in this tab. You can edit and delete any time you want. ![](../images/2019/10/2019-10-10_11-00-03.png) **Interface Tab** This Tab store all the interfaces you have in your organization. You can create, edit, and delete any interface as your desire. ![](../images/2019/10/2019-10-10_11-01-52.png) **CDC Tab** CDC Tab is used to store all the change pointer which is detected by CDD. You can filter the change pointer by Integration Name, Interface Name, Status, filter by using Sort By the change pointer records by date (Creation Date and Modification Date) and from Ascending to Descending. ![](../images/2019/10/2019-10-10_11-03-06.png) **Fields** **Description** Integration Name The name of the integration Interface Name The name of the interface Status The status of the change pointer Max. Number of Records Use this filter to limit the result in the CDC  monitoring to prevent the time out due to many change pointers. Application Ids Show change pointer records Ids Date You can specify Creation or Modified date From The from date To The to date Sort By You can specify Creation date, Modified date or change pointer Name Order By Use to filter the change pointer in order by Ascending or Descending. **ILogs Tab** With this tab, you can easily search all the error logs and error text that you wish to delete. ![](../images/2019/10/2019-10-10_11-04-13.png) **SAP Control Board** ![](../images/2019/10/2019-10-10_11-06-18.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is SKYVVA? Title: 3. How SKYVVA Apps looks like after a fresh installation Slug: 1-1-how-skyvva-apps-looks-like-after-a-fresh-installation-2 URL: https://help.skyvva.com/#article/1-1-how-skyvva-apps-looks-like-after-a-fresh-installation-2 ================================================================================ # 3. How SKYVVA Apps looks like after a fresh installation After a fresh installation carried out like describe in chapter ['Install SKYVVA'](#_Install_SKYVVA)  You will get this screen: ![](../images/2018/10/1-34.png) ![](../images/2018/10/2-33.png) ![](../images/2018/10/3-30.png) ![](../images/2018/10/4-29.png) ![](../images/2018/10/5-27.png) ![](../images/2018/10/6-27.png) ![](../images/2018/10/7-25.png) ![](../images/2018/10/8-22.png) ![](../images/2018/10/9-20.png) ![](../images/2018/10/10-15.png) ![](../images/2018/10/11-10.png) ![](../images/2018/10/12-11.png) ![](../images/2018/10/13-7.png) ![](../images/2018/10/14-7.png) ![](../images/2018/10/15-7.png) In all tab, there are no objects. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is SKYVVA? Title: 4. Upgrading to a new release Slug: 1-2-upgrading-to-a-new-release URL: https://help.skyvva.com/#article/1-2-upgrading-to-a-new-release ================================================================================ # 4. Upgrading to a new release **Upgrade** means to replace product  with a more recently released, enhanced **version**.  If there is a new version available, you will get noticed by the SKYVVA support and you will get a link to install the new software. For example: We are using this installation link just for example. You can use real and recently released installation link. Use this URL to install the package into any organization: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fYP3 To upgrade the new version you have to distinguish between develop, test or production instance. For test instance beginning with https://test.salesforce.com, you have to replace the string login.salesforce.com by test.salesforce.com **Development instance:** [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fYP3](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fYP3) **Test instance:** [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fYP3](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fYP3) **Production instance:** [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fYP3](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fYP3) When you click on the link or paste the link into your browser, you get this screen. In this screen example, you see the upgrade from version 2.41 to 2.42. Follow now the instructions on the screen. In the end, you will get an email, which informs you whether the installation was successful, or not. ![](../images/2018/10/2019-06-18_11-03-46.png) ![](../images/2018/10/2019-06-18_11-12-07.png)After finishing, the next steps the installation is in progress, and you will get informed via email when everything is completed. ![](../images/2018/10/2019-06-18_11-18-03.png) Here is an example mail: Your request to install the package “SKYVVA Integration Suite 2.42” was successful. **Changes and Workarounds** Organization: Nana (00D6F000001d30F) User: Nana Ly (0056F000006QFhA) Package: SKYVVA Integration Suite (04t900000005IUA) Some components, such as custom objects, custom report types, and workflow rules, must be activated using the package deploy process before they are available to your organization. ![](../images/2018/10/2019-06-18_11-30-33.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is SKYVVA? Title: 5. Apply and renew license key Slug: 1-3-apply-and-renew-license-key URL: https://help.skyvva.com/#article/1-3-apply-and-renew-license-key ================================================================================ # 5. Apply and renew license key SKYVVA license key provides you full access to use SKYVVA Application. After a period, the license key will be expired. You need to extend the validity of the key. From the support team, you will get the key and you have to apply to all user who was doing the integration. ![](../images/2018/10/1-1024x292.png) Select the entire user and press on the button "Renew Key". You have to go page by page. In this example, we have many users and it could not show in one view but spread to five pages. It means that you have to go page by page, select the user and apply the license key. ![](../images/2018/10/2-1024x292.png) Past the key, you got from our support into this dialog and press "Renew Key". ![](../images/2018/10/3-1024x503.png) Here is the result after applying the license key on the first page. We can see that we got the new validity. ![](../images/2018/10/4-1024x285.png) However, on the second page where we still do not apply for the license, we get the old validity. Therefore, take care to apply license for all user on all page view! ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is SKYVVA? Title: 2. Install SKYVVA Slug: 1-1-install-skyvva URL: https://help.skyvva.com/#article/1-1-install-skyvva ================================================================================ # 2. Install SKYVVA **Learning Objective** **This unit describes:-** - The Installation process of the SKYVVA Integration Suite. #### Introduction This tutorial is an installation guide for Skyvva. The purpose of the tutorial is to introduce the product or component to be installed. This guide covers the installation of the system and its related components like update the Skyvva license key.  Please update the sample text to your system requirements. #### Identification - You can identify by title SKYVVA. - You can identify the Skyvva by its version number and release number. #### Point of contact - For troubleshooting, you  can send a mail to support@skyvva.com #### Pre-Installation Requirements The following prerequisites and requirements must be satisfied in order for the [product] to install successfully. - You should have your salesforce organization. Create your salesforce organization from [https://developer.salesforce.com/ ](https://developer.salesforce.com/) - You should have your organization login credentials with salesforce I,e username and password - Skyvva Integration suite installation link. #### Installation Steps **Step 1: Login with salesforce organization** Login with salesforce using valid credentials where the package has to be installed ([https://login.salesforce.com](https://login.salesforce.com)). ![](../images/2018/10/install8.png) **Step 2: Create My Domain.** - Type "My Domain" in the search box and then click on My Domain as shown in the picture given below. ![](../images/2018/10/install1.png) - Enter a domain name and check whether it is available, for this we need to click on the "Check Availability". ![](../images/2018/10/install2.png) - If the domain name is available, then we can register a domain for that we need to click on the "Register Domain". As shown in the picture given below. - Salesforce will take a few minutes. ![](../images/2018/10/install3.png) - After registration, we can log in to test it out. - And then we can select an option "Deploy to users". As shown in the picture given below. ![](../images/2018/10/install4.png) ![](../images/2018/10/install5.png) **Step 3: Enter Installation link** Copy the installation link (Skyvva Integration Suite package installation link) and paste it to the address bar. ![](../images/2018/10/install10.png) **Step 4: Install/Upgrade SKYVVA Integration Suite** Choose Install for admin the only option and click on the install button. ![](../images/2018/10/install11.png) You might need to wait a short while because it will take some time to install packages. As you refresh the page, you can see installed packages. #### Post Installation checklist - Check that the package is successfully installed or not. Please enter the install packages text in the quick find box. Choose the Install package option. Check the package name, the version number is correct. - Check that you can access the Skyvva product. - Please refer to the image for reference. ![](../images/2018/10/install12.png) #### Please check it after the installation to see the SKYVVA App: ![](../images/2018/10/install.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you have a problem display some objects of Integration, please creates permission set and choose license as Salesforce.[/su_box] #### Integration Object - Go to  salesforce organisation -> Click on  Setup -> Click on Object Manager-> Integration option -> Choose Buttons, Links & Actions. - Check your standard button is overridden or not if yes then keep as it is. if not then see figure where we explained how we can do it, visual force page is not overridden yet so follow the given steps : **Step 1:- Select New Button and Click on the dropdown icon and then on the Edit button.** ![](../images/2018/10/install16.png) **Step 2**:**-** **Select the visualforce  page as shown in the picture and click on the Save button.  ** ![](../images/2018/10/install6.png) #### Chatter Settings:- - From Setup, enter Chatter Settings in the Quick Find box, then select **Chatter Settings**. - Click **Edit**. - Select Enable Actions in the Publisher. Although the Enable Actions setting appears in Lightning Experience, it has no effect there. - Click **Save**. ![](../images/2018/10/chatter.png) #### IWorkflow Object Check - Go to  salesforce organisation -> Click on Setup -> Select Object-> Integration option -> Choose Buttons, Links & Actions. - Check your standard button is overridden or not if yes then don’t do anything if not then check the steps given below. **Step 1:** **Click on the edit button. This is directly proportional to the “EditIworkflow”  visualforce page that is not overridden yet.** - Choose the visualforce page and click on the Save button. **Step 2:       ** - Click on the New button. - Click on the edit button. - Select visualforce page clicks on the Save button. #### Skyvva Integration Suite Tabs Check - To add IAdapter Setup, Integration, Integration Admin, Adapter tabs on your page follow the given steps: **Step 1:-** **Click on Add More Items my button.** ![](../images/2018/10/install15.png) **  [su_box title="Note" box_color="#2a8af0" title_color="#000000"]In case if all tabs are hidden for the user’s profile.**[/su_box] - Please Go to Manage users-> Users -> Select users profile “Click" - Go to the profile page ->Tab setting. #### Skyvva Integration Suite License Key To use Batch Scheduler for Integration (HTTP, Email,…) we required a valid key which is license key. To add the License key please follow the steps given below. **Step 1:** **Go to the Integration admin page and click on the "License" tab, then click on Renew key, and select the user to update a license key Or Renew Key for All Users.** ![](../images/2018/10/install13.png) **Step 2:-** **Enter the license key as shown in the picture given below and click on the Renew License Key.** ![](../images/2018/10/install14.png) **[su_box title="Note" box_color="#2a8af0" title_color="#000000"]Contact SKYVVA support for a license key if you don't get it.[/su_box]** ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an integration? Title: 4. Alerting Setup Slug: 4-alerting-setup URL: https://help.skyvva.com/#article/4-alerting-setup ================================================================================ # 4. Alerting Setup #### Introduction - The alert setting on the integration level uses a global setting in case the user forgets to set up an alerting rule on the interface level. If the user sets the alerting rule on the interface level then this should be valid and overwrite the setting on integration if any exist. - Here if on interface level user sets a value this will overwrite the value on the integration level. If the user has not set anything on the interface level then take the value from the integration level. - Therefore, the value on the integration level is like a default value for all interfaces, which do not have any alert rule set. - We have currently 4 different alert rules on the integration level. **Alerting Rules** **Description** Send Email SFDC User If you want to have a task created for a user when a message or log gets an error. Select the user from the Salesforce user list. Send Email External Mail The recipients’ email addresses (Comma-Separated List.) For example: john@yahoo.com,george@gmail.com,etc Chatter Group Name Chatter Group for alert error when integrating data. Create a Task for the User If you want to have a task created for a user when a message or log gets an error. Select the user from the Salesforce user list. - This screenshot displays the Alerting Setup on the integration Level. ![](../images/2019/11/Untitled1-3.png) #### Send Email SFDC User - You can set up the alerting function to get an alert whenever an Interface runs into error status. - You can specify an email address where the alert will be sent. To set up one or more email addresses, open the integration or the Interface and edit the part "Alerting Setup". Here you choose the User and specify the email addresses. ![](../images/2019/11/Untitled3-1.png) - The Alert mail then will be sent to this recipient. - Here is an example of an alert mail. ![](../images/2018/10/13-4.png) #### Chatter group - The Chatter is used to notify the user by posting the failed message to the Chatter Group in addition to the email alert. Users can specify the chatter group on Integration as well as the Interface level. - Let us say we have 3 interfaces related to Logistics and 4 interfaces related to Order then the user creates 2 different chatter groups related to Logistics and Order. The user needs to specify the chatter group on the interface and if any error occurs, apparently the error message is posted to the corresponding chatter group. - At first, you have to create a Chatter Group ![](../images/2019/11/Untitled2-1.png)![](../images/2018/10/14-4.png) ![](../images/2018/10/15-4.png) - After creating the new chatter group, we need now to specify the chatter group name on the interface as well as the Interface level and if any error occurs, apparently the error message is posted to the corresponding chatter group. ![](../images/2018/10/16-4.png) - Here we see the error message in the corresponding chatter group ![](../images/2018/10/17-4.png) If the interface level user sets a value this will overwrite the value on the integration level. If the user has not set anything on the interface level then take the value from the integration level. Therefore, the value on the integration level is like a default value for all interfaces, which do not have any alert ruleset. #### Send Email External Mails In the section "Alerting Setup". Here we specify an external email address. We set the external mail on the interface and integration. The flag is not set. Then only the mail is sent to the email, which was set on the interface. The setting on the interface has higher priority and the alert is only sent to the mail on the interface. Now we set the flag and the alert sent to the mail settings on the integration and to the mail settings on the integration. This flag allows the alert is also sent to both levels e.g. to the mail which is set on the integration and set on the interface. ![](../images/2018/10/1-10.png) - Then the alert mail will be sent to this recipient. - Here is an example of an alert mail: ![](../images/2018/10/2-9.png) #### Create Task - You can Create Tasks for Users if there is an error. Like before, you have just to specify the User. ![](../images/2018/10/3-9.png) - We can see some Tasks, which were created for this User “Vannphareach Pech” ![](../images/2018/10/4-9.png) ![](../images/2018/10/5-8.png) **Redesign of alerting feature** **Description: **We need to redesign the current alerting function and introduce a new flag field called 'Non-Realtime Alert.' This flag will allow the alert mail to be sent asynchronously rather than in real-time. Therefore, we require a new flag to be added to the interface, interface group, and integration settings where users can configure it. **#Case1: None-realtime Alert creation in the category Message-Based Alert** =>**Expectation:** When we use the **'Non-realtime Alert creation'** option with the **'Message-Based Alert'** alert category, it will specifically check for failed business messages. Instead of alerting in real-time, it will be alerted by the scheduler **'DoAlert' **and then send a notification to the email. ***Note:*** **Users can set the option for non-real-time alert creation on the interface, interface group, and integration.** - ***Message-Based Alert****: means that it checks only the root business message for failures, triggering an alert.* - ***Object-Based Alert: this ****means that it checks only the root business message for failed or partially completed messages.* - Create the Integration, then navigate to the integration details to find the **Alerting Setup for Message Processing and Alert Channel Configuration section** - Tick None-realtime Alert creation - Select Alert Category: Object-Based Alert - Create a Task for the User - Input Chatter Group Name - Send Email SFDC User or Send Email External Mail ![](../images/2019/11/e.webp) - Start the **'DoAlert'** scheduler to receive notifications. ![](../images/2019/11/f.webp) - When a message fails, it will check. Subsequently, an email will be sent. ![](../images/2019/11/g.webp) - Here's the message failed alert to email. ![](../images/2019/11/h.webp) - After the email alert, the field 'Is Alerted' will be checked. ![](../images/2019/11/i.webp) - Here’s the Task that was created. ![](../images/2019/11/j.webp) - Here’s the Task that was created. ![](../images/2019/11/k.webp) **Case2: None-realtime Alert creation in the category Object-Based Alert** **Expectation**: When we use the **'Non-realtime Alert creation'** option with the **'Object-Based Alert'** alert category, it will specifically check for business root messages that have failed or are partially completed. However, the alert does not happen in real-time; instead, it will be triggered by the scheduler** 'DoAlert'** and then send a notification to the email. - Setting the Alerting Setup for Message Processing and Alert Channel Configuration. - Tick None-realtime Alert creation - Select Alert Category: Object-Based Alert - Create a Task for the User - Input Chatter Group Name - Send Email SFDC User or Send Email External Mail ![](../images/2019/11/l.webp) - Start the **'DoAlert'** scheduler to receive notifications ![](../images/2019/11/w.webp) - When a message fails, it will check. Subsequently, an email will be sent. ![](../images/2019/11/r.webp) - Here's the message failed alert to email. ![](../images/2019/11/y.webp) - After the email alert, the field 'Is Alerted' will be checked. ![](../images/2019/11/p.webp) - Here’s the Task that was created. ![](../images/2019/11/b.webp) - Here’s the Group that was created. ![](../images/2019/11/o.webp) **Case3: Switch off Message Processing Alert** **Expectation****: **When we check the **'Switch off Message Processing Alert'** field, the message will not trigger a notification. - Setting the Alerting Setup for Message Processing and Alert Channel Configuration. ![](../images/2019/11/z.webp) - Start the **'DoAlert'** scheduler to receive notifications. ![](../images/2019/11/a.webp) - Here's the scheduler executed. ![](../images/2019/11/h.webp) - Result: The Task is empty after executing the 'DoAlert' scheduler. ![](../images/2019/11/bh.webp) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: How to enhance the response of the inbound synchronous interface to have a custom-defined message type? Title: 1. How to enhance the response of the inbound synchronous interface to have a custom-defined message type? Slug: 72-how-to-enhance-the-response-of-the-inbound-synchronous-interface-to-have-a-custom-defined-message-type URL: https://help.skyvva.com/#article/72-how-to-enhance-the-response-of-the-inbound-synchronous-interface-to-have-a-custom-defined-message-type ================================================================================ # 1. How to enhance the response of the inbound synchronous interface to have a custom-defined message type? **Learning Objectives:-** This unit describes:- - The response of the inbound synchronous interface to have a custom-defined message type. - Difference between custom defined message type and standard message type #### Introduction:- In this unit, we will learn how to get the response of the inbound synchronous interface to have a custom-defined message type. Here we will also come to know the difference between the standard message type and custom-defined message type. The picture given below shows the process of Standard message type response and of Custom defined message type response. ![](../images/2019/11/custom.png) #### Standard Message Type:- The API is integrate synchronous, we need to define the inbound interface of type synchronous we can use soap UI for soap or rest call and then we can apply DML operations like upsert, insert, update and delete and then we will get the response which will be the standard response like salesforce Id, Message-Id. #### Custom Defined Message Type:- The API is integrate synchronous here as well. We can push much more data with the help of a custom-defined message type. We will create two interfaces Inbound interface and outbound interface. The inbound interface role is to request data and the Outbound interface role is to response data. We will define message type on the outbound interface detail page and then do mapping on the outbound interface. Add response interface-Id i.e, outbound interface Id in the Inbound interface which is request interface. We support the Rest API variant. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We Support only Rest API variant for custom defined message type.[/su_box] #### How to use it? Follow the steps given below:- **Step 1:-** Pre-requisite:- - Create Integration. - Create Inbound and Outbound Interface. - Create Metadata Provider. - Create Repository. - Create Message Type as hierarchical(Account and Contact). **Step 2:- **Configuration of Inbound interface:- - Select the processing mode Synchronous. (As shown in the picture given below) - Enter Outbound Interface Id in Response Interface Id section. (As shown in the picture given below) ![](../images/2019/11/custom1.png) - We can do mapping or we can check an option of External mapping in the process. Here we will see the way by doing the mapping. - Do Mapping (As shown in the picture given below) ![](../images/2019/11/custom2.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We have two ways either we can do mapping or else we can check an option of External mapping. Here in the picture given below, we can see where to select external mapping and Salesforce External ID ![](../images/2019/11/custom3.png) [/su_box] **Step 3:- **Configuration of an Outbound interface:- - Select Processing mode "Synchronous". (As shown in the picture given below) ![](../images/2019/11/custom5.png) - Select Metadata Provider, Repository, Message Type. (As shown in the picture given below) ![](../images/2019/11/custom4.png) - Do Mapping. (As shown in the picture given below) ![](../images/2019/11/custom6.png) **Step 4:- ** - Go to the Soap UI application. - Click on REST Project => enter Endpoint URL Instance => OK. - Select method = POST - Enter API integrate synchronous (/services/apexrest/skyvvasolutions/IntegrateSynchronous) into Resource field. (As shown in the picture given below) ![](../images/2019/11/custom9.png) - Define data in the Request page to call data to salesforce. - The sample data is given below. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "INTEGRATIONID":"a0W2v000018x6PsEAI", "INTERFACENAME":"Inbound", "MESSAGES": [ { "Name":"CocaGermany", "ID":"0010E00000WXEcLQAX", "BillingCountry":"Germany", "BillingCity":"Hamburg" }, { "Name":"CocaCambodia", "ID":"0010E00000WXDyQQAX", "BillingCountry":"Cambodia", "BillingCity":"PP" } ] } [/aux_code] ![](../images/2019/11/custom10.png) - Create Header = authorization - Create Value = Bearer with SessionID ![](../images/2019/11/custom11.png) - Click Submit Request button:- ![](../images/2019/11/custom12.png) #### Here is the result of the outbound response JSON data payload. (As shown in the picture given below) ![](../images/2019/11/custom8.png) #### Check Result in Message Monitoring:- ![](../images/2019/11/custom7.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Message Monitoring Title: 7. How to check entries in the message table Slug: 18-to-see-how-many-entries-the-message-table-has URL: https://help.skyvva.com/#article/18-to-see-how-many-entries-the-message-table-has ================================================================================ # 7. How to check entries in the message table To check how many entries the table skyvvasolutions__IMessage__c has, we can see with Salesforce standard monitoring. **Follow the steps given below.** - Go to setup and open the Storage Usage. - Click on username.  As shown in the picture given below. ![](../images/2019/11/table.png) - After clicking on username we can see the screen given below. ![](../images/2019/11/table1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Click to the user which is used for the integration with our tool.[/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 11. How to post the SKYVVA message Id on the application Subject Slug: 3-3-1 URL: https://help.skyvva.com/#article/3-3-1 ================================================================================ # 11. How to post the SKYVVA message Id on the application Subject This feature allows you to see who has created the business object eg. An Account on the feed item section.  This gives you great control and insight into how the object was created. You can switch on and off to see the SKYVVA message in the feed text area. If you find it annoying or simply do not want to see any post from our app just switch it off. #### Why use this feature? You can use this feature to: - Post SKYVVA message Id - See the message link on the sObject which was created or modified by the message - Jump from the record to the SKYVVA Message **Posting SKYVVA Message in the feed text area** To be able to post SKYVVA Message you need to configure on the interface. The following steps will display how to post SKYVVA message: - From the interface page, in Runtime Configuration-General, Check the flag "Post Feed". ![](../images/2019/12/post.png) - Do mapping - Using Manual Load to push Data - Check the message on Message Monitoring board - In Message Board, in Messages, select Related To (You will jump from the record to SKYVVA Message in Account) - From the Account, in Detail page, select Chatter - Check on Post text area ![](../images/2019/12/2019-12-05_17-55-51.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 4. Inbound Setup Slug: 3-3-inbound-setting URL: https://help.skyvva.com/#article/3-3-inbound-setting ================================================================================ # 4. Inbound Setup In the Interface Detail page, we have a section "Inbound setup". In this chapter, we will understand all the fields contains in the Inbound setup. Check the picture given below of the Inbound setup. ![](../images/2019/12/inbound.png) As we can see in the picture there are six fields, which are defined below. #### Inbound Adapter Define or link here the inbound adapter for use with an inbound interface. An inbound adapter is used for example with the Agent to read record from a database or from the file. #### External Mapping Indicate the interface is over PI (SAP-PI-SF). In this case, no mappings required. In other word, the mapping and business logic is managed by an external system. #### Mapping in SFDC Creates Inbound IStructure on the Interface. #### Initial Mode Set this flag if you want to run the interface in an initialization mode. This is for example used with the Agent to execute a SQL statement from the section "Initialization Query". If this flag is not set the SQL statement in "Query" will be executed. #### Salesforce External ID Enter into these fields the field names which are external ids defined in the sObjects. You can choose which one should become the key for e.g. the upsert operation. you can specify 1,2 or many by separating them by a comma. #### Async. Response Interface Invoke Callout: Configuration on the response interface or asynchronous message handling. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 5. Outbound Setup Slug: 3-4-outbound-setup URL: https://help.skyvva.com/#article/3-4-outbound-setup ================================================================================ # 5. Outbound Setup In the Interface Detail page, we have a section "Outbound setup". In this chapter, we will understand all the fields contains in the Outbound setup. Check the picture given below of the Inbound setup. ![](../images/2019/12/outbound.png) As we can see in the picture there are four fields, which are defined below. #### Connect with Middleware Set this flag to indicate that mapping is done in a middleware. if this flag is set no mapping fields are generated and thus no mapping needs to be done in SKYVVA. If not set then mapping needs to be defined in SKYVVA. #### Outbound Adapter Set an adapter to use with this interface. You need to create an adapter beforehand and use it here. The outbound adapter is needed to push data from Salesforce to the external system. #### Include Error Sync Interface outbound, Tick this field to trigger inbound interface update salesforce object when the synchronous outbound message failed (SF->SAP-PI). #### Always Create New Message If ticked then outbound message always creates otherwise upsert. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 7. Runtime Configuration-Inbound Slug: 3-6-runtime-configuration-inbound URL: https://help.skyvva.com/#article/3-6-runtime-configuration-inbound ================================================================================ # 7. Runtime Configuration-Inbound In the Interface Detail page, we have a section " Runtime Configuration-Inbound". In this chapter, we will understand all the fields contains in this section. Check the picture given below of the Runtime Configuration-Inbound. ![](../images/2019/12/rc-inbound.png) As we can see in the picture there are three fields, which are defined below. #### What to do with a failed message? "Overwrite failed message" "Overwrite failed message and delete pending" "Merge failed message" "Merge failed message and delete pending" "Delete failed message". #### Inbound posting Behavior Asynchronous, When integrate is called then create a message(s) and process asynchronous (future). #### No Import NULL value Uncheck this when you want to import any data with NULL value; check this when you do not want to override fields in case that imported data is NULL, for example, you do not want to update fields filled in value with NULL imported data. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 8. SOQL Query for filter sObject Slug: 3-9-soql-query-for-filter-sobject URL: https://help.skyvva.com/#article/3-9-soql-query-for-filter-sobject ================================================================================ # 8. SOQL Query for filter sObject In the Interface Detail page, we have a section "SOQL Query for filter sObject". In this chapter, we will understand all the fields contains in the SOQL Query for filter sObject. Check the picture given below of the SOQL Query for filter sObject. ![](../images/2019/12/soql-interface.png) As we can see in the picture there are four fields, which are defined below. #### Filter Query The sql statement to query data from the database #### Interface to change condition The inbound interface is invoked after this outbound interface is executed. With the inbound interface, a mapping can use to change the field value of the WHERE-condition of the filter query. #### Use Apex Class Enter your apex class where you implement your business logic code. #### Apex Class for Filter sObject Enter the soql statement which will be used to filter the sObject Id. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 9. Agent Adapters Slug: 4-8-agent-adapters URL: https://help.skyvva.com/#article/4-8-agent-adapters ================================================================================ # 9. Agent Adapters Agents are programs that run on the remote machines and communicate with the main monitoring system. Some merchants try to hide the fact that they use Agents. They will try to deliver things like they “deploy” to remote systems or use other words, but it all compresses to installing custom software on the remote machines. #### Agent Adapters: SKYVVA Adapter is a connector/device which store the property configuration of external system. Adapter is important, without it you can’t transfer the data. It provides the interface between a computer and a network connection. There are many different types of adapters such as File Adapter, FTP Adapter and JDBC (Database) Adapter, SAP-PI/PO Adapter and SAP-ERP Adapter. This document will describe about adapter which is being used in Agent. ** Adapter Type** We have three types of adapter in Agent: – File Adapter ( CSV, Excel, XML) –  JDBC Adapter (ORACLE, SQLServer, MySQL, MsAcess) –  FTP/SFTP Adapter #### File adapter File adapter is used to integrate data from file to SFDC and from Salesforce to file. The file type that our Agent support is CSV, XML and Excel that can be integrated with their content. You can integrate file attachment into attachment object. Go to the agent admin to know more detail about file adapter. -> [**File Base Integration**](#article/file-base-integration-csv-excel-xml-ftp) #### What is JDBC adapter? JDBC Adapter is used as a connector to transfer data from Database to Salesforce and from Salesforce to Database. Agent supports five-database type include Oracle, SQLServer, MySQL, MsAcess and PostgreSQL. Go to the agent admin to know more detail about JDBC adapter -> **[Database Integration](#article/2-5-database-integration-jdbc)** #### FTP adapter? #### Introduction The FTP Adapter enables the integration of servers supporting File Transfer Protocol (FTP) and Secure Shell (SSH) File Transfer Protocol (sFTP) into Oracle Integration. The **FTP Adapter** can connect to **FTP** and sFTP servers that are publicly available on the internet. **FTP** Adapter is used as a connector to transfer data from the **FTP** server to Salesforce and from Salesforce to the **FTP** server. #### Prerequisite Before creating **FTP Adapter**, the user has to create an Integration and interface and these two steps must create in Salesforce. To create, edit, and delete you need to do in Salesforce. Please perform both integration and interface development in Salesforce first. ![](../images/2020/07/dsBuffer.bmp.png) #### Creating of FTP Adapter Follow the configuration steps: **Inbound** - Create an Integration ![](../images/2020/07/image_2020_07_13T11_44_41_696Z.png) - Create an Inbound Interface ![](../images/2020/07/image_2020_07_13T11_49_17_903Z.png) **Go to FileZilla Client & Server for Windows ** –  [Download FileZilla Client & Server for Windows...](https://filezilla-project.org/index.php) Now Go to **FileZilla Server** site - Click on Edit button - Create a user - Enable account - Set password - Click on ok button ![](../images/2020/07/image_2020_07_13T12_02_48_951Z.png) Now Go to **FileZilla Client** site - Go File then click on Site Manager - Click on New Site button - Provide all General information **Protocol, Host, etc.** - Create User and Password - Click on Connect button ![](../images/2020/07/image_2020_07_13T12_11_52_853Z.png) - Click on Quickconnect button - Directory Listing Successful - User Computer (PC) XML file is Listed on Remote Site ![](../images/2020/07/image_2020_07_13T12_31_59_029Z.png) **Now go to Salesforce Click on Adapter Inbound Tab** ![](../images/2020/07/image_2020_07_13T12_38_53_614Z.png) ![](../images/2020/07/image_2020_07_13T12_40_49_181Z.png) - Adapter property made a connection successfully with Agent and **FileZilla Client & Server ** - Authentication —Username_Password - URL —localhost - ftp_type —FTP ![](../images/2020/07/image_2020_07_13T12_55_57_995Z.png) **Now the user has to go to the Interface Detail page** - Scroll down to Inbound Setup Section - Select FTP-Inbound-Adapter ![](../images/2020/07/image_2020_07_13T13_01_34_980Z.png) - Click on Open Mapping Button ![](../images/2020/07/image_2020_07_13T13_09_34_975Z.png) - Map the target fields according to Account, Contact, Case to the Salesforce source sObject - Select **Ext Id** - Save ![](../images/2020/07/image_2020_07_13T13_18_05_314Z.png) **Now go to the Agent and Select your Integration which you just created** - Select your Interface - Click on Edit Interface Button ![](../images/2020/07/image_2020_07_13T13_25_17_710Z.png) **Now see Interface Source Definition ** - Test Source connection with Filezilla - Click on Test Query Button - Records are fetching - Save ![](../images/2020/07/image_2020_07_13T13_34_20_639Z.png) **Click on Agent Control Board (old) Tab** [- How to use New Agent Control Board Version 3.0 AWS?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. - Click on the Integration tab - Select your Integration and Interface - Scroll down to Process button and click it ![](../images/2020/07/image_2020_07_13T13_40_52_691Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Now click on Monitor Tab ![](../images/2020/07/image_2020_07_13T13_44_15_581Z.png) - Scroll down to Messageboard - Click on the search button - Account created successfully ![](../images/2020/07/image_2020_07_13T13_46_21_250Z.png) ![](../images/2020/07/image_2020_07_13T13_49_40_014Z.png) - Click on the related list your record upserted successfully ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: 2. Repository Slug: repository-2 URL: https://help.skyvva.com/#article/repository-2 ================================================================================ # 2. Repository The repository consists of Istructure. It stored in  Metadata as child which  describes different types of objects, such as mappings and transformations, that you can create or modify using the PowerCenter Client tools. The Data Integration uses repository objects to extract, transform, and load data. The repository is used for storing metadata e.g. type and structure definition. The type and structure definition is called the message type. The message type can reside in a WSDL, in SAP IDoc, SAP Bapi, etc... It can be stored in a file in CSV, XML, XSD, or other formats. What we want to do is to import the message type and use these as the type of our interfaces. There are two pages in Repository such as Repository Detail Page and Repository Related Page. #### **Repository Fields** The following table is the description of  Repository: **Fields** **Description** Repository Name The name of the Repository. Repository ID External Id which is coming from SAP to identify Istructure. Update Interface Structures Update related Interfaces when Istructure is updated. MetaData Provider The specific MetaData Provider which contains the Repository. Level Hierarchy level to organize the repository. We can build a hierarchical structure of repository. Sequence Number The order number of Repository. Created Date It’s the date of Repository’s creation. Patch This filed store the path of the record from the root record until the current record name. Last Modified Date It’s the date and time when the Repository was last modified by a user. Owner ID The id or name of the user. Description It’s a form of display field that you can input the display text. Type Type to distinguish between different types to be able to build the hierarchy structure. Parent Set this field to Indicate which repository Is the parent of the record. This record Itself Is a repository. hasChild Set this flag If the repository Is a folder which contains another repository in a hierarchical structure. External ID This field is for storing the external id of the object to be used to update the record. Created by ID The ID of the User who created this record. CreatedById fields have Defaulted on creating and Filter access. Last Modified By ID The ID of the User who last updated this record. #### Repository button The following buttons are for export and import the Repository: ![](../images/2018/10/4-2.png) **Button Name** **Description** [su_button url="#" style="flat" size="6"]Export Repository To Other Org[/su_button] Use this button to export the Repository to other organization. [su_button url="#" style="flat" size="6"]Export Repository[/su_button] Use this button to export Repository to the local computer. [su_button url="#" style="flat" size="6"]Import Message Type[/su_button] Use this button to import Message Type from local computer to the Repository. [su_button url="#" style="flat" size="6"]Delete[/su_button] Use this button to delete the Repository. [su_button url="#" style="flat" size="6"]Change Owner[/su_button] Change the user. These buttons below use for generating Message Type: ![](../images/2019/12/Capture1.png) **Button Name** **Description** [su_button url="#" style="flat" size="6"]SAP[/su_button] Use this button to generate the message type from the SAP data structure. [su_button url="#" style="flat" size="6"]Import Metadata[/su_button] Use this button to upload all files and generate the message type base on the type definition. [su_button url="#" style="flat" size="6"]Open Editor[/su_button] Use this button to generate a different format base on the data structure your input. [su_button url="#" style="flat" size="6"]Open Database[/su_button] Use this button to take the data table from the database and create message type. [su_button url="#" style="flat" size="6"]New Message Type[/su_button] Use this button to create message type manually. [su_button url="#" style="flat" size="6"]New Istructure[/su_button] Use this button to create Istructure manually. [su_button url="#" style="flat" size="6"]Upload sObject[/su_button] This button uses to generate the message type from sOject. #### Here we can see repository and message type in a tree view:- We have the tree view for our new message monitoring. The same view for the repository and message type needed. The repository and message type can be created with parent/child relation and thus build a tree. However, when the repository has shown as a related list of the Metadata provider you see the only flat structure and thus it is very confusing to read. This is the same as for the message type. The message type is showing as a related list in the screen repository. **Steps to configure this feature:** To show the repository and message type in a tree view, you have to create an IStructure Repository. There are some steps to create: - Open Integration Admin Tab and click on MetaData Provider ( Click on New MetaData Provider to create if you don’t have one) ![](../images/2018/10/5-10.png) - Edit Layout on the right of Click MetaData Provider detail page ![](../images/2018/10/6-11.png) ![](../images/2018/10/7-10.png) - Create Section and Complete the Tittle Name ![](../images/2018/10/8-9.png) - Click on Visualforce Pages and pull IStructure Repository into this section. ![](../images/2018/10/9-9.png) The result after creation ![](../images/2018/10/10-9.png) #### Delete button to delete MsgType Fied Entries on the related list in Message Type Delete button is added to the “delete MsgType Field Entries” section on the related list in Message Type. When you click on the button, it is deleting the MsgType Field Entry. ![](../images/2018/10/11-7.png) #### Tree view for repository like message type:- This is another function that we provide to view as hierarchical for the repository. Previously, the repository only shows as a flat list, and for a new version, we want to improve this feature. This concept has already applied for message type and we want to create it as similar. The repository can be organized in a tree and has the same structure as a message type. When the repository has a child it will show the parent’s dropdown and when you click on that will show its child. Please follow below for Istructure Repository tree view functionality - Navigate to “Istructure Repository“ tab - Select any record and open the detail page - Check the "IStructure Repository (Child)" and "Message Types Repositories" related lists ![](../images/2019/01/4-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an integration? Title: 5. Message Setup Slug: 2-3-message-setup URL: https://help.skyvva.com/#article/2-3-message-setup ================================================================================ # 5. Message Setup To ensure your data are not exceeded storage limit, there are a number of functions available in SKYVVA, including Delete Message, Delete Basket Histories, Delete Logs, Delete Log File, Log Levels to Delete, Delete Attachments of Bulk Data set in the Bulk Control Board, and Delete Basket and Attachment. However, these functionalities need to be configured and activated to perform the clean-up operation. This documentation is written to guide you on "how to use each functionality". ![](../images/2019/12/Untitled4-1.png) #### Automatic Reprocessing If it is checked, the Message Reprocess scheduler will perform Message Reprocessing for this integration #### Delete Messages Delete Message is one of the functionalities that enable the deletion of messages. The message deletion is not a default function. It works only after they set the flag 'Delete Message' on the integration. The performance is to delete the completed messages. With just a simple check, you can eliminate the rest of the completed messages. #### Additional Message Statuses to Delete This function is no different from the above function since they attempt to delete messages. However, this functionality will delete the other status which is Pending and Fails. You can delete as your desire as long as you make the chosen for a specific status. #### Number of Days to Keep Messages This functionality indeed will keep the messages accordingly to your determination. The messages will keep until the day you want them to delete. You can put any value number in here. Actually there is two Number of Days to Keep Messages which located in the Integration level and Interface level. However, Interface is the first priority. It dominates over the Integration level. Whenever the scheduler (DoMaintenace)run it will automatically check on Interface first. So the messages will delete according to the value you put on the Interface level. The value number that you put in the Number of Days to Keep Messages is to determine the time you want your messages to be deleted. So If you leave the empty value, it means that you want to delete the messages immediately. Likewise, if you put 0 value, the messages will be deleted immediately too. #### Delete Basket Histories When it comes to basket deletion, Delete Basket Histories appears to mind. The configuration isn’t hard to follow at all. The Maintenance scheduler will perform the History Deletion of an Integration. Furthermore, you can click on “Delete” or “Delete All” buttons in the Batch Control Board to clear all baskets. #### Number of Days to Keep Basket Histories The number of days to keep basket histories. If the value is blank, then it will delete immediately. #### Delete Logs Delete Logs locates, in Message Setup, Integration page, Its function is not different from the above two. Do Maintenance plays an important role in performing the schedule to cleanup Logs deletion. #### Delete Log Files With this function, you can simply enable us to delete Log File. #### Log Levels to Delete Log Levels to Delete contains three levels such as Error, Warning, and Info. The performance of this function is based on the selected level. #### Number of Days to Keep Logs & Log Files The number of days to keep logs and log files. If the value is blank, then it will delete immediately. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 10. SFDC2SAPPI Adapter Slug: sfdc2sappi-adapter URL: https://help.skyvva.com/#article/sfdc2sappi-adapter ================================================================================ # 10. SFDC2SAPPI Adapter #### SFDC2SAPPI Adapter SFCDC2SAPPI adaper is used for outbound processing. By delivering a comprehensive data integration that takes advantage of the best of SAP and SFDC worlds, we used SFDC2SAPPI adapter to integration salesforce and SAP. It saved us a lot of effort, so we could spend more time in fine tuning the functions of the interfaces **Fields** **Purpose** Name Name field is mandatory field to create SFDC2SAPPI adapter. Identification of adapter we can give meaningful name to adapter Type  Which type of adapter we need to create. For example, Soap adapter, Rest Adapter, SFDC2SAPPI adapter. Status Status of adapter. For example adapter is still under Inactive or ready for Run. If still on development value should set to "Inactive". If ready for run It need to set "Active". Connection Destination This field use to store connection for sync object to other system. We provided lots of functions on adapter page. **Button Name** **Description** [su_button url="#" style="flat" size="6"]Export adapter[/su_button] Use this button to export adapter to the local computer. [su_button url="#" style="flat" size="6"]Import Adpter[/su_button] Use this button to Import adapter from the local computer. [su_button url="#" style="flat" size="6"]Ping Connection[/su_button] Use this button to test the connection of adapter. [su_button url="#" style="flat" size="6"]Edit[/su_button] Use this button to edit existing Adapter [su_button url="#" style="flat" size="6"]Delete[/su_button] Use this button to Delete existing Adapter #### Properties parameter: **Fields** **Purpose** endpoint To enter URL value of endpoint. username Username of your adapter password security password of properties suppressNullvalue when the empty xml tag causes an issue on the SAP-PI receiver side then suppressNullValue  parameter is used. We provided lots of functions on adapter page. How to create SFDC2SAPPI adapter? Follow the given steps to create adapter: - Go to Adapter tab as shown below. - In the Adapter page, Click on New to create an adapter. ![](../images/2019/12/Untitled1.png) - Fill all the fields correctly. Where you have to mention Name, Type and all property values of your adapter. ![](../images/2019/12/Untitled2-2.png) - Click on Save button to save adapter. ![](../images/2019/12/Untitled3.png) How to use SFDC2SAPPI adapter to send data from Salesforce to SAP? Here we describes how to create an outbound interface with SAP PI/PO using SFDC2SAPPI Adapter.  There are different processing modes in Skyvva and each processing mode are works differently.  We can use SFDC2SAPPI adapter with two modes: - **Synchronous** Synchronous mode is called when integrate then create real time message along with posting each objects. You can use this mode when you want to integrate a small amount of data. - **Asynchronous** Asynchronous, when integrate is called then create messages and process asynchronous (future). However, as an end-user you should not use this method since the processing might be not in order and inaccurate in posting data. Create outbound Interface with Synchronous processing mode.We have to create Integration. Then Create outbound Interface where processing mode is Synchronous.![](../images/2019/12/Untitled4.png)Create outbound Interface with Asynchronous processing mode.We have to create Integration. Then Create outbound Interface where processing mode is Synchronous.![](../images/2019/12/screencapture-shwetatest-dev-ed-lightning-force-lightning-r-skyvvasolutions-Interfaces-c-a0a6F00000faUqDQAU-view-2019-12-19-17_46_10.png)We can call out data using apex code:[aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0016F00003Vr7MHQAZ'}; skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('Shweta','SFDC2SAPPI',ids,'ASYNC', c); [/aux_code] #### How to add suppressNullvalue? suppressNullvalue an adapter property. We create **suppressNullValue** property for adapter SFDC2SAPPI. It will not allow the field value empty to create into XML after called out It means that XML should contains the value only. The empty xml tag causes an issue on the SAP-PI receiver side so that they use the parameter.'suppressNullValue' To add add suppressNullvalue parameter follow the given steps: - Go to Adapter tab as shown below. - In the Adapter page, Click on New to create an adapter. - Fill all the fields correctly. Where you have to mention Name, Type and all property values of your adapter. - Click on Add new button in property section. - We can set SuppressNullvaule parametertrue as true or false.  True means not to send empty field e.g. field with null value. And False means opposite. ![](../images/2019/12/Untitled5.png) We can set SuppressNullvaule parameter value as: - If SuppressNullValue is equals to false the adapter will export data field null value as well to PO/PI - If SuppressNullValue is equals to True the adapter will export data field have value only to PO/PI The object and field to which manually need to add SuppressNullValue and the api name it should have: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **sObject**: Property__c **field**: Name__c (picklist) then add that value [/aux_code] You map the field which have no value it still show when you set the SuppressNullvaule to False. ![](../images/2019/12/Untitled7.png) some fields are map but It won’t be query that field which choose SuppressNULLValue to True. ![](../images/2019/12/Untitled6.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Scheduler Title: 3. Alerting Scheduler for Batch processing with threshold value setting. Slug: 7-2-alerting-scheduler-for-batch-processing-with-threshold-value-setting URL: https://help.skyvva.com/#article/7-2-alerting-scheduler-for-batch-processing-with-threshold-value-setting ================================================================================ # 3. Alerting Scheduler for Batch processing with threshold value setting. #### Alerting Scheduler for Batch processing with threshold value setting:- - The scheduler is in the Scheduler Tab of the Batch Control Board. Its call Alert. Alert Tab is also created and it is used for monitoring Working Basket limit, and EOIO queue’s status. If the status of the EOIO queue(s) is 'Hold' or the threshold from the alert tab is smaller than the working basket value, a notify email will be sent to the assigned alert channels. - The Alert Scheduler is to notify user email and send message to External Email when: Number of Working Basket records more than the value in Threshold EOIO-Queue turns to status “Hold” - To activate this alerting, you have to set up the alert in, “Alert” tab from Batch Control Board.  Input the value in Threshold including Email then Save. Start the scheduler. **Follow the procedure given below:-** - Go to the Integration Detail page and click on the Batch Control board as shown below. ![](../images/2018/10/Alerting.png) - At the Batch Control board click on "Alert" tab. And enter threshold value for example 3. Click on save button. ![](../images/2018/10/b1.png) - Click on the Scheduler tab. And the start Alert Scheduler. ![](../images/2018/10/b2.png) - After the time you set on the scheduler. Check the mail. As shown below. ![](../images/2018/10/alerting.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Scheduler Title: 4. DoMaintenance Scheduler Slug: 7-3-domaintenance-scheduler URL: https://help.skyvva.com/#article/7-3-domaintenance-scheduler ================================================================================ # 4. DoMaintenance Scheduler #### DoMaintenance Scheduler:- DoMaintenance is another global scheduler which locates among others in the Scheduler tab. It provides all the functionalities to keep the data storage clean. In simple words it deletes pending, failed and completed records  You have to activate and run this scheduler otherwise no data cleaning activities are carried out. It exists only 1 in skyvva and processes all integrations. There are two ways to find DoMaintenance Scheduler:- - Using the Scheduler tab in the Admin page. - Using the Separate tab 'Scheduler' in the integration detail page. - **Using Scheduler Tab in Admin page to find DoMaintenace:-** Get into Integration Admin and select on Scheduler Tab. Try to find the “Others” section and set the time for DoMaintenance. **The picture is given below for reference:-** ![](../images/2018/10/do1.png) - ** Using the Separate tab 'Scheduler' in the integration detail page**:- Enter in Integration detail page and click on Scheduler Tab. The picture is given below for reference:- ![](../images/2018/10/do2.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Scheduler Title: 5. Interface Execution Scheduler. Slug: 7-4-interface-execution-scheduler URL: https://help.skyvva.com/#article/7-4-interface-execution-scheduler ================================================================================ # 5. Interface Execution Scheduler. #### Interface Execution Scheduler? This scheduler is only used with the outbound interface and is generated automatically for any outbound interface inside an integration. It uses the SOQL in the field "SOQL Query for filter sObject". In this field, the user can write the SOQL statement which filter sObject to be passed on the method invokeCallout2(). The scheduler uses the method invokeCallout2() to execute the outbound interface. If the SOQL is not powerful enough to solve the requirement of a customer then they can use apex class to write their own logic for data selection. Then the flag "Use Apex Class" has to be set and in the field "Apex Class for Filter sObject" an apex class has to be specified. This is how interface execution scheduler looks like:- ![](../images/2019/09/ies3.png) #### How to use it? **We can have 2 Cases:-** **Case 1:-**  Callout data to SAP with SOQL Query to filter sObject by using InterfaceExecution schedule processing. **Case 2:-  **CallOut data by using apex class for filter sObject. #### Configuration for Interface Execution Scheduler:- **Pre-Requisite:-** - Create Integration. - Create SFDC2SAPPI Adapter. - Create a Remote Site setting. #### Configuration For Case 1:- #### Create Inbound Interface:- - Do Mapping as shown below and save it. - In this inbound interface, we need to use the Id as the external Id. This Id is needed to update the record id which was found by the filter query SOQL. If we don't use the Id field of the sObject it will not work. ![](../images/2019/09/ies.png) #### Create Outbound Interface:- - **Select Operation type- ** Query/ PullQuery. - **Processing mode-** Asynchronous. - **Select Outbound Adapter.** - **In Section "SOQL Query for filter sObject"** - **Filter Query****:- **SELECT Id FROM Account WHERE BillingCity = 'PhnomPenh' AND SAP_Sales_Org__c ='' - **Interface to change condition:- **Enter Inbound Interface ID. - **In section "SOQL Query to select sObject data" or by using "Query Editor" we can write the query:-** SELECT Id,BillingCity,BillingCountry,Name,SAP_Sales_Org__c FROM Account. ![](../images/2019/09/ies2.png) - **Do Mapping as shown below.** ![](../images/2019/09/ies1.png) - On the Integration, page Select the "Scheduler" tab. - Check the section "Scheduler Per interface". - Run the "Interface execution Scheduler" as shown in the given picture below. ![](../images/2019/09/ies3.png) #### Check Result on Message Monitoring For Case 1 once InterfaceExecution scheduler processed:- ![](../images/2019/09/ies4.png) #### Configuration For Case 2:- - Configuration for the inbound interface will be the same as case 1. - Configuration for the outbound interface is given below. - In Section "SOQL Query for filter sObject" - Check the box of Use the apex class. - Interface to change condition:- Enter Inbound Interface ID. - Create a custom apex class with the code given below:- Global with sharing class InterfaceCustomClass implements skyvvasolutions.CustomInterfaceObjectCallout { Global map getMapObject(){ map ActMap = new map([SELECT Id,BillingCity,BillingCountry,Name,SAP_Sales_Org__c FROM Account where BillingCity='PhnomPenh' AND SAP_Sales_Org__c ='']); system.debug(ActMap); return ActMap; } } ![](../images/2019/09/ies7.png) 5. Fill the details as shown belowin the picture. ![](../images/2019/09/ies6.png) #### Run the scheduler:- ![](../images/2019/09/ies3.png) #### Check Result on Message Monitoring For Case 2 once InterfaceExecution scheduler processed:- ![](../images/2019/09/ies8-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Scheduler Title: 6. Message Reprocessing Scheduler Slug: 7-5-message-reproccesing URL: https://help.skyvva.com/#article/7-5-message-reproccesing ================================================================================ # 6. Message Reprocessing Scheduler #### Message Reprocessing Scheduler: Message reprocessing is the process to be used for reprocessing failed and a pending message from the previous integration. For that, we have a Reprocessing scheduler Its job is to reprocess Pending or failed messages. We can exclude or include an integration to be reprocessed or not. The Two cases we support are: - Pending Message (Yellow) - Failed Message (Red) **1.  Pending Message** The message is Pending because of a lot of reasons. They have been shown in Comment. It is one of many reasons that causes Pending, as an example below “The message has not met a condition of all workflows.“ As shown in the picture given below. ![](../images/2018/11/mmr5-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]You must correct your data to meet the condition of all workflows first before you can reprocess.[/su_box] **2.Failed Messages:** Failed messages show in red color. The message is Failed because of a lot of reasons. They have been shown in the Comment. This is one of many reasons, such as it missed some fields and incompleted. For example,  “After evaluating the data source (accountname), no data passed for the mapped external id field (Name).If we get failed messages at that time we can reprocess those messages after recorrecting the issue. We have 3 Message Reprocessing scheduler. 1. Message Reprocess Per Integration scheduler. 2. Message Reprocess Per Interface scheduler. 3. Message Reprocess Per Interface Group scheduler- #### The configuration of Reprocessing Message - Like you can see a failed message in message monitoring just edit it and move to the scheduler screen. For reference, the picture is shown below. ![](../images/2018/11/mmr6.png) - Navigates to Integration Admin -> Scheduler -> MessageReprocess - Finds which Integration name you would like to use schedule - Sets how many minutes you would like the schedule to run. A picture is shown below. ![](../images/2018/11/mmr8.png) - As I set the scheduler time for two minutes. So we will check message monitoring after two minutes. ![](../images/2018/11/mmr7.png) - And finally, the message reprocessed. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Pending Messages sometimes might have become Failed because of missing.[/ Different use cases to reprocess messages per Integration We can reprocess messages as: - MessageReprocessPerIntegration scheduler with every min Time Interval - MessageReprocessPerIntegration scheduler with Run At (IntegrationOnDemand) - MessageReprocessPerIntegration scheduler with Run At Every Hour (IntegrationOnDemand) **Case 1**: **MessageReprocessPerIntegration scheduler with every min Time Interval:** - Testing MessageReprocessPerIntegration scheduler with every min Time Interval (IntegrationOnDemand) with using Automatic Reprocessing flag. We have to follow the given step to reprocess messages per integration. - Go to the scheduler tab and Set scheduler 2 min in MessageReprocessPerIntegration. ![](../images/2019/04/msgre-process4.png) **Case 2: MessageReprocessPerIntegration scheduler with Run At (IntegrationOnDemand)** - Testing MessageReprocessPerIntegration scheduler with Run At (IntegrationOnDemand) using Automatic Reprocessing flag. - Set time Run At 5:00 PM. ![](../images/2019/04/msgre-process5.png) **Case 3: MessageReprocessPerIntegration scheduler with Run At Every Hour (IntegrationOnDemand)** - Testing MessageReprocessPerIntegration scheduler with Run At Every Hour (IntegrationOnDemand) using the Automatic Reprocessing flag. - Set time Run At Every Hour = 6->8:00 AM. ![](../images/2020/05/autore1.png) ![](../images/2019/04/msgre-process6.png) - It will run at 6-8:00 AM every day and running all Interfaces stays in this integration. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Scheduler Title: 7. Basket Processing Scheduler. Slug: 7-6-basket-and-bulk-processing-scheduler URL: https://help.skyvva.com/#article/7-6-basket-and-bulk-processing-scheduler ================================================================================ # 7. Basket Processing Scheduler. #### Basket Processing Scheduler:- - In batch processing, we are storing data into an attachment or file. - In the batch control board, we can see data into a basket and basket is linked to the attachment(File where we can see JSON record). - We have a scheduler for the processing of the basket. It processes the basket and then we can see messages in the message monitoring. We can also do it manually we can select baskets as per our choice and can process it manually. - We can set the time and start the schedule or refresh it. **To find Basket Processing Scheduler:-** Batch Processing Scheduler is located on three different pages - Batch Control Board, - Integration page detail - Integration Admin Tab. **Batch Control Board:** - Log in to Salesforce and enter the Integration detail page. - Click on Batch Control Board ![](../images/2018/10/img-4.png) - Click on Scheduler Tab - Set the time and start the Batch Process schedule ![](../images/2018/10/img-5.png) **Integration Detail Page** - Log in to Salesforce and enter Integration Detail Page. - Click on the Scheduler tab. ![](../images/2018/10/img-7.png) **Integration Admin Tab** - Log in to Salesforce and select on Admin Tab ![](../images/2018/10/img-8.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 9. Alerting Setup Slug: 3-9-alerting-setup URL: https://help.skyvva.com/#article/3-9-alerting-setup ================================================================================ # 9. Alerting Setup #### We have currently 5 different alert rules on the integration level. **Alerting Rules** **Description** Send Alert to Integration Setup as well Set this flag if you want that the alert fired for this interface also sent to the alert rule you specify on the integration level. Send Email SFDC User If you want to have a task created for a user when a message or log gets an error. Select the user from the Salesforce user list. Send Email External Mail The recipients’ email addresses (Comma-Separated List.) For example: john@yahoo.com,george@gmail.com,etc Chatter Group Name Chatter Group for alert error when integrating data. Create Task for User If you want to have a task created for a user when a message or log gets an error. Select the user from the Salesforce user list. ![](../images/2019/12/alerting-setup.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Scheduler Title: 9. CDD and CDT Scheduler. Slug: 7-7-cdd-and-cdt-scheduler URL: https://help.skyvva.com/#article/7-7-cdd-and-cdt-scheduler ================================================================================ # 9. CDD and CDT Scheduler. CDC is made up of two components, the CDD and the CDT. CDC stands for Change Data Detection and CDT is stands for Change Data Transfer. These two components have different functionality. CDD is a scheduler that is running to call batch Apex in order to collect data change and save all those data into Change Pointer Object. CDT is another scheduler that is running to collect the records from the Change Pointer Object and sent to the external System such as SAP … etc. The Schedule will execute callout as a parallel of future, queueable, batch based on priority, integration resource, and interface group type (EO/EOIO). **Change Data Detection Scheduler:-** With CDD, you can detect all the changed data in Salesforce to any external system. CDD is a scheduler that is running to call batch Apex in order to collect data change and save all those data into the Change Pointer table. **Change Data Transfer Scheduler:-** CDT is another scheduler that is running to collect the records from the Change Pointer Object and sent to the external System such as SAP… etc. The Schedule will execute callout as the parallel of future, queueable, batch based on priority, integration resource, and interface group type (EO/EOIO). **CDD and CDT Scheduler is located on three different pages** - CDC Control Board, - Integration page detail - Integration Admin Tab. **CDC Control Board:** CDC Control Board is a dashboard where we can monitor Change Pointer, Interfaces, and Scheduler. Each tab holds different functionality. Change Pointer is a table that stores change pointer records. So we can monitor them on Change Pointer table in CDC Control Board rather than on the Integration Admin tab. This withal applies for Interfaces and Schedulers tab. - Log in to Salesforce and enter the Integration detail page. - Click on CDC Control Board ![](../images/2019/12/cddcdc.png) - Click on Scheduler Tab - Set the time and start the schedule CDD or CDT. ![](../images/2018/10/Untitled6.png) ** Scheduled CDD** - Open Integration Details Tab - Go to custom Link section and click on CDC Control board - Go to the Scheduler tab. - Start the scheduler on an outbound section and set the time as you prefer. ![](../images/2018/10/2019-11-13_14-35-21.png) **Step5: Monitoring CDD** - Enter Integration Details Tab - CDC Control board Tab and apply a filter on: -Integration name - Interface Name - Status - Search ![](../images/2018/10/2019-11-13_15-31-42.png) **Schedule CDT** - Go Integration Details Tab - Go to Scheduler Tab - Start the Schedule and set the minute as you wish **![](../images/2018/10/2019-11-13_14-51-03.png)** **Integration Detail Page** - Log in to Salesforce and enter Integration Detail Page. - Click on the Scheduler tab. - And check the two schedulers. ![](../images/2019/12/CDDCDC1.png) **Integration Admin Tab** - Log in to Salesforce and select on Admin Tab ![](../images/2019/12/cddcdc2.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Workflow Title: 3. Runtime Behavior Slug: runtime-behavior URL: https://help.skyvva.com/#article/runtime-behavior ================================================================================ # 3. Runtime Behavior #### Runtime Behaviour It contains 3 options:- **We can see 3 options in Runtime behavior and we can select any one of them according to our requirement:-           ** - **Continue when an error occurred:-  ** It is a default option if we process messages and suppose we met with error on 2nd or 3rd message. The other message will continue to process. - **Stop when an error occurred:-** If we process messages and suppose we met with error on the 2nd or 3rd message. We should stop there", for that processing the code will automatically stop the process, we don't have to manually stop pushing the message. - **Rollback when an error occurred:-** If we got some error while processing a message like perform DML operation based on mapping and we get some error like missing required field value, missing ExtId value that we need to considered as error. When workflow message met an error it will immediately stop processing and rollback. #### Please check picture given below:- ![](../images/2019/12/work2.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Reprocessing Title: 1. Reprocessing Slug: 7-reprocessing URL: https://help.skyvva.com/#article/7-reprocessing ================================================================================ # 1. Reprocessing #### Reprocessing: Reprocessing is a process where we process the failed or pending messages or basket or bulk. #### Message Reprocess: "MessageReprocess" job can be done manual reprocessing and the automatic reprocessing. MessageReprocess Job is the process to be used for reprocessing failed and a pending message from the previous integration. It might be failed if the user does not edit or edit wrong business logic in IMessage Data. #### Status MessageReprocess depends on two status. - Pending Message (Yellow) - Failed Message (Red) #### Basket Reprocess: Processing the basket and then basket gets failed due to the error then the reprocessing can pick up the basket again and reprocess it again then its a reprocessing of the basket. #### Bulk Reprocess: Bulk reprocessing is when we are reprocessing an attachment inside bulk inbox and it gets failed then it will be bulk reprocessing. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Reprocessing Title: 3. Manual reprocessing Slug: 7-1-manual-reprocessing URL: https://help.skyvva.com/#article/7-1-manual-reprocessing ================================================================================ # 3. Manual reprocessing In this unit, we will see about manual reprocessing. MessageReprocess Job is the process to be used for reprocessing failed and a pending message from the previous integration. It might be failed if the user does not edit or edit wrong business logic in IMessage Data. #### The configuration of Reprocessing Message Following, we will see how to use the MessageReprocess job to correct the message records in different cases. The different cases we support are: - Pending Message (Yellow) - Failed Message (Red) **1.  Pending Message** The message is Pending because of a lot of reasons. They have been shown in Comment. It is one of many reasons that causes Pending, as an example below “The message has not met a condition of all workflows.“ As shown in the picture given below. ![](../images/2018/11/mmr5-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]You must correct your data to meet the condition of all workflows first before you can reprocess.[/su_box] **2. Failed Message** If we get failed messages at that time we can reprocess those messages after recorrecting the issue. #### Manual Reprocessing in message monitoring: - We can see failed messages in the message monitoring in the picture given below. ![](../images/2018/11/mmr.png) - As we can see in a comment the reason for the failed message is given that no data passed for external id (Name). So click on the edit button on the failed message. ![](../images/2018/11/mmr2.png) - Enter some data in the Name field. ![](../images/2018/11/mmr1.png) - And Now click on the Reprocess button. ![](../images/2018/11/mmr3.png) - In the picture given below, we can see a reprocessed message which shows now a green flag. ![](../images/2018/11/mmr4-1.png) #### Manual Reprocessing in message detail: - Click on the message name as shown in the picture given below. ![](../images/2019/12/manuall.png) - After clicking on it, firstly we need to correct the data on the basis of reason for failed messages. - Click on the edit icon. ![](../images/2019/12/manuall2.png) - Enter data and then save it as shown below. ![](../images/2019/12/manuall3.png) - Now click on the Reprocess button as shown below. ![](../images/2019/12/manuall4.png) - In the picture given below,![](../images/2019/12/manuall5.png) we can see a message shows a green flag after reprocessing. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Workflow Title: 4. Condition Builder in Workflow. Slug: condition-builder-in-workflow URL: https://help.skyvva.com/#article/condition-builder-in-workflow ================================================================================ # 4. Condition Builder in Workflow. #### Condition Builder:- It is a section where we can build condition by using "SObject Source Fields", "Operators" and "Functions". We have a dropdown for all three fields. Writing condition is simple now because of the condition builder, it simplifies the way of writing formula. After writing the condition, we can test the formula. ![](../images/2020/01/nwf7.png) #### We have two buttons:- **1. Insert function:- ** This button is used when we select a function from the picklist value of functions dropdown and needed to insert it in the condition box. So after selecting the function, we will click on Insert Function. **2.Test Formula:-** After writing the condition, we need to test the formula. So for that, we need to click on the Test Formula button. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Reprocessing Title: 5. Batch reprocessing Slug: 7-3-batch-reprocessing URL: https://help.skyvva.com/#article/7-3-batch-reprocessing ================================================================================ # 5. Batch reprocessing A job runs to process batches that use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch, or bulk. And when messages get failed or are pending then it gets reprocessed. #### What is batch reprocessing? - In batch processing, we are storing data into an attachment or file. - In the batch control board, we can see data into a basket and basket is linked to the attachment(File where we can see JSON record). - we have a scheduler for processing and reprocessing of the basket. It processes the basket and then we can see messages in the message monitoring. We can also do it manually we can select baskets as per our choice and can process it manually. We can do it using the scheduler too. Processing the basket and then basket gets failed due to the error then the reprocessing can pick up the basket again and reprocess it again then its a reprocessing of the basket. - There is a difference between reprocessing of basket and reprocessing of the message. To understand the reprocessing of messages check the example which will give a clear view, for example, If we have 5 messages in the basket and 4 of them show a green flag and 1 shows the red flag in message monitoring then it means we need to do message reprocessing not basket reprocessing because the message got failed not basket. - Batch Reprocessing is used for running a batch job for a pending or failed message. It has more capability than synchronous and we can check job monitoring. The job must contain more than 200 and less than 5000 records, o we can utilize it with batch reprocessing. When Batch reprocessing job ran all the basket stay in this Integration will be reprocessed. **IntegrateMaxSize**: A maximum number of records that the Skyvva integration agent can integrate utilizing methods integrate () is the default value of 200. If the number of records to be integrated is more immensely colossal than the value, the agent will switch the API mode automatically. ** IntegrateBatchMaxSize**: A maximum number of the record that Skyvva integration agent can integrate utilizing method integrateBatch() is the default value of 5000. If a number of records to be integrated is more astronomically immense than this value, the agent will switch to the bulk API method automatically. #### Pre-requisite - Create Integration. - Create the Interface. (Inbound Interface) #### How to create batch using “Use Auto-Switch Mode”? Auto-switch mode is a data processing mode. To check this mode, Follow steps given below: - Open Interface - Click on the Edit button. - Check the "Use Auto-Switch Mode" field. ![](../images/2020/01/batchad.png) - Upload data using an agent.  Now you can check results on the batch control board of your salesforce org. ![](../images/2020/01/batchad2.png) - As we can see in the picture there are 2 baskets. We can reprocess the basket if the basket failed. - So we have two ways for basket reprocessing. - We can do it manually by selecting a basket and then click on the reprocess button as shown below. So all baskets stay in this Integration will be reprocessed. ![](../images/2020/01/batchad3.png) - We can see a reprocessed basket as shown below in History basket. ![](../images/2020/01/batchad4.png) 2. Another way where we can reprocess by using the scheduler. As shown below. ![](../images/2020/01/batchad5.png) #### How to create batch by Configuring Basket settings? - We just need to configure the Basket setting section as shown below. All other procedure is the same as we have seen in this section "How to create batch using “Use Auto-Switch Mode”? ![](../images/2020/01/batchad1.png) - Batch mode:-  Check this field if we want to process as batch mode. - Basket Processing Runtime behavior:- Set to "Dynamic switch based on record size" if you want to switch based on the record number inside the message to use synchronous or batch posting. - Record Size To Be Switched:- This field is used only in the combination of the field "Runtime behavior" with the value "Dynamic switch based on record size". Set here a number from which to switch to use batch processing e.g. create basket instead of posting immediately and synchronously. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Reprocessing Title: 6. Bulk Reprocessing Slug: 7-4-bulk-reprocessing URL: https://help.skyvva.com/#article/7-4-bulk-reprocessing ================================================================================ # 6. Bulk Reprocessing #### What is Bulk reprocessing? - In bulk processing, we have a bulk control board which is a dashboard where we monitor bulk Processing where we have a scheduler and even we can do it manually, we can select attachments or file manually. - It will pick up a record from the file and processed it, then we can see messages in the message monitoring. - Bulk reprocessing is when we are reprocessing an attachment inside bulk inbox and it gets failed then it will be bulk reprocessing. - But if we have 5 messages in the basket and 4 of them show a green flag and 1 shows the red flag in message monitoring then it means we need to do message reprocessing not bulk reprocessing because the message got failed not Bulk. - SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have much data, using Bulk Interface Processing is necessary (over 5000 records). #### Pre-requisite - Create Integration. - Create the Interface. (Inbound Interface) #### How to create Bulk using “Use Auto-Switch Mode”? Auto-switch mode is a data processing mode. To check this mode, Follow steps given below: - Open Interface - Click on the Edit button. - Check the "Use Auto-Switch Mode" field. ![](../images/2020/01/batchad.png) - Upload data using an agent. - Now open Bulk control board, then select Interface and search. Check the Bulk data inbox. ![](../images/2020/01/bulkad.png) - Firstly select the attachment and then set scheduler time and run Reprocessing. As shown below. ![](../images/2020/01/bulkab1-1.png) - After reprocessing, we can see reprocessed attachment in Bulk Data Monitor. ![](../images/2020/01/bulkab2.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Inbound Message Processing Title: 1. Inbound Message Processing Slug: inbound-message-processing URL: https://help.skyvva.com/#article/inbound-message-processing ================================================================================ # 1. Inbound Message Processing ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Inbound Message Processing Title: 2. Different mode of the inbound message processing Slug: 6-1-different-mode-of-the-inbound-message-processing URL: https://help.skyvva.com/#article/6-1-different-mode-of-the-inbound-message-processing ================================================================================ # 2. Different mode of the inbound message processing Skyvva supports three different categories of interface technology. Synchronous and real-time (synchronous) batch (asynchronous) bulk (asynchronous) When the interface is run messages will be created. #### How to create Interface with diff processing mode? We will show you how to create an interface to use in a different use case. Following are the different use cases: - Do **real-time** interface using synchronous mode - Do **batch processing** using batch mode - Do **Bulk processing **using bulk mode        - Do **manual processing **using Agent Control Board or SAP control Board. - Do **Scheduler processing **using Agent Control Board or SAP Control Board #### Synchronous and real-time (Synchronous) - Go to your Integration page. - Click on **Interface** tab (near to detail tab) - Click On New Interface button. ![](../images/2018/10/New-Interface.png) **Name**: It can be Account, Contact or Case.. etc to notify your Interfaces **Statue**: Deployed (It can be used) **Sequence**: Ranking number (1) **Adapter**: It is the connector **Source Name**: Salesforce Objects (Account, Contact or Case.. etc.) **Operation** **Type**: There are 4 types: - Upsert: To update on existed data and insert new data that doesn't exist yet in Message Monitoring. - Update: Only update on data that is already existed in Message Monitoring. - Insert:  Add all data in the Message Monitoring. - Delete:  Delete all data in Message Monitoring Type: There are two types of interfaces: - Inbound: Import data into Salesforce - Outbound: Export data outside SalesforceNote: Upsert is usually used since it can update on the existed data and add new data into Message Monitoring then Save. ![](../images/2018/10/CreateInterface.png) #### Batch (Asynchronous) Batch Mode has been used when there are big amount of data you would like to upload. It is bigger than Synchronous and real-time. When you prefer to use Batch Mode - Clicks on **Interface** - Click on **Edit ** - Checks on** Batch Mode.** ![](../images/2018/10/EditInterface.png) ![](../images/2020/01/Untitled.png) #### The bulk (Asynchronous) Bulk Mode has been used when there are a mass amount of data you would like to upload. It is larger than the Batch mode. how to configure bulk mode: -  We have to checks on **Bulk Mode** ![](../images/2020/01/Untitled1.png) #### The Manual processing on Agent Control Board and SAP Control Board We using Manual Processing to execute data in real-time which is useful when user configuration already with Interface and adapter. Manual Processing is working on the Agent control board and SAP Control Board. To use manual processing to execute Inbound we need to linked Interface with Agent Adapter or SAP adapter. How to use Manual processing: -  We have to connect destination on Agent control board or SAP Control Board ![](../images/2020/01/61.png) -  Go to tap Interface select Interface and click the manual process button. ![](../images/2020/01/62.png) - After we click the Manual Process button we need to click the push button. ![](../images/2020/01/63.png) #### The  Interface Execution Scheduler. We can use Scheduler for execution data on the Agent control board or SAP Control Board. This function is helpful for user who needs to processing by set time that they want. To use scheduler we need to configuration Interface with agent adapter or SAP Adapter then we need to connect the destination on the Agent Control board or SAP Control board depend on which adapter we are using. How to use Scheduler for executing data. -  We have to connect destination on Agent control board or SAP Control Board ![](../images/2020/01/61.png) -  Go to Scheduler tap and set the time that we want  to process on Scheduler per Interface by clicking Clock. ![](../images/2020/01/64.png) - Then we can choose to run for every minute, every hour or set a specific time for running. -  After that click Save button ![](../images/2020/01/65.png) -  Then we can click Start Scheduler ![](../images/2020/01/66.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Inbound Message Processing Title: 3. Batch Processing Slug: 6-2-batch-processing URL: https://help.skyvva.com/#article/6-2-batch-processing ================================================================================ # 3. Batch Processing A job runs to process batches which use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. #### What is batch processing? Batch Processing is used for running a batch job. It has more capability than synchronous and we can check job monitoring. The job must contain more than 200 and less than 5000 records, o we can utilize it with batch processing. It can store many records in one batch, and we can set time interval in batch processing scheduler of Skyvva to run anytime that you optate. Batch Processing has a field called  “Use Auto-Switch Mode”. This is incipient feature in Skyvva, It runs manually as well as with batch and bulk. The agent automatically get switched to Skyvva API when bulk and batch mode is used. It is predicated on a number of records in IntegrateMaxSize, IntegrateBatchMaxSize. The default of IntegrateMaxSize is 200 records and IntegrateBatchMaxSize is 5000 records, but we can transmute the value that is optate to run it. **IntegrateMaxSize**: A maximum number of records that the Skyvva integration agent can integrate utilizing methodsintegrate () is the default value of 200. If the number of records to be integrated is more immensely colossal than the value, the agent will switch the API mode automatically. ** IntegrateBatchMaxSize**: A maximum number of the record that Skyvva integration agent can integrate utilizing method integrateBatch() is the default value of 5000. If a number of records to be integrated is more astronomically immense than this value, the agent will switch to bulk API method automatically. #### Pre-requisite - We should create integration. Please this tutorial to create integration->  [What is an integration and how to create it?](#article/what-is-an-integration-and-how-to-create-it) - Next step is to create the interface. Please this tutorial to create interface-> [What is an interface and how to create it?](#article/1-what-is-an-interface-and-how-to-create-it) - We should do mapping using SKYVVA graphical tool. #### How to use batch processing? Follow the given steps to set a value on IntegrateMaxSize, IntegrateBatchMaxSize. - We have to click on the Edit button. - Go to Information section->Fill 200 on Integrate Batch Max Size->Fill 50 on Integrate Max Size->Click Save Button - Inbound section-> tick Use Auto-Switch Mode.![](../images/2019/01/bulk-control.png) Note: When you fill Integrate Batch max Size and Integrate Max Size as screen above, it means that after you click on 'Use Auto Switch Mode' checkbox, it will run manually less than 51 records and a batch between 51 to 200 records. #### How to load CSV file using an agent. **Agent** Many networks and server monitoring solutions use “Agent” to get values from the machines they are monitoring. Agents are programs that run on the remote machines and communicate with the main monitoring system. Some merchant tries to hide the fact that they use Agents. They will try to deliver things like they “deploy” to remote systems or use other words, but it all compress to installing custom software on the remote machines. **Upload data ** - Click on  Agent UI to run->Click Integration Wizard. ![](../images/2019/01/agent.png) - Select Properties that log to salesforce. ![](../images/2019/01/Properties.png) - Chose Integration Name and Create Adapter because it doesn’t have adapter yet->Choose adapter type is File->Fill adapter name>Fill Folder location->Fill File Name->Click Save button->Select Interface->Click Process button. ![](../images/2019/01/create_Adapter.png) - click on Process Button, it will show message. The message is Process completed. Now you can check result on salesforce. ![](../images/2019/01/Process.png) ![](../images/2019/01/batchctrlBoard.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Inbound Message Processing Title: 4. Bulk Processing Slug: 6-3-bulk-processing URL: https://help.skyvva.com/#article/6-3-bulk-processing ================================================================================ # 4. Bulk Processing This unit describes the use of API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. #### What is bulk processing? SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have much data, using Bulk Interface Processing is necessary (over 5000 records). #### How to create bulk processing? Before you can use bulk processing, you have to create an integration, define an inbound interface and mapping like we normally do. Please refer to the previous tutorials that explain how to create integration and interface and how to develop mapping using the SKYVVA mapping tool. Please click on the Account Interface. As shown in the screenshot below. ![](../images/2019/01/bulk1-1.png) #### Inbound Processing:- Inbound Processing tabs contain 5 different sections which are Filter, Bulk Interface Scheduler, Bulk Data Inbox, Bulk Data Processing, and Bulk Data Monitor. Each section plays different roles in bulk processing.  #### Load CSV file using Agent:- **Upload data:- ** - Click on Agent UI to run->Click Integration Wizard. ![](../images/2019/01/bulk2.png) - Select Properties that log to salesforce ![](../images/2019/01/bulk3.png) - Choose Integration Name and Create Adapter because it doesn’t have an adapter yet - Choose the adapter type "File". - Fill adapter "Name". - Fill the Folder location. - Fill File Name. - Click on the "Test source connection". - Click on the "Test query". - Click the "Save" button. - Select the Interface. - Click the "Process" button. ![](../images/2019/01/bulk4.png) - Click on Process Button, it will show the message. The message is "Process completed". Now you can check result on salesforce. ![](../images/2019/01/bulk6.png) - Check the result on message monitoring:- ![](../images/2019/01/bulk7.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Inbound Message Processing Title: 5. Use Auto-Switch Mode Slug: 6-4-use-auto-switch-mode URL: https://help.skyvva.com/#article/6-4-use-auto-switch-mode ================================================================================ # 5. Use Auto-Switch Mode **Use Auto-switch mode:** Auto-switch mode is a data processing mode provided by Skyvva. When the auto-switch mode flag is culled, It describes that Agent automatically switched to SKYVVA API which is based on the number of records and **IntegrateMaxSize(old Label Name)/Autoswitch Integrate Max Size (New Label Name)**, **IntegrateBatchMaxSize(old Label Name)/Autoswitch Batch Max Size(New Label Name)**. And when the flag is unselected it signifies that data is integrated with normal mode (no batch or bulk) no matter what is the size of records. Batch Processing has a field called  “Use Auto-Switch Mode”. This is incipient feature in Skyvva, It runs manually as well as with batch and bulk. The agent automatically get switched to Skyvva API when bulk and batch mode is used. It is predicated on a number of records in **IntegrateMaxSize(old Label Name)/Autoswitch Integrate Max Size (New Label Name)**, **IntegrateBatchMaxSize(old Label Name)/Autoswitch Batch Max Size(New Label Name)**. The default of **IntegrateMaxSize(old Label Name)/Autoswitch Integrate Max Size (New Label Name) **is 200 records and **IntegrateBatchMaxSize(old Label Name)/Autoswitch Batch Max Size(New Label Name) **is 5000 records, but we can transmute the value that is optate to run it. **IntegrateMaxSize(old Label Name)/Autoswitch Integrate Max Size (New Label Name)**: A maximum number of records that the Skyvva integration agent can integrate utilizing methodsintegrate () is the default value of 200. If the number of records to be integrated is more immensely colossal than the value, the agent will switch the API mode automatically. ** IntegrateBatchMaxSize(old Label Name)/Autoswitch Batch Max Size(New Label Name)**: A maximum number of the record that Skyvva integration agent can integrate utilizing method integrateBatch() is the default value of 5000. If a number of records to be integrated is more astronomically immense than this value, the agent will switch to bulk API method automatically. #### How to create batch using “Use Auto-Switch Mode”? Auto-switch mode is a data processing mode. To check this mode on, we have to open our created interface. Follow the given steps to set a value on **IntegrateMaxSize(old Label Name)/Autoswitch Integrate Max Size (New Label Name)**, **IntegrateBatchMaxSize(old Label Name)/Autoswitch Batch Max Size(New Label Name)**. - We have to click on the Edit button. - Go to Information section->Fill 200 on Integrate Batch Max Size->Fill 50 on Integrate Max Size->Click Save Button - Inbound section-> tick Use Auto-Switch Mode.![](../images/2019/01/bulk-control.png) Note: When you fill Integrate Batch max Size and Integrate Max Size as screen above, it means that after you click on 'Use Auto Switch Mode' checkbox, it will run manually less than 51 records and a batch between 51 to 200 records. #### How to load CSV file using an agent. **Agent** Many networks and server monitoring solutions use “Agent” to get values from the machines they are monitoring. Agents are programs that run on the remote machines and communicate with the main monitoring system. Some merchant tries to hide the fact that they use Agents. They will try to deliver things like they “deploy” to remote systems or use other words, but it all compress to installing custom software on the remote machines. **Upload data ** - Click on  Agent UI to run->Click Integration Wizard. ![](../images/2019/01/agent.png) - Select Properties that log to salesforce. ![](../images/2019/01/Properties.png) - Chose Integration Name and Create Adapter because it doesn’t have adapter yet->Choose adapter type is File->Fill adapter name>Fill Folder location->Fill File Name->Click Save button->Select Interface->Click Process button. ![](../images/2019/01/create_Adapter.png) - click on Process Button, it will show message. The message is Process completed. Now you can check result on salesforce. ![](../images/2019/01/Process.png) ![](../images/2019/01/batchctrlBoard.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Inbound Message Processing Title: 6. Adding custom logic to the inbound message processing Slug: 6-5-adding-custom-logic-to-the-inbound-message-processing URL: https://help.skyvva.com/#article/6-5-adding-custom-logic-to-the-inbound-message-processing ================================================================================ # 6. Adding custom logic to the inbound message processing Actually, SKYVVA integrates API can get data and create from JSON or XML payload messages. As of now we can create flat and tree messages as with integrate3. However, if the data is a raw text and not formatted in JSON or XML, we cannot parse and create messages. Since we cannot create messages in our message table we need a new object to store the raw payload data. In this case, we pass the raw data to the customer class and the custom class will handle everything itself as it will create and post the messages. We use this feature to pass raw payload data which is an unstructured data to the custom class. Those unstructured data are for example binary data, windows in the file, etc. #### How to pass raw data to Custom Class To be able to pass raw data to custom class you need to follow the steps below: **Step 1:** **Create Integration** ![](../images/2019/06/Screen-Shot-2019-07-30-at-3.42.49-PM.png) **Step 2:** **Create Interface** #### In the Runtime Configuration General Section of Interface page, we need to select two things which are shown in the picture given below: - You need to tick Custom Processing - Enter Custom Processing class ![](../images/2019/06/Screen-Shot-2019-07-30-at-4.34.55-PM.png) **Step 3:** **Create a custom class:** - The custom code is given below to pass raw data to custom class: **public with sharing class RawDataCustomProcessing extends AbstractIntegrationV3 { public override String messageProcessing(){ System.debug('>>>>>>RawDataCustomProcessing>messageProcessing>dtoRequestBody: '+dtoRequestBody); //do raw data in dtoRequestBody return 'ok'; } public override IServicesUtil.IMessageResult createMessage(AbstractIntegrationV3.DtoRequestBody dtoRequestBody, AbstractIntegrationV3.DtoStructure dtoStr){ return null; } }** - We can use dtoRequestBody to do the complex logic that payload defined dtoRequestBody structure is as below: **global class DtoRequestBody{ global String mode{get;set;}//Synchronous,Asynchronous global String integration{get;set;}//integration name or integration id global String iinterface{get;set;}//interface name or interface id global String transferId{get;set;} global String runtimeParameter{get;set;}//runtime interface field value to overwrite real interface in memory global String payloadFormat{get;set;}//xml/json global String payload{get;set;}//data to be integrated }** **Step 4:** **Call Webservice:** ![](../images/2019/07/raw3.png) - After call Webservice, it will pass raw data to messageProcessing method. - After that, the user can use this raw data to do with the complex logic that they want. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Message Monitoring Title: 9. The new v3 message monitoring with hierarchical view Slug: 16-8-the-new-v3-message-monitoring-with-hierarchical-view URL: https://help.skyvva.com/#article/16-8-the-new-v3-message-monitoring-with-hierarchical-view ================================================================================ # 9. The new v3 message monitoring with hierarchical view Message Monitoring is used to check the integration result after processing the Inbound or Outbound interface. The integration result includes Pending, Failed, Completed, Cancelled status and the reason why it failed. Additionally, we can know the real sObject is integrated successfully with completed status. In this section of message monitoring, we will see new V3 message monitoring with a hierarchical view. It includes a few main points. Which will help us to learn its functionality or working and we can make use of it. #### Viewing in message detail with the right panel where we can navigate through the different nodes. Each node represents a message. **Firstly we need to check the configuration for it. Hence the process is given below.** 1. Create integration. 2. Create Interface. 3. Add Metadata Provider, Repository and message type on Interface detail page. 4. Hierarchical mapping is shown below. ![](../images/2020/01/mm.png) - The highlighted section of mapping shows 3 levels. Which includes Account, Contact, and Asset. Now we need to manually load the Hierarchical XML file. And after that, we can check message monitoring. As shown in the picture given below. ![](../images/2020/01/mm1.png) - Now if we want to check the different nodes we need to click on this arrow as shown in the picture given below. ![](../images/2020/01/mm2.png) - After clicking on the arrow we can see different nodes as shown in the picture given below. ![](../images/2020/01/mm3.png) So from here, we can view message details for each node. #### Deleting of message e.g. the whole tree message or only from a node with all its children’s. - We can delete a single message with all its children as shown in the picture given below. ![](../images/2020/01/mm4.png) - We can delete all the messages:- For this, we have the best option of "Delete All". Here we need to click on Delete All option and we can see the screen below for confirming that we wan to delete or not as shown in the picture given below. ![](../images/2020/01/mm5.png) #### Changing the status of the message - We need to click on cancel to change the status from failed to cancel. As shown in the picture given below:- ![](../images/2020/01/mm6.png) - After clicking on the Cancel button color of the flag will change into grey as shown in the picture given below. ![](../images/2020/01/mm7.png) #### Reprocessing of messages - Reprocessing of messages can be done for the messages which are failed or pending, we cannot reprocess completed or canceled messages. For this we are having a Reprocess button by clicking on it the processing will generate. - We can select the message which we want to reprocess and then we will click on the "Reprocess" button. As shown in the picture given below. ![](../images/2020/01/mm8.png) - After clicking on the Reprocess button we can see the popup on the screen. ![](../images/2020/01/mm9.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Inbound Message Processing Title: 7. Available operation to post the message Slug: 6-8-available-operation-to-post-the-message URL: https://help.skyvva.com/#article/6-8-available-operation-to-post-the-message ================================================================================ # 7. Available operation to post the message ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Inbound Message Processing Title: 8. Publish Salesforce Platform Event Slug: 6-9-publish-salesforce-platform-event URL: https://help.skyvva.com/#article/6-9-publish-salesforce-platform-event ================================================================================ # 8. Publish Salesforce Platform Event Execution of interface using apex trigger is is a Salesforce solution. But with Skyvva we can enrich the event data with mapping and process the data after we have mapped the event/message. Here It is the same way as we process an incoming message through the skyvva processing pipeline e.g. workflow, mapping, processing. We use generic method to execute the interface either it is an inbound or outbound interface. #### Platform event **Platform events** enable developers to deliver secure, scalable, and customizable **event** notifications within the **Salesforce platform** or from external sources. **Platform events** are based on a publish-subscribe architecture. #### How Platform event work with inbound processing? - we create a platform event with our inbound interface with the new version. - We used API to execute inbound interface. With this API we can execute an inbound or outbound interface in a synchronous or asynchronous way. We have to provide this API in two versions e.g. REST API and internal apex method. The REST API is used by external REST client and the internal API is used by apex class, Flow or Process. With this API or method, we should be able to execute both inbound and outbound interface unlike our existing method 'invokeCalloutX()' where we can use only wit outbound interface. #### How to create the platform event SKYVVA feature? We can create a platform event without programming with SKYVVA feature. Creating an event can be done using the inbound or outbound interface. With the inbound interface, we get data from the outside and with this data, we can create an event either into the Salesforce bus. Follow the given steps to create platform event with SKYVVA: **Step1: Create platform Event:** - Go to Set Up. - Search for Platform Event in quick find box. - Click on new button. - Fill the required fields. - And click on the Save button. [![](../images/2019/10/apextrigger_1-3.png)](../images/2019/10/apextrigger_1-3.png) **Step2: Create custom Fields** - Go to Custom fields and Relationship section. - Click on new button. [![](../images/2019/10/apextrigger_2-1.png)](../images/2019/10/apextrigger_2-1.png) - New button navigate to: [![](../images/2019/10/apextrigger_3.png)](../images/2019/10/apextrigger_3.png) - Click on next button. - Create two custom fields. AccountNumber and Name. [![](../images/2019/10/apextrigger_4.png)](../images/2019/10/apextrigger_4.png) Repeat same process to create Name field. **Step3: Create Integration** [![](../images/2019/10/apextrigger_10.png)](../images/2019/10/apextrigger_10.png) **Step4: Create interface. ** We can execute inbound interface with our new API i,e Event Interface. - source/target name: select Platform Event name. here platform event name is Platform_Event_Account_e. - Operation Type: It should be Public salesforce Event. - Interface Type: Event Interface [![](../images/2019/10/apextrigger_11.png)](../images/2019/10/apextrigger_11.png) **Step5: Do mapping** [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_40_21.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_40_21.png) **Step6: Upload data manually.** - Go to Integration detail page. - Upload CSV file. - Push data to message board. [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_51_53.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_51_53.png) **Step7: Search result on message Monitoring:** - Go to Message Board - Select Interface and search [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_52_40.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_52_40.png) #### We can to consume the event by using : - apex trigger - process builder process - Salesforce flow - External Client using CometD protocol ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 1. Outbound Message Processing Slug: outbound-message-processing URL: https://help.skyvva.com/#article/outbound-message-processing ================================================================================ # 1. Outbound Message Processing This concept is about outbound interface processing. The real-time outbound interface can be done in different ways i.e Using a button, Using trigger, Using the process builder. For outbound processing, we have two categories:- - **Synchronous:-** Apex code wait for the response of the HTTP callout. - **Asynchronous:-** Apex code doesn’t wait for the response of the HTTP callout. It can have a response which is an asynchronous response. This response can come at any time. ses our** invokeCallout2()** method. This method support   **SAP, SAP-PI, SAP-R/3, ****SFDC2SAPPI, SOAP, REST **adapter types. The response could be a text of JSON, XML, List> based on given flag parameters in CallOutControl and Apex of each adapter handle setting when execute callout.  InvokeCallout2() method support different mode: 1. SYNC 2. FUTURE 3. BATCH 4. AUTO We get a real-time response in SYNC mode only. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 2. Different mode of outbound processing Slug: 7-1-different-mode-of-outbound-processing URL: https://help.skyvva.com/#article/7-1-different-mode-of-outbound-processing ================================================================================ # 2. Different mode of outbound processing ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 3. The invokeCallout API to send message to the adapter Slug: 7-2-7-2-the-invokecallout-api-to-send-message-to-the-adapter URL: https://help.skyvva.com/#article/7-2-7-2-the-invokecallout-api-to-send-message-to-the-adapter ================================================================================ # 3. The invokeCallout API to send message to the adapter For outbound processing, we have two categories:- - **Synchronous:-** Apex code wait for the response of the HTTP callout. - **Asynchronous:-** Apex code doesn't wait for the response of the HTTP callout. It can have a response which is an asynchronous response. This response can come at any time. Synchronous interface mostly has a response which means that we will create a response interface to handle the response. An asynchronous interface mostly doesn't have a response. But this is not true for all cases. We could have an asynchronous interface which has a response interface. In this case, the apex code doesn't wait and get blocked. The response will come back at a later time. In this case, we have an asynchronous scenario with an asynchronous response. But for the synchronous interface, we should always expect to have a response and the apex code is waiting as long as it will take time until the response is coming back. If the response doesn't come back at the allowed time e.g. 120 sec. then we will get a governor limit exception time out. #### How to build  outbound interface? The outbound interface we can do in a different way:- - **Using a button** on, for example, a sObject Account and put the code to do the callout with invokeCallout2(). - **Using a trigger**. In this case, it fires when a record is changed. - **Using the process builder**. This is quite the same as the trigger. The difference here is that you have a graphical design tool to define the condition when a record should be sent. #### How to create real-time outbound Interface using Button:- This feature uses our** invokeCallout2()** method. This method support   **SAP, SAP-PI, SAP-R/3, ****SFDC2SAPPI, SOAP, REST **adapter types. The response could be a text of JSON, XML, List> based on given flag parameters in CallOutControl and Apex of each adapter handle setting when execute callout.  InvokeCallout2() method support different mode: 1. SYNC 2. FUTURE 3. BATCH 4. AUTO We get a real-time response in SYNC mode only. **Input Parameters:** -Integration name:  Integration Name -Interface name:  Interface name -ids:  Collection of sObject id -Mode:  SYNC, FUTURE, BATCH, AUTO **CallOutControl** **Flag** **CalloutResponse (Attributes)** **SAP** **SAP-PI** **SAP-R/3** **SFDC2SAPPI** **SOAP** **REST** *returnJSONComplete* true *String payloadJSON* no no no no yes yes *returnXml* true *String payloadXML* no no no yes yes yes *returnListRecord* true *List> records* yes yes yes yes yes yes *returnIMessages* true no no no no no no *actionDoIntegrate* false Does not process interface invoke call In/Out *actionDoMapping* true Does nothing with this flag *isCreateMessage* false Does not upsert message only in mode SYNC, Otherwise message will upsert. *isBypassDML* true Does not upsert messages, interface, log file **Pre-Requisite:-** - Create Integration. - Create Adapter. Step 1:- Create Outbound Interface:- ![](../images/2019/02/41out.jpg) - Select Outbound adapter as shown in the picture below:- - Add SOQL statement. ![](../images/2019/02/img1.png) We have to select fields on which we have to build the query. For example, here we have selected three fields  AccountNumber, BillingCity, and Name. And mapping data. Click on the outbound  interface to show detail and do mapping data as shown below: ![](../images/2019/02/41.2.jpg) **Step 2:- Execute Apex code in the developer console:-** - Navigate to the developer console. - Click on debug. - Open Anonymous window. - Enter Code. "The code and the picture is shown below" ![](../images/2019/02/41.3.png) [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.isBypassDML=false; ListmyList = new List(); myList.add('0012v00002jxEQHAA2'); skyvvasolutions.IServices.invokeCallout2('Test_41','Test_Outbound',myList,'SYNC', c);[/aux_code] [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Invokecallout2 two lines with different account id in once execute it will show one message is fail and one more message is completed. And if we execute invokecallout2 two line with the same account id in one execute it will show only one message is fail because it is duplicate. [/su_box] #### Check it on message monitoring:- ![](../images/2019/02/41.4.png) #### How to create real-time outbound Interface using Trigger In integration admin, there is a new tab called "SKYVVA Trigger" which allows the user to configure in a graphical user interface the following settings: - Select box "Triggering Method": Button, APEX Trigger - Select box "Mode": Immediate, Batch - SFDC object: List of all Objects in the Org - Interface to trigger: List of all Interfaces in the Org SKYVVA Trigger tab uses to generate script trigger automatic for Button and Apex Trigger. Go to “Integration Admin” tab > click on the tab “SKYVVA Trigger” ![](../images/2019/02/img4.png) It can generate two kinds of the script:- - **Generate Script Trigger Button** - **Generate Script Trigger Apex** **   1. Generate Script Trigger Button** - Select the Trigger Type “BUTTON” - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode: Sync,Future,Batch - Click button “Generate Script” - Now you will see the script trigger button in the box and can copy to use it **2. Generate Script Trigger Apex** - Select Trigger Type “APEX TRIGGER” - Tick Trigger Event (can tick more than one) - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode : None,Auto,Future,Batch - Click button “Generate Script” - Now you will see the script apex trigger in the box and can copy to use it - In the script, change to your own name to your own name ![](../images/2019/02/41.5.png) At the last select with Trigger Mode, button “Generate Script” will visible. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 4. Sending data in real-time Slug: 7-3-sending-data-in-real-time URL: https://help.skyvva.com/#article/7-3-sending-data-in-real-time ================================================================================ # 4. Sending data in real-time This concept is about outbound interface processing. The real-time outbound interface can be done in different ways i.e Using a button, Using trigger, Using the process builder. #### What is real-time outbound processing? For outbound processing, we have two categories:- - **Synchronous:-** Apex code wait for the response of the HTTP callout. - **Asynchronous:-** Apex code doesn't wait for the response of the HTTP callout. It can have a response which is an asynchronous response. This response can come at any time. Synchronous interface mostly has a response which means that we will create a response interface to handle the response. An asynchronous interface mostly doesn't have a response. But this is not true for all cases. We could have an asynchronous interface which has a response interface. In this case, the apex code doesn't wait and get blocked. The response will come back at a later time. In this case, we have an asynchronous scenario with an asynchronous response. But for the synchronous interface, we should always expect to have a response and the apex code is waiting as long as it will take time until the response is coming back. If the response doesn't come back at the allowed time e.g. 120 sec. then we will get a governor limit exception time out. - **The steps in the asynchronous processing are as follows:-** - Execute the SOQL statement from the interface to read the business data. - Create the message (outbound message) with status "Pending". - Do request mapping. - Convert to XML, JSON and send it out h an adapter. - Check the result of the HTTP callout and update the status of the outbound message. - **For synchronous processing, the steps are as follows:-** - Execute the SOQL statement from the interface to read the business data - Create the request message (outbound message) with status "Pending" - Do request mapping - Convert to XML, JSON and send it out through an adapter e.g. make an HTTP callout. - Wait for the response. When the response comes then parse the response and call the inbound processing to execute the response interface For the asynchronous scenario, we need the outbound message to reprocess it again. For synchronous scenario, we normally and mostly do not need the outbound message to reprocess. If the call for example to Google web service fails the user will issue the call again. This is true when the end-user carries the action. But what is when the action is not carried by the user but for example from a trigger or process builder process? In this case, a background process is the trigger of the action and if something going failed there is no user to repeat the action again. Therefore, in this case, we need an outbound message so that the reprocessing job or the user can reprocess the call again. Technically we can handover the interface processing to the future, queueable or batch apex. #### How to build a real-time outbound interface? The realtime outbound interface we can do in a different way:- - **Using a button** on, for example, a sObject Account and put the code to do the callout with invokeCallout2(). - **Using a trigger**. In this case, it fires when a record is changed. - **Using the process builder**. This is quite the same as the trigger. The difference here is that you have a graphical design tool to define the condition when a record should be sent. #### How to create real-time outbound Interface using Button:- This feature uses our** invokeCallout2()** method. This method support   **SAP, SAP-PI, SAP-R/3, ****SFDC2SAPPI, SOAP, REST **adapter types. The response could be a text of JSON, XML, List> based on given flag parameters in CallOutControl and Apex of each adapter handle setting when execute callout.  InvokeCallout2() method support different mode: 1. SYNC 2. FUTURE 3. BATCH 4. AUTO We get a real-time response in SYNC mode only. **Input Parameters:** -Integration name:  Integration Name -Interface name:  Interface name -ids:  Collection of sObject id -Mode:  SYNC, FUTURE, BATCH, AUTO **CallOutControl** **Flag** **CalloutResponse (Attributes)** **SAP** **SAP-PI** **SAP-R/3** **SFDC2SAPPI** **SOAP** **REST** *returnJSONComplete* true *String payloadJSON* no no no no yes yes *returnXml* true *String payloadXML* no no no yes yes yes *returnListRecord* true *List> records* yes yes yes yes yes yes *returnIMessages* true no no no no no no *actionDoIntegrate* false Does not process interface invoke call In/Out *actionDoMapping* true Does nothing with this flag *isCreateMessage* false Does not upsert message only in mode SYNC, Otherwise message will upsert. *isBypassDML* true Does not upsert messages, interface, log file **Pre-Requisite:-** - Create Integration. - Create Adapter. **Steps to create USecase:** Step 1:- **Outbound** Interface: - Create Interface ->direction:Outbound - Select Outbound adapter as shown in the picture below:- - Add SOQL statement. ![](../images/2019/02/img1.png) We have to select fields on which we have to build the query. For example, here we have selected three fields  AccountNumber, BillingCity, and Name. And mapping data. Click on the outbound  interface to show detail and do mapping data as shown below: ![](../images/2019/02/41.2.jpg) **Step 2:- Execute Apex code in the developer console:-** - Navigate to the developer console. - Click on debug. - Open Anonymous window. - Enter Code. "The code and the picture is shown below" ![](../images/2019/02/41.3.png) [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.isBypassDML=false; ListmyList = new List(); myList.add('0012v00002jxEQHAA2'); skyvvasolutions.IServices.invokeCallout2('Test_41','Test_Outbound',myList,'SYNC', c);[/aux_code] [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Invokecallout2 two lines with different account id in once execute it will show one message is fail and one more message is completed. And if we execute invokecallout2 two line with the same account id in one execute it will show only one message is fail because it is duplicate. [/su_box] #### Check it on message monitoring:- ![](../images/2019/02/41.4.png) #### How to create real-time outbound Interface using Trigger In integration admin, there is a new tab called "SKYVVA Trigger" which allows the user to configure in a graphical user interface the following settings: - Select box "Triggering Method": Button, APEX Trigger - Select box "Mode": Immediate, Batch - SFDC object: List of all Objects in the Org - Interface to trigger: List of all Interfaces in the Org SKYVVA Trigger tab uses to generate script trigger automatic for Button and Apex Trigger. Go to “Integration Admin” tab > click on the tab “SKYVVA Trigger” ![](../images/2019/02/img4.png) It can generate two kinds of the script:- - **Generate Script Trigger Button** - **Generate Script Trigger Apex** **   1. Generate Script Trigger Button** - Select the Trigger Type “BUTTON” - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode: Sync,Future,Batch - Click button “Generate Script” - Now you will see the script trigger button in the box and can copy to use it **2. Generate Script Trigger Apex** - Select Trigger Type “APEX TRIGGER” - Tick Trigger Event (can tick more than one) - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode : None,Auto,Future,Batch - Click button “Generate Script” - Now you will see the script apex trigger in the box and can copy to use it - In the script, change to your own name to your own name ![](../images/2019/02/41.5.png) At the last select with Trigger Mode, button “Generate Script” will visible. #### How to create real-time outbound Interface using Process builder Process Builder is a Salesforce’s point-and-click tool that lets you easily automate if/then business processes and see a graphical representation of your process as you build. Every process consists of a trigger, at least one criteria node, and at least one action. You can configure immediate actions or schedule actions to be executed at a specific time. To keep things simple, this unit focuses on the most common process type: Record Change, which means the process, will start when the records are created or edited. - **Create a process builder to create CP Record** ![](../images/2018/11/2-18.png) ![](../images/2018/11/3-16.png) ![](../images/2018/11/4-13.png) Select SKYVVA apex API ![](../images/2018/11/5-11.png) Add input definition Setting apex variable values: integrationName: integration name Interface name: interface name: isCreateCPRecord: True (*False, if the value is not specified*) recordIds: salesforce sObject.Id (i.e Account.Id) ![](../images/2018/11/6-10.png) ![](../images/2018/11/7-5.png) You can test modification account from the screen and Save. I have executed mass update 10 account in developer console then got 10 CP records ![](../images/2018/11/8-6.png) - **Process Builder executes callout.** ![](../images/2018/11/9-5.png) You can edit the account on screen the save, then check the message on message-monitoring. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 5. Sending data in batch mode Slug: 7-4-sending-data-in-batch-mode URL: https://help.skyvva.com/#article/7-4-sending-data-in-batch-mode ================================================================================ # 5. Sending data in batch mode We already have the method invoke Callout () which is using to send data from Salesforce to the external system (SFDC to SAP/SAP-PI) through Interface outbound. Through this new feature, we are able to return the result as JSON, XML,             List>. This feature is implemented only for SAP, SOAP and Rest adapters. #### This is Calls API Syntax *CalloutResponse response=IServices.invokeCallout2(String integrationName, String interfaceName, String[] ids, String mode, CallOutControl outBoundControl)* Response could be text of JSON, XML, List> based on given flag parameters in CallOutControl and Apex of each adapter handle setting when execute callout. NOTE: Getting a real-time response is only in mode SYNC. Input Parameters: - integrationName: Integration Name - interfaceName: Interface name - ids: Collection of sObject id - mode:  BATCH, **CallOutControl** **Flag** **CalloutResponse (Attributes)** **SAP** **SAP-PI** **SAP-R/3** **SFDC2SAPPI** **SOAP** **REST** *returnJSONComplete* true *String payloadJSON* no no no no yes yes *return XML* true *String payloadXML* no no no yes yes yes *returnListRecord* true *List> records* yes yes yes yes yes yes *returnIMessages* true no no no no no no *actionDoIntegrate* false Does not process interface invoke call In/Out *actionDoMapping* true Does nothing with this flag *isCreateMessage* false Does not upsert message only in mode SYNC, Otherwis,e message will upsert. **Follow the use case to use batch mode in callout2:** Step1: Create Adapter: - we are using SFDC2SAPPI adapter for outbound processing. ![](../images/2018/10/1-6.png) Step2: Create Integration and Outbound Interface: - Create Integration. Refer Link: [(How to create Integration?)](#article/what-is-an-integration-and-how-to-create-it) - Create Outbound Interface. [(How to create Interface?)](#article/1-what-is-an-interface-and-how-to-create-it) ![](../images/2018/10/2-6.jpg) [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnxml=true; c.returnListRecord=true; c.iscreatemessage=true; List lId = new List(); for(Account a : [SELECT Id FROM Account]){ lId.add(a.Id); } skyvvasolutions.IServices.invokeCallout2('Shweta','Batch mode',lId, 'BATCH', c); [/aux_code] **Response type in debug:** ***1 XML*** >>XML: Internal error: Field "language" in structure PI_PERSONALDATA is empty00190000004ZlxZAAS ***2 List of Map*** >>>List of Map:({ERP_DEBTOR_ID__c=, Id=00190000004ZlxZAAS, MESSAGE=Internal error: Field "language" in structure PI_PERSONALDATA is empty}) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 6. Using CDC - Change Data Control Slug: 7-5-using-cdc-change-data-control URL: https://help.skyvva.com/#article/7-5-using-cdc-change-data-control ================================================================================ # 6. Using CDC - Change Data Control Change Data Control (CDC) use for  handling data change in Salesforce. We can customize the data changes of any sObject and sent out to the client. It provide an asynchronous mode to accumulate transform data which we call the change pointer and sent out to the client. The main difference to the streaming API of Salesforce is that data can be bulk as extremely large data. Furthermore customer can liberatingly schedule when the data will be sent e.g. every 5 minutes, 30 minutes etc... With this feature customer don't require to develop such an app to amass data change and sent out to the client. Just use SKYVVA CDC. #### What is Change Data Control (CDC)? With CDC we provide an ability to record all data changes you create on any business object. It will be automatically push to your external system at any time you scheduled. In comparison to the streaming API, you can overcome the limit of sending changes record by record. Here we can bulk and collect changes to be callout in packages meaning that you leverage the best usage of your Salesforce resources. Don't disturb your online business user while operation hours. Use CDC Scheduler to schedule data changes to be send out at a time. CDC is made up of two components, the CDD and the CDT. CDC is stand for Change Data Detection and CDT is stand for Change Data Transfer. These two components has different functionality. CDD is a scheduler which is running to call batch Apex in order to collect data change and save all those data into Change Pointer Object. CDT is another scheduler which is running to collect the records from the Change Pointer Object and sent to the external System such as SAP … etc. The Schedule will executes callout as parallel of future, queueable, batch based on priority, integration resource and interface group type (EO/EOIO). ![](../images/2018/10/2019-11-13_11-29-20.png)![](../images/2018/10/2019-11-13_11-33-24.png) Terms you should know: - **Use SKYVVVA Outbound Scheduler: **This flag use for CDC Processing. When you check this flag, it’s mean that you activate the CDC. It activates both CDD and CDT. - **CDC Mode Only: **This field is used for separating the process of CDD and CDT follow flag Use SKYVVA Outbound Scheduler. Select CDD to run only CDD for interface or select CDT to run only CDT. Select None to run both CDD and CDT at the same time. - **Interface Control Runtimes: **Interface Control Runtime could be used for another purpose. for CDD, it is used where the user can set LastRun DateTime that CDD finds the record change which is record’s LastModifiedDate>that date. #### Configuration CDC is used for outbound processing only. It is done by: - Using Adapter - Using Agent **1. Adapter** An outbound interface can be processed with the different adapters to configure CDC. For example, we use SFDC2SAPPI adapter, Rest Adapter, Soap adapter. Follow the given step to process the outbound interface using the adapter. We are using **SFDC2SAPPI** adapter as an example, you can follow the given steps:. Follow the given step to process outbound interface using adapter: **Step1: Create Adapter** We are using **SFDC2SAPPI** adapter. To create SFDC2SAPPI adapter follow the given steps: - Go to Adapter tab. - Click on New Button. - Fill the username, endpoint and password ![](../images/2019/01/Untitled2-1.png) **Step2: Create Remote Sites** - From Setup, enter Remote Site Settings in the Quick Find box, then select Remote Site Settings. - Click New Remote Site. - Enter a descriptive term for the Remote Site Name. - Enter the URL for the remote site. - Optionally, enter a description of the site. - Click Save. ![](../images/2019/01/cdc4.png) **Note: Remote Site URL**: **Paste the same link **as in the** Property Value **that you have just created a moment ago. ![](../images/2019/01/cdc5.png) **Step3: Create Interface** - Create Integration. - Create Outbound Interface                                                                                                                                                  -Adapter:SFDC2SAPPI - We have to configure CDC For an Interface**.****   ** - In order to configure CDC for an Interface We have to open and edit Interface. - Check  “Use Skyvva Outbound Scheduler” checkbox. - Go to Interface and  Click on Related tab -> scroll down the page to **Interface Control Runtimes** - Specify the parameters: ![](../images/2019/01/cdc1.png) **LastRun** is the date from where we define the changed data to be collected. **[su_box title="Note" box_color="#2a8af0" title_color="#000000"] “**Use Skyvva Outbound Scheduler”: When  this flag is checked it means  CDC is activated . This flag is used to activate both CDC and CDD.**[/su_box]** **Step4: Scheduled CDD** - Open Integration Details Tab - Go to custom Link section and click on CDC Control board - Go to Scheduler tab. - Start the scheduler on an outbound section and set the time as you prefer. ![](../images/2018/10/2019-11-13_14-35-21.png) **Step5: Monitoring CDD** - Enter Integration Details Tab - CDC Control board Tab and apply filter on: ->Integration name -> Interface Name -> Status -> Search ![](../images/2018/10/2019-11-13_15-31-42.png) **CDC Control Board** When you open the CDC Control board you will find three tabs available which are Change Pointer, Interfaces and Scheduler. Each tabs have different functions and display things relatable with CDC. The following steps will show you how to monitor each tab: #### Change Pointer Change Pointer is a table which store change pointer records.It written every time a transaction modifies of certain fields.. The records are created by CDD. The records will store here until you set the scheduler (CDT) to transfer them to external system. To monitor Change Pointer, just simply: - Go to Change Pointer tab - Filter the Integration Name, Interface Name and the status of record you want to display - Click on “Search'' button.  Result will display according to the status you set ![](../images/2018/10/Untitled3.png) We can Apply filters : **Filters** **Description** **Interface Name** Outbound Interface on which CDC configured. **Status** Two type status. New and **Max Number of Record** Filter on number of records. **Application Id** Application Id is the Sobject Id. **Date** Filter on created or modified date **Sort by & Order by** Sort by creation date. Filter on Ascending or descending. **Interface** This tab display the interfaces that store in an Integration. You can easily check or monitor them. If you land on CDC Control board, just simply click on interface tab then you will see all the interfaces. However this tab is not editable like Interface tab in Integration detail page. **Interface Group** Interface group is a unit to group where  logical interfaces comes together. For example you can group interfaces which is cognate to each other e.g. Account and Contact to one interface group. There are two kind of interface group: =>Business related logical group =>Technical group We can apply this filter to probe data referring to concrete interface group. **Queue** Queue inherit the priority from their interface group and thus a Queue will be a Prio-High, Prio-Medium or Prio-Low Queue. ![](../images/2018/10/Untitled4.png) Queue Status: Status Worker This status is a temperarory status set by the scheduler. Customarily most of the status is set by the worker because the worker is the one who do the job of processing the data package / queue passed from the scheduler. This status is a helpful  to ken that the scheduler has pass the data package / queue to the worker. When the worker start to process the data package / queue it will transmute the status from “Worker” to “Running”. Status Running This status is set from the worker. When a data package / queue is pass from the scheduler to the worker the status of this queue is “Worker”. Then the worker transmute the status from “Worker” to “Running”. Following change from status “Running” can be transpired. If the queue is processed prosperously then the status will set to “Ready”. This is valid for both queue type e.g. for EO- and EOIO-Queue. If an error occurred for whatever reason then the status is set to “Failed” for an EO-Queue and to “Hold” for an EOIO-Queue. Status Failed This status is set when processing a data package / queue got failed. This status is only utilized for the EO-Queue. For the EOIO-Queue the status can be used is “Hold” and not failed. If the processing of the EO-Queue is not ceased plenarily this status reflect an ephemerally status and can be set for example to “Ready” when next time the processing of is prosperous. Processing an EO-Queue is not blocked if error encountered  for EOIO-Queue. Because the nature of EO-Queue is overtaken of data which can be transpired and that we already understood when defining interface group / queue with the type EO. Status Hold This status is set when processing a data package / queue got failed. This status is only utilized for the EOIO-Queue. For the EO-Queue the status can be used is “Failed” not hold. If the status is set to “Hold” then the processing of this queue is ceased because we can  create an overtaken of data. There is a reprocess mechanism of the affixment by the affixment reprocess scheduler. Refer to chapter “10 Variant of scheduler” for understanding the variant of scheduler. For some error the reprocess can resolve the error and ergo will reset the status of the queue to “Ready”. Then the blocking of the queue will be relinquished. In some circumstance because the error cannot be resolved automatically we will require the administrator to resolve the error situation and reset the queue status manually. Stop by Admin This status results from an admin action. An admin may want to stop the queue because of maintenance work. Other reason could be that we don’t opt that the queue X should be processed and ergo we intentionally stop this queue. This is for example because we opt to have more resource for processing other queues than the queue X. **Alert** This alert tab is used for monitoring CDC table. If the threshold from the alert tab is smaller than the CDC table value, a notify email will be sent to the assigned alert channels. We have different type of alerting rules on the integration & interface level - Send Email SFDC User - CreateTask for User - Send Email External Mails - Chatter group Name ![](../images/2018/10/Untitled5.png) **Scheduler** There are some schedulers available in Scheduler tab which are Change Data Detection (CDD) for Integration, Change Data Transfer (CDT) for Integration and Change Data Transfer SKYWWA DefaultIG Outbound for Interface Group. You can set the time and start the schedule or refresh it. Note: If you manually create more Interface Group then they will display in the Scheduler tab. ![](../images/2018/10/Untitled6.png) **Step 6: Schedule CDT** - Go Integration Details Tab - Go to Scheduler Tab - Start the Schedule and set the minute as you wish **![](../images/2018/10/2019-11-13_14-51-03.png)Step7:**M**onitor CDT:** - Clicks on **Setup -> Jobs -> Apex Jobs** - Enter Apex Jobs Monitoring to see CDT workers: - Future/Queueable process - Worker (Batch) Process ![](../images/2018/10/2019-11-13_15-37-50.png) **Step8: Check result on message monitoring Board** - Go to Integration - Click on Messages ![](../images/2018/10/2019-11-13_15-43-56.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 7. Using Salesforce like Process Builder and Flow to trigger the data change in real-time Slug: 7-6-using-salesforce-like-process-builder-and-flow-to-trigger-the-data-change-in-real-time URL: https://help.skyvva.com/#article/7-6-using-salesforce-like-process-builder-and-flow-to-trigger-the-data-change-in-real-time ================================================================================ # 7. Using Salesforce like Process Builder and Flow to trigger the data change in real-time #### What is process builder? Process builder is a powerful implement. we can use to automate business processes. It has a simple interface that sanctions us to point and click to cull objects and fields while establishing immediate and time-predicated actions. We use process builder to engender change pointer. It help you to  easy automate your business processes by providing a powerful and user friendly visual representation of your process. The Process Builder’s simple and powerful design allow us to build customize the automated process. **Actions Available In Process Builder for outbound processing:** **Trigger Apex code**: You can use Salesforce process builder to invoke Apex code you have written within Salesforce. Apex can be anything from custom logic to save a record to complex business processes. **Create a record**: This will allow you to create new records and set certain field values for the new record. **Update records:** Update one or more records that are related to the record that started the process. You can update the record with manually entered values or by using the values from related records. We can update records of parent or child Here we will going to use Create Change pointer I,e CP record for outbound processing. #### Pre-requisite: - Create Integration. - Create Outbound Interface - To be able to execute callout, you have enter interface page detail and scroll down to Runtime Configuration- Outbound section then check flag “Use Skyvva Outbound Scheduler”. *![](../images/2018/10/2019-11-13_11-33-24.png) - **Interface Control Runtimes: **Interface Control Runtime could be used for another purpose. for CDD, it is used where the user can set LastRun DateTime that CDD finds the record change which is record’s LastModifiedDate>that date. **[su_box title="Note" box_color="#2a8af0" title_color="#000000"] ** - If you want to execute callout, the flag could be blank. - If you want to create CP Record, the flag is required. **[/su_box]        ** 4. The interface could be set creating change pointer by process builder or trigger. You have to select SKYVVA API. ![](../images/2019/01/PB-2.png) **Create Change pointer mode:** You can create change pointer using: - The **CDD job** - **Process Builder** #### Why process builder? Process builder is more flexible in comparison to workflow. In workflow rule can’t update child record where as in process builder we can **CDD Job** - CDC is made up of two components, the CDD and the CDT. CDC is stand for Change Data Detection and CDT is stand for Change Data Transfer. - These two components has different functionality. CDD is a scheduler which is running to call batch Apex in order to collect data change and save all those data into Change Pointer Object. - To create change pointer, Scheduled CDD.(Integration Admin Tap -> Scheduler Tap. Then start the scheduler on an outbound section and set the time as you prefer.) - To monitor CDD, Go to Integration Admin Tap -> CDC Tap -> Integration name -> Interface Name -> Status -> Search #### Process Builder Here We will going to create process with process builder in order to get Change pointer records. Scheduler CDD will skip this interface if value is specified. To create process using process builder follow the given steps: Setup =>Create =>Build=>Process builder=>New* - From Setup, enter Process Builder in the Quick Find Box, click Process Builder - Then click New button. ![](../images/2019/01/PB-3.png) - Enter process Name. - Enter a description of the process. - Finally, choose process type - Click on save ![](../images/2020/01/screencapture-test-skyvva-dev-ed-lightning-force-lightning-setup-ProcessAutomation-home-2020-01-28-16_11_40-20.png) - Choose object name on which you want to perform the task. - Choose start process type. ![](../images/2019/01/PB-6.png) - Add the Criteria to define it for Action Group: Set condition field. Choose condition type. 1. Enter criteria name. 2. Choose Criteria condition to formula evaluate to true 3. Set condition field and Choose condition type. Build Formula by insert the Function and Field    4. click  on Save . ![](../images/2020/01/PB2.png) - Add the actions to execute when the criteria are met by: 1. Select the Action Type: Apex 2. Select the Action Name: Create CP Record 3. Select Apex Class: SKYVVA Callout/Create CP. When you section it, some of dropdown list will appear for you to choose. Then click Add Row to add 2 more. ![](../images/2020/01/PB3-1.png)![](../images/2020/01/PB4.png) To be able to execute process builder, just click on Activate button. ![](../images/2020/01/PB5.png) #### To monitor change pointer records You can check the change pointer records in CDC Control Board. ![](../images/2020/01/PB6.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Scheduler Title: 8. Bulk Processing Scheduler. Slug: 7-8-bulk-processing-scheduler URL: https://help.skyvva.com/#article/7-8-bulk-processing-scheduler ================================================================================ # 8. Bulk Processing Scheduler. #### Bulk Processing Scheduler:- - In bulk processing, we have a bulk control board which is a dashboard where we monitor bulk Processing where we have a scheduler and even we can do it manually, we can select attachments or file manually. - It will pick up a record from the file and processed it, then we can see messages in the message monitoring. - Bulk Processing Scheduler is used to process bulk attachments which are with the huge records at high speed. - You can set time intervals in the bulk processing scheduler of Skyvva anytime you want. Bulk Processing Scheduler is located in Bulk Control Board, Integration detail page, and Integration Admin Tab **To find Bulk Processing Scheduler:-** Bulk Processing Scheduler is located on three different pages - Bulk Control Board, - Integration detail page - Integration Admin Tab. **Bulk Control Board:** - Log in to Salesforce and enter the Integration detail page. - Click on Bulk Control Board ![](../images/2020/01/bulkpro.png) - Click on Scheduler Tab - Set the time and start the scheduler. ![](../images/2020/01/bulkpro1.png) **Integration Detail Page** - Log in to Salesforce and enter Integration Detail Page. - Click on the Scheduler tab. - Check the IntegrateBulk_Process scheduler as shown below. ![](../images/2020/01/bulkpro2.png) **Integration Admin Tab** - Log in to Salesforce and select on Admin Tab ![](../images/2020/01/bulkpro3.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 2. SOAP API Slug: 8-2-soap-api URL: https://help.skyvva.com/#article/8-2-soap-api ================================================================================ # 2. SOAP API #### SOAP API SOAP is a standard communication protocol system that permits processes using different operating systems like Linux and Windows to communicate via HTTP and its XML. SOAP-based APIs have designed to create, recover, update and delete records like accounts, passwords, leads, and custom objects. These offers over twenty different kinds of calls that make it easy for the API developers to maintain their accounts perform accurate searches and much more. These can use with all those languages that support web services. SOAP APIs take the advantages of making web-based protocols such as HTTP and its XML that are already operating the all operating systems that are why its developers can easily manipulate web services and get responses without caring about language and platforms at all. ![](../images/2018/11/1-27.png) #### How to integrate SOAP-UI to SKYVVA To be able to integrate SOAP-UI to SKYVVA you can follow the steps below: - Go to your Salesforce Organization and click on API under Integration ![](../images/2018/11/2-27.png) - Click on Generate Enterprise WSDL ![](../images/2018/11/3-25.png) ![](../images/2018/11/4-19.png) ![](../images/2018/11/5-16.png) - Save - SoapUI is an open source - The user can easily download from Google.com - SoapUI 5.3.0 version - Follow easy steps of installation ![](../images/2018/11/6-14.png) - Right-click & open ![](../images/2018/11/7-8.png) - Click & create a new SOAP project ![](../images/2018/11/8-9.png) - Write your Project name - Browse Initial WSDL XML file ![](../images/2018/11/9-7.png) ![](../images/2018/11/10-4.png) - Expand login & click “Request 1“ ![](../images/2018/11/11-4.png) - Delete this section it's not un-useable ![](../images/2018/11/12-2.png) - Enter your Org credentials - Username - Password + Security Token - Click on Play button ![](../images/2018/11/13-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Refresh sessionId with 15-10 minutes because it changes frequently[/su_box] - Great you Generated sessionId successfully ![](../images/2018/11/14-1.png) Now repeat almost same steps but this time download  SKYVVA  WSDL - Go to salesforce setup & Apex Classes in a search box - Click Apex Classes ![](../images/2018/11/16-2.png) - Click on Save ![](../images/2018/11/17-1.png) - Go to SoapUI - Click on SOAP - Create a new SOAP project ![](../images/2018/11/18-1.png) - Type Project Name - Browse your Initial WSDL XML file - Click ok ![](../images/2018/11/19.png) - Expand SkyvvaIServices - Go to integrate - Rename it to Authorization ![](../images/2018/11/20.png) - Go back to your Org - Create Integration & copy IntegrationID - Create Interface & copy Interface Name ![](../images/2018/11/21.png) ![](../images/2018/11/22.png) Scroll down to Istructure & create - Name - BillingCity - BillingCountry ![](../images/2018/11/23.png) - Go to mapping section select ExtId & save ![](../images/2018/11/24.png) - Go to SoapUI - Paste this code [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] 00D900000010dpg!ARcAQHp3fce3MLEVc3ihiOjek80SuTWZL2ZNbuCTMnh5voXpN13MzyumRsllnfJ8q7eGOH.3frqdGv2NLLbhSmZlsgUBtZhg a0M9000000JMIoj Interface_akash Name Test BillingCity Mumbai BillingCountry India [/aux_code] ![](../images/2018/11/25.png) - Submit Great, you pass your code to Salesforce Org. - Go to your Salesforce org - Go to your Integration - Click on Message Board & press search button ![](../images/2018/11/26.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 3. Rest API for integration SearchService Slug: 8-3-rest-api-for-integration-searchservice URL: https://help.skyvva.com/#article/8-3-rest-api-for-integration-searchservice ================================================================================ # 3. Rest API for integration SearchService In the previous version, the SKYVVA API “SearchService” was available only as SOAP Webservice. Now we provide SearchService with the REST Technology. Please see the example below: #### Configuration at the customer side - Authenticate to the instance that installed SKYVVA package - Write the code to get refresh token - Call SKYVVA Services (Rest Integrate Searchservice) by REST API #### How to authenticate to the instance that installed SKYVVA package Need to get the code from the instance that installed SKYVVA package. This is the steps to get the code: - Navigate to this link: [https://login.salesforce.com/services/oauth2/authorize?response_type=code&client_id=clientid&client_secret=clicentsecret&redirect_uri=your_uri](https://login.salesforce.com/services/oauth2/authorize?response_type=code&client_id=clientid&client_secret=clicentsecret&redirect_uri=your_uri) - Log in to the instance that installed Skyvva package ![](../images/2019/06/1.png) - We will get the code as below: ![](../images/2019/06/2.png) #### Need to get refresh token from the instance that installed SKYVVA package - Navigate to another link: [https://login.salesforce.com/services/oauth2/token?grant_type=authorization_code&code=(above_code)&client_id=clientid&client_secret=clientsecret&redirect_uri=your_uri](https://login.salesforce.com/services/oauth2/token?grant_type=authorization_code&code=(above_code)&client_id=clientid&client_secret=clientsecret&redirect_uri=your_uri) - We will get refresh token as below: ![](../images/2019/06/3.png) #### How to write the apex code to refresh token [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]HttpRequest req = new HttpRequest(); req.setMethod('POST'); req.setEndpoint('instance that installed SKYVVA package/services/oauth2/token'); req.setBody('grant_type=refresh_token&client_id=clientid&client_secret=clientsecret&refresh_token=above_refresh_token'); Http http = new Http(); HTTPResponse res = http.send(req);[/aux_code] **This is a new access token:** ![](../images/2019/06/4.png) #### How to call SKYVVA Services (Rest Integrate Searchservice) by REST API in Apex code [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]HttpRequest req = new HttpRequest(); req.setEndpoint('instance that installed SKYVVA package/services/apexrest/ skyvvasolutions/SearchService'); req.setMethod('POST'); req.setHeader('content-type','application/json'); req.setHeader('Authorization','Bearer '+above access token); Map m = new Map(); m.put('INTERFACENAME','interface name'); m.put('INTEGRATIONID','integration id'); req.setBody(JSON.serialize(m)); Http http = new Http(); HttpResponse res = http.send(req); [/aux_code] Finally, we should get the result as below: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{"records":"json record","success":"true"}[/aux_code] #### How to call SKYVVA Services (Rest Integrate Searchservice) by java client in Apex code [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]import org.codehaus.jackson.map.ObjectMapper; public class TestSearchServiceREST { public static void main(String[] args) { HttpURLConnection connection = null; try { // Create connection URL url = new URL("server_url/services/apexrest/skyvvasolutions/SearchService"); connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Authorization", "Bearer sessionId"); Map m = new HashMap(); m.put("INTERFACENAME", "interface name"); m.put("INTEGRATIONID", "integration id"); String urlParameters = new ObjectMapper().writeValueAsString(m); connection.setRequestProperty("Content-Length", Integer.toString(urlParameters.getBytes().length)); connection.setUseCaches(false); connection.setDoOutput(true); // Send request DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); wr.writeBytes(urlParameters); wr.close(); // Get Response InputStream is = connection.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); StringBuilder response = new StringBuilder(); // or StringBuffer if // Java version 5+ String line; while ((line = rd.readLine()) != null) { response.append(line); response.append('\r'); } rd.close(); System.out.println(response.toString()); } catch (Exception e) { e.printStackTrace(); } finally { if (connection != null) { connection.disconnect(); } } } }[/aux_code] #### How to call Skyvva Services (Rest Integrate Searchservice) by SOAP-UI in apex code ![](../images/2019/06/5.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 4. SearchService API Slug: 8-4-searchservice-api-support-with-interface-parent-child URL: https://help.skyvva.com/#article/8-4-searchservice-api-support-with-interface-parent-child ================================================================================ # 4. SearchService API #### Introduction Previously, we created SearchService to allow users to call Skyvva Services by REST Api from their system. However, it only supports flat. We now provide two formats as a response: JSON and XML data for called request data from any external system by using SearchService Rest API. The table below display the new keywords or parameter which we have added to support in patch version 2.42.5. **New Parameter** **Description** RESPONSEPAYLOADFORMAT This new parameter gives you an option to choose which format you want to use to Callout. SUPPRESSNULLVALUE This new parameter is using to adds null value or remove from the response result. True= Response only the field which has value. False= Both field value, Null and Notnull, will respond. #### What is the SearchService API? The searchService API is working as the query method of the HTTP request. We have integration and interface configuration where we mapped object as per our requirements. So when we use SearchService API, we actually query the data we have mapped for our interface. So it will return the data of the object as per the mapping of the interface. We can use the REST API SearchService or the SOAP API. #### Why we use this feature? We use this feature to call SKYVVA Services by REST API from an external system. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]In this document, we used postman application where Request payload means the body we have pass through postman and endpoint URL is the URL we have pasted on postman and in response we will get JSON data as parent and child by using searchService API.[/su_box] #### - Create Integration.![](../images/2020/01/freesnippingtool.com_capture_20211012222230.png) - create Outbound Interface then select Status “**Deployed**” and Operation Type with **Query![](../images/2020/01/freesnippingtool.com_capture_20211012215844.png)** - write the  SOQL query and save it.![](../images/2020/01/freesnippingtool.com_capture_20211013032519.png) - Do  mapping field. ![](../images/2020/01/freesnippingtool.com_capture_20211012230549.png) #### To use SearchService REST API, you have to do some configuration on PostMan (Any external system and this document use PostMan as an example). Follow the given step below: - You have to navigate to PostName application - Create a new request and a new folder - Change method GET to POST and enter **Salesforce URL **with **/services/apexrest/skyvvasolutions/SearchService** - click **Body **tab => click **raw** tab => select JSON (application/JSON) in picklist => Create rest body Here is a body: ![](../images/2020/01/freesnippingtool.com_capture_20211012224304.png) Click Header tab => enter Authorization for Key cell => create Bearer with sessionId ![](../images/2020/01/freesnippingtool.com_capture_20211012231843.png) - Click Send button to get response data. This screenshot return null value.![](../images/2020/01/freesnippingtool.com_capture_20211012232159.png) This screenshot below response with value. ![](../images/2020/01/freesnippingtool.com_capture_20211012224606.png) ![](../images/2020/01/freesnippingtool.com_capture_20211012224727.png) Click Send button to get response data. This screenshot return true value. ![](../images/2020/01/freesnippingtool.com_capture_20211012224304-1.png) This screenshot below response with value. ![](../images/2020/01/freesnippingtool.com_capture_20211012224606-1.png)![](../images/2020/01/freesnippingtool.com_capture_20211012224625.png)![](../images/2020/01/freesnippingtool.com_capture_20211012224727-1.png) ** ** ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 5. V3 Integrate API Service Slug: 8-5-v3-integrate-api-service URL: https://help.skyvva.com/#article/8-5-v3-integrate-api-service ================================================================================ # 5. V3 Integrate API Service #### How to create tree hold in hierarchical message type? Since the user now completely understand; How to create tree hold in the hierarchical message type, by hitting upper link now we guide to follow below: How to Use **SKYVVA V3 Integrate Inbound API Services** - Now Create an Integration - Create Inbound Interface ![](../images/2020/01/Screenshot-718.png) **Search** - MetaData Provider - Repository - Source/Target Message Type - Click on Open Mapping Button ![](../images/2020/01/Screenshot-736.png) - Map the target fields according to **AccountTestV3**, **ContactTestV3, CaseTestV3** to the Salesforce Source sObject - Save ![](../images/2020/01/Screenshot-746.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]User need to map node to node first Example: AccountTestV3 to Account[/su_box] **Switch to the Classic Mode and copy URL, currently, we are supporting Classic URL  and again Switch to classic mode.** ![](../images/2020/01/Screenshot-747-1.png) **Go to Soup UI** - Click on REST - Create a New Project - End point **https://skyvva-test-dev-ed.my.salesforce.com** - REST Project 3 - Provide Name Authorization - Method **POST** Now follow the fig. Which is shown below **URL : https://skyvva-test-dev-ed.my.salesforce.com** **Resource : /services/apexrest/skyvvasolutions/V3/integrate** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "dtoRequestBody": { "mode":"Synchronous", "integration":"a0W2v000019f2zPEAQ", "iinterface":"V3_Interface", "transferId":"1234", "runtimeParameter":"", "responsePayloadFormat":"json", "payloadFormat":"json", "payload":"{\"AccountTestV3\":{\"Account_ID\":\"A-002\",\"BillingCity\":\"Phnom Penh2\",\"BillingCountry\":\"Cambodia2\",\"Description\":\"Testing request payload\",\"name\":\"testaccount2\",\"contacttestv3\":[{\"cont_id\":\"c-002\",\"email\":\"test.2019_2222@gmail.com\",\"firstname\":\"contact2\",\"last name\":\"dara2\",\"phone\":\"2222\"},{\"cont_id\":\"c-003\",\"email\":\"test.2019_3333@gmail.com\",\"FirstName\":\"Contact3\",\"Last Name\":\"Dara3\",\"Phone\":\"3333\",\"CaseTestV3\":[{\"Status\":\"Complete\",\"Subject\":\"ErrorCase2\",\"SuppliedPhone\":\"2222\"},{\"Status\":\"Complete\",\"Subject\":\"ErrorCase3\",\"SuppliedPhone\":\"2222\"}]}]}}" } } [/aux_code] ![](../images/2020/01/Screenshot-757.png) **Go back to Salesforce ** Click on Message Monitoring Tab - Select your Integration Name - Select Interface Name - OK ![](../images/2020/01/Screenshot-758.png) - Scroll down to Message section - Click on Search Button - See record Create Successfully ![](../images/2020/01/Screenshot-782.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 6. V3 IntegrateWithIMessage API Service Slug: 8-6-v3-integratewithimessage-api-service URL: https://help.skyvva.com/#article/8-6-v3-integratewithimessage-api-service ================================================================================ # 6. V3 IntegrateWithIMessage API Service #### How to create tree hold in hierarchical message type? Since the user now completely understand; How to create tree hold in the hierarchical message type, by hitting upper link now we guide to follow below: How to Use SKYVVA **V3 IntegrateWithIMessage** Inbound API Services - Now Create an Integration - Create Inbound Interface ![](../images/2020/01/Screenshot-735.png) **Search** - MetaData Provider - Repository - Source/Target Message Type - Click on Open Mapping Button ![](../images/2020/01/Screenshot-736.png) - Map the target fields according to **AccountTestV3**, **ContactTestV3, CaseTestV3** to the Salesforce Source sObject - Save ![](../images/2020/01/Screenshot-746.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - User have to map node to node first Example: AccountTestV3 to Account, ContactTestV3 to Contact(AccountId) & CaseTestV3 to Case(ContactId) - Similarly Copy both InterfaceID which is  _V3_Interface_Contact_1.1 & _V3_Interface_Case_1.1.1 **after mapping** from IChainedInterface section's Related List of V3_Interface - Copy both Interface Id's to our json code "a0a2v00000ZibjuAAB""a0a2v00000ZibjvAAB" [/su_box] **Switch to the Classic Mode and copy URL, currently, we are supporting Classic URL  and again Switch to classic mode.** ![](../images/2020/01/Screenshot-747-1.png) **Go to Soup UI** - Click on REST - Create a New Project - End point **https://skyvva-test-dev-ed.my.salesforce.com** - REST Project 3 - Provide Name Authorization - Method **POST** Now follow the fig. Which is shown below **URL : https://skyvva-test-dev-ed.my.salesforce.com** **Resource : /services/apexrest/skyvvasolutions/V3/IntegrateWithIMessage** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "request":{ "mode":"Synchronous", "integration":"V3_Integration", "rootInterface":"V3_Interface", "responsePayloadFormat":"json", "messages":[ { "msg":{ "Name":"IM#2020-01-03 01:21:55.639001", "skyvvasolutions__Type__c":"InBound", "skyvvasolutions__Status__c":"New", "skyvvasolutions__HasChild__c":true, "skyvvasolutions__HLevel__c":0, "skyvvasolutions__HPath__c":"/Account[0]", "skyvvasolutions__isRoot__c":true, "skyvvasolutions__TransferId__c":"1234", "skyvvasolutions__ProcessMode__c":"Hierarchical", "skyvvasolutions__Data__c":"{\"AccountNumber\":\"10001\",\"Name\":\"TestAccount1\",\"BillingCountry\":\"Cambodia1\",\"BillingCity\":\"Phnom Penh1\",\"Account_ID\":\"A-001\"}", "skyvvasolutions__External_Id2__c":"RSAZ-JZWCYZ0M", "skyvvasolutions__Integration__c":"a0W2v000019f2zPEAQ", "skyvvasolutions__Interface__c":"a0a2v00000ZiaweAAB" } }, { "rootId":"RSAZ-JZWCYZ0M", "parentId":"RSAZ-JZWCYZ0M", "msg":{ "Name":"IM#2020-01-03 01:21:55.639001", "skyvvasolutions__Type__c":"InBound", "skyvvasolutions__Status__c":"New", "skyvvasolutions__HasChild__c":true, "skyvvasolutions__HLevel__c":1, "skyvvasolutions__HPath__c":"/Account[0]/Contact[0]", "skyvvasolutions__isRoot__c":false, "skyvvasolutions__TransferId__c":"1234", "skyvvasolutions__ProcessMode__c":"Hierarchical", "skyvvasolutions__Data__c":"{\"Cont_ID\":\"C-001\",\"Last Name\":\"Dara1\",\"FirstName\":\"Contact1\",\"Email\":\"test.2019_1111@gmail.com\",\"Phone\":\"1111\"}", "skyvvasolutions__External_Id2__c":"HOIK-JZWCYZ1Z", "skyvvasolutions__Integration__c":"a0W2v000019f2zPEAQ", "skyvvasolutions__Interface__c":"a0a2v00000ZibjuAAB" } }, { "rootId":"RSAZ-JZWCYZ0M", "parentId":"HOIK-JZWCYZ1Z", "msg":{ "Name":"IM#2020-01-03 01:21:55.639001", "skyvvasolutions__Type__c":"InBound", "skyvvasolutions__Status__c":"New", "skyvvasolutions__HasChild__c":false, "skyvvasolutions__HLevel__c":2, "skyvvasolutions__HPath__c":"/Account[0]/Contact[0]/Case[0]", "skyvvasolutions__isRoot__c":false, "skyvvasolutions__TransferId__c":"1234", "skyvvasolutions__ProcessMode__c":"Hierarchical", "skyvvasolutions__Data__c":"{\"Subject\":\"ErrorCase1\",\"SuppliedPhone\":\"1111\"}", "skyvvasolutions__External_Id2__c":"V3GP-JZWCYZ1Z", "skyvvasolutions__Integration__c":"a0W2v000019f2zPEAQ", "skyvvasolutions__Interface__c":"a0a2v00000ZibjvAAB" } } ] } } [/aux_code] ![](../images/2020/01/Screenshot-769.png) **Go back to Salesforce ** Click on Message Monitoring Tab - Select your Integration Name - Select Interface Name - OK ![](../images/2020/01/Screenshot-758.png) - Scroll down to Message section - Click on Search Button - See record Create Successfully ![](../images/2020/01/Screenshot-778.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 7. Response mapping using Message type for API IntegrateSynchronous Slug: 8-7-response-mapping-using-message-type-for-api-integratesynchronous URL: https://help.skyvva.com/#article/8-7-response-mapping-using-message-type-for-api-integratesynchronous ================================================================================ # 7. Response mapping using Message type for API IntegrateSynchronous #### Pre-requisite [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Now SKYVVA is supporting hierarchical Message Type[/su_box] **Step1** - Create **Metadata Provider** - Create** Repository** - Create **Message Type** as hierarchical **g** message type Name is **MsTAccount** and message type name is **MsTContact ** - **MsTAccount **is parent of **MsTContact** - Create **Istructure** for both message type are **MsTAccount** and **MsTContact** **Step2** - Create **Integration** - Create two **Interfaces** are **Inbound interface** & **Outbound interface** Note: In this case, the inbound interface role​​ is requested data and Outbound interface role is response data. - Do mapping for **inbound interface** - Add message type for **Outbound interface** then do mapping - Go to the **outbound interface** & copy its ID then navigate to **Inbound interface** detail and past **outbound interface's ID** into **'Response Interface'** field **Step3** - Go to **Soap UI** application - Change **Method = POST** then enter API IntegrateSynchronous **(/services/apexrest/skyvvasolutions/IntegrateSynchronous**) into Resource field - Define data in **Request page** to call data to **salesforce** - See the result of outbound response **JSON** data payload Note: All data response based on data External Id and with Operation type Upsert and Update so data can response when data update by a process like External Id. #### How Response using message type for API IntegrateSynchronous works In this case, we use **REST **Service **API IntegrateSynchronous** to import or request data into salesforce and sender system will get back **response data** after data import or request successfully. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The response **JSON** data based on do mapping for the **Outbound interface[/su_box]** **Step1** - Go to Salesforce Org. - Create MetaData Provider ![](../images/2020/01/Screenshot-839.png) ![](../images/2020/01/Screenshot-840.png) - Click & Go to Related Tab - Create Istructure Repository - Click on New Button ![](../images/2020/01/Screenshot-841.png) - Create Name & Select Repository from **Type** picklist ![](../images/2020/01/Screenshot-842.png) - Create **Message Type** as **hierarchical** ![](../images/2020/01/Screenshot-843.png) - Create Message Type Name & Select Plain structure from **Type** picklist - **MsTAccount** & **MsTContact** message type name - Save ![](../images/2020/01/Screenshot-845.png) - Go to Related Tab and click on New ![](../images/2020/01/Screenshot-846.png) - Create Message Type Name & Select Plain structure from **Type** picklist - **MsTAccount** is parent to **MsTContact** - Save ![](../images/2020/01/Screenshot-847.png) - Create Message Type Name & Select Plain structure from **Type** picklist - **MsTContact** is child to **MsTAccount** - Save ![](../images/2020/01/Screenshot-848.png) - Go to the Details page - Click on New Istructure button ![](../images/2020/01/Screenshot-849.png) Create I structures of message type for** MsTAccount** & **MsTContact ** - For **MsTAccount** ![](../images/2020/01/Screenshot-850.png) - Create IStructure Name - Create Billing City Istructure BillingCity - Create Billing Country Istructure BillingCountry - Create Billing State Istructure BillingState - Save - For **MsTContact** ![](../images/2020/01/Screenshot-851.png) - Create First Name Istructure FirstName - Create Last Name Istructure LastName - Create Email Istructure - Save **Go back to Repository** - Click on Related Tab - See all Message Type which user created ![](../images/2020/01/Screenshot-852.png) - Scroll Down to Istructure Section - Click on view all - See all Istructure which user just created Manually ![](../images/2020/01/Screenshot-853.png) - See how hierarchical Message Type look in **Tree** ![](../images/2020/01/Screenshot-854.png) **Step2** - Create Integration ![](../images/2020/01/Screenshot-855.png) - Create 1st **Interface** - **OutboundResponse** - Search - **MeTaData** Provider - Repository - Source/Target Message Type ![](../images/2020/01/Screenshot-856.png) - Click on Open Mapping ![](../images/2020/01/Screenshot-857.png) - Map the target fields according to **MsTAccount** & **MsContact **to the Salesforce Source sObject - Save ![](../images/2020/01/Screenshot-858.png) - Create 2nd **Interface** - **InboundRequest** ![](../images/2020/01/Screenshot-859.png) - Save ![](../images/2020/01/Screenshot-860.png) - Click on Open Mapping Button ![](../images/2020/01/Screenshot-861.png) - Map the fields - Select ** Id** & Save ![](../images/2020/01/Screenshot-862.png) - Go to the **outbound interface** and copy its ID - Navigate to **Inbound interface** detail and pass **outbound interface's ID** into **'Response Interface'** field & Save ![](../images/2020/01/Screenshot-863.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]In this case **Inbound** interface role​​ is requested data and **Outbound** interface role is response data.[/su_box] **Step3** #### What is REST API? REST is basically an architectural style of the web services that work as a channel of communication between different computers or systems on the internet. The term REST API is something else. Those application programming interfaces that are backed by the architectural style of REST architectural system are called REST APIs. REST API compliant web services, database systems, and computer systems permit requesting systems to get robust access and redefine representations of web-based resources by deploying a predefined set of stateless protocols and standard operations. By these protocols and operations and redeploying the manageable and updatable components without causing the effect on the system, REST API systems deliver fast performance, reliability, and more progression. #### Explaining an API IntegrateSynchronous This feature is created to allow user call Skyvva Services by REST Api from their system. - Click on REST Project - Enter Endpoint URL Instance - Go to Soap UI application ![](../images/2020/01/Screenshot-864.png) - Great you create REST Project 1 ![](../images/2020/01/Screenshot-865.png) - Expand URL - Right-click on Request - Click on Clone Request - Change Method = **POST** - URL:   **https://akashtest-dev-ed.my.salesforce.com** - RESOURCE: **/services/apexrest/skyvvasolutions/IntegrateSynchronous** ![](../images/2020/01/Screenshot-866.png) - Media type by default application/JSON where we post. (JSON is the format) - Header its some tricky although it's easy - Click on Header - Add header name eg. Authorization - The bearer is a keyword after press space key - Paste your **sessionID** - Press enter key ![](../images/2020/01/Screenshot-867.png) - Define data in Request page to call data to salesforce - Paste this code under Media type section ![](../images/2020/01/Screenshot-868.png) - Submit - Here is the result of outbound response **JSON** data payload ![](../images/2020/01/Screenshot-869.png) Great code pass successfully - Go to Salesforce Org - Click on Message Monitoring Tab - Select your Integration - Click on the search button [su_box title="Note" box_color="#2a8af0" title_color="#000000"]All data response based on data External Id and with Operation type Upsert and Update so data can response when data update by a process like External Id.[/su_box] ![](../images/2020/01/Screenshot-870.png) - Green flag status reflects your integration is successfully achieved with the help of SoapUI. ![](../images/2020/01/Screenshot-871.png) - Click on Account Tab - See the records ![](../images/2020/01/Screenshot-873.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 8. Using the interface execution scheduler to send data in a batch mode. Slug: 7-7-using-the-interface-execution-scheduler-to-send-data-in-a-batch-mode URL: https://help.skyvva.com/#article/7-7-using-the-interface-execution-scheduler-to-send-data-in-a-batch-mode ================================================================================ # 8. Using the interface execution scheduler to send data in a batch mode. We have the interfaceExecution Scheduler which is a scheduler to execute the outbound interface. This scheduler is a scheduler per interface. But we need also the scheduler on different levels as per interface group and per integration. For the inbound interface we have scheduler such as batch, processing and reprocessing per these three different levels e.g. - integration - interface group - interface #### Interface Execution Scheduler? This scheduler is only used with the outbound interface and is generated automatically for any outbound interface inside an integration. It uses the SOQL in the field "SOQL Query for filter sObject". In this field, the user can write the SOQL statement which filter sObject to be passed on the method invokeCallout2(). The scheduler uses the method invokeCallout2() to execute the outbound interface. If the SOQL is not powerful enough to solve the requirement of a customer then they can use apex class to write their own logic for data selection. Then the flag "Use Apex Class" has to be set and in the field "Apex Class for Filter sObject" an apex class has to be specified. #### How to use it? **We can see 2 Cases:-** **Case 1:-**  Callout data to SAP with SOQL Query to filter sObject by using InterfaceExecution schedule processing. **Case 2:-  **CallOut data by using apex class for filter sObject. #### Configuration for Interface Execution Scheduler:- **Pre-Requisite:-** - Create Integration. - Create SFDC2SAPPI Adapter. - Create a Remote Site setting. #### Configuration For Case 1:- #### Create Inbound Interface:- - Do Mapping as shown below and save it. - In this inbound interface, we need to use the Id as the external Id. This Id is needed to update the record id which was found by the filter query SOQL. If we don't use the Id field of the sObject it will not work. ![](../images/2019/09/ies.png) #### Create Outbound Interface:- - **Select Operation type- ** Query/ PullQuery. - **Processing mode-** Asynchronous. - **Select Outbound Adapter.** - **In Section "SOQL Query for filter sObject"** - **Filter Query****:- **SELECT Id FROM Account WHERE BillingCity = 'PhnomPenh' AND SAP_Sales_Org__c = - **Interface to change condition:- **Enter Inbound Interface ID. - **In section "SOQL Query to select sObject data" or by using "Query Editor" we can write the query:-** SELECT Id,BillingCity,BillingCountry,Name,SAP_Sales_Org__c FROM Account. ![](../images/2019/09/ies2.png) - **Do Mapping as shown below.** ![](../images/2019/09/ies1.png) - On the Integration, page Select the "Scheduler" tab. - Check the section "Scheduler Per interface". - Run the "Interface execution Scheduler" as shown in the given picture below. ![](../images/2019/09/ies3.png) #### Check Result on Message Monitoring For Case 1 once InterfaceExecution scheduler processed:- ![](../images/2019/09/ies4.png) #### Configuration For Case 2:- - Configuration for the inbound interface will be the same as case 1. - Configuration for the outbound interface is given below. - In Section "SOQL Query for filter sObject" - Check the box of Use the apex class. - Interface to change condition:- Enter Inbound Interface ID. - Create a custom apex class with the code given below:- Global with sharing class InterfaceCustomClass implements skyvvasolutions.CustomInterfaceObjectCallout { Global map getMapObject(){ map ActMap = new map([SELECT Id,BillingCity,BillingCountry,Name,SAP_Sales_Org__c FROM Account where BillingCity='PhnomPenh' AND SAP_Sales_Org__c ='']); system.debug(ActMap); return ActMap; } } ![](../images/2019/09/ies7.png) 5. Fill the details as shown belowin the picture. ![](../images/2019/09/ies6.png) #### Run the scheduler:- ![](../images/2019/09/ies3.png) #### Check Result on Message Monitoring For Case 2 once InterfaceExecution scheduler processed:- ![](../images/2019/09/ies8-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 9. using invokeCallout2() or invokeCalloutV3() with mode = BATCH Slug: 7-8-using-invokecallout2-or-invokecalloutv3-with-mode-batch URL: https://help.skyvva.com/#article/7-8-using-invokecallout2-or-invokecalloutv3-with-mode-batch ================================================================================ # 9. using invokeCallout2() or invokeCalloutV3() with mode = BATCH ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 2. The Batch Control Board Slug: 17-1-the-batch-control-board URL: https://help.skyvva.com/#article/17-1-the-batch-control-board ================================================================================ # 2. The Batch Control Board A job runs to process batches which use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. All processed batches are managed on the batch control board. **What is the Batch Control Board?** Batch Control Board is a dashboard where we can monitor Inbound Processing, Interfaces, Queues, and Schedulers. Each tab holds a different function. The board offers us to facilely monitor the batch processing. This document will guide us How to use Batch Control board in details. Batch Control Board is utilized for mass data which is more than 5000. Batch Control Board is located at the 'Detail' tab of Integration and exists in the 'Custom Links' section. We use the Batch Control Board to store data temporarily. In order to search the Batch Control Board follow the given steps : - Login to Salesforce and select Integration tab then click on Integration Detail page as per screenshot shown below: ![](../images/2018/10/batch-control-1-1.png) #### Monitoring Batch Control Board When you open the Batch Control board we will find four tabs available which are Inbound Processing, Interfaces, Queues, and Scheduler. Each tabs have different functions and display things relatable with Batch processing. The following steps will show you how to monitor each tab: #### Inbound Processing Inbound Processing is a tab which stores baskets that have inbound direction. There are three sections available in this tab. That section includes Filter, Working Baskets and History Basket. All the incoming basket will store in Working Basket until you set the schedule to run or manually process them. When the baskets are done processing they will move to History Basket section automatically. #### Filter The filter is a screen where we can search the baskets. We can filter the baskets based on: - Created Date - Modified Date. - The result will reflect as below:- ![](../images/2018/10/batch-control-2-1-e1555319827412.png) #### Status: **Status** **Description** **Init** Basket is created. **Worker** Basket is pass to the worker. **Processing** Basket currently processes by the worker. **Completed** The Basket has been successfully processed. **Failed** Basket processing gets failed. **Canceled** The Basket was canceled by the Administrator. Status Init This is the first status when the attachment is created. When a message is sent utilizing batch mode an affixment gets engendered in the working basket and the status is set to "Init". The Annexation Processing Scheduler will only cull ingresses to be processed which has this status. From this status, the affixment can become the status "Worker". Status Worker The Affixment Process Scheduler will fetch annexation with status "Init" and pass these affixments to the soi-disant Annexation "Worker". The Annexation Worker is an internal Skyvva component who will process the annexation e.g. deserialize and post the message resulting from the affixment. The Annexation Worker transmute the status from "Worker" to "Processing". Status Processing The Annexation Worker set this status when it processes the affixment. When the Affixment Worker can process the annexation prosperously it will abstract this affixment from the working basket and move this annexation to history basket. If the Annexation Worker can not process the affixment it will set the status to "Failed" and the annexation is kept in the annexation basket and not moved into the history basket. Status Failed The Affixment Worker set this status when it gets an error while processing the annexation. The annexation remains in the working basket and will not move into the history basket. All affixments with this status will be pickup by the Annexation Reprocess Scheduler. Status Cancelled This status can be set manually by a utilizer. A utilizer can abrogate the affixment from the working basket before it gets processed. #### Interface List of all interfaces which are processing on batch control board. This tab exhibit the interfaces that store in an Integration. You can facilely check or monitor them. If you land on Batch Control board, just simply click on the interface tab then you will visually perceive all the interfaces. However, this tab is not editable like Interface tab in Integration detail page. #### Interface Group: Interface group is a unit to the group where logical interfaces come together. For example, you can group interfaces which are cognate to each other e.g. Account and Contact to one interface group. There is two kinds of interface group: :- Business related logical group :- Technical group We can apply this filter to probe data referring to concrete interface group. #### Working Baskets Working Baskets section is a place where all the inbound processing baskets gets store here and wait to process. This section contains some buttons such are Select All, Deselect All, Delete, Delete All, Cancel, Delete All Cancelled, Reprocess and Refresh. Likewise, this section withal exhibits the different status of affixments which is very facile for us to monitor the processing of the annexations. #### History Basket History Basket section is a location to store the processed baskets which are peregrinated from Working Baskets. If you opt to emaculate all the history baskets you can click on Delete or Delete All buttons. You can additionally use 'Do maintenance' (Scheduler) to perform the emaculate operation. #### Queues This tab is utilized to check 'How the queues work?'. You can filter queues base on Interface Group, Interface Name, and Status. Filter by Interface Group, Interface Name, and Status. ![](../images/2018/10/batch-control-4-1-e1555322263880.png)Queue inherit the priority from their interface group and thus a Queue will be a Prio-High, Prio-Medium or Prio-Low Queue. Queue Status: Status Worker This status is a temporary status set by the scheduler. Customarily most of the status is set by the worker because the worker is the one who does the job of processing the data package/queue passed from the scheduler.  Refer to chapter "11 Task disunion between Scheduler and Worker" to understand the task between scheduler and worker. This status is a helpful  token that the scheduler has passed the data package/queue to the worker. When the worker starts to process the data package/queue it will transmute the status from "Worker" to "Running". Status Running This status is set by the worker. When a data package/queue is passed from the scheduler to the worker the status of this queue is "Worker". Then the worker transmutes the status from "Worker" to "Running". The following change from status "Running" can be transpired. If the queue is processed prosperously then the status will set to "Ready". This is valid for both queue type e.g. for EO- and EOIO-Queue. If an error occurred for whatever reason then the status is set to "Failed" for an EO-Queue and to "Hold" for an EOIO-Queue. Status Failed This status is set when processing a data package/queue got failed. This status is only utilized for the EO-Queue. For the EOIO-Queue the status can be used is "Hold" and not failed. If the processing of the EO-Queue is not ceased plenarily this status reflect an ephemeral status and can be set for example to "Ready" when next time the processing of is prosperous. Processing an EO-Queue is not blocked if error encountered for EOIO-Queue. Because the nature of EO-Queue is overtaken of data which can be transpired and that we already understood when defining interface group/queue with the type EO. Status Hold This status is set when processing a data package/queue got failed. This status is only utilized for the EOIO-Queue. For the EO-Queue the status can be used is "Failed" not hold. If the status is set to "Hold" then the processing of this queue is ceased because we can create an overtaken of data. There is a reprocess mechanism of the affixment by the affixment reprocess scheduler. Refer to chapter "10 Variant of scheduler" for understanding the variant of a scheduler. For some error, the reprocess can resolve the error and ergo will reset the status of the queue to "Ready". Then the blocking of the queue will be relinquished. In some circumstance, because the error cannot be resolved automatically we will require the administrator to resolve the error situation and reset the queue status manually. Stop by Admin This status results from an admin action. An admin may want to stop the queue because of maintenance work. Other reason could be that we don't opt that the queue X should be processed and ergo we intentionally stop this queue. This is for example because we opt to have more resource for processing other queues than queue X. #### Scheduler There are two schedulers available in the Scheduler tab which are 'Attachment Process' and 'Attachment Reprocess '(reprocess the fail annexation). These schedules are for categorical integration. You can set the time and commence the schedule or refresh it. ![](../images/2018/10/batch-control-3-1-e1555321183796.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 3. How interface group is used? Slug: 17-2-how-interface-group-is-used URL: https://help.skyvva.com/#article/17-2-how-interface-group-is-used ================================================================================ # 3. How interface group is used? In SKYVVA, Integration is created to integrate data. To bind all interface which has same logic, we create group. create the interface group directly from the tab 'Interface Group' from the Batch Control Board. #### Interface group Interface group is a unit to group logical interfaces together. For example you can group interfaces which is related to each other e.g. Account and Contact to one interface group. Interface group is the object user define at configuration time. #### **Before create interface group, there are some properties you must know:** ![](../images/2020/02/Untitled2.png) **1. Interface Group Name**: It’s a name of interface group. The name will be used as a part of the queue name. **2. Integration**: This is the integration. You create an interface group which belong to an integration. Only one interface can belong to an interface group and an interface group only also belong to an integration. The value of the integration you select here will be part of the queue name.. **3. Type:** This is a type of the interface group. The value of group can be(EO,EOIO).- EO: Exactly Once - EOIO: Exactly Once in OrderWhen you create an interface group with type EO this interface group will be processed in a exactly once manner e.g. the order will not be guaranteed. If you want to keep order sending from the sender application you have to define this group with EOIONote that both type define a processing which is asynchronous. The type will be part of the queue name. **4. Priority** This property will allow you to define what priority you want to set for your interface group to processed faster. There are 3 types of Priorities such as:- High - Medium - LowWith this property you can define that interface group A is to be processed faster as interface group B by setting for interface group A = High and interface group B = Low or Medium. The available batch apex job is 5 at that time. But for priority High the max parallelism will be 5 because the counter setting for priority High is 5. The general for how many batch apex job will be used depend on following rule for processing queues: - Number of available batch apex job - Current number of counter stand of the priority class Note that processing over different integration has more priority than over queues within an integration because the processing begin first with the selection of the integration and then of queues. Lets looks to this example where we have 7 integrations which all have data in all priority. Furthermore each integration has different queues. Assume in this example that all 5 batch apex job are available. When the scheduler SCHED_1 start for the integration group IG_1 it will select integrations and assigned to each integration 1 batch apex job. Therefore all 5 batch apex job is assigned like this: I1 -> AP1, I2 -> AP2, I3 -> AP3, I4 -> AP4 and I5 -> AP5. Because we have max. only 5 batch apex job integration I6 and I7 don't get batch apex job Page 57 assigned to them. In this example each integration have different queues and those queues could be processed in parallel. But because all batch apex job was assigned to the integrations there are no more than 1 batch apex job available for the processing of queues. Only one queue can be selected and this will be the High-Queue from each integration. The parallel processing of queue is not possible due to lacking of batch apex job. **5 .Package Size**: This is the number of records to bundle together and pass to a batch worker because of the optimization. **6. Number of Records per Batch**: This property indicating the number of records to be processed per execute() used for basket processing batch. #### Types of interface group There are two types of interface group which are Business related logical group and Technical group. This section will be explained in detail what these interface group types are. **Business related logical group** This group is business related since the contact can only be posted after the account has been posted ( when you put the interface account and contact to one group). It’s all about an order of business process. To keep this order you can define the group and set the property to “EOIO”. When you set this way the account will be posted before contact interface. e.g. the group "Account_Contact". This group is business related because the contact can only be posted after the account has been posted. In this example there is an order of business process. To keep this order you can define the group "Account_Contact" and set the property to "EOIO" meaning Exactly Once In Order. In this way the skyvva runtime ensure that the account will be posted before contact interface. **Technical group** The technical group is to increase the performance for the posting of data. You need to create this group to group the interfaces which are not related to business and these interface is quite small. Without wasting time and resource, you can sent these interfaces once in same time by set this group to “EO”. For example, The technical group is for example to increase the performance for the posting of data. Imagine that you have five interfaces which do not related in a business way to each other. Those 5 interfaces are quite small e.g. small amount data will be send to Salesforce. In this example you will waste resource and time when you create five interface group for each interface and post the interface separately. The best way is to put these five interface into the same group and set the property of this group as "EO" meaning Exactly Once. This mean that the processing of those five interface in the group is not important. An overtaken can be happened and will not harm the business. By putting them together the scheduler will process much more data in one run than if the scheduler process them separately. #### How interface group is used? Follow the given steps to create Interface group: **Step1**: Go to batch control board. - Open  “Interface Group” tabs - Click on “New Interface Group” to create a new one ![](../images/2020/02/Untitled2.png) **Step2**: Fill the fields as shown in screenshots: -  Enter a name for an interface group. -  Then select the integration where the interface group belong to. ![](../images/2018/10/IG1.png) - Choose the type of the interface group ![](../images/2018/10/IG2.png) - Select the priority for the interface group then click Save ![](../images/2018/10/IG3.png)**Step3**:** Add Interfaces** - Click on “Add Interfaces” to add interface to the group ![](../images/2018/10/IG4.png) - Select the interface you want to add to this new interface group ![](../images/2018/10/IG5-1.png) **Step4**: Here is the result of creating an interface group ![](../images/2018/10/IG6-1.png) #### When to use interface group Interface group is used when you want to speed up interface processing. You can manually create interface group and assign the interfaces which you want to run beside the default IG. We have to create an interface group. This is an optional step because the Skyvva engine create a default interface group for each integration. This default interface group contain all interfaces existing in an integration. For each interface group the Skyvva runtime will create a corresponding queue and inherit some property from the interface group to the queue. For example the queue will become the type attribute e.g. EO or EOIO and the priority e.g. High, Medium or Low from the interface group. Since the Skyvva default group contain all interfaces from an integration the Skyvva default queue bit complex queue for processing the attachment data. Therefore we recommend to create suitable and appropriate interface group to have an optimal way for queue processing. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 4. How queue is used? Slug: 17-3-how-queue-is-used URL: https://help.skyvva.com/#article/17-3-how-queue-is-used ================================================================================ # 4. How queue is used? #### Queues A queue is a dynamic object, which created automatically based on an interface group. You have to remember if you do not define an interface group SKYVVA will create a default interface group with the name “skyvva_DefaultIG”. Each interface group will be created queues. The element of the queue is the data packages from the interface group. If you have an interface group that contains two interfaces e.g. account and contacts the data packages will contain data of these two interfaces. If in an interface group e.g. Opportunity_IG you only put one interface e.g. the interface opportunity into the group then the data package resulting in this queue is only the object opportunity. ![](../images/2018/11/2-19.png) This picture shows the relationship between queue, attachment in the working basket and the resulting messages after processing the attachment. The rule is that for an interface group a queue is created at runtime with a specific name from the SKYVVA engine. The relationship between the interface group and the queue is a 1:1 relationship. For one interface group, there will be a queue. If you don't create an interface group for your integration then the SKYVVA engine will use the default interface group "Skyvva_DefaultIG" and create automatically the queue with the name -EO_ Skyvva_DefaultIG for example " a0IA0000002GZ8dMAG-EO_Skyvva_DefaultIG". All interfaces belonging to the integration #### Queue details This documentation will be described more in detail about queue handling.  The processing message has generally done in queues because of these advantages: - Keeping order of arriving data - Prioritize of queue - Parallel processing of queues - Stop / Start queue for administration purpose The queue name derived from three information: - Integration Id - Interface group Id - Interface Id + {EO, EOIO} ![](../images/2020/02/Untitled3.png) There are two types of queues, which are EO and EOIO. This property is inherited from the interface group. The queue will inherit the following property from the interface group: - Type e.g. EO or EOIO - Priority e.g. High, Medium or Low The further queue will have a status like shown on this screen. ![](../images/2018/11/3-17.png) Note that you cannot define a queue like define an interface group or integration group. The queue is a dynamic object and will be created from the runtime of SKYVVA. The naming convention for the queue is as shown above. You will have two types of queue e.g. EO- and EOIO-Queue. This property is inherited from the corresponding definition of the interface group. This property has an impact on how to queue will be processed. For EO-Queue, for example, the order of the incoming data e.g. attachment is not important. Therefore, the element of an EO-Queue can be processed in parallel between different scheduler runs. This is for example not allowed for an EOIO-Queue. Here if the EOIO-Queue EOIO_X got failed then the processing of the whole queue is stopped and its status will set to "Hold". For an EO-Queue the processing is not stopped. The EO-Queue just gets a temporary status "Failed" but the next processing will overwrite this status e.g. to "Ready" or "Failed" again depending on the result of the processing by the worker. Queue inherit the priority from their interface group and thus a queue will be a Prio-High, Prio-Medium or Prio-Low Queue. The processing is aware of respecting the priority of queue and therefore will be processed queue with priority High before Medium and Medium before Low. In general, the processing of data packages within a queue X is sequential. If you want to have parallel processing of queues you have to define more than one interface group within an integration. Remember that you already have at least the SKYVVA default interface group but you should organize and create new interface groups/queues for your integration. Do not rely on the SKYVVA default queue because this is not a good way. **EO-Queue** When the interfaces do not relate to each other and does not have depending sequence then you can define this group as an EO-Group. This queue is to group different interfaces with a small amount of data together, to improve the performance of processing. **EOIO-Queue** This type of queue is the opposite way of the EO-Queue. EOIO-Queue is the interface account and contact. In Salesforce you have to split the data into two different tables e.g. into account and contact table. If you post the contact before account than you will get an error because the contact references an account. The account is the parent of the contact and therefore has to be posted before. To achieve this goal you have to define an interface group e.g.  "Acccount_Contact" with the property type = EOIO. Then specify the sequence number 1 for the interface account and the sequence number 2 for the interface contact. **Parallel processing of the queue** Parallel processing is possible because the data in different queue is not related to each other and therefore can be posted independently. We have in the best case five apex jobs as a worker to do parallel processing. The maximum parallelization is 5 due to the SF limit of 5 batch apex job. **Status of the queue** This section will be explained about the status of queue and how each status works. There are 6 status of queues. - Ready - Worker - Running - Failed - Hold - Stop by Admin ![](../images/2020/02/Untitled4.png) **Descriptions** **1. Status Worker:- **This status is a temporary status which is set by the scheduler. This status is a helping status to know that the scheduler has passed the data package/queue to the worker. When the worker starts to process the data package/queue it will change the status from "Worker" to "Running". **2. Status Running:-** This status is set by the worker. When a data package/queue is passed from the scheduler to the worker the status of this queue is "Worker". Then the worker changes the status from "Worker" to "Running". **3. Status Fail:-** This status is set when processing a data package/queue got failed. This status is only used for the EO-Queue. For the EOIO-Queue this status is not used but the status "Hold". **4. Status Hold:-** This status is set when processing a data package/queue got failed. This status is only used for the EOIO-Queue. For the EO-Queue this status is not used but the status "Failed". When the status is set to "Hold" then the processing of this queue is stopped because otherwise, you will create an overtaken of data. **5. Stop by Admin:-** This status is the result of an admin action. An admin might want to stop the queue because of maintenance work. #### Administration of queue The administrator can stop a queue so that it will not be processed by the scheduler. This might happen if the queue has accidentally too many entries and will take a long time to process. To stop a queue, please follow the given steps: - Open your integration,  Click on batch control board ![](../images/2018/10/Integraton_batchCtrlBoard.png)![](../images/2020/02/queue.jpg) - Select the “Queues” tab. ![](../images/2020/02/queue2.jpg) - Click on the “Stop” button to stop the queue. ![](../images/2018/10/stop_queue.png) - The system will ask you again for the confirmation. If you really sure that you want to stop the queue just click OK. ![](../images/2018/10/stopedByAdmin.png) As you can see from the above screenshot, the link has been changed from “Stop” to “Start”. The status also changed. #### Where to use a queue? The queue is used in Batch processing. ![](../images/2018/10/QueueInBCtrlB.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: 4. Export Metadata Slug: 14-4-export-from-the-message-type-different-format-as-xsd-wsdl-json-schema-swagger-and-openap URL: https://help.skyvva.com/#article/14-4-export-from-the-message-type-different-format-as-xsd-wsdl-json-schema-swagger-and-openap ================================================================================ # 4. Export Metadata The Export function creates an export file for each format(xsd, wsdl, json Schema, swagger and openApI), and that export files are consolidated into that specific format. You can use the same file  if you want to use the files as import files (for example, when importing file to create msg type by importing function). Skyvva provide flexible export. SKYVVA provides a feature of exporting metadata where we can find in the message type. For easy access, we added this function in the form of a button to the interface detail page. We can export metadata in different File format: JSON Schema,XSD Schema, WSDL1.1,WSDL2.0,Swagger2.0, OpenAPI3.0,XML. And we can also select API. #### There are several ways to obtain an export: - **Generate MetaData from Integration** - **Generate MetaData on Interface** - **Export MetaData from Repository** Let's take an example, Consider we have one inbound interface. In this case, the user needs to call our web service URL. While calling this service they need to provide input the same as we have the structure in message type. For this purpose, they need to check the SalesForce structure, but as we provide exported (WSDL) files, they will easily get which field they need to send and which hierarchy they need to send. Also, this file will help to know what type of req they need to send and what type of response they will get. WSDL file used for the SOAP request structure. **Pre-requisite :** - We have to create hierarchical Message type: - We have to create Integration. - We have to creation Interface. ## Export metadata from Integration. To process the message type-based interface we have to follow the given steps: **Step1:  **We have to Create a hierarchical Message type. There is some pre-requisite to creating a message type. - Create a metadata provider. - Create IStructure repository in metadata provider - We can manually create a message type or we also can use the upload file feature to create a message type. **Step2:  **We have to create Integration. - Go to detail tab of integration - Click on customLink "Generate Metadata. ![](../images/2020/08/1-2.png) - Select Interface -> choosing a format file = XSD -> and click export button. ![](../images/2020/08/13-2.png) - After we click the Export button, we will receive the message “file generated successfully,” and we will see the XSD file in the class file. Click the View button to download the XSD file. ![](../images/2020/08/14-2.png) - Here’s the XSD file that we have generated. ![](../images/2020/08/12-3.png) #### Export Metadata from Interface Generate XSD file from Generate MetaData on Interface is useful for a user who knows the exact Interface that he/she wants to generate. - Go to Interface -> click Generate MetaData (The picture is below). ![](../images/2020/08/15-2.png) - Choosing a format file =XSD and click the Export button. ![](../images/2020/08/7-3.png) - After we click the export button, it will download the XSD file automatically. - Here’s the XSD file that we generate On Interface. ![](../images/2020/08/12-4.png) #### Export Metadata from repository Generate XSD/ Json  file from Export MetaData on Repository is to allow users to choose the Message Type that the user wants to use. The Message Types that User choosing will be takes the whole child message type. Example We have hierarchical Message Types that are parent and child like Account, Contact, and Case, then we want to generate XSD start from Contact. So when we click the Button Export Metadata will get XSD file Contact and Case because Case is a child of Contact. - Go to the Repository that we want to generate XSD and click Export Metadata. ![](../images/2020/02/Untitled1-1.png) - Choosing Message Type that we want and click the Export button. ![](../images/2020/02/Untitled-163.png) - After we click the export button, it will download the XSD file automatically. - Here’s the XSD file that we generate On Repository. ![](../images/2020/08/png.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 5. Priority handling Slug: 17-4-priority-handling URL: https://help.skyvva.com/#article/17-4-priority-handling ================================================================================ # 5. Priority handling The priority handling is based on the interface group and not on the interface itself The real business case you will have data which is more important than the order. Imaging you have an order which has to be posted all at the end of the business day otherwise you will lose business. But at the same time you have a lot of other data like price update, account master data update etc... Thos data is less important and therefore even they arrive at the same time they should be posted later. Because the resource is limited on Salesforce we have to keep resource free for processing very important data before less important data. You can do this using the skyvva priority handling by defining interfaces into tree category e.g. High, Medium and Low. Skyvva Engine will take care of the priority assignment and will process data based on the definition of their priority. The priority handling is based on the interface group and not on the interface itself. When you define an interface group e.g. IG_A you have chosen the priority e.g. High, Medium or Low. The priority handling is based on the interface group and not on the interface itself. When you define an interface group, e.g. IG_A you have chosen the priority e.g. High, Medium or Low. Both Schedulers (attachment process and attachment reprocess scheduler) works with a configuration table for priority handling. The table is set the default to this value: ![](../images/2018/10/1-25.png) The configuration table for the priority handling looks like this: ![](../images/2018/10/2-24.png) The number specified in this table is the ratio between the priorities class High, Medium and Low. We use this number as a ratio because the processing of the attachment with the scheduler is done by the apex job. The maximum apex job size you can use at a given time is 5. Therefore, the number for the priority class High is set to 5. For medium, we have chosen the number 3 and for Low 1. Thus, we have a ration like 1/5 for Low, 3/5 for Medium and 5/5 for High. ![](../images/2018/10/3-22-300x69.png) The priority-handling algorithm is a weighted round robbing based on the priority ratio. To enable a weighted round robbing logic we have defined a so-called priority counter which is set dynamically by the processing of the attachment. Whenever data from a queue/interface group is processed the appropriate counter will be increased. ![](../images/2018/10/4-21.png) To understand the logic of the processing based on the priority ration let us look to this example. The queue type is EO. The package size was not defined. Skyvva default interface group is not used. We have defined each interface as a separate interface group. ![](../images/2018/10/5-19.png) We have 3 High interface group, 2 Medium interface group, and 2 Low interface group. ![](../images/2018/10/6-19.png) Here is the initial state before the scheduler run. The counter is still at 0-0-0 meaning High = 0, Medium = 0 and Low = 0. The scheduler is scheduled to run every 2 minutes. After the first scheduler round/run, it looks like this: ![](../images/2018/10/7-17.png) What happened now? While the scheduler run, we still have the 5-apex job available at that moment. Therefore, we can parallel the processing and use the 5-apex job at one time to process the interface group/queue. Each apex job that is used to process the interface group e.g. to process the data package of the interface group is called a "Worker". The scheduler is called the "Scheduler" and do not post the data. Its task is only to distribute the task to the worker. The worker will be posting the data into the application. Whenever a worker is running, it will increase the counter of the appropriate priority class. Imagine that the first worker/apex job process the interface group "Opportunity_Balint" from line 13 in the above table. Then it increases the counter for the priority High from 0 -> 1 because the interface group/queue is of priority High. The next worker will process the interface group/queue "Lead_Balint" and again increase the counter of the priority class High from 1 -> 2. The next worker will process the interface group/queue "Product_Balint" and increase the counter of the priority class High from 2 -> 3. The next worker will process the interface group/queue "Case_Balint" and therefore set the priority class Medium from 0 -> 1. Note that the processing depends on the data existing in the working basket. Because there are no more data from priority class High the next priority is Medium and not Low. Therefore, Medium is processed before Low. The next worker will process the interface group/ queue "Contact_Balint" and increase the priority class Medium from 1 -> 2. Now all 5 workers/apex job has done their work and coz. We do not have more apex jobs available than the maximum number of 5 the processing of the first round is done. For further processing, we have to wait for the next scheduler run, which will be in the next 2 minutes. Here the result of the second scheduler run/round. ![](../images/2018/10/8-16.png) After the first scheduler run, the counter stand was 3-2-0. The second scheduler runs pick now the data of the priority class Low because in the basket there are no more data from priority High or Medium. If there were still data from priority, High or Medium than the second will first process those data before processing data from priority Low. The interface group/queue "Account_Balint" is now processed and the counter is set for the priority Low from 0 -> 1. e.g. the total counter stand is 3-2-1. To summarize the general logic of the priority-based round robbing scheduling we have seen is that first the data of priority High will be processed before Medium and Medium before Low. Imagine further that we still have data to process and that at a given time we increase the counter for each priority class High, Medium and Low to its maximum number e.g. 5-3-1. This case means that data of each priority has been processed according to the ratio definition based on the ratio table above. In this situation, the counter is reset to the initial value 0-0-0 so that the processing can be rescheduling again with the initial stand. This is necessary because we want that each priority also priority Low will be processed even there are many data from class High. Therefore, this algorithm is a weighted round robbing scheduling and not an absolute round robbing algorithm. Imagine that you have 100 % of the data in the working basket. This could be 100, 2500, 124.312, ... attachments with different priority residing in the working basket. Then over time with this algorithm, we ensure that at least 10% of priority Low will also be processed and not 0 %. However, most data will be data from priority High and Medium, which will have been processed. This is the feature of priority based handling for processing interface group/queue. With this feature, you are able to define the priority for your business data and ensure that very important data will be posted before low important data. The priority-based handling feature only applied for the processing of the interface group/queue within an integration. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 6. Scheduler Slug: 17-5-scheduler URL: https://help.skyvva.com/#article/17-5-scheduler ================================================================================ # 6. Scheduler Batch Processing Scheduler is used to process batches  at high speed.  We can set the time and start the scheduler or refresh it. Batch Processing Scheduler is located in Batch Control Board, Integration page detail and Integration Admin Tab. SKYVVA Batch Processing Schedulers is a type of scheduled job which runs regularly bases on-time setting (ie. every 10 minutes).  There are three categories of this Schedulers. - **Integration Scheduler** : is a global scheduler process all interfaces on integration, it will skip either Interface group or interface that is running its scheduler. - **Interface group Scheduler**: process all interfaces in the group, if the scheduler has been started then all the schedule of the interface in this group will stop automatically. - **Interface Scheduler**: it will process a specific interface. It cannot be started if its interface group scheduler has already started. ![](../images/2020/02/Untitled5.png) This table describes the field in the Scheduler view. **Field** **Description** Action The action you can apply for the scheduler Scheduler The Name of the scheduler. This is the different type of Scheduler Integration or Group The name of the integration or Integration group ( Our recommendation to not use Integration group anymore) Status The status of the scheduler (green, red, grey) Comment Comment to describe some situation e.g. stopped by admin Time interval The time interval for the scheduler run Job Id The Job Id Job Name The job name. The name is concatenated with the Id of the integration group Submitted By The user who starts the scheduler Submitted The Date and time when the Scheduler was started Started The start time Next Scheduler Run The time when the next run is started Description Description of the scheduler #### Integration Scheduler when you create a new Integration, You will get three kind of scheduler for each Integration. - BatchProcess - BatchReprocess - Altert ![](../images/2020/02/Untitled6.png) **BatchProcess scheduler** The BatchProcess scheduler will process attachment residing in the working basket. This is the initial processing of the attachment. First the attachment get created from the messages send from the sender application. The attachment will be kept in the working basket until this scheduler is run to process them. The processing logic is designed to use the concept of scheduler and worker. The scheduler is the manager and will coordinate and distribute the work package to the worker. The scheduler are scheduled apex job while the worker are implemented as batch apex job. The scheduler call the worker and the worker will get the data package which contain a bundle of attachment from a certain queue and will process it e.g. deserialize attachment and post the record from the attachment into the application database. ![](../images/2020/02/Untitled7.png) #### BatchReprocess The BatchReprocess scheduler will process the batch of data from the working basket which has the status "Failed". The reprocessing within an integration follow the same logic like the processing within an integration. Especially the parallel processing of queues based on free available batch apex job and the counter stand is the same. The main advantage to have the reprocess logic separated from the process logic into a separate scheduler is that the reprocess scheduler can run at a different time interval. Normally the processing of data more important because it is the first initial processing. The reprocessing is the second processing of those batches which got failed while the first processing. Therefore you normally don't urgently need to reprocess batch faster than to process. We recommend to set a slower interval time for the reprocess scheduler than the process scheduler e.g. 2 minutes for the process and 30 minutes for the reprocess scheduler. ![](../images/2020/02/Untitled8.png) #### Alert Scheduler The alert scheduler is used to scheduled alert jobs.This alert tab is used for monitoring Working Basket limit, and EOIO queues' status. If the status of the EOIO queue(s) is 'Hold' or the threshold from the alert tab is smaller than the working basket value, a notify email will be sent to the assigned alert channels. ![](../images/2020/02/Untitled9.png) This is a new Scheduler (Alert Scheduler) to notify user email and send the message to External Email when: - Number of Working Basket records more than the value in **Threshold** - EOIO-Queue turns to status “Hold”** ** The Scheduler is in Scheduler Tab of Batch Control Board. It's call Alert. Alert Tab is also created and it is used for monitoring Working Basket limit, and EOIO queue’s status. If the status of the EOIO queue(s) is 'Hold' or the threshold from the alert tab is smaller than the working basket value, a notification email will be sent to the assigned alert channels. To activate this alerting, you have to set up the alert in, “Alert” tab from Batch Control Board.  Input the value in Threshold including Email then Save. Start the Scheduler. ![](../images/2018/12/1-1.png) ![](../images/2018/12/2-1.png) ![](../images/2018/12/3-1.png) For another case to notify the mail ![](../images/2018/12/4-1.png) #### Interface Group Scheduler The interface group describe the smallest unit for the queue processing e.g. the element of the queue are data of the interface group. For each interface group a dedicated scheduler will run just to process data from this interface group. Having interface group is important when you have a lot of interfaces in your instance. Interface group divide a huge number of interface into small and smart size logical group. Unless you create an interface group you will miss 2 other scheduler which will be there when creating at least one interface group. For each interface group you will get 2 additional different type of scheduler. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If you are using version 2.38 and then update to version 2.39, there will a duplicated of scheduler AttachmentProcess and AttachmentReprocess[/su_box] You can configure the Scheduler by type of Interface Group, which are: - EO - EOIO ![](../images/2020/02/Untitled10.png) In this screen you can see 2 Interface group and the scheduler for each group. You will get two kind of scheduler for each group. - ** BatchProcessPerInterfaceGroup** - **BatchREprocessPerInterfaceGroup**** ** Instead of creating many integration groups we recommend to create interface group within an integration to reduce the number of integrations. Do not misused the concept of integrations to create different logical group of interfaces. For this purpose you can use interface group instead. Take care to create more than one interface group and don't use or rely on the Skyvva default interface group / queue. If you use the default Skyvva queue you will have only one queue in your integration and therefore all interfaces for example 15 interfaces will run in the same queue. This is not a good performance. Note that with just one queue you will not have a parallelism of queues. Parallelism of queues is only possible with more than one queue. **BatchProcessPerInterfaceGroup** This is the initial processing of the Interface group. To crate a new interface group open t the tab "Interface Group". Than click on button " New Interface Group" to create a interface group. Enter a name for an interface group and select the integration where the interface group belong to. Now enter type of the interface group. You can choose between the value "EO", and "EOIO". Next is to select the priority e.g. High, Medium or Low.The push button "Save" to save the interface group. Next step is to insert the interface into the interface group.Click on button "Add Interfaces" to add interfaces to the group. we create an EOIO interface group and therefore we have to specify the sequence number which reflect the order of the interfaces to be kept. Here interface account has to be processed first e.g. 1 and contact as second e.g. 2. Click on button "Save" to save the interface group. ![](../images/2020/02/Untitled11.png) To start scheduler, Go to the scheduler tab and start **BatchProcessPerInterfaceGroup.** ![](../images/2020/02/Untitled12.png) **BatchREprocessPerInterfaceGroup** The BatchREprocessPerInterfaceGroup scheduler will process the batch of data from the working basket which has the status "Failed". The reprocessing within an integration follow the same logic like the processing within an integration. Especially the parallel processing of queues based on free available batch apex job and the counter stand is the same. ![](../images/2020/02/Untitled16.png) #### Interface Scheduler ![](../images/2020/02/Untitled15.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 7. Status of the Basket Slug: 17-6-status-of-the-basket URL: https://help.skyvva.com/#article/17-6-status-of-the-basket ================================================================================ # 7. Status of the Basket In the attachment basket list, you can see and monitor the processing of the attachment. You will see at a different times different statuses. In the screen example, you can see attachments in the basket with the status "Init". ![](../images/2018/11/8-7.png) The following status can be seen in the attachment basket: **Status** **Description** **Init** Attachment is created. **Worker** Attachment is pass to the worker. **Processing** Attachment currently processes by the worker. **Completed** The attachment has been successfully processed. **Failed** Attachment processing gets failed. **Cancelled** The attachment was canceled by the Administrator. - **Status Init** This is the first status when the attachment is created. When a message has been sent using batch mode, an attachment is created in the working basket and the status is set to "Init". The Attachment Processing Scheduler will only select Entries to be processed which has this status. From this status, the attachment can become the status of "Worker". - **Status Worker** The Attachment Process Scheduler will fetch attachment with status "Init" and pass these attachments to the so-called Attachment Worker. The Attachment Worker is an internal SKYVVA Component who will process the attachment e.g. de-serialize and post the message resulting from the attachment. The Attachment Worker changes the status from "Worker" to "Processing". - **Status Processing** The Attachment Worker sets this status when it starts processing the attachment. When the Attachment Worker could process the attachment successfully, it will remove this attachment from the working basket and move it attachment history basket. If the Attachment Worker could not process the attachment it will set the status to "Failed" and the attachment is kept in the attachment basket and not moved into the history basket. - **Status Failed** The Attachment Worker set this status when it got an error while processing the attachment. The attachment remains than in the working basket and will not move into the history basket. All attachment with this status will be pickup by the Attachment Reprocess Scheduler. - **Status Cancelled** This status is set manually by a user. A user can cancel the attachment from the working basket before it is processed. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 8. Monitoring of batch and the related message Slug: 17-7-monitoring-of-batch-and-the-related-message URL: https://help.skyvva.com/#article/17-7-monitoring-of-batch-and-the-related-message ================================================================================ # 8. Monitoring of batch and the related message Monitoring means to check the result of processing the Inbound or Outbound interface. So that  we can know the real sObject is integrated successfully with completed status. Batch processing have different monitoring for different task. We have new monitoring like following: - Basket Monitoring - Basket History Monitoring - Scheduler Monitoring - Queue Monitoring - Message Monitoring ![](../images/2020/02/Untitled01.png) #### Basket Monitoring: In the Basket monitor you can see the incoming attachment. You can customize the view e.g. the column to show in this monitor. ![](../images/2020/02/Untitled02.png) Here a set of useful screen to customize into the view. **Fields ** **Description** NAME Name of record in basket ATTACHMENT The name of attachemnt BATCH QUEUE The queue where the attachment will be processed INTERFACE The Name of Interface NUMBER OF RECORDS The number of records within an attachment STATUS The status of the attachment TIMESTAMP Creation time stamp of the attachment COMPLETION DATE Date of completion BATCH JOB The Batch job CREATED BY Date of creation of the attachment SUBMITED DATE Date of submission of the attachment #### Basket History Monitoring The basket history monitor or view hold the attachment which have been processed successfully and thus have been moved to here. It has almost the same look and fields. ![](../images/2020/02/Untitled03.png) #### Scheduler Monitoring With this view you can see the different scheduler for different integration group. You can see when the next run will be. ![](../images/2020/02/Untitled04.png) #### Queue Monitoring ** **With the queue monitor you can see the status of the queue. It is important to see that all queue is running well and not stuck. If queue are stuck no message processing will be carried out. ![](../images/2020/02/Untitled05.png) Fields Description ACTION Action you can carry out e.g. Edit and Delete QUEUE NAME The name of the queue TYPE The queue processing type e.g. EO or EOIO PRIORITY The priority assigned to the attachment INTERFACE GROUP The name of the interface group INTERFACE The name of Interfaces STATUS The status of the attachment LAST RUN TIME Date and time for the last processing of this queue COMMENT Description of the queue action BATCH JOB The Batch job JOB STATUS Status of job. For eg. Completed JOB DETAIL Description of job SUBMITED DATE Date of submission of the attachment COMPLETION DATE Date of completion of the attachment LAST MODIFIED DATE Date of creation of the attachment LAST MODIFIED BY Date of the last modification ## Message Monitoring Message Monitoring is used to check the integration result after processing the Inbound or Outbound interface. The integration result includes Pending, Failed, Completed, Cancelled status and the reason why it failed. Additionally, we can know the real sObject is integrated successfully with completed status. With the message monitor you can search for messages and see if it get posted or failed. You can see different status of messages e.g. green, red and grey. With the message monitor you can search over different criteria. For example you can search message by date e.g. the creation or modified date. You can sort the view and search message over its content. ![](../images/2018/10/4-1.png) Following are the search criteria you can use: **Field** **Description** **Integration Name** The name of the integration **Interface Name** The name of the interface **Message Name** The key of the message **Message status** The status of message e.g. Completed or Failed **Message Content** The content of the message **Date** You can specify Creation or Modified date **From** The from date **To** The to date **Sort By** You can specify Creation date, Modified date or Message Name ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 9. Alerting Slug: 17-8-alerting URL: https://help.skyvva.com/#article/17-8-alerting ================================================================================ # 9. Alerting This alert tab is used for monitoring Working Basket limit, and EOIO queues' status.If the status of the EOIO queue(s) is 'Hold' or the threshold from the alert tab is smaller than the working basket value, a notify email will be sent to the assigned alert channels. For batch processing (inbound) , we are using queues. We have two types of queues e.g. - EO (Exactly Once) - EOIO (Exactly Once In Order) For EOIO queue when a message get failed the queue status is set to 'Hold' and the processing is stopped immediately. A user needs to correct the message, reprocess it and resolve the queue status. Resolve the queue status mean that the user needs to change the status from 'Hold' to 'Ready'. If the status of an EOIO-Queue remains 'Hold' it will never be processed again! This fact makes it necessary to send an alert to the user that the queue XX is in hold status. How often to send this alert? Do we send only once to tell the user? Do we send every 5 minutes? Should we let the user set the time-frequency for alert? I think the best solution for the customer is to let them configure the alert time-frequency. The setting should be done in the interface group. Therefore we have to created a new field 'AlertTimeFrequence__c'. #### How to use Alert? We use Alert Scheduler to notify to user email and send message to External Email The Alert Scheduler will notify to user email or send message to External Email when: - EOIO-Queue is turn to 'Hold' - Number of Working Basket records more than value in Threshold Here is Example set alert ![](../images/2020/02/Untitled01-1.png) The total Number of  records in working baskets are: ![](../images/2020/02/Untitled02-1.png) When the condition satisfied. EOIO-Queue is turn to 'Hold' ![](../images/2020/02/Untitled3-1.png) Then Set Alert Scheduler, Apply the time interval. ![](../images/2020/02/Untitled04-1.png) The result on email Inbox after Alert Scheduler run completed ![](../images/2020/02/Untitled05-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Housekeeping Title: 2. Deleting messages Slug: 15-1-deleting-messages URL: https://help.skyvva.com/#article/15-1-deleting-messages ================================================================================ # 2. Deleting messages #### Delete Messages We have to set the flag when we want that this integration should be taken into account by the scheduler "DoMaintenance". For each integration, you have to decide to set or not set the flag. When this flag is set then the messages of this integration will be deleted after the retention time. When this flag is set then no deletion of messages from this integration will be done. Note that setting this flag only tells the scheduler to consider this integration. By default, only messages with status "Completed" is deleted. If you want to delete other statuses then the status "Completed" then you have to add the additional statuses available under the section "Additional Message Statuses to Delete". #### We can delete messages using do maintenance scheduler:- doMaintenance is another global scheduler which locates among others in the Scheduler tab. It provides all the functionalities to keep the data storage clean. In simple words it deletes pending, failed and completed records  You have to activate and run this scheduler otherwise no data cleaning activities are carried out. It exists only 1 in skyvva and processes all integrations. There are two ways to find DoMaintenance Scheduler:- - Using the Scheduler tab in the Admin page. - Using the Separate tab 'Scheduler' in the integration detail page. - **Using Scheduler Tab in Admin page to find DoMaintenace :-** Get into Integration Admin and select on Scheduler Tab. Try to find the “Others” section and set the time for DoMaintenance. The picture is given below for reference-  ![](../images/2018/10/do1.png) - ** Using the Separate tab 'Scheduler' in the integration detail page**:-                                                                                                                                                                                                                                                   Enter in Integration detail page and click on Scheduler Tab. Picture is given below for reference-![](../images/2018/10/do2.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 10. Optimisation of the batch processing Slug: 17-9-optimisation-of-the-batch-processing URL: https://help.skyvva.com/#article/17-9-optimisation-of-the-batch-processing ================================================================================ # 10. Optimisation of the batch processing Since the process of attachments in Batch processing take a lot of time to De-Serialize attachment to create the message, **SKYVVA** had decided to create a new mode to enhance the performance. This mode is “**Use Optimized Batch Mode**”. However, your processing will be faster if your checkbox both “**Use Optimized Batch Mode**” and “**Don’t Persist Message**” They reduce 50% of the time for batch processing. To speed up the batch processing, you have to: - Check both “**Don’t Persist Message**” and “**Use Optimize Mode**” ![](../images/2018/11/1-21.png) ![](../images/2018/11/2-21.png) Enter the Batch Control Board and click on the Scheduler tab to set the schedule to run the Batch Processing. ![](../images/2018/11/3-19.png) - Start the schedule ![](../images/2018/11/4-15.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]To be faster please input the number for package size, which is located in the Interface group. The higher the faster. **Package Size** is the number of records to be bundled together and pass to a batch worker because of the optimization. You have to check the Submitted Date of batch attachment and the Completion Date of the last basket in order to how long it takes to process.[/su_box] ![](../images/2018/11/5-13.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 11. Transition from old to new basket table Slug: 17-10-transition-from-old-to-new-basket-table URL: https://help.skyvva.com/#article/17-10-transition-from-old-to-new-basket-table ================================================================================ # 11. Transition from old to new basket table When sending data from outside into Salesforce using skyvva engine those data will be serialize into attachment. All incoming data will be result in attachments and kept in the so called attachment working basket before they get processed. The working basket reside under the link "Batch Control Board". When a attachment is created for the first time it will have the status "init". Sometime you can see attachment with status "processing". After processing of an attachment A1 and there was no error than the attachment A1 will be moved to the history basket. When an error was occurred than the attachment A1 will be kept in the working basket and not moved to the history basket. The attachment A1 will get the status "failed". Such attachment with status "failed" will be later reprocessed by the attachment reprocess scheduler. Old Working Basket is a new tab, which create to store all the old baskets that cannot process due to the updating of new version of SKYVVA. When you installed the version 2.39, you will see a new button, Transfer to New Working Basket, which allow you to transfer the old stuck baskets to Inbound Processing tab in order to process again. Before showing you the process of transferring the old baskets, you have to know the differences between the old versions and new version of SKYVVA’s Batch processing. The following screenshot is showing the old version of Batch Control Board 2.38. ![](../images/2020/02/Untitled06.png) To transfer the baskets you can: - Enter Batch Control Board and click on, new tab, Old Working Basket - Click on “Transfer to New Working Basket” button ![](../images/2020/02/Untitled07.png) - Go back to Inbound processing tab then you will see the old basket had already moved. ![](../images/2020/02/Untitled08.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Inbound Message Processing Title: 9. The new Inbound processing with version v3 Slug: 6-8-the-new-inbound-processing-with-version-v3 URL: https://help.skyvva.com/#article/6-8-the-new-inbound-processing-with-version-v3 ================================================================================ # 9. The new Inbound processing with version v3 **Introduction** In v3 processing the customer doesn't need to implement steps.  Our steps are not mandatory for customer to implement. He can do it or leave it. If he doesn't do anything we execute our default implementation of the message processing. The method 'messageProcessing()' define the step in the processing flow of the inbound message. We call this the message processing pipeline of just pipeline. It consists of 9 steps e.g. methods. All these methods are used in our message processing in the framework. The new class integrate3 and integrate3Synchronous have the following steps: - **BeforeMessageProcessing** (optional in framework). This method can be overwritten by custom class. - **CreateMessage** -> (mandatory in framework). This method can be overwritten by custom class. - **BeforeWorkflow** -> (optional in framework). This method can be overwritten by custom class. - **ExecuteWorklow** -> (mandatory in framework). This method can be overwritten by custom class. - **BeforeMapping** -> (optional in framework). This method can be overwritten by custom class. - **ExecuteMapping** -> (mandatory in framework). This method can be overwritten by custom class. - **AfterMapping** -> (optional in framework). This method can be overwritten by custom class. - **ProcessMessage** -> (mandatory in framework). This method can be overwritten by custom class. - **AfterMessageProcessing** -> (optional in framework). This method can be overwritten by custom class **Communication Architecture** Communication Architecture of v3 old and new processing is as shown in following diagram: ![](../images/2020/02/V3Inprocessing.png) We can use integrate3 using xml and json where the payload is passed from a client. In this case, we use the message type which corresponds to the payload message node from the caller. We create the message type following the name of the external payload. We can also upload their xdd, wsdl or swagger/openAPI file to create automatically the message type. In this situation, we have the message type which reflects the name of the external message name. But when we call integrate3 from SAP-JAVA module or Agent we use soap version of integrate3 which convert the xml/json and pass as ibean3 to call the integrate3 method. In this case, we pass not the message type name but the sObject name like we do currently. In this case, the logic with the message type will not work. To make it works we need to add a decision case to check that if the message type is not used then we use the sObject name. We can see in the chained record the new formula field which contains the assignment between the message type name and the sObject name. If the field messageType is empty then we have only a value for the sObject. The field sObject always has a valid sObject name! But the field messageType can be empty or null if it is not used. **Workflow**: Here what is new is that v3  support workflow for child interface as well which was not there in v2. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Workflow Title: 6. How to send messages to multiple receivers based on the workflow condition for the outbound interface? Slug: how-to-send-messages-to-multiple-receivers-based-on-the-workflow-condition-for-the-outbound-interface URL: https://help.skyvva.com/#article/how-to-send-messages-to-multiple-receivers-based-on-the-workflow-condition-for-the-outbound-interface ================================================================================ # 6. How to send messages to multiple receivers based on the workflow condition for the outbound interface? So here we can see how we can send messages to multiple receivers based on the workflow condition for the outbound interface. We can take the example of sending data to google drive. For that, we need permission from google drive. After getting permission we will add all the properties in creating a rest adapter. The whole procedure we will see in this chapter. Firstly we need to get permission from google drive for that we have document, the link is given below:- [#article/overview-of-existing-skyvva-adapters](#article/overview-of-existing-skyvva-adapters) After getting permission we need to follow certain steps:- #### The scenario is that using workflow for routing data to different google drive then creates the file, using REST Adapter with method POST. The steps given below are the main steps we need to create:- - **Manual create message type for REST template (google drive api)     ** ![](../images/2020/03/google1.png) - ** Create a custom field on object Account** ![](../images/2020/03/google2.png) - **Configuration on Interface using for google #1** Request Interface:- ![](../images/2020/03/google3.png) **Link response Interface:-** ![](../images/2020/03/google4.png) **Link rest Adapter to Request interface:-** ![](../images/2020/03/google5.png) **Mapping:-** ![](../images/2020/03/google6.png) **Response Interface:-** ![](../images/2020/03/google7.png) **Mapping:-** ![](../images/2020/03/google8.png) - **Configuration on Interface on google #2** **Request Interface:-** ![](../images/2020/03/google9.png) **Link rest Adapter to Request interface:-** ![](../images/2020/03/google10.png) **Link response to Request interface:-** ![](../images/2020/03/google11.png) **Mapping:-** ![](../images/2020/03/google12.png) **Response Interface:-** ![](../images/2020/03/google13.png) **Mapping:-** ![](../images/2020/03/google14.png) **Create Adapter:-** ![](../images/2020/03/google15.png) + Click Test connection to confirm Adapter that what we created will connect to google drive or not. ![](../images/2020/03/google16.png) **Define workflow:-** ![](../images/2020/03/google17.png) **Callout:-** ![](../images/2020/03/google18.png) - **Result:-** ![](../images/2020/03/google19.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 10. New V3 outbound processing Slug: 7-9-new-v3-outbound-processing URL: https://help.skyvva.com/#article/7-9-new-v3-outbound-processing ================================================================================ # 10. New V3 outbound processing It is a new API (**skyvvasolutions.IServices.invokeCalloutV3**) for sending the data from salesforce to other system throughout interface outbound with specific adapter type and message-type. A message can be routed to different target interfaces that by iworkflows. Moreover,it also provides some functionalities that can be overridden by custom apex class. Skyvva have V3 outbound processing feature to allow user to add custom apex class instead of using skyvva standard processing flow. When User use this he need to code every thing using his apex class. This is many works and big effort for him. For some business requirement he need the mapping from skyvva but need only to plug-in his logic to a certain part of our processing flow chain. With this task we allow customer to add logic to the last step e.g. Post Processing of our interface standard processing logic. Here only this place is customer code and the other places are skyvva standard processing code. ![](../images/2020/03/V3outboundpro.png) **Example ofexecution callout:** - **Without passing any parameter to the API** *User want to send the account that are updated to external system from apex trigger* List ids=new List(); for(Account a: Trigger.new){ ids.add(a.Id);} skyvvasolutions.IServices.invokeCalloutV3('SF to SAP' , 'Account request SAP Number', ids, 'AUTO' , null); - **Passing any parameter throught the API** *User wants to pass the data of account and its contacts from the screen, s/he needs to create parent-child interface(chain) to handle such as payload.* CallOutControl c=new CallOutControl(); Mapm,mCh; //Parent-data (for Parent interface) m=new Map(); m.put('Name','Test'); m.put('BillingCity','Test City1'); m.put('BillingCountry','Test Country1'); //child-child data (for child interface) mCh=new Map(); mCh.put('FirstName','test'); mCh.put('LastName','test'); mCh.put('Email','test@gmail.com'); c.setPayLoad(m, new List>{mCh}); CallOutControloutBoundControl=null; List results=skyvvasolutions.IServices.invokeCalloutV3('SF to SAP' , 'Account request SAP Number', null, 'SYNC' , c); #### How to customize outbound processing with custom apex class? There two ways that user can override the outbound processings **Override the steps of executions** It is an interface custom processing for an interface; the apex class can be override the following global functions. The steps such as **query, mapping, workflow and operation** are executed by default and other steps will be executed base on the value setting on interface’s field <**Custom Plug-in to SKYVVA Block**>. NOTE: *Due to DML does not allow to execute before invoke callout from salesforce. So the DML cannot be executed in those steps before the step operation (**executeOperation**), yet if interface has defined some workflows routes the message to different target outbound interfaces, the DML can’t execute in all steps because the API will execute other target interface in the next workflow.* **V3OutboundStepProcessing methods** **Description** **query**(String soql, List ids) Return **List**that is based on query and given record ids beforeMapping(IServicesUtil.IMessageResultmr) It will be executed if interface is setting<**Custom Plug-in to SKYVVA Block**: **Before Mapping**>, return **skyvvasolution. IServicesUtil.IMessageResult**which contains list message and map of source data the in the ordered index. Those objectes should be cloned to bypass the reference of **executeMapping**(IServicesUtil.IMessageResultmr, ListlistMapping) Mapping processing by default, itreturns **Map>** , that is mapping result of each message that is specifiedmessage-field as key beforeWorkFlow(IServicesUtil.IMessageResultmr, Map>mapResult) It will be executed if interface is setting <**Custom Plug-in to SKYVVA Block**: **Before WorkFlow**>, return **skyvvasolutions.IServicesUtil.IMessageResult**, it should be cloned to bypass referenced change in the given of parameter **executeWorkFlow**(IWorkFlow__c wf, IServicesUtil.IMessageResultmr, Map>mapResult) A target interfaces could have an apex classfor the logic to filter messages before execution of its adapter operation. **skyvvasolutions.IServicesUtil.IMessageResult**is a filter result for building the request payload for a specific interface. beforeOperation(ListmsgTrees) It will be executed if interface is setting <**Custom Plug-in to SKYVVA Block**: **Before Operation**>. It return nothing **executeOperation**(Adapter__c adapter, ListmsgTrees) Executing the apex class that has been implemented for specify adapter type such as SOAP or REST, a custom operation class that is setting on interface (Operation: Custom Apex Class). It should be returned the object **skyvasolution.V3OutboundUtils.Response** afterOperation(V3OutboundUtils.Response response) It is execute after operation and return nothing.<**Custom Plug-in to SKYVVA Block**: **After Processing**> #### How to use V3 outbound processing with Rest adapter? - Create REST Adapter then link to interface request(outbound) ![](../images/2020/03/Untitled10.png) + Click Test connection to confirm Adapter that we have create can connect to google drive or not. ![](../images/2020/03/Untitled11.png) - Create message type for REST template **Manual  create message type for REST template (google drive api)****Manual  create message type for REST template (google drive api)** ![](../images/2020/03/Untitled1.png) - Create custom field on object Account: ![](../images/2020/03/Untitled2.png) - Create interface request(outbound) and interface response (inbound) , link interface inbound to outbound :**Configuration on Interface using for google ** Request Interface ![](../images/2020/03/Untitled3.png) Link response Interface ![](../images/2020/03/Untitled4.png) Link rest Adapter to Request interface ![](../images/2020/03/Untitled5.png) Mapping ![](../images/2020/03/Untitled6.png) Response Interface ![](../images/2020/03/Untitled8.png) Mapping ![](../images/2020/03/Untitled9.png) - InvokeCallout3() ![](../images/2020/03/Untitled12.png) skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011X00000TdIAXQA3','0011X00000TdIAYQA3','0011X00000TdIAZQA3'}; skyvvasolutions.Iservices.invokeCalloutV3('TEST-INTEGRATION','GoogleDrive_CreateFile_Request_POST_SK',ids,'SYNC',c); ================================================================================ Book: SKYVVA Administration Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 7. REST Adapter Slug: rest-adapter-2 URL: https://help.skyvva.com/#article/rest-adapter-2 ================================================================================ # 7. REST Adapter #### Introduction Agent **REST** Adapter is a feature like **REST** Adapter, but it has more power than the **REST** Adapter. **REST** Adapter needs the System to have Public **API** to call out **API**, but Agent **REST** Adapter can callout **API** with Systems that have Public API and Local **API**. So it is useful for users who want to keep data in the local System. To use Agent **REST** Adapter, we need to have an Agent application to store in the local machine meaning that Agent **REST** Adapter is like a bright to connection Salesforce to the Agent machine and the Agent machine connects to Backend applications. **Example:** In a Real business scenario, we want to make our data secure, so we need to use a local network zone to install Agent machine and Backend applications such as** SAP or Oracle**. We do like this because we don't want any systems to access our System, and it is the technique to protect our data from being safe. #### The processing of Agent REST Adapter Here's the picture of the processing of Agent **REST** Adapter. ![](../images/2020/10/image_2020_11_05T13_16_56_074Z.png) In this picture, we can see Salesforce and **SKYVVA** are in the Internet zone where Agent Machine and Backend applications are in the Local network zone. So when we callout from Salesforce to Backend applications, it will access Agent Machine and Agent Machine send data to Backend applications. The agent is responsible for making connections with the inside enterprise and then connecting with Salesforce (Internet zone). This Adapter is really helpful for users to send data to salesforce to local backend applications. #### How to create a REST interface using the Agent REST Adapter? How to use Agent **REST** Adapter for callout data from salesforce.  We also learn about how to callout data and get a response message and we will learn how to use fault Interface when the other system has a fault message. #### Case 1 **Handle API message without Response Interface.** Pre-require - Create or Upload Message Type REST. - Configuration Agent control board. - Create Adapter Agent REST. - Create Integration and Outbound Interface. **Step 1**:  Create or Upload Message Type REST. - Go to Metadata-> click button Import MetaData Provider. ![](../images/2020/10/1-2.png) - Click upload files (Put metadata and click OK) ![](../images/2020/10/2-2.png) - Here’s REST Message Type. Click this to download. –  [RESTVersion2_skyvvasolutions__MetaDataProvider__c (5)](../images/2020/10/SOAPVersion2_skyvvasolutions__MetaDataProvider__c-5.txt) ![](../images/2020/10/3-1.png) **Step 2**: Create integration and outbound Interface. - Create an outbound Interface link with Message Type. ![](../images/2020/10/4-1.png) - Do mapping ![](../images/2020/10/5-1.png) **Step 3**: Configuration Agent Control Board. - Go to Integration detail => click AGENT Control Board. ![](../images/2020/10/6-1.png) - **Click on Agent Control Board Tab** –[How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. **Step4**: Create Adapter Agent **REST** - Click adapter tap on Agent Control Board. ![](../images/2020/10/10-1.png) - Click New button ![](../images/2020/10/11-1.png) - Configure an Agent Adapter Soap Fill name, choose Type =Agent Soap, Direction= outbound, choose XML payload, Operation= POST, fill username and password, and choose Adapter_instance. - Here’s an example. ![](../images/2020/10/12-1.png) **Step 5**: put the adapter into Interface. ![](../images/2020/10/14-2.png) **Step 6**: Callout v3 with Apex code. - Here’s code callout. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011x000015BR30AAG'}; skyvvasolutions.Iservices.invokeCalloutV3('IntegrationName','InterfaceName',ids,'SYNC',c); - Go to deveoper console => Debug => Open Execute Anonymous Window =>  copy the code abouve and click Execute. ![](../images/2020/10/15-2.png) - Go to Monitor to see the result ![](../images/2020/10/16-2.png) #### Case 2 **Handle API Message with Response Interface.** In this case, we just need to create a Response Interface using Soap Message Type. Pre requires - Create or Upload Message Type REST. (We have configured in case1) - Configuration Agent control board. (We have configured in case1) - Create Adapter Agent REST. (We have configured in case1) - Create Integration and outbound Interface. (We have configured in case1) - Create Inbound Interface **How to Handle API message with Response Interface?** In this case, we just need Inbound Interface one more for do response. Because of Case 1, we have configuration some pre-required already. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Make sure that Message Type Reponses Interface is matching with payload Reponses of other request System or server.[/su_box] **Step 1**: Create inbound Interface and link Message Type Response - Here’s the response Interface. ![](../images/2020/10/17-2.png) - Do mapping. ![](../images/2020/10/18-1.png) **Step 2**: Go to Interface Request and put the Response Interface in the field’s response Interface. - Go to Interface Request. ![](../images/2020/10/19-1.png) - Scroll down to see the field’s request Interface. Click this pencil. ![](../images/2020/10/20-1.png) - Put response Interface in it, Example below. Click the save button. ![](../images/2020/10/21-1.png) **Step 3**: Callout v3 with Apex code with Request Interface. - Here's code callout. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011x000015BR30AAG'}; skyvvasolutions.Iservices.invokeCalloutV3('IntegrationName','InterfaceName',ids,'SYNC',c); - Here’s example. ![](../images/2020/10/15-3.png) - Go to Monitor to check the result. ![](../images/2020/10/22-1.png) #### Case 3 **Handler Over Fault Response.** - In this case, we use two Interfaces like Inbound Interface for Response and Outbound Interface for Request. The process of these cases is to put the Response Interface, which is fault Message Type, into the Request Interface. - **Example**. We have an outbound Interface and put the fault Interface that has message Type fault_SystemError in the outbound Interface. When the callout **V3** is met the situation, System Error, so the Inbound Interface will respond to the fault message to tell the user that the Callout has a problem with the system Error. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Make sure that Adapter has fault response. [/su_box] Pre requires - Create or Upload Message Type **REST** with Fault Message Type. (We have configured in case1) - Configuration Agent control board. (We have configured in case1) - Create Adapter Agent **REST**. (We have configured in case1) - Create Integration and outbound Interface. (We have configured in case1) - Create Inbound Interface as a fault Interface. **Step1**: create Inbound Interface as fault Interface. - Go to Integration => create Interface. ![](../images/2020/10/23-1.png) - Here’s the Inbound fault Interface. ![](../images/2020/10/24-2.png) - Do mapping ![](../images/2020/10/25-1.png) **Step 2**: put fault interface in request interface. - Go back to request Interface (Normal case) ![](../images/2020/10/26.png) - Scroll down to find the fault Interface field. ![](../images/2020/10/27-1.png) - Put the fault Interface in this field. ![](../images/2020/10/28.png) **Step 3**: callout with apex code. - Here’s an example. ![](../images/2020/10/29.png) - Go to monitor to check results. ![](../images/2020/10/30.png) #### Case 4 **Handle multiple different fault messages** [su_box title="Note" box_color="#2a8af0" title_color="#000000"]When we use Multiple different fault messages, we don’t need to put fault Interface in the Request Interface because the field of fault Interface is a priority than related fault Interfaces. If we put Interface in field fault Interface, it will do only with field fault Interface and the related Interface will not do.[/su_box]. **Pre-require:  ** - Create or Upload Message Type **REST** with Fault Message Type. (We have configured in case1) - Configuration Agent control board. (We have configured in case1) - Create Adapter Agent **REST**. (We have configured in case1) - Create Integration and outbound Interface. (We have configured in case1) - Create two Inbound Interfaces for fault interfaces. We have created a Fault Interface system error already so now we need to create two more fault Interfaces. **Step1**: Go to Integration and create Fault interfaces. - Create Inbound fault Interface and linked with fault_AdminBlockException and click button save. ![](../images/2020/10/31.png) - Do mapping. ![](../images/2020/10/32.png) **Step2**: Put Outbound Interface Name in fault Interface of Every Response Interfaces. - Make sure that the request Interface doesn’t have a fault interface in their field. - Here’s the request Interface. ![](../images/2020/10/33.png) - Scroll down to make sure that this interface doesn’t have a fault Interface. ![](../images/2020/10/35.png) - Here’s Response System Error Interface. (That we have created above) ![](../images/2020/10/36.png) - Scroll down to put request interface in field fault Interface. ![](../images/2020/10/38.png) We need to other Response fault Interface like the same way. - Here’s AdminblockException fault Interface. ![](../images/2020/10/39.png) - Scroll down to put the request interface in the field fault interface. ![](../images/2020/10/40.png) **Step 3**:  Go to Request Interface to see response fault Interfaces related. - Go to Related Interface of request Interface. ![](../images/2020/10/41.png) - Scroll down to see both fault Interfaces have related to this request Interface. ![](../images/2020/10/42.png) **Step4**: callout with apex code. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Make sure that **API** has faults Message.[/su_box] ![](../images/2020/10/43.png) - Go to the message monitor to check the result. ![](../images/2020/10/44.png) #### Case 5 **How to use the REST v4 API to push data to Agent?** - Our **V4/integrate** rest variant supports **JSON** and **XML** and therefore it is possible to pass the Rest envelope **XML** or **JSON** to the body of the **v4/integrate**. This means that for invoking the **SKYVVA** API we use only the rest variant ***../services/apexrest/skyvvasolutions/v4/Integrate*** with either **XML** or **JSON** payload. - In the URL of V4 API, the query parameter is added in URL only. We have **two** types of **response**: 1. standard response 2. custom response using the response (outbound) interface to do the mapping if we want to get data from the response interface then we need to do mapping for the response interface and link it to the request interface. Only data send from the input will return back a response. If we want anything other than the input data then we have to use VLOOKUP formulae in the response mapping. ![](../images/2021/03/capture2-6.png) - **Click on Agent Control Board Tab** –[How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org.                  –[How to create a REST interface using the Agent REST Adapter?](#article/tutorial-v2-41-lightning) Then Go to the adapter tab and create an Inbound adapter. Here we are using the Rest adapter for the Inbound direction. ![](../images/2021/03/Capture6-6.png) **Step 2:** Create Inbound Interface.  To create an Inbound interface refer tutorial from our website: [How to create Interface?](#article/1-what-is-an-interface-and-how-to-create-it) - Select Metadata which you have created earlier: ex: V4Integrate - Select Istructure Repository - Select Message Type - Select Inbound adapter: agent Rest adapter - Save the Interface. ![](../images/2021/03/capture7-5.png) **Step3**: Do mapping and save it. ![](../images/2021/03/Capture8-3.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Make sure cache should be created - Check to cache for each object: Integration, interface, mapping. [/su_box] ![](../images/2021/03/Capture9-2.png) #### Check Result on Message monitoring:- ![](../images/2021/03/Capture16.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Inbound Message Processing Title: 10. New plug-in custom logic of the inbound processing Slug: 6-9-new-plug-in-custom-logic-of-the-inbound-processing URL: https://help.skyvva.com/#article/6-9-new-plug-in-custom-logic-of-the-inbound-processing ================================================================================ # 10. New plug-in custom logic of the inbound processing SKYVVA provide completely powerful  processing way with new Version3  and allow for significant *flexibility. **New plug-in custom logic *** is normally refers to the processing which will give the ability for the solution to adapt to possible  changes in your requirements. If user doesn't want to use our existing class and want to create his own class then he can add custom block. User can extend our existing class. ![](../images/2020/03/CustInboundProc.png) **Plug-in custom block before or after Skyvva step (Selection base on your requirement)** Define the time and location where we can chose to add our custom logic. Our custom logic can be apex class,flow or process. Your customer logic will be executed at the chosen time additinally to the skyvvva processing Unit. In contrast to the custom block where the customer completely replaces the whole skyvva step by their own block here there is no need to replace but to plug-in custom logic before or after the skyvva standard block. We have the following plug-in block which could make sense: - Before Mapping - Before Workflow - Before Operation - After Processing **V3InboundStepProcessing methods** **Description** **Before Create Message** Edit payload or something else in the request ‘dtoRequestBody’ before create message(Default nothing todo) **Create Message** Create object IMessage__c from the payload. **Before Workflow** You can edit data__c of the IMessage__c before execute workflow (Default nothing todo). **Execute Workflow** Filter message **Before Mapping** In the step you can edit data__c of the IMessage__C before execute Mapping. **Execute Mapping** execute mapping to create Object from IMessage__C **After Mapping(Before Operation)** You can edit Object created by step VI if you override (Default nothing todo). **Do Operation** Do DML operation or other Operation. **After Operation** You can do what you want after operation if you Override (Default nothing todo). #### How to create Custom class? A **Custom Class** is a developer defined **class**. If user doesn't want to use our existing class and want to create his own class then he can add custom block. User can extend our existing class. Go to set up ->  Search for Apex class -> Create new apex class. ![](../images/2020/03/CustProc4.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Accessing any class and sObject in SKYVVA’s package must be prefixed by namespace **skyvvasolutions**.[/su_box] Use the following **Custom Processing Class**: V3InboundCustomStepProcessing; [aux_code language="javascript" theme="tomorrow" title="" extra_classes="" global with sharing class V3InboundCustomStepProcessing extends skyvvasolutions.IntegrationV3Json{ global override skyvvasolutions.AbstractIntegrationV3.DtoRequestBody beforeMessageProcessing(skyvvasolutions.AbstractIntegrationV3.DtoRequestBody dtoRequestBody) { //you can edit or do what you want,but must return type as skyvvasolutions.DtoRequestBody System.debug('V3InboundCustomStepProcessing beforeMessageProcessing is invoked'); return dtoRequestBody; } global override skyvvasolutions.IServicesUtil.IMessageResult createMessage(skyvvasolutions.AbstractIntegrationV3.DtoRequestBody dtoRequestBody,skyvvasolutions.AbstractIntegrationV3.DtoStructure dtoStr) { //this method you need to create message //the payload you can get variable dtoRequestBody.payload. //you can see all property of the dto in: skyvvasolutions.AbstractIntegrationV3.DtoRequestBody System.debug('V3InboundCustomStepProcessing createMessage is invoked'); skyvvasolutions.IServicesUtil.IMessageResult mr = new skyvvasolutions.IServicesUtil.IMessageResult(); return mr; } global override skyvvasolutions.IServicesUtil.IMessageResult beforeWorkflow(skyvvasolutions__Interfaces__c inf, skyvvasolutions.IServicesUtil.IMessageResult iResult) { // edit or update message before execute workflow here System.debug('V3InboundCustomStepProcessing beforeWorkflow is invoked'); return iResult; } global override List< skyvvasolutions.WorkflowExecuter.FlowDto> executeWorkflow(skyvvasolutions__Interfaces__c inf, skyvvasolutions.IServicesUtil.IMessageResult iResult) { // you can create custom class inherite or not from class WorkflowExecuter; //if you don’t want to write much code you can extend the class WorkflowExecuter //this method must return List< skyvvasolutions.WorkflowExecuter.FlowDto> System.debug('V3InboundCustomStepProcessing executeWorkflow is invoked'); return new MyWorkflowExecuter(this,inf,iResult).executeWorkFlow(); } global class MyWorkflowExecuter extends skyvvasolutions.WorkflowExecuter{ Public MyWorkFlowExecuter(skyvvasolutions.AbstractIntegrationV3 v3, skyvvasolutions__Interfaces__c inf, skyvvasolutions.IServicesUtil.IMessageResult iResult){ Super(v3,inf, iResult); } } global override skyvvasolutions.IServicesUtil.IMessageResult beforeMapping(skyvvasolutions__Interfaces__c inf, skyvvasolutions.IServicesUtil.IMessageResult iResult) { //you can edit map data before execute mapping; System.debug('V3InboundCustomStepProcessing beforeMapping is invoked'); return iResult; } global override skyvvasolutions.Mapping.MappingResult doMapping(skyvvasolutions__Interfaces__c intf, skyvvasolutions.IServicesUtil.IMessageResult iResult){ //you can load or create mapping by your selft List mapping = new List(); //execute mapping with skyvva class or you can create your class //and execute here, but the result must skyvvasolutions.Mapping.MappingResult System.debug('V3InboundCustomStepProcessing doMapping is invoked'); return new skyvvasolutions.Mapping(this,intf).executeMapping(mapping, iResult); } global override skyvvasolutions.Mapping.MappingResult afterMapping(skyvvasolutions.Mapping.MappingResult mappingResult, skyvvasolutions.IServicesUtil.IMessageResult iResult){ //here is your custom code to change the result System.debug('V3InboundCustomStepProcessing afterMapping is invoked'); return mappingResult; } global override skyvvasolutions.Mapping.MappingResult processMessage(skyvvasolutions__Interfaces__c intf, skyvvasolutions.Mapping.MappingResult mappingResult) { //this is the skyvva standard code System.debug('V3InboundCustomStepProcessing processMessage is invoked'); return skyvvasolutions.AbstractV3OperationProcess.createIntance(this,intf).doExecuteOperation(mappingResult, intf); } global override skyvvasolutions.IServicesUtil.IMessageResult afterMessageProcessing(skyvvasolutions.IServicesUtil.IMessageResult iResult) { System.debug('V3InboundCustomStepProcessing afterMessageProcessing is invoked'); return iResult; } } [/aux_code] When the process start user can change anything or want to add/ remove anything from records then he can add his logic in before class. Every process is executed step by step where we can add our plug in. #### How to use Custom Step Processing class (Inbound Custom Plugin Enhancement)? You need to set properties on Inbound Interface Record: - **Select Custom Processing checkbox.** - **Custom Processing Class**: V3InboundCustomStepProcessing - **Select Any Step:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]** Custom Plug-in to SKYVVA Block Help: **(Selection base on your need) OR **Custom Block to Replace SKYVVA Block Help: **(Selection base on your need)[/aux_code] ![](../images/2020/03/CustInboundProc1.png) **Note 1:You need to must be override createMessage method compulsory.** global override IServicesUtil.IMessageResult**createMessage**(skyvvasolutions.AbstractIntegrationV3.DtoRequestBody dtoRequestBody,skyvvasolutions.AbstractIntegrationV3.DtoStructure dtoStr) { //this method you need to create message //the payload you can get variable dtoRequestBody.payload. //you can see all property of the dto in: skyvvasolutions.AbstractIntegrationV3.DtoRequestBody System.debug('V3InboundCustomStepProcessing createMessage is invoked'); returndoSkyvvaCreateMessage(dtoRequestBody,dtoStr); } ![](../images/2020/03/CustInboundProc.2png.png) **Note 2:If you select Wokflowin Custom Block to Replace SKYVVA Block then executeWorkflowmethod is override.** global override ListexecuteWorkflow(skyvvasolutions__Interfaces__cinf, skyvvasolutions.IServicesUtil.IMessageResultiResult) { // you can create custom class inherite or not from class WorkflowExecuter; //if you don’t want to write much code you can extend the class WorkflowExecuter //this method must return List System.debug('V3InboundCustomStepProcessing executeWorkflow is invoked'); return new MyWorkflowExecuter(this,inf,iResult).executeWorkFlow(); } ** ![](../images/2020/03/CustInboundProc.3png.png)** **Note 3:If you select Mapping in Custom Block to Replace SKYVVA Block then doMappingmethod is override.** global override skyvvasolutions.Mapping.MappingResultdoMapping(skyvvasolutions__Interfaces__cintf, skyvvasolutions.IServicesUtil.IMessageResultiResult){ //you can load or create mapping by your selft List mapping = skyvvasolutions.IServicesUtil.loadMapping(intf.Id); //execute mapping with skyvva class or you can create your class //and execute here, but the result must skyvvasolutions.Mapping.MappingResult System.debug('V3InboundCustomStepProcessing doMapping is invoked'); return new skyvvasolutions.Mapping(this,intf).executeMapping(mapping, iResult); } ![](../images/2020/03/CustInboundProc.4png.png) **Note 4:If you select Operation in Custom Block to Replace SKYVVA Block then processMessagemethod is override.** ** ![](../images/2020/03/CustInboundProc.5png.png)** ** ** global override skyvvasolutions.Mapping.MappingResultprocessMessage(skyvvasolutions__Interfaces__cintf, skyvvasolutions.Mapping.MappingResultmappingResult) { //this is the skyvva standard code System.debug('V3InboundCustomStepProcessing processMessage is invoked'); return skyvvasolutions.AbstractV3OperationProcess.createIntance(this,intf).doExecuteOperation(mappingResult, intf); } ** ** ** ** **Note 5:If you select Before Processing in Custom Plug-in to SKYVVA Blockthen beforeMessageProcessing method is override.** global override skyvvasolutions.AbstractIntegrationV3.DtoRequestBody beforeMessageProcessing(skyvvasolutions.AbstractIntegrationV3.DtoRequestBody dtoRequestBody) { //you can edit or do what you want,but must return type as skyvvasolutions.DtoRequestBody System.debug('V3InboundCustomStepProcessing beforeMessageProcessing is invoked'); returndtoRequestBody; } ** ![](../images/2020/03/CustInboundProc.6png.png)** **Note 6:If you select Before Workflow in Custom Plug-in to SKYVVA Block then beforeWorkflow method is override.** global override skyvvasolutions.IServicesUtil.IMessageResultbeforeWorkflow(skyvvasolutions__Interfaces__cinf, skyvvasolutions.IServicesUtil.IMessageResultiResult) { // edit or update message before execute workflow here System.debug('V3InboundCustomStepProcessing beforeWorkflow is invoked'); returniResult; } ![](../images/2020/03/CustInboundProc.7png.png) ** ** ** ** **Note 7:If you select Before Mappingin Custom Plug-in to SKYVVA Block then beforeMappingmethod is override.** global override skyvvasolutions.IServicesUtil.IMessageResultbeforeMapping(skyvvasolutions__Interfaces__cinf, skyvvasolutions.IServicesUtil.IMessageResultiResult) { //you can edit map data before execute mapping; System.debug('V3InboundCustomStepProcessing beforeMapping is invoked'); returniResult; } ** ![](../images/2020/03/CustInboundProc.8png.png)** **Note 8:If you select BeforeProcessingin Custom Plug-in to SKYVVA Block then afterMapping method is override.** ** ![](../images/2020/03/CustInboundProc.9png.png)** global override skyvvasolutions.Mapping.MappingResultafterMapping(skyvvasolutions.Mapping.MappingResultmappingResult, skyvvasolutions.IServicesUtil.IMessageResultiResult){ //here is your custom code to change the result System.debug('V3InboundCustomStepProcessing afterMapping is invoked'); returnmappingResult; } **Note 9:If you select After Processing in Custom Plug-in to SKYVVA Block then afterMessageProcessing method is override.** ![](../images/2020/03/CustInboundProc.10png-1.png) global override skyvvasolutions.IServicesUtil.IMessageResult afterMessageProcessing(skyvvasolutions.IServicesUtil.IMessageResult iResult) { System.debug('V3InboundCustomStepProcessing afterMessageProcessing is invoked'); returniResult; } ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 6. SOAP Adapter Slug: 4-5-soap-adapter URL: https://help.skyvva.com/#article/4-5-soap-adapter ================================================================================ # 6. SOAP Adapter #### Introduction SOAP is the Simple Object Access Protocol, a messaging standard defined by the World Wide Web Consortium and its member editors. SOAP uses an XML data format to declare its request and response messages. In SKyvva, we have a SOAP Adapter used for data processing of both directions, like Inbound and outbound.  We use SOAP Adapter to Integrate data between Salesforce to systems that have SOAP API. As we knew that SOAP has Request, Response, and Fault Response, there is control by API Structure and different objectives and structures. **SOAP Service ** - Request - Response - Fault Response **Soap request-> Outbound interface** As we have Four elements in Request: - SOAP Header - URL Query Parameter - HTTP Header - SOAP Body **Soap response-> Inbound interface** There are three elements under Response: - Envelope 1.1 Header 1.2 Body **Fault Response -> Inbound interface** There are two elements under Fault Response: - Envelope 1.1 Body ![](../images/2020/03/Untitled10-3.png) **SOAP Template using in SKYvva.** We have SOAP Service that types WSDL Service with three children: Request, Response, and Fault Response. For those children, they have different types like Request is WSDL Request Type, Response is WSDL Response, and Fault Response is WSDL Fault Type. ![](../images/2020/03/24-03-2021-10-06-16.png) In **Request Message Type** is Type **WSDL** **Request**, and It has several elements like First is **SOAP Header** have type **WSDL Header** that contains Sessionheader, and in Session header, it has SessionID. About Session Header and SessionID, we can put type **plaint Structure or none**. Seconds is **URL Query Parameter** has type **WSDL Query Parameter. **The third is **HTTP Header** that has the type** HTTP Header. **The fourth is **SOAP Body **that has type** WSDL Body **that contains** Business data **which type is **Plaint Structure or none. **See the picture below.  ![](../images/2020/03/2.png) In **Response Message Type** is the **WSDL Response type**. It has one element that is **the Envelope message type** has a Type **WSDL Envelope**. In Envelop has Header, type **WSDL Header** and **Body** has **WSDL Body** containing Business data Message Type with **Plain structure** type or none. See the picture below.  ![](../images/2020/03/3.png) In **Fault Response** Message Type is **Type WSDL Fault** and it contains two elements such as **Envelope** has Type **WSDL Envelope**. In Envelop Message Type has **Body** that is **WSDL Body type** and under the Body is **Business Message Type** that is a **plain structure or none type**.  see the picture below. ![](../images/2020/03/4.png) ### Setup: #### Step1: Create an Adapter - First Insert Adapter Record By giving prefer Name and select Type = SOAP - Now Insert Properties:   If Need Authorization - Endpoint: “” , Insert Endpoint URL where Request will direct - Username: “”, Your Endservice UserName - Password: “”, Your Endservice Password - Authentication: “BASIC” Example: : [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] - Type: **SOAP** - Direction: Outbound - Endpoint :  Endpoint of System + /xml Example: https://a1a4577316cc.ngrok.io/xml - Authentication : Basic - Operation : Post - Username: e … admin - Password : e … 12345 - Resquest Format: application/xml - Response Format: application/xml [/aux_code] We can handle if the business has **URL Query Parameter** and **HTTP Header** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] URL Query Parameter : ?pCity={!City}&pCountry={!Country} HTTP Header : Content-Type:Application/xml|{!LastName}:{!FirstName} [/aux_code] ![](../images/2020/03/10.png)![](../images/2020/03/11.png) #### Step2: Create Metadata **Now, Insert the METADATA record By giving prefer details.** In Skyvva, when we create metadata, the Name field is only a mandatory field. On MetaData the Name cannot be duplicated. ![](../images/2019/07/Untitled1.png) #### Step3: Create Istructure repository ![](../images/2019/07/Untitled2.png) #### Step4: Create Message Type For the Message Type, you have to use our defined Structure Defined Structure. -Here is SOAP template created by Message Type for build xml payload: **Message Type Name** **TYPE** MessageType: Google SOAP Service WSDL Service MessageType: **Request** WSDL Request MessageType : URL Query Parameter WSDL URL Query Parameter MessageType : SOAP Header WSDL Header MessageType : HTTP Header HTTP Header MessageType: SOAP Body  WSDL Body MessageType :** Response** WSDL Response MessageType : Envelope WSDL Envelope MessageType : SOAP Header WSDL Header MessageType : SOAP Body WSDL Body MessageType : **Fault** WSDL Fault MessageType : Envelope WSDL Envelope MessageType : SOAP Body WSDL Body Here's a sample SOAP Message Type we can use by using the Import Metadata provider function. [SOAPVersion2_skyvvasolutions__MetaDataProvider__c (21)](../images/2020/03/SOAPVersion2_skyvvasolutions__MetaDataProvider__c-21.txt) Step2: Create message type for SOAP template **Manual  create message type for SOAP template** - **To create Metadata Provider.** - To Create ** Istructure Repository.** - Go to Istructure **Repository and click on "New message Type" button.** ![](../images/2020/03/SoapmsgType2.png) ![](../images/2020/03/SoapmsgType4.png) Once we Save this Message type is created. ![](../images/2020/03/SoapmsgType5.png) Now create all child message types. Create IStructure for it and Message field Entry in each message type. #### Step5. Create Integration. Refer  tutorial (How to create integration.) - Link adapter we created earlier - Max Number of Retry (This means a number of times should we retry if the request fails the first time). ![](../images/2019/07/Untitled5-1.png) **Step6. Create Interface (Inbound/Outbound). Refer tutorial to create Interface**. ([How to create Interface?](#article/1-what-is-an-interface-and-how-to-create-it)) **Create outbound Interface for request** Must fill this fields of Outbound Interface : 1.     Outbound Adapter: Select we created earlier 2.     Metadata Provider: Select we created earlier 3.     IStructure Repository: Select created iStructure Repo. 4.     MessageTypes: Select MessageType (Selected MsgType TYPE should always be WSDL REQUEST) 5.     Source/Target Name:  Select Any Object 6.     Query: Query needs to be inserted and the query should always include all fields we have mapped or going to map. 7.     Map Fields ![](../images/2020/03/5-1.png) Do mapping for Request. Here's Example. ![](../images/2020/03/8.png) #### Create an inbound Interface for response We must fill these fields: - Inbound Adapter: Select we created earlier - Metadata Provider: Select we created earlier - IStructure Repository: Select created IStructure Repo. - MessageTypes: Select MessageType (Selected MsgType TYPE should always be SOAP RESPONSE) - Source/Target Name:  Select Any Object. ![](../images/2019/07/Untitled7.png) Do mapping for a response Interface. Here's an example of mapping ![](../images/2020/03/9.png) We have to link this inbound interface with our outbound interface which is a responsive interface. #### How to link request and response Interface? Follow the given step to link the request and response interface. - Go to an outbound interface. Scroll down the page until the outbound setup section. - Edit the response interface field and select the inbound interface id. - Save the changes. ![](../images/2020/03/6.png) Now go to our inbound interface -> scroll down the page to mapping section and map the fields with Skyvva mapping tool. - To get a response from endpoint you should have data at endpoint (Soap API which you called) For example if you have data like: - Now callout the data with a developer console. - Go to developer console and enter this code to Execute Anonymous window. - Go to the developer console and enter this code to Execute Anonymous window. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011x00001FPNWBAA5'}; //ID of sObject Listresult=skyvvasolutions.Iservices.invokeCalloutV3('SOAP-Integration','Request',ids,'SYNC',c); Here In ids, We have to insert Record id of Target Object and  first parameter in the method should pass Integration Name and second will be the interface name as we have here Integration Name = 'SOAP INTEGRATION' Interface Name = 'SOAP_RESPONSE' Here's Example ![](../images/2020/03/7.png) - Execute the callout and check the result on message monitoring. - Go to Integration detail page -> click on Messages ![](../images/2019/01/soapr_9.png) ![](../images/2019/01/SaopR_8.png) Follow this link [#article/97-enhancement-handling-fault-message-with-v3](#article/97-enhancement-handling-fault-message-with-v3) to learn more about Fault SOAP. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 9. Set Context is a new function for the mapping to support hierarchical data mapping. Slug: 16-8-set-context-is-a-new-function-for-the-mapping-to-support-hierarchical-data-mapping URL: https://help.skyvva.com/#article/16-8-set-context-is-a-new-function-for-the-mapping-to-support-hierarchical-data-mapping ================================================================================ # 9. Set Context is a new function for the mapping to support hierarchical data mapping. We have a new function for mapping which supports hierarchical data mapping. The new function is "Set Context". The use of a set context is that we can change the hierarchy level in the mapping so that we can easily map it to the target interface. It is used in Inbound processing only. This chapter will show how it works and how you can make use of it. #### How to use "Set Context" for hierarchical mapping:- **Pre- Requisite:-** - Create Integration. - Create Inbound Interface. - Create a metadata provider. **Step 1:-** - Add metadata provider, Repository and message type as shown in the given picture below:- ![](../images/2020/03/context1.png) **Step 2:-** - Open Mapping. - Here first we need to understand why we need to set context level. Like we can see that contact is the third level on the source side. So we need to map it to the same level but Contact(AccountId) is on the second level on the target side. At this time if we map the third level to the second level we will see an error as shown in the picture given below. ![](../images/2020/03/context3.png) - Now we can deal with this issue with the help of "context level". - We will set context level on contact as shown in the picture given below. - Right-click on contact. ![](../images/2020/03/context2-1.png) - Click on the context level.![](../images/2020/03/context4.png) - Select Account02 and here we have filer in which we can add a condition to find one record we want to use to map. Click on ok as shown in the picture given below:- ![](../images/2020/03/newsetcontext.png) - Now map Account02 from the source side to contact(AccountId) from the target side. As we set the context level so now Contact changed to the second level and belongs to Account02 and the fields of Contact is also belonged to the second level Account02. Shown in the picture given below. ![](../images/2020/03/context6.png) - Save the mapping. **Step 3:-** - Go to manual load. - Manually load data and select XML HIERARCHY as a data type. ![](../images/2020/03/context9.png) - Check the result on message monitoring:- ![](../images/2020/03/context8.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Contact(AccountId), No Foreign key could generated. Please select external Id fields to use with foreign key. If there are no external Id fields then make sure you use vlookup to link the object.[/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 12. How to build Path,Query and Header Parameter in Rest Adapter? Slug: 4-11-how-to-build-the-dynamic-url-parameter-for-the-soap-rest-adapter URL: https://help.skyvva.com/#article/4-11-how-to-build-the-dynamic-url-parameter-for-the-soap-rest-adapter ================================================================================ # 12. How to build Path,Query and Header Parameter in Rest Adapter? **Path Parameter** **Path parameters** are variable parts of a URL **path**. They are typically used to point to a specific resource within a collection, such as a user identified by ID. A URL can have several **path parameters**, each denoted with curly braces { } **Query Parameter** *Query parameters* are a defined set of *parameters* attached to the end of a *url*. They are extensions of the *URL* that are used to help define specific content or actions based on the data being passed **Header** **Parameters** included in the request **header**, usually related to authorization ![](../images/2020/03/rest2-1.png) **There are two type of parameter:** - Static parameter - Dynamic parameter **Static Parameter** In case of  static Path Parameters, static Query parameters, static Headers we can set directly from  the Rest Adapter Properties. ![](../images/2020/03/Capture.png) your URL will be generated like example:http://test.salesforce.com/Rest/Service/path1??Id=test&Uname=Account1 **Dynamic Parameter:** In case of dynamic Path Parameter and dynamic Query Parameter and dynamic Header means value comes from the business sObject like Account**.** follow the  adapter screen how to set dynamic path, query, and header variable inside adapter screen properties: **There are 2 ways to set the Parameter:** 1)value comes from the Map variables. 2)value comes from the salesforce sObject example: Account ![](../images/2020/03/rest3.png) ### 1)value comes from the Map variables: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]Map pathParam = new Map(); pathParam.put('UId','/rest/get'); pathParam.put('SobjCode','/service'); Map queryParam = new Map(); queryParam.put('UName','Account1'); queryParam.put('RecId','R01'); Map headerParam = new Map(); headerParam.put('AuthPermission','All'); headerParam.put('AuthId','A01');[/aux_code] [su_box title="Note" box_color="#2a8af0" title_color="#000000"]when user set map variables then they need to set map variables during callout time.[/su_box] [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; **c.pathParam = pathParam; c.queryParam = queryParam; c.headerParam = headerParam;** String[] ids= new String[]{'0013E000019UnjEQAS'}; //Account Id skyvvasolutions.Iservices.invokeCalloutV3('Test_Integration','Test_Interface',ids,'SYNC',c);[/aux_code] ### 2)Value comes from the salesforce sObject: Here we are taking Account sObject example. We have to use Skyvaa mapping tool nd value come from the Source/Target Name object. Here we are passing account Id during callout and contact is a child object of account then contact sObject fields are not used as a query, path, and header parameter. ![](../images/2020/03/rest4.png) Mpping tool looks like: ![](../images/2020/03/rest5.png) If the the parent sobject is an account then we have o map the path parameter with account sobject. ![](../images/2020/03/rest6.png) In case of static Path Parameters, static Query parameters, static Headers we can set directly to the Rest Adapter Properties. #### Updated with New Way Dynamic Header, Dynamic Query Parameter and Dynamic Path Parameter #### Comparison #### Old Way: (key and value both are replacing) #### New Way: (replacing only value key is static when we are using dynamic query and header parameter) **Adapter property:** **Header:** {!authorizationCode} replacing key and value in apex side base on mapping **Adapter Property** **Header:** authorizationCode = {!authorizationCodeValue} authorizationCodeValue is coming from the mapping. Replacing only value in apex side base on mapping authorizationCode = Basic adasdnasjkdn213123123 **Actual value:** **Header :** authorizationCode = Basic adasdnasjkdn213123123 **Actual value:** **Header:** authorizationCode = Basic adasdnasjkdn213123123 **REST URL Path Parameter:** /{!Path1}/{!Path2} Path1 and Path2 value is coming from the mapping. **REST URL Path Parameter:** /{!Path1}/{!Path2} Path1 and Path2 value is coming from the mapping. **Actual value:** REST URL Path Parameter: /rest/service **Actual value:** REST URL Path Parameter: /rest/service **REST URL Query Parameter:** ?{!Name}&{!City} Name and City is coming from the mapping. **REST URL Query Parameter:** ?Name={!NameValue}&City= {!CityValue} NameValue and CityValue is coming from the mapping. Replacing only value in apex side base on mapping **Actual value:** REST URL Path Parameter: ?Name=account1&City=abc **Actual value:** REST URL Path Parameter: ?Name=account1&City=abc ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 13. SOAP template message type Slug: 4-12-soap-adapter URL: https://help.skyvva.com/#article/4-12-soap-adapter ================================================================================ # 13. SOAP template message type It is important for web applications to be able to communicate over the Internet. The best way to communicate between applications is over HTTP, because HTTP is supported by all Internet browsers and servers. SOAP was created to accomplish this. A SOAP message is an XML format containing the some specific elements I,e **Envelope, Header and Body.** **What is the soap template message type?** To secure our data transmission system need specific formatted data.  In Skyvva we have specific soap template message type contains URL, header body. We have different template for request and response. . As we have three element in Request: , - URL Query Parameter - SOAP Header - HTTP Header - SOAP Body As we have two element in Response - Envelope - SOAP Header - MessageType So , when we get response and we will get both header and body so based on mapping we will perform DML operation for the data we got in response. **Message Type Name** **TYPE** MessageType: Google SOAP Service WSDL Service MessageType: **Request** WSDL Request MessageType : URL Query Parameter WSDL URL Query Parameter MessageType : SOAP Header WSDL Header MessageType : HTTP Header HTTP Header MessageType: SOAP Body  WSDL Body MessageType :** Response** WSDL Response MessageType : Envelope WSDL Envelope MessageType : SOAP Header WSDL Header MessageType : SOAP Body WSDL Body MessageType : **Fault** WSDL Fault MessageType : Envelope WSDL Envelope MessageType : SOAP Body WSDL Body **soap template message type** A SOAP  request message is an XML format containing the some specific elements as: We have SOAP Service that types WSDL Service with three children: Request, Response, and Fault Response. For those children, they have different types like Request is WSDL Request Type, Response is WSDL Response, and Fault Response is WSDL Fault Type. ![](../images/2020/03/24-03-2021-10-06-16.png) In **Request Message Type** is Type **WSDL** **Request**, and It has several elements like First is **SOAP Header** have type **WSDL Header** that contains Sessionheader, and in Session header, it has SessionID. About Session Header and SessionID, we can put type **plaint Structure or none**. Seconds is **URL Query Parameter** has type **WSDL Query Parameter. **The third is **HTTP Header** that has the type** HTTP Header. **The fourth is **SOAP Body **that has type** WSDL Body **that contains** Business data **which type is **Plaint Structure or none. **See the picture below.  ![](../images/2020/03/2.png) In **Response Message Type** is the **WSDL Response type**. It has one element that is **the Envelope message type** has a Type **WSDL Envelope**. In Envelop has Header, type **WSDL Header** and **Body** has **WSDL Body** containing Business data Message Type with **Plain structure** type or none. See the picture below.  ![](../images/2020/03/3.png) In **Fault Response** Message Type is **Type WSDL Fault** and it contains two elements such as **Envelope** has Type **WSDL Envelope**. In Envelop Message Type has **Body** that is **WSDL Body type** and under the Body is **Business Message Type** that is a **plain structure or none type**.  see the picture below. ![](../images/2020/03/4.png) This is the request message type: SOAP **URL** Parameter : The Simple Object Access Protocol (SOAP) endpoint is a URL. It identifies the location on the built-in HTTP service where the web services listener listens for incoming request.  There are two URL parameter: - Path parameter: - Query parameter: But we support only Query parameter: For example, [https://www.example.com/{herewillbeparametername}/xml?{test}](https://www.example.com/%7Bherewillbeparametername%7D/xml?{test}) Here we can see the Question mark in above URL, So before ? mark we have path parameter and after question mark we have query parameter and parameter name exactly same as we inserted in messageType. **SOAP Header** : The optional SOAP Header element contains application-specific information (like authentication, payment, account id etc) about the SOAP message.If the Header element is present, it must be the first child element of the Envelope element. It Contains any optional attributes of the message used in processing the message, either at an intermediary point or at the ultimate end-point. It can be hierarchical. SOAP **Body :** The SOAP body is a mandatory element that contains the application-defined XML data being exchanged in the SOAP message. The body must be contained within the envelope and must follow any headers that might be defined for the message. The body is defined as a child element of the envelope, and the semantics for the body are defined in the associated SOAP schema.The body contains mandatory information intended for the ultimate receiver of the message. It can be hierarchical. We support hierarchical body and generate chained interface. For example − fields of account object: - Name - BillingCity - BillingCountry How to create Message Type? There are different ways to create message type from IStructureRepository: - Import Metadata - Open Editor - Manually create New Message Type. ![](../images/2020/03/Untitled1-2.png) #### Import MEtadata: Skyvva support different file formats(xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x) to create message type.  Upload button  automatically create a hierarchical structure like msgtype Istructure  from hierarchical file. #### Pre-requisite: **To create Metadata Provider.** To Create ** Istructure Repository.** Go to Istructure **Repository and click on "Upload File" button.** #### **Select file format which you want to upload.** #### #### 2. Open Editor **To create Metadata Provider.** To Create ** Istructure Repository.** Go to Istructure **Repository and click on "Open Editor" button.** ![](../images/2020/03/SoapmsgType1.png) ![](../images/2020/03/Untitled4-4.png) #### 3. Manually Create message type: - **To create Metadata Provider.** - To Create ** Istructure Repository.** - Go to Istructure **Repository and click on "New message Type" button.** ![](../images/2020/03/Untitled5-3.png) ![](../images/2020/03/SoapmsgType4.png) Once we Save this Message type is created. ![](../images/2020/03/SoapmsgType5.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Soap adapter required specific template in which every message type should have fixed TYPE. For example, MessageType: **Request**   and its TYPE:   **WSDL Request **[/su_box] We will going to create follwing type of Message Type for build xml payload: Message Type Name TYPE MessageType: Google SOAP Service WSDL Service MessageType: Request WSDL Request MessageType : URL Query Parameter WSDL URL Query Parameter MessageType : SOAP Header WSDL Header MessageType : HTTP Header HTTP Header MessageType: SOAP Body  WSDL Body MessageType : Response WSDL Response MessageType : Envelope WSDL Envelope MessageType : SOAP Header WSDL Header MessageType : SOAP Body WSDL Body MessageType : Fault WSDL Fault MessageType : Envelope WSDL Envelope MessageType : SOAP Body WSDL Body ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 11. New plug-in custom logic of the out bound processing Slug: 7-10-new-plug-in-custom-logic-of-the-out-bound-processing URL: https://help.skyvva.com/#article/7-10-new-plug-in-custom-logic-of-the-out-bound-processing ================================================================================ # 11. New plug-in custom logic of the out bound processing SKYVVA provide completely powerful  processing way with new Version3  and allow for significant *flexibility. **New plug-in custom logic *** is normally refers to the processing which will give the ability for the solution to adapt to possible  changes in your requirements. If user doesn't want to use our existing class and want to create his own class then he can add custom block. User can extend our existing class. ![](../images/2020/03/CustProc1.png) The picture shows the different location where the user can add their own logic. The green flow represents the standard processing flow without any custom enhancement. - The process is started normally by a custom apex which invokes the method 'invokeCallout2()'. The method invokeCallout2() initiate the outbound processing flow with the four steps shown with the green block and flow. - The second step is the mapping block. Mapping processing by default, mapping result of each message that is specified message-field as key. - The third step is the new step 'Workflow'. The new steps in the processing flow where we add the step/block 'Workflow' to do the receiver routing before we send the data. - The fourth step is the final step in the processing flow and contain the operation, for example, to send the data to a receiver. **Custom Processing Class**: V3OutboundCustomStepProcessing **Plug-in custom block before or after Skyvva step (Selection base on your requirement)** Define the time and location where wecan chose to add our custom logic. Our custom logic can be apex class,flow or process. Your customer logic will be executed at the chosen time additinally ti the skyvvva processing Unit. In contrast to the custom block where the customer completely replaces the whole skyvva step by their own block here there is no need to replace but to plug-in custom logic before or after the skyvva standard block. We have the following plug-in block which could make sense: - Before Mapping - Before Workflow - Before Operation - After Processing **Replacement Skyvva step by custom block** Name of the SKYVVA standard processing block which is used in the Inbound andoutbound message processing. The blue color flow and block show the position where the customer can replace their own logic of the skyvva standard step. Each of the four steps can be replaced by a corresponding custom block which can be an apex class.  We  have different configuration combining through the skyvva standard and custom replacement block. for examples, customer adds their processing by replacing the skyvva standard step. In the Case 1e customer have the own block for the first step e.g. how to query additional data for the sObject Id passed through the method invokeCallout2(). The other 3 blocks are the skyvva standard block. In case2 customer replace step 3 by their custom block and do the workflow processing in apex code based on the special requirement. In case3 customer replace two steps e.g. step 2 and 4 to build their own logic for the mapping and operation step. These are just three examples and another combination is possible based on the customer requirement.) **Mixed case with custom replacement + plug-in block** ![](../images/2020/03/CustProc2.png) The above examples show the different type of custom logic enhancement to the skyvva standard step. The first possibility is to replace the whole skyvva step e.g. processing block. The second possibility is to add plug-in logic to the skyvva step/block. Combining these two type we have the mixture use case. Here we can define plug-in logic not only for the skyvva standard but also for the custom block. The Case1, shows that we have the custom block 'Custom Query Data' and the plug-in block 'Before Mapping'. Furthermore, we don't use the standard skyvva block 'Operation' but replace it by the custom block 'Custom Operation' and have the before and after plug-in logic, e.g. 'Before Operation' and 'After Processing'. In Case2 we replace the skyvva block 'Mapping' by the custom block 'Custom Mapping' and have plug-in block before and after the skyvva step 'Operation'. #### How to create Custom class? A **Custom Class** is a developer defined **class**. If user doesn't want to use our existing class and want to create his own class then he can add custom block. User can extend our existing class. Go to set up ->  Search for Apex class -> Create new apex class. ![](../images/2020/03/CustProc4.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Accessing any class and sObject in SKYVVA’s package must be prefixed by namespace **skyvvasolutions**.[/su_box] Use the following **Custom Processing Class**: V3OutboundCustomStepProcessing; [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] global class V3OutboundCustomStepProcessing extends skyvvasolutions.V3OutboundStepProcessing{ /* //Custom Query Operation global override List query(String soql, List ids){ //Custom Logic System.debug('V3OutboundCustomStepProcessing query method invoked'); List lst=new List(); return lst; } */ //Before Mapping global override IServicesUtil.IMessageResult beforeMapping(IServicesUtil.IMessageResult mr){ //Custom Logic System.debug('V3OutboundCustomStepProcessing beforeMapping method invoked'); return mr; } /* //Custom Mapping Operation global override Map> executeMapping(IServicesUtil.IMessageResult mr, List listMapping){ //Custom Logic System.debug('V3OutboundCustomStepProcessing executeMapping method invoked'); Map> mX=new Map>(); return mX; } */ //Before WorkFlow global override IServicesUtil.IMessageResult beforeWorkFlow(IServicesUtil.IMessageResult mr, Map> mapResult){ //Custom Logic System.debug('V3OutboundCustomStepProcessing beforeWorkFlow method invoked'); return mr; } /* //workflow step global override IServicesUtil.IMessageResult executeWorkFlow(IWorkFlow__c wf, IServicesUtil.IMessageResult mr, Map> mapResult) { //Custom Logic System.debug('V3OutboundCustomStepProcessing executeWorkFlow method invoked'); IServicesUtil.IMessageResult mrX=null; return mrX; } */ //Before Operation global override void beforeOperation(List msgTrees){ //Custom Logic System.debug('V3OutboundCustomStepProcessing beforeOperation method invoked'); } /* //Custom Operation global override V3OutboundUtils.Response executeOperation(Adapter__c adapter, List msgTrees){ //Custom Logic System.debug('V3OutboundCustomStepProcessing executeOperation method invoked'); V3OutboundUtils.Response response; return response; } */ //After Operation global override void afterOperation(V3OutboundUtils.Response response){ //Custom Logic System.debug('V3OutboundCustomStepProcessing afterOperation method invoked'); } } [/aux_code] When the process start user can change anything or want to add/ remove anything from records then he can add his logic in before class. Every process is executed step by step where we can add our plug in. **V3OutboundStepProcessing methods** **Description** **query**(String soql, List ids) Return **List **that is based on query and given record ids beforeMapping(IServicesUtil.IMessageResult mr) It will be executed if interface is setting <**Custom Plug-in to SKYVVA Block**: **Before Mapping**>, return **skyvvasolution. IServicesUtil.IMessageResult **which contains list message and map of source data the in the ordered index. Those objectes should be cloned to bypass the reference of **executeMapping**(IServicesUtil.IMessageResult mr, List listMapping) Mapping processing by default, it returns **Map> **, that is mapping result of each message that is specified message-field as key beforeWorkFlow(IServicesUtil.IMessageResult mr, Map> mapResult) It will be executed if interface is setting <**Custom Plug-in to SKYVVA Block**: **Before WorkFlow**>, return **skyvvasolutions.IServicesUtil.IMessageResult**, it should be cloned to bypass referenced change in the given of parameter **executeWorkFlow**(IWorkFlow c wf, IServicesUtil.IMessageResult mr, Map> mapResult) A target interfaces could have an apex class for the logic to filter messages before execution of its adapter operation. **skyvvasolutions.IServicesUtil.IMessageResult **is a filter result for building the request payload for a specific interface. beforeOperation(List msgTrees) It will be executed if interface is setting <**Custom Plug-in to SKYVVA Block**: **Before Operation**>. It return nothing **exe** **cuteOperation**(Adapter c adapter, List msgTrees) Executing the apex class that has been implemented for specify adapter type such as SOAP or REST, a custom operation class that is setting on interface (Operation: Custom Apex Class). It should be returned the object **skyvasolution.V3OutboundUtils.Response** afterOperation(V3OutboundUtils.Response response) It is execute after operation and return nothing. <**Custom Plug-in to SKYVVA Block**: **After Processing**> [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Due to DML does not allow to execute before invoke callout from salesforce. So the DML cannot be executed in those steps before the step operation (**executeOperation**), yet if interface has defined some workflows routes the message to different target outbound interfaces, the DML can’t execute in all steps because the API will execute other target interface in the next workflow.[/su_box] #### Adapter: Outbound adapter is needed to push data from salesforce to the external system. We need create an adapter before Interface then we can set adapter to use with interface. There are different adapter available with skyvva. ![](../images/2020/03/CustProc3.png) **V3OutboundStepProcessing methods/attributes** **Description** **execute**(Adapter c adapter, List msgTrees) It is required to override in implement to sending the request (callout), and the return type should be object of skyvvasolutions.V3OutboundUtils.Response if interface outbound has contained inbound response interface. getProperties(Adapter c adapter) Return map as pairs of key-value of adapter’s property such as username, password, endpoint, … **executeInbound**(V3OutboundUtils.Response response) It should be overridden if doing inbound processing or execute and DML after callout. interfaceOut skyvvasolutions Interfaces c mappings List inputParam skyvvasolutions.CallOutControl, the parameters are passing from the caller outResponse skyvvasolutions.CalloutResponse, the data that response to the caller (i.e http-response such as JSON, XML) #### Pre-requisite: - Create custom class. - Create Rest/Soap Adapter. - Create message type as per template. - Create Integration. ![](../images/2020/03/CustProc9.png) - Create outbound Interface ![](../images/2020/03/screencapture-innovation-velocity-1972-dev-ed-lightning-force-lightning-r-skyvvasolutions-Interfaces-c-a0a1X000000gRemQAE-view-2020-03-31-17_35_59.png) #### How to use Custom Step Processing class (Outbound Custom Plugin Enhancement)? You need to set properties on Inbound Interface Record: - **Select Custom Processing checkbox.** - **Custom Processing Class**: V3OutboundCustomStepProcessing - You need to set two properties on Interface Object:**Operation Type**: Apex ClassAnd **Operation Type Apex Class: **V3OutboundCustomOperation **       4. Select Any Step:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Custom Plug-in to SKYVVA Block Help: **(Selection base on your need) OR **Custom Block to Replace SKYVVA Block Help: **(Selection base on your need) [/aux_code] ![](../images/2020/03/CustProc6-1.png) 5. Go to mapping page. And Do mapping.![](../images/2020/03/CustProc10.png) 6.  Go to Developer console and callout. ![](../images/2020/03/CustProc11.png) Execute the following code: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011X00000U5rygQAB','0011X00000U5ryhQAB'}; skyvvasolutions.Iservices.invokeCalloutV3('Your Integration Name','Your Interface Name',ids,'SYNC',c); [/aux_code] 7. You can check the result on message monitoring. ![](../images/2020/03/screencapture-innovation-velocity-1972-dev-ed-lightning-force-lightning-r-skyvvasolutions-Integration-c-a0W1X000001K50eUAC-view-2020-03-31-17_58_30.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 10. Where to write Formula in mapping? Slug: 16-9-where-to-write-formula-in-mapping URL: https://help.skyvva.com/#article/16-9-where-to-write-formula-in-mapping ================================================================================ # 10. Where to write Formula in mapping? We have a new function to write a Formula. So in this unit, we will come to know where and how we can write a formula in a mapping. #### How to write Formula in mapping:- **Pre- Requisite:-** - Create Integration. - Create Inbound Interface. - Create a metadata provider. **Step 1:-** - Add metadata provider, Repository and message type as shown in the given picture below:- ![](../images/2020/03/context1.png) **Step 2:-** - Open Mapping. - If we want to write a formula for Account object then we need to map the "functions" field from the Account source side to the fields from the account target side on which we wanted to add formula. Check the picture given below. ![](../images/2020/03/function.png) - Now we can see the screen which will open after the mapping of functions to the field. On the screen we can add formula according to our needs. As shown in the picture given below. ![](../images/2020/03/function1.png) - We can test the formula and save it. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 11. How are attributes handle in the hierarchical mapping for xml payload? Slug: 16-10-how-are-attributes-handle-in-the-hierarchical-mapping-for-xml-payload URL: https://help.skyvva.com/#article/16-10-how-are-attributes-handle-in-the-hierarchical-mapping-for-xml-payload ================================================================================ # 11. How are attributes handle in the hierarchical mapping for xml payload? In this section, we will see how we support the attributes handle in the hierarchical mapping for XML payload. We need to save the attribute mapping to the imapping record. To be able to distinguish that the field is an attribute field we can put as source name as a prefix the element name concatenate with the sign '@' e.g. ID@accountingEntity or ID@location. Attribute make only sense when we import XML data. The attribute we don't have when we use the data format JSON. #### How we can use it:- **Pre-Requisite:-** - Create Integration. - Create Interface. - Create Metadata Provider. - Create XML Adapter. - While creating istructure we need to select attribute as shown in the picture given below:- ![](../images/2020/04/att6-1.png) - Add metadata provider, Repository and message type. ![](../images/2020/04/att-3.png) - Please check mapping here element name is concatenated with the sign '@'. ![](../images/2020/04/att1.png) - Add XML Adapter, as shown in the picture given below:- ![](../images/2020/04/att2.png) - Open agent and do configuration as shown below:- ![](../images/2020/04/att3.png) - Test integrate and process and then save it. As shown below. ![](../images/2020/04/att4.png) - Check message monitoring:- ![](../images/2020/04/att5.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Bulk Processing Title: 2. The different bulk mode (swing UI) Slug: 18-1-the-different-bulk-mode URL: https://help.skyvva.com/#article/18-1-the-different-bulk-mode ================================================================================ # 2. The different bulk mode (swing UI) In **SKYVVA**, the bulk-loading option increases the performance of a session where huge volumes of data are involved. During bulk loading, the Integration Service bypasses the database log, which results in performance improvement. Without writing to the database log, however, the target database cannot perform a rollback. While using bulk loading, the need for improved session performance must be weighed against the ability to recover an incomplete session. The Data Integration Service can use the **SKYVVA** Bulk API to write data to sObjects. Use the Bulk API to write large amounts of data to Salesforce with a minimal number of API calls. User can use the Bulk API to write data to Salesforce targets with Salesforce API. With a Bulk API write, each batch of data can contain up to 10,000 records or one million characters of data in CSV format. When the Data Integration Service creates a batch, it adds required characters such as, quotation marks around text, to format the data. User can configure a Bulk API target session to load batches serially or in parallel. By default, the data load is in parallel mode, but you can override the data load to serial mode. User can also monitor the progress of batches in the session log. To configure a session to use the Bulk API for Salesforce targets, select the Use **SKYVVA** Bulk API session property. When user selects this property, the Data Integration Service ignores the Max Batch Size session property. #### SKYVVA Bulk Interface Processing SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When the user has much data, using Bulk Interface Processing is necessary (over **5000** records). Before configuring Bulk Interface Processing, the user has to know about the parameters: **BULK Mode:** Check this flag if you want to run interface in a bulk mode using Salesforce BULK API. **Bulk Version:** We support SFDC pure bulk mode in version 1.0 or 2.0. Then we have our own SKYVVA bulk mode. This uses SKYVVA workflow and mapping and thus is more powerful but slower than the pure bulk API technique from Salesforce. This one is SKYVVA’s own bulk mode. **Bulk Processing Mode:** This field indicates the two-mode, which is support with bulk version 1.0. With bulk, version 2.0 only parallel mode is supported. Therefore, the value here depends on the selection of the field bulk version e.g. when we want to use ‘Serial’ then we needs to choose ‘Bulk V 1.0’. There are two modes which are: ![](../images/2020/04/Bulk-mode1-1.png) - In figure we showing SKYVVA BULK Processing mode which include Parallel and series mode. **Parallel:** When you select this processing mode, it will run parallel. **Serial:** When you select this mode, it will not run at the same time. **Bulk Package Size:** This parameter determines how many records are split into Bulk data size. If your Message contains **10.000** records and the value for this parameter is 1000 so the user will get 10 bulk data set in Salesforce. **Bulk Monitor Keep Size:** The number of bulk executes logs to be kept. **Bulk Search Frequency:** This is the schedule time frequency for the bulk scheduler on the interface. Bulk Integrate Time Interval (minute): The interval (minutes) used to integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. #### Bulk Mode In Bulk Mode, the Integration services bypass the database logs during job run for improved performance.   There are two options of bulk mode, which is including SKYVVA bulk and SFDC bulk. The following section will be explained more detail about these two modes. - ** SKYVVA Bulk** - ** SFDC Bulk** ![](../images/2020/04/Bulk-mode2.png) #### SKYVVA Bulk Mode In SKYVVA Bulk Mode user can create upsert, update, insert, and query, query All, pullQuery or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data over a **5000** records. SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use the SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing modes, which is Parallel and Serial. The default value is Serial. ![](../images/2020/04/Bulk-mode3.png) #### Advantages - The major advantage of using **SKYVVA** bulk load is in the significant improvement of performance. Especially in the large volume table, bulk loading speeds up the process. - If the **SKYVVA** job fails, the recovery is not possible due to the bypass of database logs. The only option during job failure is truncate and reprocess. #### SFDC Bulk Mode We support SFDC pure bulk mode in version 2.0 that is very fast but cannot use the SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk requires the data has to be mapped already on the sender side and doing the additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. In SFDC Bulk Mode user can create update, or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data from a few thousand to millions of records. ![](../images/2020/04/Bulk-mode4.png) #### Difference Between SKYVVA Bulk and SFDC Bulk Mode? **SKYVVA Bulk Mode** **SFDC Bulk Mode** In SKYVVA Bulk Mode user can create upsert, update, insert, and query, query All, pullQuery or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data over a **5000** records. In SFDC Bulk Mode user can create update, or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data from a few thousand to millions of records. **Monitoring in Bulk Control Board:** As user did integrate, your data you might want to check or monitor if all your data are successfully integrated. To monitor bulk data. There are three orders to monitor bulk processing: **Bulk Data Inbox : **When data pushed from the client using Bulk API, that will appear in this section **Bulk Data Processing: **Bulk Data Processing is using to store data that are processing**.** **Bulk Monitor: **User can monitor the total records of attachments, total batch and batches that had processed. **Monitoring Bulk Data Load Jobs:** Process a set of records by creating a job that contains data that will be processed asynchronously. The job specifies which object is being processed and what type of operation is being used. Indexes, constraints, auto-generated features can be available in table level during the job run. **Operations:      ** The processing operation for all the batches in the job. The valid values are: - delete - insert - query - queryall - upsert - update It support SFDC **BulkV1.0,SFDCV2.0** for all Job Type **Operations:      ** The processing operation for all the batches in the job. The valid values are: - delete - insert - query (Bulk V1 type jobs only) - queryall(Bulk V1 type jobs only) - upsert - update hardDelete (Bulk V1 type jobs only) It also support BulkV2 for some Job Type #### Use case to Use Bulk Mode **Using SKYVVA Bulk version** - Create Integration - Create Interface ![](../images/2020/04/Bulk-modeUC1.png) - Click on Interface - Scroll down to Bulk Setting section - Check flag of BULK Mode - Select **SKYVVA Bulk1.0** valuefrom picklist - Save ![](../images/2020/04/Bulk-modeUC2.png) - Scroll down to Source Definition section - Choose file & Save ![](../images/2020/04/Bulk-modeUC3.png) - Click on Open Mapping Button ![](../images/2020/04/Bulk-modeUC4.png) - Select Ext Id - Save **Process data with Agent** Go to **SKYVVA** Agent configure with your Salesforce Org. Which is obvious - Select Integration Name - Select SKYVVA Bulk Interface - Click on Edit Interface ![](../images/2020/04/Bulk-modeUC5.png) ![](../images/2020/04/Bulk-modeUC6-1.png) - Select File Folder - Write File Name - Click on Test Query - Save ![](../images/2020/04/Bulk-modeUC7.png) - Select your Interface **SKYVVA Bulk** - Click on Process button ![](../images/2020/04/Bulk-modeUC8.png) - Process Completed - Click ok button ![](../images/2020/04/Bulk-modeUC9.png) Go back to your Salesforce Org. - Go to Integration Detail page - Click on Bulk Control Board ![](../images/2020/04/Bulk-modeUC10.png) - Drop down and select your Inbound Interface - Click on Search button - Now click on timer logo ![](../images/2020/04/Bulk-modeUC11.png) - Set Time Interval lets say 2 min. - Save ![](../images/2020/04/Bulk-modeUC12.png) - Click on Action button and start Scheduler - See message pop up in dialogue box Bulk Schedule Job is running ![](../images/2020/04/Bulk-modeUC13.png) - See Bulk Data Inbox shows total no. of records ![](../images/2020/04/Bulk-modeUC14.png) - Bulk Data Monitor shows the no. of records which is 10 - Status Completed #### #### Use case to Use SFDC Bulk version - Create Interface - Click on Interface ![](../images/2020/04/Bulk-modeUC15.png) - Scroll down to Bulk Setting section - Check flag of BULK Mode - Select **SFDC Bulk API 1.0, SFDC Bulk API 2.0** value from picklist - Select Bulk Processing Mode Parralel - Save ![](../images/2020/04/Bulk-modeUC16.png) - Scroll down to Source Definition section - Choose file & Save ![](../images/2020/04/Bulk-modeUC17.png) - Click on Open Mapping Button ![](../images/2020/04/Bulk-modeUC18.png) - Select Custom Ext. Id - Save ![](../images/2020/04/Bulk-modeUC18.png) Go to **SKYVVA** Agent configure with your Salesforce Org. Which is obvious - Select Integration Name - Select SF Bulk Interface - Click on Edit Interface ![](../images/2020/04/Bulk-modeUC19.png) ![](../images/2020/04/Bulk-modeUC20.png) - Select File Folder - Write File Name - Click on Test Query ![](../images/2020/04/Bulk-modeUC21.png) - Select **SF Bulk** - Click on Process button ![](../images/2020/04/Bulk-modeUC22.png) Go back to your Salesforce Org. - Go Setup - Write Apex job in search box ![](../images/2020/04/Bulk-modeUC23.png) - See here Bulk Data Load Jobs - Status Job Completed ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 12. How the Data Loader support complex xml payload and attributes Slug: 16-11how-data-loader-support-complex-xml-payload-and-attributes URL: https://help.skyvva.com/#article/16-11how-data-loader-support-complex-xml-payload-and-attributes ================================================================================ # 12. How the Data Loader support complex xml payload and attributes In this section, we will see how the data loader supports complex XML payload and attributes. We will do it by the manual load. We need to save the attribute mapping to the imapping record. To be able to distinguish that the field is an attribute field we can put as source name as a prefix the element name concatenate with the sign '@' e.g. ID@accountingEntity or ID@location. #### How we can use it:- Pre-Requisite:- **Pre-Requisite:-** - Create Integration. - Create Interface. - Create Metadata Provider. - Add metadata provider, Repository and message type. ![](../images/2020/04/att-3.png) - Please check mapping here element name is concatenated with the sign '@'. ![](../images/2020/04/att1.png) - - Manually upload data using manual load. Do configuration as shown below and upload file. ![](../images/2020/04/manual.png) - Select all and Push the file as shown below:- ![](../images/2020/04/manual1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Remove Export field if we get error that the file we uploaded is different to the file in the mapping. [/su_box] - Check the result on message monitoring. ![](../images/2020/04/att5-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Bulk Processing Title: 3. Bulk processing with v3 flat and hierarchical Data Slug: 18-2-bulk-processing-with-v3-flat-and-hierarchical-data URL: https://help.skyvva.com/#article/18-2-bulk-processing-with-v3-flat-and-hierarchical-data ================================================================================ # 3. Bulk processing with v3 flat and hierarchical Data In **SKYVVA**, the bulk-loading option increases the performance of a session where huge volumes of data are involved. During bulk loading, the Integration Service bypasses the database log, which results in performance improvement. Without writing to the database log, however, the target database cannot perform a rollback. While using bulk loading, the need for improved session performance must be weighed against the ability to recover an incomplete session. we are talking about the SKYVVA bulk mode and not the SFDC bulk mode. The significant change we make is not using the attachment object anymore to store the json payload. We are using file and link the file to the interface. Thus we will have two solution parallel running e.g. using the attachment with V2 and Files with V3. Our scheduler can check the type of the Salesforce Id and know if it is an attachment or File object. Based on this fact we will enter the old or new processing We will not build a new scheduler but change the existing scheduler to process both variant e.g. attachment and file. The scheduler needs to read now from both sources e.g. attachment or files and processes either attachment or files depending on what it can find. #### Prerequisite - Create Meta Data Provider - Create Integration and inbound Interface - Push data payload from SoapUI with API : …/V3/Integrate 1- Create Meta Data Provider, 2- Create IStructure Repository and MessageType (i.e. AccountTestV3, ContactTestV3, CaseTestV3) In this case we use Open Editor on Repository to create Message Type 10001 TestAccount1 Cambodia1 Phnom Penh1 A-001 ![](../images/2020/04/Capture1-3.png) #### Difference Between SKYVVA Bulk and SFDC Bulk Mode? **SKYVVA Bulk Mode** **SFDC Bulk Mode** In SKYVVA Bulk Mode user can create upsert, update, insert, and query, query All, pullQuery or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data over a **5000** records. In SFDC Bulk Mode user can create update, or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data from a few thousand to millions of records. **Monitoring in Bulk Control Board:** As user did integrate, your data you might want to check or monitor if all your data are successfully integrated. To monitor bulk data. There are three orders to monitor bulk processing: **Bulk Data Inbox : **When data pushed from the client using Bulk API, that will appear in this section **Bulk Data Processing: **Bulk Data Processing is using to store data that are processing**.** **Bulk Monitor: **User can monitor the total records of attachments, total batch and batches that had processed. **Monitoring Bulk Data Load Jobs:** Process a set of records by creating a job that contains data that will be processed asynchronously. The job specifies which object is being processed and what type of operation is being used. Indexes, constraints, auto-generated features can be available in table level during the job run. **Operations:      ** The processing operation for all the batches in the job. The valid values are: - delete - insert - query - queryall - upsert - update It support SFDC **BulkV1.0,SFDCV2.0** for all Job Type **Operations:      ** The processing operation for all the batches in the job. The valid values are: - delete - insert - query (Bulk V1 type jobs only) - queryall(Bulk V1 type jobs only) - upsert - update hardDelete (Bulk V1 type jobs only) It also support BulkV2 for some Job Type ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Message Monitoring Title: 10. Message, API and Event message monitoring Slug: 19-9-detail-view-of-the-message-monitoring URL: https://help.skyvva.com/#article/19-9-detail-view-of-the-message-monitoring ================================================================================ # 10. Message, API and Event message monitoring Message Monitoring is used to check the integration result after processing the Inbound or Outbound interface. The integration result includes Pending, Failed, Completed, Cancelled status and the reason why it failed. Additionally, we can know the real sObject is integrated successfully with completed status. In this section we will see what we have enhanced in our message monitoring, now we provide two more modes to search API and Event message monitoring. It simplifies our work, and now we can easily search and differentiate. We can see in the picture given below. - We can select any of the modes. ![](../images/2020/04/mem.png) #### 1. Message Monitoring It is a normal monitoring of messages. All messages which have been created with v3/integrate will have the value 'sObject Message'. #### 2. API Monitoring The API Monitoring is used when the user just wants to see the API call using our SOAP/REST adapter. #### 3. Event Monitoring This is our new function where we create platform events based on the inbound message for an interface which is defined as Event-Interface and where the operation type is set to 'Publish Platform Event. - We can see the picture given below of message monitoring with the result of all the three modes:- ![](../images/2020/04/mem1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Message Monitoring Title: 11. Detail view of message monitoring Slug: 19-10-detail-view-of-message-monitoring URL: https://help.skyvva.com/#article/19-10-detail-view-of-message-monitoring ================================================================================ # 11. Detail view of message monitoring - Message Monitoring is used to check the integration result after processing the Inbound or Outbound interface. The integration result includes Pending, Failed, Completed, Cancelled status, and the reason why it failed. Additionally, we can know the real sObject is integrated successfully with completed status. - Now in this section, we will describe the detail view of message monitoring. Here we have two panels one on left and one on right. In the left panel, we can see a simple tree view. In the right panel, we can see the detail of the messages. --- #### Firstly we will see how we can reach the detail view page - Open message monitoring. - Select the mode, Interface name, and Integration name as shown below. ![](../images/2020/04/detali1.png) - Then click on Search. - We can see messages now click on "Message name" as shown in the picture given below. ![](../images/2020/04/detail2.png) - And here is the page for which we are searching. ![](../images/2020/04/detail3.png) #### Left panel The Left panel shows the tree view of the message. As you can see the picture given below, it looks like hierarchical. Like it is a three level hierarchical mapping Account, Contact and Asset. ![](../images/2020/04/detail.png) #### Right panel - In the Right panel we can see different fields which tell us about the message. Like we can see in the picture given below. ![](../images/2020/04/detail4.png) - We also have different buttons, these buttons have different and important functionality. We can see the picture given below:- - We can edit, delete, reprocess the messages. We can go on message board by clicking on this button. We can also import sample data from here. ![](../images/2020/04/detail5.png) - In the pictures given below we can see the following section - **Message Date-** Here we can see Creation Date and Modification Date. - **Comment- **Here we can see about modification. - **Long Comment- **If we have long comment then we can add it in this section. - **Data-  **Here we can see Data's name and value. ![](../images/2020/04/detail6.png) ![](../images/2020/04/detail7.png) **Reprocessing from Message detail page:** If we get failed messages at that time we can reprocess those messages after recorrecting the issue. Go to message detail page and click on reprocessing button. ![](../images/2020/04/messagedetail.png) When we clicked on reprocessing button confirmation pop up windows shown on screen. ![](../images/2020/04/messagedetail1.png) We will get the reprocessing result on message detail page. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Bulk Processing Title: 4. To use Bulk instead of Batch Slug: 18-4-to-use-bulk-instead-of-batch URL: https://help.skyvva.com/#article/18-4-to-use-bulk-instead-of-batch ================================================================================ # 4. To use Bulk instead of Batch **Bulk API** allows you to load and export bigger **batches** and has features like parallel **processing** that helps with performance. On top **of** that, the **Bulk API** uses much less **API** calls than the **Batch API** when dealing with **batches** bigger than 5,000 records. On the other hand, related queries are not supported by the **Bulk API**. Processing data in Salesforce is bound to limits which you have to care about otherwise you will get an error and your data will not be posted. To consider the bound limit of processing, Batch and bulk API are built where **Batch Processing** is used for running a batch job which must contain more than 200 and less than 5000 records. And a large volume of records with the **Bulk API**, which is optimised for processing large sets of data. It makes  simple to load, update, or delete data over a **5000** records. ![](../images/2020/04/Capture1.png) #### Difference between Batch and Bulk processing **Batch Processing** **Bulk Processing** Batch Processing is used for running a batch job which must contain more than 200 and less than 5000 records. In SKYVVA Bulk Mode user can create upsert, update, insert, and query, query All, pullQuery or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes  simple to load, update, or delete data over a **5000** records. The default of IntegrateMaxSize is 200 records and IntegrateBatchMaxSize is 5000 records, but we can transmute the value that is optate to run it. When attachment has more than **5000 then **Bulk Processing is used. **Batch Processing **is run in default mode. It doesn't provide parallel and serial mode options. SKYVVA BULK Processing mode which include Parallel and serial mode. **Parallel:** When you select this processing mode, it will run parallel. **Serial:** When you select this mode, it will not run at the same time. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Bulk Processing Title: 5. Running in pure bulk and auto-switch mode Slug: 18-5-18-4-running-in-pure-bulk-and-auto-switch-mode URL: https://help.skyvva.com/#article/18-5-18-4-running-in-pure-bulk-and-auto-switch-mode ================================================================================ # 5. Running in pure bulk and auto-switch mode **Bulk API** allows you to load and export bigger **batches** and has features like parallel **processing** that helps with performance. On top **of** that, the **Bulk API** uses much less **API** calls than the **Batch API** when dealing with **batches** bigger than 5,000 records. On the other hand, related queries are not supported by the **Bulk API**. **SKYVVA** support** SFDC Pure bulk mode** in version 2.0. that is very fast. Shortcomings with the SFDC pure bulk mode are that  we cannot use the SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk requires the data has to be mapped already on the sender side and doing the additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. There are two API in Pure bulk Version: - **SFDC Bulk API 1.0** - **SFDC Bulk API 2.0** ![](../images/2020/04/API-2.png) **We should know some terms** - **BULK Mode**: We have to set this flag to run our interface in bulk mode using salesforce bulk API. - **SKYVVA Bulk**: SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use the SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode (SKYVVA Bulk 1.0) with both Bulk-processing modes, which is Parallel and Serial. The default value is Serial. - **SFDC Bulk: **We support SFDC pure bulk mode in version 2.0 since it is faster and scales better.  but cannot use the SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk requires the data has to be mapped already on the sender side and doing the additional mapping to enrich the business logic is not possible using SKYVVA mapping.  Version 2.0, you can only use with Serial mode processing. - **Bulk Version**: SKYVVA support SFDC pure bulk mode in version 2.0 then we have our own SKYVVA bulk mode. This uses Skyvva workflow and mapping and thus it is more powerful but slower than pure bulk API technique from salesforce. - **Bulk Processing Mode**: These fields indicate two modes which are support with bulk version 1.0 and bulk version 2.0 only parallel mode is supported. So the value depends here on the selection of field bulk version. For example, When we want to use "serial" we should select bulk 1.0. - **Parallel**: When you select this processing mode, it will run parallel. - **Serial**: When you select this mode, it will not run at the same time. - **Bulk Package Size**: This parameter determines how many records are split into Bulk data size. If your Message contains 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be kept. - **Bulk Sch Frequency:** This is the schedule time-frequency for bulk scheduler on interface. - **Bulk Integrate Time Interval (minute**): The interval (minutes) used for integrating bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. In SFDC Bulk Mode user can create update, or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data from a few thousand to millions of records. ![](../images/2020/04/Bulk-mode4.png) **Usecase** **Step1: **We have to create an integration. Please refer to our tutorial to create [integration](#article/what-is-an-integration-and-how-to-create-it). ![](../images/2019/04/sfdc.png) **Step2: **We have to create an interface. ## **How to use ** "R**eal SFDC bulk mode for SAP PI?"** To generate a WSDL file for some Interfaces, we have to follow the given steps:- **Step 3:**  We have to go to our created interface detail page. We can post data from SAP or Skyvva Agent into Skyvva/Salesforce with bulk mode: **Bulk Version:** -SFDC Bulk API 1.0 -SFDC Bulk API 2.0 **Step 2:**  We can see the result on the bulk control board after post data with Agent. ![](../images/2019/04/SFDCbulktoSAPPI3-1024x353.png) We can use the bulk version = SFDC Bulk API 1.0 the data will be posted into Salesforce database directly the SFDC **Bulk API 1.0 is processed base on Bulk Processing Mode = Parallel and Serial. Default value is parallel.** ![](../images/2019/04/SFDCbulktoSAPP4.png) With this case when user posts data from Agent successfully the user can see of transaction data processing in Bulk Data Load Jobs Note: SFDC Bulk API 1.0 process data with sObject Job Type= Bulk V1, For Data and Message object process with Job Type=Bulk V2 please see screenshot below ![](../images/2019/04/SFDCbulktoSAPPI5.png) We can use bulk version = SFDC Bulk API 2.0 the data will be posted into Salesforce database directly the SFDC Bulk API 2.0 works with Bulk Processing Mode = Parallel only (no work with Serial) Please see the screen below after posted data from Agent ![](../images/2019/04/SFDCbulktoSAPPI6.png) **Message Monitoring** All data call from Agent or other systems to the salesforce via SFDC Bulk API 1.0 and SFDC Bulk API 2.0 Always create the messages Pending, Failed, Completed,…….. **Don’t Create Message Completed** Because of the SFDC Bulk API feature can work with big data so we check the flag Don’t Created Message Completed = true mean that not allow all completed messages or Idatacreate into database ![](../images/2019/04/SFDCbulktoSAPPI7.png) #### Auto-switch mode: SKYVVA providing different data processing modes like immediately processing, Batch processing, Bulk processing modes. where Auto-Switch mode is a combination of all three modes. When data processing is in the auto-switch mode it means processing is based on the number of records and IntegrateMaxSize, IntegrateBatchMaxSize When the auto-switch mode flag is selected, It describes that Agent automatically switched to SKYVVA API which is based on the number of records and IntegrateMaxSize, IntegrateBatchMaxSize. And when the flag is unchecked it signifies that data is integrated with normal mode (no batch or bulk) no matter what is the size of records. - **Integrate Max Size →** Maximum number of records that **SKYVVA** Integration Agent can integrate using method integrate. The default value is 200. If the number of records to be integrated is bigger than this value, Agent will switch the API method automatically. - **Integrate Batch Max Size → **Maximum number of records that the **SKYVVA** Integration using method integrates Batch. The default value is 5000. If the number of records to be integrated is bigger than this value, Agent will switch to use the Bulk API method automatically. #### Usecase - We have to create [Integration](#article/what-is-an-integration-and-how-to-create-it) - Creating integration next step is to create [Interface](#article/1-what-is-an-interface-and-how-to-create-it) ![](../images/2020/04/Capture6.png) #### Configuration We click on the 'Account Interface' link and see the Interface Details and scroll down to Runtime Configuration-Inbound section then checkbox on Use Auto-Switch Mode. ![](../images/2020/04/Capture7.png) Assuming you already have created interface since this part will be the focus on integrating from Agent as an example. To integrate from Agent, please run Agent-UI and more steps as following: - After running the Agent-UI, the Integration Control Board will popup then you have to click on Integration Wizard. - Select your agent the Property File. - We have to select the existing integration and interface on which we have to process data. Go to **SKYVVA** Agent configure with your Salesforce Org. Which is obivious - Select Integration Name & Select AutoSwitch Interface ![](../images/2020/04/Capture5.png) - Click on Edit Interface ![](../images/2020/04/Capture1-1.png) - Select File Folder - Click on Test Query - Save **Go to your Salesforce Org.** - Click on Open Mapping Button ![](../images/2020/04/Capture2.png) - Select Ext Id - Save **Go to Agent** - Select your Interface **Auto-SwitchMode Interface** - Click on the Process button - Process Completed - Click ok button ![](../images/2020/04/Capture4.png) **Go back to your Salesforce Org. Go to Integration Detail page** - Click on Bulk Control Board ![](../images/2020/04/Bulk-control-board.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Bulk Processing Title: 6. Scheduler Slug: 18-6-scheduler URL: https://help.skyvva.com/#article/18-6-scheduler ================================================================================ # 6. Scheduler ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Bulk Processing Title: 7. Monitoring of bulk and the related message Slug: 18-7-monitoring-of-bulk-and-the-related-message URL: https://help.skyvva.com/#article/18-7-monitoring-of-bulk-and-the-related-message ================================================================================ # 7. Monitoring of bulk and the related message Bulk Monitor is provided in Bulk control board. Bulk Control Board is a dashboard where you can monitor Inbound Processing, Interfaces, and Schedulers. Inbound Processing tabs contain 5 differences sections which are Filter, Bulk Interface Scheduler, Bulk Data Inbox, Bulk Data Processing, and Bulk Monitor. Each section plays different roles in bulk processing.  #### Bulk Monitor We can monitor total record count and its detail in bulk monitor section. Also you can monitor the total batch and batches that had processed.. With the bulk monitor you can search for attachment and see if it get posted or failed. You can see different status of messages e.g. green, red and grey. ![](../images/2018/10/dataMonitoring.png) Here a set of useful screen to customize into the view. **Field** **Description** **Action** Action you can carry out e.g. Edit and Delete **Integration** The name of the integration **Interface Group** The name of the interface group **Extended Status** The queue where the attachment will be processed **Timestamp** Creation time stamp of the attachment **Interface Name** The name of the interface **Priority** The priority assigned to the attachment **Status** The status of the attachment **Job Type** The Job processing type **Attachment Name** The name of the attachment **Total job** The number of records within an attachment **Failed Messages** The number of messages which were failed **Complete Messages** The number of messages which were processed successful **Batch Job** The Batch job **Created Date** Date of creation of the attachment **Last Modified Date** Date of the last modification When all the attachment are processed successfully We can monitor the result on message monitor. #### Message Monitor: With the message monitor you can search for messages and see if it get posted or failed. Message monitor tab is located in Integration Page. You can see different status of messages e.g. green, red and grey. ![](../images/2020/04/screencapture-shwetatest-dev-ed-lightning-force-lightning-r-skyvvasolutions-Integration-c-a0W6F00000qWzUcUAK-view-2020-04-21-18_28_19.png) With the message monitor you can search over different criteria. For example you can search message by date e.g. the creation or modified date. You can sort the view and search message over its content. Following are the search criteria you can use: **Field** **Description** **Integration Name** The name of the integration **Interface Name** The name of the interface **Message Name** The key of the message **Message status** The status of message e.g. Completed or Failed **Message Content** The content of the message **Date** You can specify Creation or Modified date **From** The from date **To** The to date **Sort By** You can specify Creation date, Modified date or Message Name You can jump into the detail of a message. Click on the message name to jump into the detail. Here is an example of a message detail. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Reprocessing Title: 2. Different reprocessing variant Slug: 10-5-different-reprocessing-variant URL: https://help.skyvva.com/#article/10-5-different-reprocessing-variant ================================================================================ # 2. Different reprocessing variant Here in this unit, we will understand what are the different reprocessing variant. For that first, we need to understand about the Processing. In simple words, Reprocessing is a second time of processing when we get messages failed or pending from the previous integration then we need to reprocess them. #### So basically, we have 4 kinds of message processing: - Normal message processing synchronous and asynchronous - The batch which is asynchronous only(Inbound Interface) - The bulk which is asynchronous only (Inbound Interface) #### 1. Normal message processing synchronous and asynchronous: Normal Processing can be done in two ways "Immediate way" and "Scheduled way". #### Immediate way So we can use manual load, Agent, and Pushing messages in a synchronous way directly. This is our API integrate we can do it synchronously can use Soap UI to call Soap API and we will get an empty response if we do it asynchronously. #### Scheduled way A scheduled way means we can schedule a time when we want to process a message. We are pushing a message now but we want to process it afterward so we can set the time using our scheduler. #### 2. The batch which is asynchronous only In batch processing, we are storing data into an attachment or file then in batch control board we can see data into a basket and basket is linked to the attachment(File where we can see JSON record). Then we have a scheduler for processing and reprocessing of the basket. It processes the basket and then we can see messages in the message monitoring. We can also do it manually we can select baskets as per our choice and can process it manually. We can do it using the scheduler too. Processing the basket and then basket gets failed due to the error then the reprocessing can pick up the basket again and reprocess it again then its a reprocessing of the basket. So there is a difference between reprocessing of basket and reprocessing of the message. To understand the reprocessing of messages check the example which will give a clear view, for example, If we have 5 messages in the basket and 4 of them show a green flag and 1 shows the red flag in message monitoring then it means we need to do message reprocessing not basket reprocessing because the message got failed not basket. #### 3. The Bulk which is asynchronous only In bulk processing, we have a bulk control board where we have a scheduler and even we can do it manually, we can select attachments or file manually. It will pick up a record from the file and processed it, then we can see messages in the message monitoring. Bulk reprocessing is when we are reprocessing an attachment inside bulk inbox and it gets failed then it will be bulk reprocessing. But if we have 5 messages in the basket and 4 of them show a green flag and 1 shows the red flag in message monitoring then it means we need to do message reprocessing not bulk reprocessing because the message got failed not Bulk. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Reprocessing Title: 4. Automatic Reprocessing per job. Slug: 10-6-automatic-reprocessing-per-job URL: https://help.skyvva.com/#article/10-6-automatic-reprocessing-per-job ================================================================================ # 4. Automatic Reprocessing per job. Message reprocessing job reprocess all messages from all integration. We can exclude or include an integration to be reprocessed or not. With the flag "Automatic Reprocessing" on the integration detail, we can include (checked) or exclude (unchecked) the integration from the reprocessing. All messages are reprocessed at the same time because we have one global reprocessing scheduler. ![](../images/2019/12/Untitled1-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]This flag is set at Integration level and it has been set by default when integration is created.[/su_box] We can use the MessageReprocess job to correct the message records in different cases. The different cases we support are: - Pending Message (Yellow) - Failed Message (Red) #### How to use  Automatic reprocessing jobs for pending messages? Pending messages are shown in yellow color. The reason for pending status is also mentioned in a comment on message monitoring. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]You must correct your data to meet the condition first before you can reprocess.[/su_box] #### Pre-requisite - Create Integration. - Create the Interface. (Inbound Interface). - Please select bulk or batch mode. - To reprocess all the interface automatically, we have to check the Automatic Reprocessing flag at the integration level. #### #### Different use cases to reprocess messages per Integration We can reprocess messages as: - MessageReprocessPerIntegration scheduler with every min Time Interval - MessageReprocessPerIntegration scheduler with Run At (IntegrationOnDemand) - MessageReprocessPerIntegration scheduler with Run At Every Hour (IntegrationOnDemand) **Case 1**: **MessageReprocessPerIntegration scheduler with every min Time Interval:** - Testing MessageReprocessPerIntegration scheduler with every min Time Interval (IntegrationOnDemand) with using Automatic Reprocessing flag. We have to follow the given step to reprocess messages per integration. - Go to the scheduler tab and Set scheduler 2 min in MessageReprocessPerIntegration. ![](../images/2019/04/msgre-process4.png) **Case 2: MessageReprocessPerIntegration scheduler with Run At (IntegrationOnDemand)** - Testing MessageReprocessPerIntegration scheduler with Run At (IntegrationOnDemand) using Automatic Reprocessing flag. - Set time Run At 5:00 PM. ![](../images/2019/04/msgre-process5.png) **Case 3: MessageReprocessPerIntegration scheduler with Run At Every Hour (IntegrationOnDemand)** - Testing MessageReprocessPerIntegration scheduler with Run At Every Hour (IntegrationOnDemand) using the Automatic Reprocessing flag. - Set time Run At Every Hour = 6->8:00 AM. ![](../images/2020/05/autore1.png) ![](../images/2019/04/msgre-process6.png) - It will run at 6-8:00 AM every day and running all Interfaces stays in this integration. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Change Data Control (CDC) Title: 8. V3 outbound processing for CDC Slug: 20-8-v3-outbound-processing-for-cdc URL: https://help.skyvva.com/#article/20-8-v3-outbound-processing-for-cdc ================================================================================ # 8. V3 outbound processing for CDC control is a function that provided to record all data changes (Change Pointer) you create on any business object. It is capable to send the deleted records to the receiver as well. This means it executes the find/fetch record base on Salesforce’s query. With the SOQL query statement, you can fetch the deleted records in the recycle bin as well with the “ALL ROWS” keyword. Overall, it handles the change data in salesforce. You can send all your change data using CDC Scheduler or manually. #### CDC Setting This section is created for some fields that use CDC features. Before configuring the CDC you need to know about these parameters which require to set on the interface. ![](../images/2018/10/2019-11-13_11-29-20.png) ![](../images/2018/10/2019-11-13_11-33-24.png) - **Use SKYVVVA Outbound Scheduler: **This flag use for CDC Processing. When you check this flag, it's mean that you activate the CDC processing. It activates both CDD and CDT. You can set an interface for running only CDD or CDT in some time. - **CDC Mode Only: **This field is used for separating the process of CDD and CDT follow flag Use SKYVVA Outbound Scheduler. Select CDD to run only CDD for interface or select CDT to run only CDT. Select None to run both CDD and CDT at the same time. You can select the picklist value to specify the run time. - **CDT Worker Query Limit: **This field is used to define the number of the query record. When the CT worker runs the start method will query record to send out. If it is too much we will run into a CPU time out. Set this field to an appropriate value so that you don't any error. - **Interface Control Runtimes: **Interface Control Runtime could be used for another purpose. for CDD, it is used where the user can set LastRun DateTime that CDD finds the record change which is record's LastModifiedDate>that date. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]CDD Scheduler LastRun is obsolete now. No need to check this flag for defining the change data anymore. The Interface Control Runtimes for the Last Run Date is created automatically by the CDD scheduler. [/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Transporting of SKYVVA object Title: 4. Backup and Restore of Metadata Provider Slug: backup-and-restore-of-metadata-provider URL: https://help.skyvva.com/#article/backup-and-restore-of-metadata-provider ================================================================================ # 4. Backup and Restore of Metadata Provider In this unit, we will see how we can backup and restore Metadata Provider. So in the case of metadata providers, we have two options one is restore and backup, and another one is using the Transport route. - **Backup and Restore:** **Backup:** This is the process of creating your metadata provider's current state. It typically includes configuration settings, plug-and-play, including other relevant information. - **Restore:** This is the process of recovering the metadata provider to a previous state using a previously created backup. It helps in case of data loss. - **Transport Route in SKYVVA Integration Application:** **Transport Route:** In the context of the **SKYVVA** integration application, a transport route is a predefined path or method for moving metadata configurations, integrations, or other related components from one environment to another in just one click. This is useful for deploying changes or configurations across development, testing, and production environments. #### Backup and Restore of Metadata Provider: Here we will back up metadata and then restore that backup file. The advantage of having this option is that we will have a backup file that we can use anytime we want. **Backup Metadata Provider:** - Select Metadata Provider and then click on Export as shown below. ![](../images/2020/05/image_2024_01_17T17_57_23_987Z.png) - The backup file is downloaded. ![](../images/2020/05/image_2024_01_17T18_04_23_258Z.png) **Restore Metadata Provider:** - Click on Restore MetaData Provider ![](../images/2020/05/image_2024_01_17T18_06_32_828Z.png) - Click on Upload file, select the file, and then click on "ok". ![](../images/2020/05/image_2024_01_17T18_09_46_249Z.png) - Check the Restore Metadata Provider. ![](../images/2020/05/image_2024_01_17T18_11_45_801Z.png) #### Transport Metadata Provider to other org directly using Transport Route: In this option, we can send one or more than one metadata provider directly to another org without downloading the file. **Steps to be followed to achieve Backup-Restore functionality(Backup to other org)** #### Case 1 Transport Metadata Provider with all its child objects e.g. repository, message type. etc. **Step 1: **Create a Remote Site Setting in the source Organization. - Go to Setup - Enter remote site settings in the quick-find box - There are 2 remote site settings to create. Login Url: [https://login.salesforce.com](https://login.salesforce.com) (Production) or [https://test.salesforce.com](https://test.salesforce.com) (sandbox) - Target Org Url: [https://ap5.salesforce.com](https://ap5.salesforce.com) (sample) - Remote site settings for Login Url. Check the picture given below. ![](../images/2018/10/transport1-2.png) - Remote site settings for Target Org Url. Check the picture given below. ![](../images/2018/10/transport.png) - Hence both the remote site settings are created. **Step 2:** **Create a Connected App in Source Organization** - Go to Setup - Enter App Manager in the quick find box - Click on New Connected Apps ![](../images/2018/10/transport2.png) - Please, add **Full Access** to **Selected Oath Scopes**. ![](../images/2018/10/transport3.png) ![](../images/2018/10/transport4.png) - In the connected app, you will get the **Consumer Key** And **Consumer Secret**. And use these values to create a Transport Route. **Step 3:** **Create a Transport Route** - Click on the **SKYVVA** Integration app - Open Transport Route - Click on New - Fill all the fields - Check the details page as shown below. - Username, password, and security token we will enter of target org. Check the picture given below. ![](../images/2018/10/transport5.png) **Step4: Transport Route** - Open the Metadata provider detail page. - Select the Metadata Provider that we want to Backup. - Click Transport To Other Org. ![](../images/2020/05/image_2024_01_17T18_18_24_844Z.png) - Select Transport Route and then click on Transport. ![](../images/2020/05/image_2024_01_17T18_22_15_113Z.png) - Check the other org has restored the metadata provider. ![](../images/2020/05/image_2024_01_17T18_24_59_434Z.png) #### Case 2 Transport MetaData provider contains many repositories and message types. Users can deploy or retrieve up to 10,000 files at once. **SKYVVA** packages use lights, They can contain up to 35,000 files. The maximum size of the deployed or retrieved .zip file is 39 MB. If the files are uncompressed in an unzipped folder, the size limit is 400 MB. –  [Metadata Limits](https://developer.salesforce.com/docs/atlas.en-us.salesforce_app_limits_cheatsheet.meta/salesforce_app_limits_cheatsheet/salesforce_app_limits_platform_metadata.htm) - The metadata provider contains many repositories and message types. Then user cannot transport it in one shut. - The user will hit the governor limit. Therefore we have also the feature in the metadata provider to split the transport e.g. per repository or message type. etc. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - **SKYVVA** has also a feature that allows users to export metadata provider split to the transport e.g. per repository or message types. etc. - Users don't need to do the full import again. The individual object for example the mapping of the interface or only the new interfaces, not the whole integration should be transported.  [/su_box] A metadata/repository/messagetype contains about a category, such as an Account object, or a custom form. From a metadata/repository/messagetype detail page, you can view and access the following information: - Property information about the metadata/repository/messagetype (such as name, labels, description) - Field groups, with their field definitions, that are included in the metadata/repository/messagetype - Allowed parent and child relationships (associations) to metadata/repository/messagetype - Filters that are used to narrow the scope of data for the metadata/repository/messagetype - Dependent fields and pick lists that have been defined for the metadata/repository/messagetype - The metadata/repository/messagetype is identified in the application by the transport route. Each shut type includes field groups and associations to metadata/repository/messagetype. #### Repositories - Open the MetaData Provider detail page. - Select the Repositories which we want to transport. - Click Transport To Other Org. ![](../images/2020/05/image_2024_01_17T18_31_49_780Z.png) - Select Transport Route and then click Transport ![](../images/2020/05/image_2024_01_17T18_33_43_509Z.png) - Check the Other org Restore Repositories ![](../images/2020/05/image_2024_01_18T13_43_18_538Z.png) - Restore successfully #### Message Type - Open the Repository detail page. - Scroll down to Message type and select which we want to Backup. - Click Transport To Other Org. ![](../images/2020/05/image_2024_01_18T13_49_07_566Z.png) - Select Transport Route and the click Transport ![](../images/2020/05/image_2024_01_18T13_50_43_990Z.png) - Check the Other org having imported Message type ![](../images/2020/05/image_2024_01_18T13_52_55_715Z.png) - Imported successfully - From the detail page of a MetaData/Repository/Message Types, the user can use Transport Route, such as which field groups should be included, associate parent and/or child object types, manage filters, dependent fields, and so forth in a single shut. - An association between a parent or child object type is needed, the user can use Transport Route to the relationship between these object types in one shut. - If the number of associations that you add exceeds the maximum, the result is a long-running process. The default is 250. This information applies only to child associations, not parent associations. - The relationship type between object types in the object model can be either Association (parent-child) or Reference (non-parent-child). ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Interface Group Title: 3. Property of the interface group Slug: 5-2-property-of-the-interface-group URL: https://help.skyvva.com/#article/5-2-property-of-the-interface-group ================================================================================ # 3. Property of the interface group When creating an interface group you have to enter value for following fields: - Interface Group Name - Integration - Type - Priority These property are mandatory and marked with red colour. ![](../images/2020/05/Untitled2-1.png) Optional fields are: - Package Size - Number of Records Per Batch #### Interface Group Name This is the name of the interface group. The name will be used as a part of the queue name. Here is an example of a queue name: a0IF000000IsGB7MAN-EO_ContactBalint_6. In this example the interface group name is "CantactBalint_6". #### Integration This is the integration. You create an interface group which belong to an integration. Only one interface can belong to an interface group and an interface group only also belong to an integration. The value of the integration you select here will be part of the queue name. Here is an example of a queue name: a0IF000000IsGB7MAN-EO_ContactBalint_6. In this example you have specify in this field the integration Id = a0IF000000IsGB7 as value. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] interface group belong to same integration. Interface group only contain the interfaces from the same integration. It is not possible to put interfaces from different integration to the same group. [/su_box] #### Type This is the type of the interface group. The value can be {EO, EOIO}. - EO = Exactly Once - EOIO = Exactly Once in Order ![](../images/2020/05/Untitled3.png) When you create an interface group with type EO this interface group will be processed in a exactly once manner e.g. the order will not be guaranteed. If you want to keep order sending from the sender application you have to define this group with EOIO. Note that both type define a processing which is asynchronous. The type will be part of the queue name. Here an example of a queue name a0IF000000IsGB7MAN-EO_ContactBalint_6. In this example type is EO. #### Priority You have to specify a priority which can be one of this value set {High, Medium, Low}. ![](../images/2020/05/Untitled4.png) With this property you can define that interface group A is to be processed faster as interface group B by setting for interface group A = High and interface group B = Low or Medium. #### Package Size With this property you can bundle or package the attachment together. If you don't put any value to this field the processing will take the number of records found in the attachment. Let looks to some example to understand this property. ![](../images/2020/05/Untitled5.png) For the first scheduler run the scheduler will bundle 2 attachment in one package an pass over to the worker to post the data. Note that the term scheduler and worker will be explain in detail in chapter "11 Task separation between Scheduler and Worker". For a short explanation we can say that the scheduler just schedule the data package but don't do the processing. It will pass the data package to the worker who will post the data into the application e.g. into the object account. In the first scheduler run the scheduler create a package with size of 20 records. This is equal to bundling of two attachment together. The scheduler pass this package (20 records) to the worker and the worker process this package. What you can see here in comparison to the first example above is that the worker now get bigger data package to process. The remaining total records is now 50. In the second scheduler run the scheduler again create a package with size 20 records. It pass to the worker and the remaining total records is now 30. In the third run again package with size 20 records is created and pass to the worker. The remaining total records is 10. In the fourth scheduler run the scheduler create again a package of 20 records but since in the working basket we only have total 10 records left the last package will just containing 10 records. Let have a look between the first and second example. In the first example we have in total 7 scheduler run meaning 7*4 minutes = 28 minutes processing time. In the second example we have 4 scheduler run meaning 4*4 minutes = 16 minutes processing time. Now let us look to the third example where we define a package size to 40. ![](../images/2020/05/Untitled6.png) Here for the first scheduler run it will create a package with 40 total records. The remaining total records is 30. The second scheduler run will test the rest of 30 total records and pass to the worker. In total we need only 2 scheduler run in this example meaning 2*4 minutes = 8 minutes of processing time. Now in the last example we define the package size to 80. ![](../images/2020/05/Untitled7.png) Now we need only one scheduler run to process 7 attachment a 10 records. Whenever the data size of an attachment allows to build package because the size e.g. the number of total record within the attachment is small then you should define this property to a value which will be reasonable for you. We can give you an recommendation of a fix value for the package size because it depend on the characteristics of your data e.g. how many fields is in the record, how big is a field etc.. You have to try and error yourself to find the optimal size of the package size. If you define a too big package size you will run into a heap size limit exception. If you define a too small package size you will lose performance. Therefore the best package size will be between this value. #### Number of Records Per Batch Processing data in Salesforce is bound to limits which you have to care about otherwise you will get an error and your data will not be posted. One of the limitation is here the heap size while processing big data. If you pass in an attachment 500 records of account it will not be possible to process those 500 records in one batch. If you do this you will get the heap size limitation exception. To avoid this the skyvva engine will process the records from an attachment in so called batches or packages. The default value is 50 records per batch. If you don't define any value the default of 50 will be used. If you define an new value than the define value will be use. Note that we do not recommend to use other value because we have test with the default value at different customer and see that this value is a good enough for many customer. If you define a new value you have to care about the size of the data e.g. the number of fields in your records and the size of each field. So you have to balance between the size of the record to find out the right value for this field. If you have performance problem posting the data you can think about the play around with other value than the default value of 50 for example start for the value 100 and test if you get the heap size limit exception or not. You have to test it thoroughly before putting this setting into your production! ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Interface Group Title: 4. Create Interface group Slug: 5-3-create-interface-group URL: https://help.skyvva.com/#article/5-3-create-interface-group ================================================================================ # 4. Create Interface group To crate a new interface group open the tab "Integration Admin" and the tab "Interface Group". Than click on button " New Interface Group" to create a interface group. ![](../images/2020/05/Capture1.png) Enter a name for an interface group and select the integration where the interface group belong to. Now enter type of the interface group. You can choose between the value "EO", and "EOIO". ![](../images/2020/05/Untitled2-2.png) - The push button "Save" to save the interface group. - Next step is to insert the interface into the interface group ![](../images/2020/05/Untitled8.png) Click on button "Add Interfaces" to add interfaces to the group. ![](../images/2020/05/Untitled9-1.png) In this example we create an EOIO interface group and therefore we have to specify the sequence number which reflect the order of the interfaces to be kept. Here interface account has to be processed first e.g. 1 and contact as second e.g. 2. Click on button "Save" to save the interface group. ![](../images/2020/05/Untitled10.png) Here is the result of creating an interface group which is a business related logical group. The second example shows how to create a EO interface group. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Interface Group Title: 5. Skyvva default interface group Slug: 5-4-skyvva-default-interface-group URL: https://help.skyvva.com/#article/5-4-skyvva-default-interface-group ================================================================================ # 5. Skyvva default interface group After the installation the system will create an default interface group for each integration with the name "Skyvva_DefaultIG". All interfaces existing in the integration e.g. IG_x will be included to this group. Unless you create a new interface group and reassign the interfaces to the new interface group the interface will belong to the default interface group. This is done to ensure that at least the system have an interface group to works with. Here an example of the default interface group belonging to the integration "Balint_11". All interfaces from the integration "Balint_11" will belong to this group. Note that the default group will have default property e.g. Type = EO, Priority = Low. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Change Data Control (CDC) Title: 9. How to add Create Change Pointer field on interface Level? Slug: 20-8-how-to-add-create-change-pointer-field-on-interface-level URL: https://help.skyvva.com/#article/20-8-how-to-add-create-change-pointer-field-on-interface-level ================================================================================ # 9. How to add Create Change Pointer field on interface Level? **Create Change Pointer Mode** If you check this flag the CDD Scheduler will skip the interface if the value is specified. The interface could be set creating change pointer by process builder or trigger. The interface could be set creating change pointer by process builder or trigger. You have to select SKYVVA API mode. Follow the steps to add the field: **Step1**: Create Integration and outbound Interface. **Step2**: Go to set up -> Object manager -> search for Interface Object in search box. ![](../images/2020/05/Untitled1.png) **Step** 3: Click on interface option -> Click on Page Layout. ![](../images/2020/05/Untitled2-4.png) **Step 4**: Go to Interface Layout to edit the layout of your interface. ![](../images/2020/05/Untitled3-1.png)      **OR**  You can search for Change Pointer Mode in quick find box. ![](../images/2020/05/Untitled3-2.png) **Step 5**: Scroll down the page to the Interface Information section. Drag the Create change pointer field and drop to the Interface Information section. ![](../images/2020/05/Untitled4-1.png) **Step 6**: Click on Quick save. ![](../images/2020/05/Untitled5-1.png) **Step7**: You can see the field on Interface page. ![](../images/2020/05/Untitled6-1.png) **Step 8**: Edit the interface and Select the Skyvva API option. ![](../images/2020/05/CPRecord-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Interface Group Title: 6. Remove interface from the interface group Slug: 5-5-remove-interface-from-the-interface-group URL: https://help.skyvva.com/#article/5-5-remove-interface-from-the-interface-group ================================================================================ # 6. Remove interface from the interface group You can remove the interface from the interface group by clicking on the button "Remove". If you remove one interface this interface will become free and can be add into another interface group. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 10. Bulk Setting Slug: 3-9-bulk-setting URL: https://help.skyvva.com/#article/3-9-bulk-setting ================================================================================ # 10. Bulk Setting #### Bulk Mode Check this flag if you want to run the interface in a bulk mode using Salesforce BULK API. ![](../images/2018/10/bulkint.png) ![](../images/2018/10/2019-12-05_19-22-22.png) #### Bulk Version We support SFDC pure bulk mode in version 1.0 or 2.0. Then we have our own SKYVVA Bulk mode. This uses SKYVVA workflow and mapping and thus is more powerful but slower than the pure bulk API technique from Salesforce. So total we have 3 Bulk version. ![](../images/2020/06/bulkint1-2.png) #### Bulk Processing Mode This field indicates the two-mode, which is support with bulk version 1.0. With bulk, version 2.0 only parallel mode is supported. Therefore, the value here depends on the selection of the field bulk version e.g. when we want to use ‘Serial’ then we need to choose ‘Bulk V 1.0’. #### Parameter-Bulk Package Size This parameter determines how many records are splitting into Bulk data size. If your Message contains 10.000 records and the value for this parameter is 1.000, so you will get 10-bulk data set in the Salesforce. #### Parameter-Bulk Integrate Time Interval (minutes) The interval (in minutes) used to integrate bulk job scheduler. For example, if its value is 10, then the integrated bulk scheduler will be run every 10 minutes. #### Parameter-Bulk Log Keep Size This parameter is used to determine the number of bulk execute logs to be kept. #### Parameter-Package Size This parameter uses in the Agent to indicate the number of records to be processed in batch. This Package Size has known as Packet in Agent. #### Parameter-Number of batches to clear completed message This parameter is the number of batches/executes to delete completely processed messages once, used in batch job processing to reduce some storage usage. However, this parameter is no longer used. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Interface Group Title: 7. Usage of interface group Slug: 5-6-usage-of-interface-group URL: https://help.skyvva.com/#article/5-6-usage-of-interface-group ================================================================================ # 7. Usage of interface group In SKYVVA, Integration is created to integrate data. To bind all interface which has same logic, we create group. create the interface group directly from the tab 'Interface Group' from the Batch Control Board. #### Interface group Interface group is a unit to group logical interfaces together. For example you can group interfaces which is related to each other e.g. Account and Contact to one interface group. Interface group is the object user define at configuration time. #### **Before create interface group, there are some properties you must know:** ![](../images/2020/02/Untitled2.png) **1. Interface Group Name**: It’s a name of interface group. The name will be used as a part of the queue name. **2. Integration**: This is the integration. You create an interface group which belong to an integration. Only one interface can belong to an interface group and an interface group only also belong to an integration. The value of the integration you select here will be part of the queue name.. **3. Type:** This is a type of the interface group. The value of group can be(EO,EOIO).- EO: Exactly Once - EOIO: Exactly Once in OrderWhen you create an interface group with type EO this interface group will be processed in a exactly once manner e.g. the order will not be guaranteed. If you want to keep order sending from the sender application you have to define this group with EOIONote that both type define a processing which is asynchronous. The type will be part of the queue name. **4. Priority** This property will allow you to define what priority you want to set for your interface group to processed faster. There are 3 types of Priorities such as:- High - Medium - LowWith this property you can define that interface group A is to be processed faster as interface group B by setting for interface group A = High and interface group B = Low or Medium. The available batch apex job is 5 at that time. But for priority High the max parallelism will be 5 because the counter setting for priority High is 5. The general for how many batch apex job will be used depend on following rule for processing queues: - Number of available batch apex job - Current number of counter stand of the priority class Note that processing over different integration has more priority than over queues within an integration because the processing begin first with the selection of the integration and then of queues. Lets looks to this example where we have 7 integrations which all have data in all priority. Furthermore each integration has different queues. Assume in this example that all 5 batch apex job are available. When the scheduler SCHED_1 start for the integration group IG_1 it will select integrations and assigned to each integration 1 batch apex job. Therefore all 5 batch apex job is assigned like this: I1 -> AP1, I2 -> AP2, I3 -> AP3, I4 -> AP4 and I5 -> AP5. Because we have max. only 5 batch apex job integration I6 and I7 don't get batch apex job Page 57 assigned to them. In this example each integration have different queues and those queues could be processed in parallel. But because all batch apex job was assigned to the integrations there are no more than 1 batch apex job available for the processing of queues. Only one queue can be selected and this will be the High-Queue from each integration. The parallel processing of queue is not possible due to lacking of batch apex job. **5 .Package Size**: This is the number of records to bundle together and pass to a batch worker because of the optimization. **6. Number of Records per Batch**: This property indicating the number of records to be processed per execute() used for basket processing batch. #### Types of interface group There are two types of interface group which are Business related logical group and Technical group. This section will be explained in detail what these interface group types are. **Business related logical group** This group is business related since the contact can only be posted after the account has been posted ( when you put the interface account and contact to one group). It’s all about an order of business process. To keep this order you can define the group and set the property to “EOIO”. When you set this way the account will be posted before contact interface. e.g. the group "Account_Contact". This group is business related because the contact can only be posted after the account has been posted. In this example there is an order of business process. To keep this order you can define the group "Account_Contact" and set the property to "EOIO" meaning Exactly Once In Order. In this way the skyvva runtime ensure that the account will be posted before contact interface. **Technical group** The technical group is to increase the performance for the posting of data. You need to create this group to group the interfaces which are not related to business and these interface is quite small. Without wasting time and resource, you can sent these interfaces once in same time by set this group to “EO”. For example, The technical group is for example to increase the performance for the posting of data. Imagine that you have five interfaces which do not related in a business way to each other. Those 5 interfaces are quite small e.g. small amount data will be send to Salesforce. In this example you will waste resource and time when you create five interface group for each interface and post the interface separately. The best way is to put these five interface into the same group and set the property of this group as "EO" meaning Exactly Once. This mean that the processing of those five interface in the group is not important. An overtaken can be happened and will not harm the business. By putting them together the scheduler will process much more data in one run than if the scheduler process them separately. #### How interface group is used? Follow the given steps to create Interface group: **Step1**: Go to batch control board. - Open  “Interface Group” tabs - Click on “New Interface Group” to create a new one ![](../images/2020/02/Untitled2.png) **Step2**: Fill the fields as shown in screenshots: -  Enter a name for an interface group. -  Then select the integration where the interface group belong to. ![](../images/2018/10/IG1.png) - Choose the type of the interface group ![](../images/2018/10/IG2.png) - Select the priority for the interface group then click Save ![](../images/2018/10/IG3.png)**Step3**:** Add Interfaces** - Click on “Add Interfaces” to add interface to the group ![](../images/2018/10/IG4.png) - Select the interface you want to add to this new interface group ![](../images/2018/10/IG5-1.png) **Step4**: Here is the result of creating an interface group ![](../images/2018/10/IG6-1.png) #### When to use interface group Interface group is used when you want to speed up interface processing. You can manually create interface group and assign the interfaces which you want to run beside the default IG. We have to create an interface group. This is an optional step because the Skyvva engine create a default interface group for each integration. This default interface group contain all interfaces existing in an integration. For each interface group the Skyvva runtime will create a corresponding queue and inherit some property from the interface group to the queue. For example the queue will become the type attribute e.g. EO or EOIO and the priority e.g. High, Medium or Low from the interface group. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 19. Interface Operation Type Slug: 3-18-interface-operation-type URL: https://help.skyvva.com/#article/3-18-interface-operation-type ================================================================================ # 19. Interface Operation Type You can choose the SKYVVA operation to define which kind of operation the interface should do. For example, we support CRUD operations: INSERT, UPDATE, DELETE, and UPSERT. Furthermore, specific SKYVVA operations like query or pullQuery can be set. As of now, we have also implemented the new operation type beside the classical operation as mention above. We have added three operations such as Autolaunched Flow, Apex class, and Publish Salesforce Event. The new operation is more powerful as it can handle the user custom business logic. Currently, we support different interface operations for the inbound and outbound interface as following: **Operation Type** 1.   Upsert 2.   Update 3.   Insert 4.   Delete 5.   Query 6.   Pullquery 7.   Upsert Auto External Id 8.   Update Auto External Id 9.   Delete Auto External Id 10. Autolaunched flow 11. Apex class 12. Publish salesforce event 13. Query All 14. REST Query 15. REST Query All 16. Bulk Query 17. Bulk Query All 18. Store Procedure #### DML Operation: You can use DML operation to Upsert, Update, Insert, and Delete Salesforce records. #### Upsert: This operation will create a new record and update the base of the existing record on External mapping value. SKYVVA checks the record in Salesforce by external value if the records do not exist then create a new record otherwise will update. #### Update: SKYVVA will check the records inside Salesforce base on the external value then update those existing records. #### Insert: ** **As for this operation type, it will only create a new record in Salesforce. #### Delete: This operation type will delete the records in Salesforce base on the external value. #### Specific SKYVVA Operation: #### Query: With our operation Query, you can send data in JSON to the receiver. The query operation is using to retrieve the sObject data from Salesforce, an external system such as SOAP client, PostMan, etc.  However, for PostMan we use the REST version, as for SOAP we use SearchService API. You can query the data by using SOQL statements and write SOQL by entering the outbound interface. Likewise, you can use a query editor to generate SOQL statements in our outbound interface. Query operation gives the response as JSON string back to the client. We have two possibilities to query the data: - Query operation without mapping to get the row data as a result. If you do not add, a mapping then just the SOQL result will be sent as JSON payload. - Query operation with mapping will give the enhance data or manipulate the data through the mapping as a result. You can add mapping and overwrite the value of the selected data from the database. Previously, you can only use operation query to mapped sObject structure, which is the target structure as well.  To map the result of SOQL statements to other structure is impossible. However, we have enhanced this operation to be more flexible to support any target structure ( free define structure). Now you can do a mapping from the sObject structure to the target structure, which can be also structure we have created as the message type. The structure on the target side could be the following: - sObject structure which is the same as the sObject we specify in the field 'Source/Target'. - Any message type from the repository - Any Istructure fields we have uploaded or manually created for that outbound interface [su_box title="Note" box_color="#e0ddbb" title_color="#00000"] Operation Query now can also modified the result through mapping engine. [/su_box] #### pullQuery: When we query data, we get a result, and then next time we query again we get the same result and it sends back to the client again. pullQuery operation is used in combination with an outbound interface and it is used within interface outbound Scheduler. The Scheduler can execute the outbound interface, select the data, and send the data back to the receiver. We use pullQuery operation as if we do not want to send the save data again which is sent once already. Therefore, by this pullQuery operation, we will send data only once. For this, we need to create a custom field on the Salesforce object. #### Auto Operation: As you know that SKYVVA is already supported with both “External Id as Key” and “Salesforce Id as Key”, however, we are not able to handle the mix key value.  Auto operation is implemented to handle dynamic key and it will combine between “External Id” and “Salesforce Id”. You can use this operation to Auto Upsert, Update, and Delete the records based on Salesforce Id or external fields, which is, specify on the interface. As of now, Integration3 is supporting Auto Operation the same way as CRUD operation. Integration3 can handle this operation automatically when the record contains the Salesforce Id. You do not have to explicitly select any Auto operation, just select UPSERT and it can handle it automatically when the record contains either the Salesforce Id or external Id for processing. #### Upsert Auto External ID: It will auto upsert record base on salesforce Id or external Id field. #### Update Auto External ID: ** **When you choose this operation it will auto-update records base on Salesforce Id or external Id field. #### Delete Auto External ID: When you choose this operation it will auto delete records base on salesforce Id. [su_box title="Note" box_color="#e0ddbb" title_color="#00000"]This operation improves the performance because an update with a dedicated key is faster than upsert where a search has to be performed first to find the record. If a Salesforce Id is provided directly there is no search needed. [/su_box] #### SKYVVA New Operation: Besides just doing the database operation SKYVVA has implemented the new operation to execute the posting processing after the mapping step. We redesign our inbound processing flow as the user can now put in their custom logic to replace our step or just plug-in their custom logic to SKYVVA/their steps. It allows you to handle your customs business logic as you wish. Those operations are Autolaunched Flow and Apex Class. These two operations have the same purpose, as SKYVVA will pass data and message to you after you are done performing your own business logic. You later must update the message status and return to SKYVVA. After returning the data, we update that message for the user to check those operations fail or success. However, Apex Class is implemented for the programmer, and require writing his or her own code. As for Autolaunched Flow, create for nonprogrammer. The final operation is to Publish Salesforce Event, which creates to consume the platform event. This table is showing the old and new processing flow **Old processing flow:** **New processing flow:** ·        Creating pending message ·        Creating pending message ·        Workflow ·        Workflow ·        Mapping ·        Mapping ·        Processing (upsert, insert, deleted, and update of sObject in the interface) ·        Invoke Salesforce Flow (whatever logic you want to do here. It is your own stuff). ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: 7. How to Import MetaData Provider to Create Message Type? Slug: 14-4-message-type-by-importing-xsd-file-format URL: https://help.skyvva.com/#article/14-4-message-type-by-importing-xsd-file-format ================================================================================ # 7. How to Import MetaData Provider to Create Message Type? Skyvva support different file formats(xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x) to create message type.  Upload button  automatically create a hierarchical structure like msgtype Istructure  from hierarchical file. #### What is message type? Message Type: Skyvva provide message type feature to create Istructure repository using different file format.  We  introducing the new concept of using message type as interface data type. So basically there are two way to put field mapping in interface is: 1. Use sobject: we use the sobject fields as source field in interface 2. Message type: we use costume fields created in message type as source field. Import  file feature is used to create message type and ISTructure. Skyvva support different format to create message type: **xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x** - MetaData Name is unique. - IStructure Repo name is also unique in the SAME level - MessageType Name is also unique in the SAME level - The combination of IStructure Name and type must be unique. - Previously, when we import the file we didn‘t apply this rules so we create duplicate but now we apply these rules. The result is we have less duplicate record which use less storage. #### Pre-requisite #### 1. Metadata: **What is Metadata Provider?** **   ** Metadata Provider tell the data processing layer of libmd which metadata fields (types) they can extract. When requested, Metadata read as many of the metadata fields listed by the client as possible from the specified media item. In Skyvva, when we create metadata, Name filed is only mandory field. On MetaData the Name cannot be duplicate. **How to create Metadata Provider?** Step 1: We have to click on metadata provider tab and click on New button. ![](../images/2020/06/8-14-2023-3-55-50-PM.png) Step 2: Fill in the name of the metadata provider. ![](../images/2020/06/8-14-2023-4-07-07-PM.png) #### 2. Istructure Repository: **What is Istructure Repository?** The term Repository is  in fact to store data and structure of a message. The purpose of Istructure is An Interface for a structure that contains the metadata of a structure. Istructure repository fields: **Fields** **Description** Repository ID External Id which is coming from SAP Type Type to distinguish between different type to be able to built hierarchy structure. Update Interfaces Structures Update related Interfaces when Istructure is updated Parent Set this field to Indicate which repository Is the parent of the record.This record Itself Is a repository. Level Hierarchy level to organise the repository.We can built hierarchical structure of repository. hasChild Set this flag If the repository Is a folder which contain other repository in a hierarchical structure. External Id This field is for storing the external id of the object  to be use for update the record. Path This filed store the path of the record from the root record until the current record name. Step 3:  Click on the 'New' button to create repository. ![](../images/2020/06/8-14-2023-4-23-08-PM.png) Step 4: Fill the name of the repository. ![](../images/2020/06/8-14-2023-4-19-14-PM.png) Step 5: Click 'Import Metadata' button. ![](../images/2020/06/8-14-2023-4-29-30-PM.png)Step 6: Select File Type as XSD and Attach upload file. ![](../images/2020/06/xsd.png) - Here’s the message type generate already. ![](../images/2020/06/result.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 13. Set Context Filter Slug: 16-12-set-context-filter URL: https://help.skyvva.com/#article/16-12-set-context-filter ================================================================================ # 13. Set Context Filter In this chapter, We will see how the "Set context" filter works and what is the use of it. - We have a new function for mapping which supports hierarchical data mapping. The new function is "Set Context". The use of a set context is that we can change the hierarchy level in the mapping so that we can easily map it to the target interface. It is used in Inbound processing only. In the set context, we have a filter function. - When you have many instances of the children, you have to filter which one it should use to map. Therefore we build the function "Set context filter" to add a condition to filter and to find only one record. Here you can select which record you want to use. #### How to use "Set Context"  Filter for hierarchical mapping:- **Pre- Requisite:-** - Create Integration. - Create Inbound Interface. - Create a metadata provider. **Step 1:-** - Add metadata provider, Repository and message type as shown in the given picture below:- ![](../images/2020/03/context1.png) **Step 2:-** - Open Mapping. - Here first we need to understand why we need to set context level. Like we can see that contact is the third level on the source side. So we need to map it to the same level but Contact(AccountId) is on the second level on the target side. At this time if we map the third level to second level we will see an error as shown in the picture given below. ![](../images/2020/03/context3.png) - Now we can deal with this issue with the help of "context level". - We will set context level on contact as shown in the picture given below. - Right-click on contact. ![](../images/2020/03/context2-1.png) - Click on the context level.![](../images/2020/03/context4.png) - Select Account02 and here we have filer in which we can add a condition to find one record we want to use to map. Click on ok as shown in the picture given below:- ![](../images/2020/03/newsetcontext.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If one condition is not enough to find one record then you need to add a second condition to become more precise in the filter.So you can define 3 different conditions to be able to fetch the desired records.[/su_box] - Now map Account02 from the source side to contact(AccountId) from the target side. As we set the context level so now Contact changed to the second level and belongs to Account02 and the fields of Contact is also belonged to the second level Account02. Shown in the picture given below. ![](../images/2020/03/context6.png) - Save the mapping. **Step 3:-** - Go to manual load. - Manually load data and select XML HIERARCHY as a data type. ![](../images/2020/03/context9.png) - Check the result on message monitoring:- ![](../images/2020/03/context8.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Contact(AccountId), No Foreign key could generated. Please select external Id fields to use with foreign key. If there are no external Id fields then make sure you use vlookup to link the object.[/su_box] #### Enhancement of SET FILTER on mapping in v2.47 We have the function to set context on the node level, to fetch data specify by condition value. But the user can pick up the value from one node occurrence only followed by condition input. On the new enhancement of set filter function, we have modified from the node level to the field level. In this way, the user has the possibility to get value from multiple node occurrence to map on target side. **Pre-required ** - Generate MessageType from payload - Create inbound Interface - Mapping and set filter - Post data from V4 Integrate **Steps to see the use of set context** Step-1 create  Integration -> Create Inbound Interface. ![](../images/2020/06/Untitled1.png) Step-2 Do  Mapping ![](../images/2020/06/Untitled2.png) In this case, I have choose **IDOC** as the master node to map on target side. Then I need the field from node** E1EDK14 **to map the target with the same level as master node. But this node is stayed on lower level than **IDOC**. So in this case we need to set context to move node level from lower to higher. - Right click on **E1EDK14 **=> Set Context Level ![](../images/2020/06/Untitled3.png) - Select **IDOC **to move level from lower equal to IDOC level then click Ok ![](../images/2020/06/Untitled4.png) - Choose field from source to map on target In this example below I want to map field **ORGID** to different field on target ![](../images/2020/06/Untitled5.png) - Drag from source to target => Ok for set the condition ![](../images/2020/06/Untitled6.png) - Put the condition. - ORGID to BillingCity if QUALF = 012 - ORGID to AccountNumber if QUALF = 008 - ORGID to Name if QUALF = 016 **Note:** The Condition value must be unique, otherwise the run-time will give the unexpected result ![](../images/2020/06/Untitled7.png) After save the mapping we can validate what the value that we have set on the condition. By right click the field that we have set context => Set/Remove Filter ![](../images/2020/06/Untitled8.png) ** ** **Note:** The node or field that we have set Context or Filter will be remark with blue italic letter ![](../images/2020/06/Untitled9.png) - With this condition **AccountNumber** will get value = 1000 ![](../images/2020/06/Untitled10.png) - With this condition **BillingCity** will get value = TA ![](../images/2020/06/Untitled11.png) - With this condition **Name** will get value = 2000 ![](../images/2020/06/Untitled12.png) Within the condition defined on **QUALF** and **ORGID **has been map to different target field so we can briefly work below: - If **QUALF** = 008 then AccountNumber will get value “1000” - If **QUALF** = 012 then BillingCity will get value “TA” - If **QUALF** = 016 then Name will get value “2000” ![](../images/2020/06/Untitled13.png) Post data from Postman ![](../images/2020/06/Untitled14.png) The data has been insert correctly ![](../images/2020/06/Untitled15.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Batch Processing Title: 14. Integrate3Batch to handle tree message Slug: 17-13-integrate3batch-to-handle-tree-message URL: https://help.skyvva.com/#article/17-13-integrate3batch-to-handle-tree-message ================================================================================ # 14. Integrate3Batch to handle tree message SKYVVA provide a different mode  for inbound processing. Using this variety of modes we can integrate all kinds of data into salesforce. You can integrate data in different modes including Synchronous, Asynchronous, Batch Processing, Bulk Processing(SKYVVA Bulk and SFDC Bulk), and Automatic switch. Batch Processing uses for running batch jobs. It has more capability than synchronous and you can check job monitoring. Records have more than 200 but less than 5000, so we use batch processing. Skyvva released a new version with v3 for handling tree messages in batch processing. At the moment, with V2 the record we store in the attachment are flat single records and if we use hierarchical then it is in the old repeated parent format. With integrate3Batch we don't want to use the repeated parent data format anymore in order not to waste storage for the iData table. In The difference is that with v3 we can use message type and the data we store in file and not in attachment anymore. When sending data from outside into Salesforce using skyvva engine those data will be serialize into attachment. All incoming data will be result in attachments and kept in #### Difference between v2 and v3 batch processing. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Platform Event Title: 1. Platform Event Slug: 26-subscribe-salesforce-platform-event-created-by-skyvva-inbound-interface URL: https://help.skyvva.com/#article/26-subscribe-salesforce-platform-event-created-by-skyvva-inbound-interface ================================================================================ # 1. Platform Event To subscribe platform event we can use the apex trigger. We use generic method to execute the interface either it is an inbound or outbound interface. Execution of interface using apex trigger is is a Salesforce solution. But with Skyvva we can enrich the event data with mapping and process the data after we have mapped the event/message. Here It is the same way as we process an incoming message through the skyvva processing pipeline e.g. workflow, mapping, processing. #### Platform event **Platform events** enable developers to deliver secure, scalable, and customizable **event** notifications within the **Salesforce platform** or from external sources. **Platform events** are based on a publish-subscribe architecture. #### How Platform event work with inbound processing? - we create a platform event with our inbound interface with the new version. - We used API to execute an inbound interface. With this API we can execute an inbound or outbound interface in a synchronous or asynchronous way. We have to provide this API in two versions e.g. REST API and internal apex method. The REST API is used by external REST client and the internal API is used by apex class, Flow, or Process. With this API or method, we should be able to execute both inbound and outbound interface unlike our existing method 'invokeCalloutX()' where we can use only wit outbound interface. #### How to create the platform event SKYVVA feature? We can create a platform event without programming with SKYVVA feature. Creating an event can be done using the inbound or outbound interface. With the inbound interface, we get data from the outside and with this data, we can create an event either into the Salesforce bus. Follow the given steps to create platform event with SKYVVA: **Step1: Create a platform Event:** - Go to Set Up. - Search for Platform Event in the quick find box. - Click on the new button. - Fill the required fields. - And click on the Save button. [![](../images/2019/10/apextrigger_1-3.png)](../images/2019/10/apextrigger_1-3.png) **Step2: Create custom Fields** - Go to Custom fields and Relationship section. - Click on new button. ![](../images/2019/10/apextrigger_2-1.png) - New button navigate to: [![](../images/2019/10/apextrigger_3.png)](../images/2019/10/apextrigger_3.png) - Click on next button. - Create two custom fields. AccountNumber and Name. [![](../images/2019/10/apextrigger_4.png)](../images/2019/10/apextrigger_4.png) Repeat same process to create Name field. **Step3: Create Integration** [![](../images/2019/10/apextrigger_10.png)](../images/2019/10/apextrigger_10.png) **Step4: Create interface. ** We can execute inbound interface with our new API i,e Event Interface. - source/target name: select Platform Event name. here platform event name is Platform_Event_Account_e. - Operation Type: It should be Public salesforce Event. - Interface Type: Event Interface [![](../images/2019/10/apextrigger_11.png)](../images/2019/10/apextrigger_11.png) **Step5: Do mapping** [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_40_21.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_40_21.png) **Step6: Upload data manually.** - Go to Integration detail page. - Upload CSV file. - Push data to message board. [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_51_53.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_51_53.png) **Step7: Search result on message Monitoring:** - Go to Message Board - Select Interface and search [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_52_40.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_52_40.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Change Data Control (CDC) Title: 10. How to use the Salesforce CDC change event? Slug: 20-10-how-to-use-cdc-change-event URL: https://help.skyvva.com/#article/20-10-how-to-use-cdc-change-event ================================================================================ # 10. How to use the Salesforce CDC change event? In this unit, We will see how we can use Change Events to synchronize changes to the Salesforce records in your ERP(Enterprise resource planning) system. You can subscribe to change events the same way you subscribe to other events, like PushTopic events or platform events. You can use CometD or Apex triggers. CometD is a messaging library that enables listening to events through long polling and simulates push technology.  Even we can consume the CDC change event using a process builder. #### Change Data Capture:- A Change Data Capture event, or change event, is a notification that Salesforce sends when a change to a Salesforce record occurs as part of a create, update, delete, or undelete operation. The notification includes all new and changed fields and header fields that contain information about the change. So we use salesforce CDC when we needed a real-time notification. #### So here we will learn How to Consume the change events using an apex trigger and do local action e.g. update an account:- **How to use it?** **Follow the given steps:-** **Step 1:- **Subscribing to platform events:- - Set up debug logs for event Subscriptions. 1. From Setup, enter Debug Logs in the Quick Find box, then click Debug Logs. 2. Click New. 3. For Traced Entity Type, select Automated Process. 4. Select the time period to collect logs and the debug level. 5. Click on Save. ![](../images/2019/10/change.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Using the Event PlatForm for use the Salesforce CDC change event to send data out with the skyvva API ,The user type is  Automated Process.[/su_box] **Step 2:-  **Select Object for Change data capture:- 1. From Setup, enter Change data capture in the Quick Find box. 2. Select-Object. ![](../images/2019/10/change1.png) 3. Save it. ![](../images/2019/10/change2.png) **Step 4:-** Create an Apex trigger:- - Open Developer console. - Click on File=>New=>Apex Trigger. - Enter Name and sObject as shown in the picture given below. ![](../images/2019/10/cdcEvent1.png) 4. Click on the Submit button to generate a header script. 5. After clicking on the submit button. 6. We will add the code as shown in the picture given below. ![](../images/2019/10/cdcEvent.png) **We can use this code:-** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]trigger trgTestCDC on AccountChangeEvent (after insert) { List lstId = new List(); for (AccountChangeEvent event : Trigger.New) { EventBus.ChangeEventHeader header = event.ChangeEventHeader; System.debug('Received change event for ' + header.entityName + ' for the ' + header.changeType + ' operation.'); System.debug('RecordIds: ' + header.recordIds); System.debug('Account Name: ' + event.Name); System.debug('Account Phone: ' + event.Phone); if ( header.changetype == 'UPDATE') { lstId.addAll(header.recordIds); } } }[/aux_code] #### Check the result on Debug logs:- 1. From Setup, enter Debug Logs in the Quick Find box, then click Debug Logs. 2. We can check results in debug logs. ![](../images/2019/10/cdcEvent2.png) #### #### #### #### #### #### #### #### Now you might be thinking why our chapter name is "How to use the Salesforce CDC change event to send data out with the SKYVVA API?" So here is the reason. The salesforce CDC change event to send data out with the SKYVVA API means, that we are using a combination of the real-time capability of salesforce change data capture and callout capability of SKYVVA. The callout capability of SKYVVA is best as we have different adapters that connect to many external systems for this our user doesn't need a programmer. This is the benefit of using SKYVVA invoke Callout2(). #### We provide these two modes to our user:- - Real-time with our invoke callout. The combination of the Salesforce CDC  change event and SKYVVA callout. - Batch processing with our invoke callout. Using SKYVVA CDC with SKYVVA callout. #### When to use which mode:- - If there is a lot of changes and updations it will impact the system change during real-time. Where we don't need real-time in some cases, sometimes real-time block the resources. It is a resource-consuming blocking of the connecting systems in terms of integration technology. In this case, SKYVVA CDC with SKYVVA callout is the best option, because of its scheduler. - The combination of Salesforce CDC and SKYVVA callout is used when we want an updated record in real-time. As the callout capability of SKYVVA is best as we have different adapters that connect to many external systems for this our user doesn't need a programmer. This is the benefit of using SKYVVA invoke Callout. #### So here we will learn how to consume the event using an apex trigger and sending out data using Invoke callout2. **How to use it?** **Pre-requisite:-** - Create Integration. - Create Interface (Outbound). **Follow the given steps:-** **Step 1:- **Subscribing to platform events:- - Set up debug logs for event Subscriptions. 1. From Setup, enter Debug Logs in the Quick Find box, then click Debug Logs. 2. Click New. 3. For Traced Entity Type, select Automated Process. 4. Select the time period to collect logs and the debug level. 5. Click on Save. ![](../images/2019/10/change.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Using the Event PlatForm for use the Salesforce CDC change event to send data out with the skyvva API ,The user type is  Automated Process.[/su_box] **Step 2:-** Register Licence key for Automated Process user:- 1. From Setup, enter custom settings in the Quick Find box. 2. Click on the Manage option. ![](../images/2019/10/change5.png) 3. Click on the "NEW" button at the top. 4. Enter the SKYVVA license key in the value block. 5. Save it. ![](../images/2019/10/change6.png) **Step 3:-  **Select Object for Change data capture:- 1. From Setup, enter Change data capture in the Quick Find box. 2. Select-Object. ![](../images/2019/10/change1.png) 3. Save it. ![](../images/2019/10/change2.png) **Step 4:-** Create an Apex trigger:- - Open Developer console. - Click on File=>New=>Apex Trigger. - Enter Name and sObject as shown in the picture given below. ![](../images/2019/10/re_cdc_change_event.png) 4. Click on the Submit button to generate a header script. 5. After clicking on the submit button. 6. It will show the screen as shown in this picture given below. ![](../images/2019/10/re_cdc_change_event1.png) **Step 5:-  **Generate Trigger script by following steps given below:- - Navigate to the SKYVVA Trigger tab. - Select Change Event Trigger in Trigger Type picklist. - Checkbox After insert. - Select your integration in Integration Name. - Select your Interface in Interface Name. - Select object change event in Select Object. - Select any Mode in Trigger Mode e.g. AUTO. - Click the Generate Script tab to generate script Trigger. ![](../images/2019/10/re_cdc_change_event2.png) 9. Select and copy the generated script and paste it in the apex trigger which we created in step 4. 10. Do it as shown in the picture given below. ![](../images/2019/10/re_cdc_change_event3.png) 11. Save it. #### Check the result on Message Monitoring:- ![](../images/2019/10/re_cdc_change_event4.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For trigger after delete it is working when query selection with keyword "ALL ROWS". E.g SELECT BillingCity,BillingCountry,Name,Id,Description From Account ALL ROWS[/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Platform Event Title: 2. How to consume the platform event created through Skyvva Apex trigger? Slug: 26-1-how-to-consume-the-platform-event-created-through-skyvva-apex-trigger URL: https://help.skyvva.com/#article/26-1-how-to-consume-the-platform-event-created-through-skyvva-apex-trigger ================================================================================ # 2. How to consume the platform event created through Skyvva Apex trigger? A **trigger** is an **Apex** script that executes before or after specific data manipulation language (DML) events occur, such as before object records are inserted into the database, or after records have been deleted. **Triggers** enable to perform custom actions before or after changes to Salesforce records. **Pre-requiste**: create platform event **How to create Trigger:** - Go to created platform event - Go to trigger section - Click on New button. Use the given Code to apex trigger: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] trigger trgPlatformAccountEvent on Platform_Event_Account__e (after insert) { List lst = new List(); for(Platform_Event_Account__e evt: Trigger.New) { Account acc = new Account(); acc.Name = evt.Name__c + 'evt' ; acc.AccountNumber = evt.AccountNumber__c + 'evt' ; lst.add(acc); } insert lst; }[/aux_code] [![](../images/2019/10/apextrigger_7.png)](../images/2019/10/apextrigger_7.png) Make sure Apex Identifier should be correct. For example 'evt'. if you copy code from browser then it will take char in HTML . when the apex trigger is used to consume the platform event we can check created record and its data. All the custom fields which we added in platform event are shows with 'evt'. For example AccountNumber+evt, name+evt. Follow the steps to show How to use the apex trigger to consume the platform event? Step1: Go to created integration-> Open your Interface -> go to manual Load -> Uplaod data ![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-09-12_27_31.png) Go to message board -> Search for result; ![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-09-12_38_41.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Platform Event Title: 3. Consume platform event by process builder Slug: 26-2-consume-platform-event-by-process-builder URL: https://help.skyvva.com/#article/26-2-consume-platform-event-by-process-builder ================================================================================ # 3. Consume platform event by process builder Process Builder is a Salesforce’s point-and-click tool that lets you easily automate if/then business processes and see a graphical representation of your process as you build. Every process consists of a trigger, at least one criteria node, and at least one action. You can configure immediate actions or schedule actions to be executed at a specific time. Here we are using process builder to consume platform event. **Follow the given steps to show how process builder to consume platform event.** Here we are using same Integration and interface. we have to deactivate apex trigger. Step 1: Create process using process builder. - Go to set up. - search for Process Builder in quick search box. - Go to process Builder. ![](../images/2018/10/OutboundProcessing_3.png) - Click On new button. - Enter process name which can recognise your process. - Select Process status as : A platform Event message is received. - Click on save button. ![](../images/2019/10/extra.png) - Add the Object and Specify when to start the Process. 1. Select Platform Event 2. Choose object as Account 3. Add Matching condition where I put this condition on Account name field.;- ![](../images/2019/10/Process-builder2.png) - Add the Criteria to define it for Action Group: 1. Name the Criteria 2. Choose No Criteria option 3. click on Save button . ![](../images/2019/10/Process-builder3.png) - Add the actions to execute when the criteria are met by: 1. Select the Action Type: Create Record 2. Give the Action Name: Account Creation 3. Select Record type: Account - Set Field Values as per data and platform event reference ![](../images/2019/10/Process-builder4.png) To be able to execute process builder, just click on Activate button. ![](../images/2019/10/Process-builder5.png) step2: manually Load data - Go to Integration -> details. - click on Manual Load. - Upload data Manually. - select uploaded record records and push to message board. ![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-09-18_06_05.png) **Step 3: Monitor the result on message board** ![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-09-12_38_41-1.png) As this record are created by process builder consuming platform event we can't see details of created record. we can't get Related to" link here. we can check data in dev console. **Step 4: Search created record in developer console:** - Go to set up - Open developer Console - Apply query on Account Object ![](../images/2019/10/Process-builder6.png) Note: The process runs asynchronously under the Automated Process entity. As a result, there can be a delay between when an event message is published and when the process evaluates the event message ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 1. Operation Types Slug: 25-operation-types URL: https://help.skyvva.com/#article/25-operation-types ================================================================================ # 1. Operation Types We can choose the SKYVVA operation to define which kind of operation the interface should do. For example, we support CRUD operations: INSERT, UPDATE, DELETE, and UPSERT. Furthermore, specific SKYVVA operations like query or pullQuery can be set. As of now, we have also implemented the new operation type beside the classical operation as mention above. We have added three operations such as Autolaunched Flow, Apex class, and Publish Salesforce Event. The new operation is more powerful as it can handle the user custom business logic. #### Currently, we support different interface operations for the inbound and outbound interface as following: ![](../images/2020/07/32323-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 2. Operation Query Slug: 25-1-operation-query URL: https://help.skyvva.com/#article/25-1-operation-query ================================================================================ # 2. Operation Query In this chapter, we will learn about one of the operation types which is "Operation query". #### What is a Query? Query means querying data from salesforce from a client by using Soap UI or postman and when we use postman we use rest version and for soap, we use search service API. Querying data is using SOQL statement, We can write SOQL by entering into the outbound interface or using the query editor, and this way we can generate SOQL statements in our outbound interface. It gives the response as a JSON to the client if we call using Soap UI or by the postman, we can put different conditions or requests. But the main reason or requirement is query data. #### 1.1 We have 2 possibilities for query operation:- 1. Query operation without mapping will give raw data as a result. 2. Query operation with mapping will give enhanced data as a result. #### 1.2 How does query works? **The procedure is given below:-**         Pre-Requisite :- - Create Metadeta provider. - Create Istructure Repository. - Create Message type e.g AccountMT is the parent of ContactMT. - Create Integration. **1. Create Outbound Interface then select Status is Deployed and Operation Type with Query (As shown in the picture given below):-** ![](../images/2019/07/query.png) **2. Add Metadata Provider, Istructure Repository, Message Type for interface(As shown in the picture given below):-** ![](../images/2019/07/query1.png) **3. Do tree mapping field Salesforce object map with Message Type step by step with the level (As shown in the picture given below):-** ![](../images/2019/07/query2.png) **4. Navigate to Postman application.** **5. Create a new request and a new folder.** **6. Change method GET to POST and enter Salesforce classic URL** **with /services/apexrest/skyvvasolutions/SearchService (shown in the picture given in point 8).** **7.Click Body tab => click raw tab => select JSON (application/json) in picklist => Create rest body** **The body is shown below in the picture.** ``` { "INTEGRATIONID" : "xxxxxxxxxxxx", "INTERFACENAME" : "xxxxxxxxxxxx" } ``` **8. Click Header tab => enter Authorization for Key cell => create Bearer with sessionId.** **(As shown in the picture given below).** ![](../images/2019/07/query3.png) **9. Click Send button to get response data.** **10. Here is the result of the responded JSON data.** ![](../images/2019/07/query4.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 3. Operation PullQuery Slug: 25-2-operation-pullquery URL: https://help.skyvva.com/#article/25-2-operation-pullquery ================================================================================ # 3. Operation PullQuery In this chapter, we will learn about one of the operation types which is "Operation PullQuery". #### What is pullQuery? When we query data we get a result and then next time we query again we get the same result and it sends to the client again. So the pullQuery is used in combination with an outbound interface and it is used within interface outbound scheduler, we have a schedule that can execute the outbound interface, select the data and send the data to the receiver. Here we use pullQuery operation like we don't want to send save data again which is sent once already. So by this pullQuery operation, we will send data only once. For this, we need to create a custom field on account salesforce object. #### 2.1 How does pullQuery works? **The procedure is given below:-** ** Pre-Requisite:-** - Create Integration. - Create Adapter- SFDC2SAPPI. #### 1. Create an Outbound interface:- - Interface Direction - "OutBound". - Operation Type - "pullQuery". ![](../images/2019/07/pquery.png) - Click on Query Editor - Enter Query as per requirement. - Save SOQL. ![](../images/2019/07/pquery1.png) - Select Inbound Interface ID in "Response Interface". - Select Outbound Adapter. - Select Invoke Outbound/Inbound Interface. - Select Processing mode - "Asynchronous" ![](../images/2019/07/pquery2-3.png) - Click on Do Mapping. - Save Mapping. ![](../images/2019/07/pquery3.png) #### 2. Create an Inbound interface:- - Interface Direction - "Inbound". - Operation Type - "Upsert". ![](../images/2019/07/pquery4.png) - Click on Do Mapping. - Create Formula in the sentToSAP field. - Click on Save. ![](../images/2019/07/pquery6.png) ![](../images/2019/07/pquery5.png) - Run the "Interface Execution Scheduler". ![](../images/2019/07/pquery10.png) #### Open Developer Console and run the code given below:- skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnxml=true; c.returnListRecord=true; c.iscreatemessage=true; List lId = new List(); lId.add('0017F000009gT11QAE'); for(Account a : [SELECT Id FROM Account]){ lId.add(a.Id); } skyvvasolutions.IServices.invokeCallout2('PullQuery','Outbound',lId,'SYNC', c); ![](../images/2019/07/pquery7.png) #### Check the result in Message Monitoring:- ![](../images/2019/07/pquery8.png) ![](../images/2019/07/pquery9.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 4. Autolaunched Flow Slug: 25-3-autolaunched-flow URL: https://help.skyvva.com/#article/25-3-autolaunched-flow ================================================================================ # 4. Autolaunched Flow To do some more business logic after the processing of an interface. We will add a new operation type name ‘Autolaunched flow’ for interface. This operation type is using for customers who want to add more their business logic by using Salesforce Flow. #### What is Autolaunched Flow? This is the feature to provide the post-processing logic using Salesforce Flow and Process Builder. Therefore we pass to the Flow/Process the sObject Id which has been created, updated or deleted by the interface operation. Currently, we support different interface operation for the inbound interface like following: - upsert - update - insert - delete - Query - Pull Query - upsert Auto External Id - update Auto External Id - Delete Auto External Id - Autolaunched Flow ### Steps to use the operation type Autolaunched Flow : **Step1: Create a flow with type autolaunched** Go to Setup and search for flow in Quick find/Search ![](../images/2019/06/Untitled1.png) - Create new flow with name customerflow ![](../images/2019/06/flow-10.png) **Step2: Create an apex class for invoking from flow(customerflow):** This apex class is used to update status and comment message after processing flow finished. ![](../images/2019/06/flow-9.png) [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] global with sharing class TestInvokeWorkflow { @InvocableMethod global static void updateMessage(List myDto){ try{ List lstAcc = new List(); List lstMsg = new List(); List lstUpdate= new List(); for(ClassProperties dto: myDto){ lstAcc.addAll(dto.myListAcc); lstMsg.addAll(dto.myListMSG); } for(Integer i=0;i< lstAcc.size(); i++){ if(lstAcc[i].Id !=null){ lstMsg[i].skyvvasolutions__Status__c = 'Completed'; lstMsg[i].skyvvasolutions__Comment__c = 'Success from flow'; lstUpdate.add(lstMsg[i]); }else{ lstMsg[i].skyvvasolutions__Status__c = 'Failed'; lstMsg[i].skyvvasolutions__Comment__c = 'Failed from flow'; lstUpdate.add(lstMsg[i]); } } update lstUpdate; }catch(Exception ex){} } global class ClassProperties{ @InvocableVariable(Required = true) global List myListAcc; @InvocableVariable(Required = true) global List myListMSG; } } [/aux_code] **Step 3: Create new integration and interface** We create a new interface with: - Operation type : Autolaunched Flow - Source/Target Name: Account - Custom Flow: customerflow - Do mapping (Account) ![](../images/2019/06/flow-12.png) Go to interface Detail: ![](../images/2019/06/flow-11.png) Scroll down the page to mapping section> ![](../images/2019/06/flow-13.png) **Step4: Push data by Manual Load:** We choose Account as a sample data. ![](../images/2019/06/flow-14.png) Push the selected data and click on message board button. ![](../images/2019/06/flow-15.png) **Step5: 5. We can check on message board:** When we push uploaded data, we can see the result on message monitoring page. ![](../images/2019/06/flow-16.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 5. DML Operation Slug: 25-4-dml-operation URL: https://help.skyvva.com/#article/25-4-dml-operation ================================================================================ # 5. DML Operation In this chapter, we can see DML Operation which we have in the list of operation types. #### DML Operation: You can use DML operation to Upsert, Update, Insert, and Delete Salesforce records. #### Upsert: This operation will create a new record and update the base of the existing record on External mapping value. SKYVVA checks the record in Salesforce by external value if the records do not exist then create a new record otherwise will update. #### Update: SKYVVA will check the records inside Salesforce base on the external value then update those existing records. #### Insert: ** **As for this operation type, it will only create a new record in Salesforce. #### Delete: This operation type will delete the records in Salesforce base on the external value. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 6. Publish salesforce event Slug: 25-5-publish-salesforce-event URL: https://help.skyvva.com/#article/25-5-publish-salesforce-event ================================================================================ # 6. Publish salesforce event In this chapter, we will see one of the operation types which is the "Publish salesforce event". #### Platform event **Platform events** enable developers to deliver secure, scalable, and customizable **event** notifications within the **Salesforce platform** or from external sources. **Platform events** are based on a publish-subscribe architecture. #### How to create the platform event SKYVVA feature? We can create a platform event without programming with SKYVVA feature. Creating an event can be done using the inbound or outbound interface. With the inbound interface, we get data from the outside and with this data, we can create an event either into the Salesforce bus. Follow the given steps to create a platform event with SKYVVA. **Step1: Create a platform Event:** - Go to Set Up. - Search for Platform Event in the quick find box. - Click on the new button. - Fill the required fields. - And click on the Save button. [![](../images/2019/10/apextrigger_1-3.png)](../images/2019/10/apextrigger_1-3.png) **Step2: Create custom Fields** - Go to Custom fields and Relationship section. - Click on new button. ![](../images/2019/10/apextrigger_2-1.png) - New button navigates to: [![](../images/2019/10/apextrigger_3.png)](../images/2019/10/apextrigger_3.png) - Click on the next button. - Create two custom fields. AccountNumber and Name. [![](../images/2019/10/apextrigger_4.png)](../images/2019/10/apextrigger_4.png) Repeat the same process to create the Name field. **Step3: Create Integration** [![](../images/2019/10/apextrigger_10.png)](../images/2019/10/apextrigger_10.png) **Step4: Create an interface. ** We can execute an inbound interface with our new API i,e Event Interface. - source/target name: select Platform Event name. here platform event name is Platform_Event_Account_e. - Operation Type: It should be a Public salesforce Event. - Interface Type: Event Interface [![](../images/2019/10/apextrigger_11.png)](../images/2019/10/apextrigger_11.png) **Step5: Do mapping** [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_40_21.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_40_21.png) **Step6: Upload data manually.** - Go to the Integration detail page. - Upload CSV file. - Push data to the message board. [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_51_53.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_51_53.png) **Step7: Search result on message Monitoring:** - Go to Message Board - Select Interface and search [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_52_40.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_52_40.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 7. Apex Class Slug: 25-6-apex-class URL: https://help.skyvva.com/#article/25-6-apex-class ================================================================================ # 7. Apex Class In this chapter, we will see one of the operation types which is the "Apex Class". #### Apex Class To obtain more potential to enable the user to execute the business process by practicing an apex class through which SKYVVA passes data & message to the user after the user performs its own business logic already with data that SKYVVA passed, later user must update message status and return it to SKYVVA. #### How to use the Apex Class, the process is given below:- - Click on Setup, and in Quick Find box, write Apex Class. - In the Apex class setup page, select "New", as shown in the picture given below. ![](../images/2020/07/apexclass.png) - Paste the given code in Apex class Body. The code for example is given below. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] global class TestApexOperation extends skyvvasolutions.ApexCustomClassOperation{ global override void execute(List lstObj, ListlstMessage){ List lst = new List(); Account up = new Account(); for(Integer j=0; j< lstObj.size(); j++){ up = (Account)lstObj[j]; up.Name = up.Name ; up.AccountNumber = (up.AccountNumber + 500); lst.add(up); } Database.SaveResult[] srList = Database.insert(lst, false); for(Integer i=0; i< srList.size(); i++){ if(srList[i].isSuccess()){ lstMessage[i].skyvvasolutions__Status__c = 'Completed'; lstMessage[i].skyvvasolutions__Comment2__c = 'Comment success form custom Apex Class'; }else{ lstMessage[i].skyvvasolutions__Status__c = 'Failed'; lstMessage[i].skyvvasolutions__Comment2__c = 'Comment Failed from custom Apex Class'; } } } } [/aux_code] - Click Save, As shown in the picture given below. ![](../images/2020/07/apexclass1.png) The configuration on the interface - Create an interface and choose an operation "Apex Class". ![](../images/2020/07/apexclass2.png) - In the interface detail page,  Enter your Apex class name in Operation Type Apex Class. ![](../images/2020/07/apexclass3.png) - Do mapping ![](../images/2020/07/apexclass4.png) - Push data Using Manual load ![](../images/2020/07/apexclass6.jpg) - Check message in message monitoring ![](../images/2020/07/apexclass5.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: 6. How to Import MetaData Provider to Create Message Type? Slug: 14-5-message-type-by-importing-xsd-file-format URL: https://help.skyvva.com/#article/14-5-message-type-by-importing-xsd-file-format ================================================================================ # 6. How to Import MetaData Provider to Create Message Type? We enhance importing feature more due to the fact see in data structure is quite complicated from client. different schema. So First initial version is now extended to support more complex msg type. We can support that different format to create msg type like XSD, wsdl1.0/2.2, Swagger/ Open API. For instance when we use Rest API, data format, API description layout is different . User does not use WSDL they are the use of swagger which is first model and now we move swagger and identify it as OpenAPI So this is latest version. That some API describe the usage of Open API, grammar and then we import it and create msg type. This msg type we use to generate request to invoke Rest api . we assist creating msg type base on different msg data structure so you do not want to create msg type manually. ![](../images/2020/07/import-swagger-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Import Swagger/OpenAPI feature is used to create Rest Template  [/su_box] We use a message type which we create according to the response structure of the REST response then the message name should be the root node. The processing should be based on the message node. To secure our data transmission system need specific formatted data. We have create message type.  The messaging contain message data and metadata i.e. information about message itself. In Skyvva we have specific Rest template message type contains URL, header and body. We have different template for request and response.  As we have three element in Request: , - Request URL - Request Header - Request Body #### How to Import File: Follow the steps: - Create Metadata Provider. - Go to your Repository. - Click on Import Metadata button. ![](../images/2020/07/im-1.png) - Choose file type as Swagger 2.0/OpenAPI 2.0 and click next button, then Attach upload file. - Choose the API Name. - Click Save button it will generate message type. ![](../images/2020/07/swagge.png) - Here's the result: After clicking the save button, it will create an API and ReferenceObject, and this file type generates the REST template, including the Request and Response. ![](../images/2020/07/8-14-2023-5-42-19-PM.png) #### How to use Rest Template for processing? **Step1**: **Create Adapter** - First Insert Adapter Record By giving prefer Name and select Type = REST - Now Insert Properties If Need Authorization. - REST API Service Endpoint URL : “” , Insert Endpoint URL where Request will direct - Username : “”, Your Endservice UserName - Password : “”, Your Endservice Password - Authentication : “BASIC” - REST Operation : “POST” ![](../images/2020/03/Untitled10.png) Step 2 :Create interface request(outbound) and interface response (inbound) , link interface inbound to outbound :**Configuration on Interface using for google ** ![](../images/2020/03/Untitled3.png) #### How to Link response Interface: Scroll the page to the Inbound/Outbound set up section. And select the response interface. ![](../images/2020/03/Untitled4.png) Link rest Adapter to Request interface ![](../images/2020/03/Untitled5.png) Mapping ![](../images/2020/03/Untitled6.png) Call lout the data from developer console ![](../images/2020/03/Untitled12.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 8. Operation Query All Slug: 25-7-operation-query-all URL: https://help.skyvva.com/#article/25-7-operation-query-all ================================================================================ # 8. Operation Query All In this chapter, we will learn about one of the operation types which is "Operation query All". #### What is a Query All? Query All means querying the data from a client by using Soap UI or postman and when we use postman we use rest version and for soap, we use search service API. Querying data is using SOQL statement, We can write SOQL by entering into the outbound interface or using the query editor, and this way we can generate SOQL statements in our outbound interface. It gives the response as a JSON to the client if we call using Soap UI or by the postman, we can put different conditions or requests. But the main reason or requirement is query data. #### 1.1 We have 2 possibilities for query All operation:- 1. Query operation without mapping will give raw data as a result. 2. Query operation with mapping will give enhanced data as a result. #### 1.2 How does query All works? **The procedure is given below:-**         Pre-Requisite :- - Create Metadeta provider. - Create Istructure Repository. - Create Message type e.g AccountMT is the parent of ContactMT. - Create Integration. **1. Create Outbound Interface then select Status is Deployed and Operation Type with Query All (As shown in the picture given below)** ![](../images/2020/07/qall.png) **2. Add Metadata Provider, Istructure Repository, Message Type for interface(As shown in the picture given below):-** ![](../images/2019/07/query1.png) **3. Add SOQL Query for interface(As shown in the picture given below):-** - SELECT Id, BillingCity, BillingCountry, Name FROM Account ALL ROWS : means query all the data that exist in salesforce and even deleted data from salesforce (recycle bin) - SELECT Id, BillingCity, BillingCountry, Name FROM Account : means query only data that exist in salesforce - SELECT Id, BillingCity, BillingCountry, Name FROM Account WHERE isDeleted = true ALL ROWS : means query only data that delete from salesforce ![](../images/2020/07/EditInterface222.png) **4. Do tree mapping field Salesforce object map with Message Type step by step with the level (As shown in the picture given below):-** ![](../images/2019/07/query2.png) **5. Navigate to Postman application.** **6. Create a new request and a new folder.** **7. Change method GET to POST and enter Salesforce classic URL** **with /services/apexrest/skyvvasolutions/SearchService (shown in the picture given in point 8).** **8.Click Body tab => click raw tab => select JSON (application/json) in picklist => Create rest body** **The body is shown below in the picture.** ``` { "INTEGRATIONID" : "xxxxxxxxxxxx", "INTERFACENAME" : "xxxxxxxxxxxx" } ``` **9. Click Header tab => enter Authorization for Key cell => create Bearer with sessionId.** **(As shown in the picture given below).** ![](../images/2019/07/query3.png) **10. Click Send button to get response data.** **11. Here is the result of the responded JSON data.** - The highlighted Account is the deleted account which shows that Query All operation works fine. ![](../images/2020/07/qall1.png) - Here is the same Account in the Recycle bin. ![](../images/2020/07/qall3.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 23.8 Rest Query Slug: 25-8-rest-query URL: https://help.skyvva.com/#article/25-8-rest-query ================================================================================ # 23.8 Rest Query This document describes how to create an inbound interface using SKYVVA REST query mode in SAP PI/PO with a new SKYVVA  V3 connector module. #### REST Query REST query -This is the new type we support and we can handle bigger sizes as the searchService. This is possible because Salesforce held the cursor and can return the result page by page. In our module, we can collect the result set and combine it with a new message. You can configure in your Interface with operation type as "REST Query“ to use the REST Query feature. Then you need to configure your SOQL in the SKYVVA interface. Base on your configuration in Interface SkYVVA connector will automatically detect the operation type and work accordingly with the same search operation. **The following figure shows how the new V3 REST Query works with the new V3 module** ![](../images/2020/02/Untitled-155.png) #### How Rest Query works - Create an inbound interface. 2. Select the Operation type as REST Query". As shown below. ![](../images/2020/02/Untitled-45.png) ![](../images/2019/12/Untitled-28.png) 3. Now we will put the SQL statement in the Skyvva Interface. As shown below. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For example: The Soql query we can use like. SELECT BillingCity,BillingCountry,BillingPostalCode,BillingState,BillingStreet,Description,Fax,Id,Name,Phone,skyvvasolutions__SAP_Distribution_Channel__c,skyvvasolutions__SAP_Division__c,skyvvasolutions__SAP_Sales_Org__c FROM Account where skyvvasolutions__SAP_Distribution_Channel__c = '{!skyvvasolutions__SAP_Distribution_Channel__c}' and skyvvasolutions__SAP_Sales_Org__c = '{!skyvvasolutions__SAP_Sales_Org__c}' and skyvvasolutions__SAP_Division__c = '{!skyvvasolutions__SAP_Division__c}'[/su_box] ![](../images/2019/12/Untitled-27.png) 4. Save the interface. 5. Follow the below steps to download the WSDL from Lightening - Click on "Generate Metadata" on the Integration detail page as shown below. ![](../images/2020/02/Untitled-150.png) - Fill all the highlighted fields accordingly, use your interface name. - Click on Export. ![](../images/2020/02/Untitled-157.png) - Click on view to download the WSDL file ![](../images/2020/02/Untitled-158.png) 6. Import WSDL into ESR - First, we have to create a namespace in ESR like "**http://SAP_to_SF_RESTQueryTest**". - Now create an external definition under the namespace like below. Here the WSDL is for RESTQueryTest. So, we can give the name as ED_RESTQuery_Req ![](../images/2020/02/Untitled-159.png) - Here instead of WSDL from salesforce, we can also use our own message type in this example as below. ![](../images/2019/12/Untitled-34.png) - Here we are going to use only one interface for both Request and Response. - Import the WSDL and save and activate the external definition. **Sender request datatype** - Create sender request data type as shown below ![](../images/2019/12/Untitled-30.png) **Sender response datatype ** ![](../images/2019/12/Untitled-31.png) - After creating the source data type click on save and activate. **Source request message type** - Create the request message type as shown below: ![](../images/2019/12/Untitled-32.png) **Source response message type** - Create the response message type as shown below: ![](../images/2019/12/Untitled-33.png) **Outbound Service Interface** - Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/12/Untitled-35.png) - Save and activate the outbound service interface. **Inbound Service Interface** - Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/12/New.png) - Save and active the inbound service interface. **Request Message Mapping** - Create request message mapping as shown below: ![](../images/2019/12/New-1.png) **The different way to put the SELECT statement** Here we are able to build the select statement dynamically by the pi mapping. Thus we need a field in the request payload which for example is called 'SKYVVA__SOQL_SELECT' and where we can build the SELECT-statement by using concat formula in the mapping. In this case, you are taking the value from this field and it will dominate the SELECT-statement on the module parameter. In the request WSDL we need to add SKYVVA system field e.g. 'SKYVVA__SOQL_SELECT' and build dynamically the SELECT in the mapping. We have 3 different options to place the SELECT statement e.g.: - In the PO request mapping in the field 'SKYVVA__SOQL_SELECT'  as shown below - In the Skyvva interface - In the module parameter Here is the SQL Statement used in the interface. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]BillingCity,BillingCountry,BillingPostalCode,BillingState,BillingStreet,Description,Fax,Id,Name,Phone,skyvvasolutions__SAP_Distribution_Channel__c,skyvvasolutions__SAP_Division__c,skyvvasolutions__SAP_Sales_Org__c FROM Account where skyvvasolutions__SAP_Distribution_Channel__c = '{!skyvvasolutions__SAP_Distribution_Channel__c}' and skyvvasolutions__SAP_Sales_Org__c = '{!skyvvasolutions__SAP_Sales_Org__c}' and skyvvasolutions__SAP_Division__c = '{!skyvvasolutions__SAP_Division__c}'[/aux_code] - **SQL Statement in the SAP PO Mapping** ![](../images/2020/02/Untitled-46.png) - **SQL Statement in the Skyvva Interface** ![](../images/2020/02/Untitled-160.png) - **SQL Statement in the SAP PO module parameter:** ![](../images/2020/02/Untitled-161.png) **Response Message Mapping** - Create response message mapping as shown below: ![](../images/2019/12/New-2.png) - Insert the respective source and target structure and then do the mapping. - Now save and activate the message mapping. **Operation Mapping** - Create Operation mapping as shown below ![](../images/2019/12/New-3.png) ![](../images/2019/12/New-4.png) - Select the respective outbound and inbound service interfaces and also the message mapping for request and response then save and activate the operation mapping. **Creation of Integrated Configuration Objects** - After creating the objects in ESR. We have to configure these objects in the integration directory. - First, we have to create Configuration Scenario. ![](../images/2019/12/New-5.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. Since in this example we are using SOAPUI as source system. So need to create Business component for SOAPUI as **BC_SOAPUI**. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** - Create a sender communication channel as shown below. - Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/12/New-6.png) - Provide the necessary details as shown and then save and activate the channel. **Configuring the SOAP receiver channel** - Configuration for Tab "General" ![](../images/2019/12/New-7.png) - Specify the parameters as shown in the above screenshot. - Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) - The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). - Below is the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. **For V3 Skyvva module:** We need 3 modules in the soap receiver channel 1. Skyvva/V3/QueryBuilder -> prepare the execution of the REST and BULK query and pass the message payload to the 3. module 2. XISOAPAdapterBean -> calling our new soap API 'RouteRequest' to just pass back the request from the 1. module 3. Skyvva/V3/ExecuteQuery -> here we only fetching the result which has been executed ![](../images/2020/02/Untitled-47.png) ![](../images/2020/02/Untitled-48.png) - The below parameters has the following meaning. - For V3 we don't need to specify SforceBulkInterfaceId in the parameters ![](../images/2020/02/Untitled-49.png) ![](../images/2020/02/Untitled-53.png) **Integrated Configuration** - Create integrated configuration objects as shown below. - Enter the required data e.g. the Communication Component, Interface, and Namespace, and then click on the create button to create an ICO. - Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/12/New-10.png) - Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/12/New-11.png) - In the Receiver interfaces tab specify the operation mapping. ![](../images/2019/12/New-12.png) - In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/12/New-13.png) #### Test the Inbound Interface. - Triggering the data from the Source system. - Here is the result from Salesforce. ![](../images/2019/12/New-14.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 23.9 REST Query All Slug: 25-9-rest-query-all URL: https://help.skyvva.com/#article/25-9-rest-query-all ================================================================================ # 23.9 REST Query All This document describes how to create an inbound interface using SKYVVA "REST Query All" mode in SAP PI/PO with a new SKYVVA  V3 connector module. #### REST Query All It will retrieve all archived and deleted records along with the existing records. The SKYVVA search will internally work on your query and will provide the complete result from your query. You can configure in your Interface with operation type as "REST Query All“ to use the REST Query feature.  Then you need to configure your SOQL in the SKYVVA interface. Base on your configuration in Interface SkYVVA connector will automatically detect the operation type and work accordingly with the same search operation. #### How REST Query All works - Create an inbound interface. - Select the Operation type as REST Query All". As shown below. ![](../images/2020/07/All.png) 3. Now we will put the SQL statement in the Skyvva Interface. As shown below. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For example: The Soql query we can use like. SELECT BillingCity,BillingCountry,BillingPostalCode,BillingState,BillingStreet,Description,Fax,Id,Name,Phone,skyvvasolutions__SAP_Distribution_Channel__c,skyvvasolutions__SAP_Division__c,skyvvasolutions__SAP_Sales_Org__c FROM Account where skyvvasolutions__SAP_Distribution_Channel__c = '{!skyvvasolutions__SAP_Distribution_Channel__c}' and skyvvasolutions__SAP_Sales_Org__c = '{!skyvvasolutions__SAP_Sales_Org__c}' and skyvvasolutions__SAP_Division__c = '{!skyvvasolutions__SAP_Division__c}'[/su_box] ![](../images/2019/12/Untitled-27.png) 4. Save the interface. 5. Follow the below steps to download the WSDL from Lightening - Click on "Generate Metadata" on the Integration detail page as shown below. ![](../images/2020/02/Untitled-150.png) - Fill all the highlighted fields accordingly, use your interface name. - Click on Export. ![](../images/2020/02/Untitled-157.png) - Click on view to download the WSDL file ![](../images/2020/02/Untitled-158.png) 6. Import WSDL into ESR (Check the link below to know about it). [#article/25-8-rest-query](#article/25-8-rest-query) #### #### Test the Inbound Interface. - Triggering the data from the Source system. - Here is the result from Salesforce. The highlighted Record is the record from the Recycle bin. ![](../images/2020/07/All1.png) - This picture shows the same record in response, which is in the Recycle bin. ![](../images/2020/07/All2.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 15. OutboundV3 processing using SAP PI/PO Slug: 4-14-v3-outbound-processing-using-sap-pi-po URL: https://help.skyvva.com/#article/4-14-v3-outbound-processing-using-sap-pi-po ================================================================================ # 15. OutboundV3 processing using SAP PI/PO This document describes how to create an outbound Synchronous interface in SAP PO with SKYVVA V3 SOAP Adapter For SOAP V3 we have to create the message type in skyvva as explained below. **SOAP V3 message type template:** We use a standard message type template for SOAP Adapter { "Google SOAP Service": { "Request": { "HTTP Header": { }, "URL Query Parameter": { }, "SOAP Header": { "SessionHeader": { "SessionId": "" } }, "SOAP Body": { "Quote_Sync_Out": { "Quote_Header_Request": { "skyvvasolutions__SAP_Requested_Delivery_Date__c": "", "skyvvasolutions__SAP_Sales_Org__c": "", "skyvvasolutions__SAP_Distribution_Channel__c": "", "skyvvasolutions__SAP_Division__c": "", "skyvvasolutions__SAP_Group__c": "", "Id": "", "Name": "", "OpportunityId": "", "skyvvasolutions__SAP_Offer_Valid_To__c": "", "skyvvasolutions__SAP_Offer_valid_from__c": "", "QuoteLineItem": { "LineNumber": "", "Quantity": "", "skyvvasolutions__SAP_Material_Number__c": "", "skyvvasolutions__SAP_Customer_Number__c": "" } } } } }, "Response": { "Envelope": { "Header": { }, "Body": { "Quote_IN": { "Quote": { "Name": "", "Id": "", "OpportunityId": "", "skyvvasolutions__SAP_Quote_ID__c": "", "Status": "", "QuoteNumber": "", "QuoteLineItem": { "Id":"", "Quantity": "", "QuoteId": "", "skyvvasolutions__SAP_Material_Number__c": "", "skyvvasolutions__SAP_Quote_Line_ID__c": "", "OpportunityLineItemId": "" } } } } } } } } Initially we have to create Metadata Provider. ![](../images/2020/05/Untitled.png) Now create Istructure repository ![](../images/2020/05/Untitled-1.png) Now create Message type for hierarchical request and response ![](../images/2020/05/Untitled-2.png) ![](../images/2020/05/Untitled-3.png) Now we have to use the message type in both request and response interface and also the child request and response interfaces Creation of Outbound SOAP adapter: Provide the details as shown below: ![](../images/2020/05/Untitled-88.png) ![](../images/2020/05/Untitled-89.png) ![](../images/2020/05/Untitled-90.png) Use this adapter in the outbound request interface. In this example, I have created the interface under "SOAPV3**"** - **Create Outbound parent request interface ** ![](../images/2020/05/Untitled-4.png) ![](../images/2020/05/Untitled-5.png) ![](../images/2020/05/Untitled-6.png) ![](../images/2020/05/Untitled-7.png) If we use the message type defined in skyvva then we have to do mapping in skyvva as shown. ![](../images/2020/05/Untitled-8.png) Now save the mapping and the outbound parent interface. ![](../images/2020/05/Untitled-29.png) ![](../images/2020/05/Untitled-30.png) ![](../images/2020/05/Untitled-31.png) - **Create Outbound child request interface** ![](../images/2020/05/Untitled-9.png) ![](../images/2020/05/Untitled-10.png) ![](../images/2020/05/Untitled-11.png) Add this child interface as i chained interface in the parent interface related tab ![](../images/2020/05/Untitled-12.png) Save the outbound child interface. - **Create an inbound parent response interface** ![](../images/2020/05/Untitled-13.png) ![](../images/2020/05/Untitled-28.png) ![](../images/2020/05/Untitled-15.png) Do the mapping for inbound parent response interface ![](../images/2020/05/Untitled-32.png) ![](../images/2020/05/Untitled-33.png) In the related tab add the foreign key fields as shown below ![](../images/2020/05/Untitled-34.png) Save the mapping and the inbound response interface. - **Create an inbound child response interface** ![](../images/2020/05/Untitled-16.png) ![](../images/2020/05/Untitled-17.png) Save the interface and add this child interface as ichained interface in the parent response interface related tab ![](../images/2020/05/Untitled-18.png) Add the foreign key field to link to the parent quote interface as shown below ![](../images/2020/05/Untitled-35.png) Download the inbound and outbound parent interface WSDL's and upload it into SAP PO for mapping. Callout from skyvva from developer console using the below apex code skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q03N000000HZYbSAO'}; skyvvasolutions.Iservices.invokeCalloutV3('SOAPV3','Quote_Sync_Out',ids,'SYNC', c); We can see the message status in the message monitor ![](../images/2020/05/Untitled-21.png) Quote Id is updated in salesforce ![](../images/2020/05/Untitled-20.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 9. Bulk Query Slug: 25-10-bulk-query URL: https://help.skyvva.com/#article/25-10-bulk-query ================================================================================ # 9. Bulk Query This document describes how to create an inbound interface using SKYVVA Bulk query mode in SAP PI/PO with a new SKYVVA V3 connector module. #### What Is Bulk Query? BULK query - With this mode we can support the very big size of the query result. Like the REST query, it can return only the raw result of the select statement. It will retrieve the existing records only. You can configure in your Interface with operation type as "Bulk Query“ to use the Bulk v3 Query feature.  Then you need to configure your SQOL in PI/PO Channel parameters or in SAP PI/PO mapping or in the SKYVVA interface. Base on your configuration in Interface SkYVVA connector will automatically detect the operation type and work accordingly with the same Search operation. **The following figure shows how the Bulk Query works with the New V3 module.** ![](../images/2020/02/Untitled-155.png) #### How Bulk Query works - Create an inbound interface. - Select the Operation type as Bulk Query". As shown below. ![](../images/2020/02/Untitled-54.png) - maximum integrate Batch size will be 5000 ![](../images/2020/02/Untitled-55.png) - In this example, we are going to put the SQL statement in the SAP PO Mapping. - Now save the interface and download the WSDL from the Lightening mode. - For new V3 we are going to use the new way WSDL. - Generating the WSDL from Lightening as shown below. - Go to Integration in that user have to select the "**Generate Metadata**" ![](../images/2020/02/Untitled-150.png) ![](../images/2020/02/Untitled-151.png) - Provide all the required details and click on export to generate the file. ![](../images/2020/02/Untitled-152.png) - Now click on View to download the generated WSDL file. - In this example, we are going to use only one interface for both request and response. 3. Import WSDL into ESR #### Test the Inbound Interface. - Triggering the data from the Source system. - Here is the result from Salesforce. ![](../images/2019/12/Untitled-24.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 10. Bulk Query All Slug: 25-11-bulk-query-all URL: https://help.skyvva.com/#article/25-11-bulk-query-all ================================================================================ # 10. Bulk Query All This document describes how to create an inbound interface using SKYVVA Bulk Query All mode in SAP PI/PO with a new SKYVVA V3 connector module. #### What Is Bulk Query All Bulk Query All - It will retrieve all archived and deleted records along with the existing records. The SKYVVA search will internally work on your query and will provide the complete result from your query. You can use the same Search operation to use it for Bulk v3 Query, which will help you to retrieve a huge volume of records in CSV format. You can configure in your Interface with operation type as "Bulk Query“ or "Bulk Query All“ to use the Bulk v3 Query feature.  Then you need to configure your SQOL in PI/PO Channel parameters or in SAP PI/PO mapping or in the SKYVVA interface. Base on your configuration in Interface SkYVVA connector will automatically detect the operation type and work accordingly with the same Search operation. #### How Bulk Query works - Create an inbound interface. - Select the Operation type as Bulk Query All". As shown below. ![](../images/2020/07/bulk-query-all.png) - maximum integrate Batch size will be 5000 ![](../images/2020/02/Untitled-55.png) - In this example, we are going to put the SQL statement in the SAP PO Mapping. - Now save the interface and download the WSDL from the Lightening mode. - For new V3 we are going to use the new way WSDL. - Generating the WSDL from Lightening as shown below. - Go to Integration in that user have to select the "**Generate Metadata**" ![](../images/2020/02/Untitled-150.png) ![](../images/2020/02/Untitled-151.png) - Provide all the required details and click on export to generate the file. ![](../images/2020/02/Untitled-152.png) - Now click on View to download the generated WSDL file. - In this example, we are going to use only one interface for both request and response. 3. Import WSDL into ESR #### Test the Inbound Interface. - Triggering the data from the Source system. - Here is the result from Salesforce. ![](../images/2019/12/Untitled-24.png) - This picture shows the same record in response, which is in the Recycle bin. ![](../images/2020/07/bulkquery.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 11. Upsert Auto External Id, Update Auto External Id and Delete Auto External Id Slug: 25-12-upsert-auto-external-id-update-auto-external-id-and-delete-auto-external-id URL: https://help.skyvva.com/#article/25-12-upsert-auto-external-id-update-auto-external-id-and-delete-auto-external-id ================================================================================ # 11. Upsert Auto External Id, Update Auto External Id and Delete Auto External Id **This unit describes:-** - About 3 operation types Upsert Auto External ID, Update Auto External ID, and Delete Auto External ID. - And why we need these three operation types? #### Why we need Upsert Auto External ID, Update Auto External ID, and Delete Auto External ID? We are providing the “AUTO” operation to handle the problem that our customers faced. The issue was we were not able to handle the mixed key(mix key means if in the account record customer provides the external Id but also the Salesforce Id)value because the user needs to specify an operation for an interface e.g. UPSERT and he needs to check the box "Ext Id" in the mapping. If no external Id was provided, we run into an error. The solution for him was that he has to split the interface into two interfaces and provide the data clearly but not a mixed-mode. One data provider only Salesforce Id and thus sets the operation to UPDATE. The other data provide only external Id and thus set the operation to UPSERT. But if we could handle this automatically from our side, the customer would not need to split the interface and not needed to create two interfaces. So here we have a solution, the new implementation is about the combination of “External Id” and “Salesforce Id”. New operation Upsert/Update/Delete Auto Id creates or updates the record based on Salesforce id or external fields are specified on the interface. This would improve the performance because an update with a dedicated key is faster than upsert where a search has to be performed first to find the record. But if a Salesforce Id is provided directly there is no search needed. Salesforce Id is always a single field e.g. the Salesforce Id whereas the external Id could be 1 or more than one. #### Upsert Auto External ID The procedure is given below:- **Create Integration:-** ![](../images/2019/07/OP1.png) **Create Interface:-** - Select Upsert Auto External ID in the Operation type section. As shown in the picture given below. ![](../images/2019/07/upsert.png) - We have 2 fields as External ID. Many external fields are specified on the interface is combining key. As you can see in the picture given below:- ![](../images/2019/07/op2.png) - The account will be upsert/delete based on: -Id: if salesforce id is specified in data payload then update the record based on its value. -External fields: ERP_DEBTOR_ID__c, ERP_DEBTOR_ID2__c is setting as on interface. If salesforce Id is not specified or blank, then Account will upsert based on ERP_DEBTOR_ID__c AND ERP_DEBTOR_ID2__c. - Navigate to mapping section and map it like the picture given below - Tick two boxes external id on Fields ERP_DEBTOR_ID__c, ERP_DEBTOR_ID2__c - Click Save ![](../images/2019/07/op3.png) - The result of upload data can be seen in message monitoring as shown in the picture given below. It is created by an external ID. ![](../images/2019/07/op4-1.png) **We have so many cases to use Upsert Auto External ID:-** - Updating Account that using new Operation Type Upsert Auto Id - Update Account base on Salesforce Id, Other external field are not in data payload. #### Delete Auto External ID - We can see in the picture given below. ![](../images/2019/07/op5.png) - We Delete record base on given salesforce Id. - Delete record base given external fields. #### UpdateAuto External - If salesforce Id is not blank, then the record will update by its value.  Otherwise, update the record by external fields setting on the interface. - We can see in the picture given below how to select Update Auto External ID:- ![](../images/2019/07/op6.png) - Update records based on specifying the external field on the interface. - Update record based on given salesforce Id. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 12. Store Procedure Slug: 25-13-store-procedure URL: https://help.skyvva.com/#article/25-13-store-procedure ================================================================================ # 12. Store Procedure In this chapter, we will see one of the operation types which is the "Store Procedure". #### Introduction This chapter explains how to use the new feature store procedure by handling the response using Agent. the responding store procedure is calling out from Salesforce to database system via store procedure. After callout and we will get a response or fault message back real-time in the same calling. It supports only Synchronous mode. #### How to call store procedure by handling the response using Agent **Pre-request call store procedure by handling the response ** Firstly, you need to have some required step before you can do call store procedure by handling the response: - Create a Store Procedure - Create Interface (Inbound as a response and outbound as a request interface) - Create Adapter - Do mapping (Inbound and Outbound) **Configuration** - Create a Store Procedure [aux_code language="javascript" theme="tomorrow" title="Stored Procedure template:" extra_classes=""] CREATE PROCEDURE [dbo].upsertAccountTest01, @name nvarchar (255), @billingcity nvarchar (255), @billingcountry nvarchar (255), @nameOut nvarchar (255) OUTPUT, @billingcityOut nvarchar (255) OUTPUT, @billingcountryOut nvarchar (255) OUTPUT ) AS BEGIN IF EXISTS(SELECT id, name, billingcity, billingcountry FROM Account_Out WHERE Name=@name) BEGIN UPDATE Account_Out SET id=@id, name=@name, BillingCity=@billingcity, BillingCountry=@billingcountry WHERE Name=@name; END ELSE BEGIN INSERT INTO Account_Out (Id, Name, BillingCity, BillingCountry) VALUES (@id, @name, @billingcity, @billingcountry); END SELECT @id=id, @nameOut=name, @billingcityOut=billingcity, @billingcountryOut=billingcountry FROM Account_Out WHERE name=@name; END [/aux_code] 2. Create an interface - Select Operation Type for Inbound: UpSert - Select Operation Type for Outbound: Store Procedure ![](../images/2020/07/Store.png) - Select processing mode: Synchronous - The inbound interface as a Response interface - An outbound interface as a Request interface ![](../images/2020/07/1.png) 3. Create Adapter on Agent UI - Please run SKYVVA Integration Agent -> Integration Wizard - Choose your Property File - Go to interface detail by double click any interface in the interface list - Creating of JDBC Adapter ![](../images/2020/07/2.png) 4. Do mapping - Outbound interface ![](../images/2020/07/3-1.png) - On Outbound interface you need to add the ID of Inbound interface on-field Response interface ![](../images/2020/07/4-1.png) - The inbound interface you need to create Istructure (@nameOut,@billingcityOut,@billingcountryOut) like parameter in Store Procedure ![](../images/2020/07/5-1.png) - Do mapping on Inbound interface ![](../images/2020/07/6.png) 5. Push data ![](../images/2020/07/7.png) 6. Check the result on Message board ![](../images/2020/07/8-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: 7. Message type by importing wsdl file format Slug: 14-7 URL: https://help.skyvva.com/#article/14-7 ================================================================================ # 7. Message type by importing wsdl file format We enhance importing feature more due to the fact see in data structure is quite complicated from client. different schema. So First initial version is now extended to support more complex msg type. We can support that different format to create msg type like XSD, wsdl1.0/2.2, Swagger/ Open API. For instance when we use SOAP API, data format, API description layout is different . Customer  uses WSDL .When you call soap api that describe using wsdl  that we should import wasdl. When we have structure for mapping request mapping, response mapping with soap api  This msg type we use to generate request to invoke Rest api . We assist creating msg type base on different msg data structure so you do not want to create msg type manually. ![](../images/2020/07/import-swagger-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Import Swagger/OpenAPI feature is used to create Rest Template  [/su_box] To secure our data transmission system need specific formatted data.  In Skyvva we have specific soap template message type contains URL, header body. We have different template for request and response. . As we have three element in Request: , - HTTP Header - URL Query Parameter - SOAP Header - SOAP Body As we have two element in Response - HTTP Header - SOAP Header - SOAP Body So , when we get response and we will get both header and body so based on mapping we will perform DML operation for the data we got in response. #### How to Import File: Follow the steps: - Create Metadata Provider. - Create Istructure Repository. - Go to your repository page and click on Import metadata button. ![](../images/2020/07/Capture2-1.png) 4. Select file type and upload file. ![](../images/2020/07/wsdl.png) 5. Scroll down the page to msg type section. ![](../images/2020/07/Capture5-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 21. Messages Board Tab on Interface Header Page Slug: 3-20-messages-board-tab-on-interface-header-page URL: https://help.skyvva.com/#article/3-20-messages-board-tab-on-interface-header-page ================================================================================ # 21. Messages Board Tab on Interface Header Page In this chapter, we will come to know about, a tab "Messages Board" on Interface header. This is the new tab we added so that we don't need to move on to the integration page again and again to check Message monitoring. It helps us to save our time. - In the picture given below, We can see where the "Messages Board" tab is located. ![](../images/2020/08/stored-procedure.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Bulk Processing Title: 8. The different bulk mode using old agent control board Slug: 18-8-the-different-bulk-mode-using-old-agent-control-board URL: https://help.skyvva.com/#article/18-8-the-different-bulk-mode-using-old-agent-control-board ================================================================================ # 8. The different bulk mode using old agent control board In **SKYVVA**, the bulk-loading option increases the performance of a session where huge volumes of data are involved. During bulk loading, the Integration Service bypasses the database log, which results in performance improvement. Without writing to the database log, however, the target database cannot perform a rollback. While using bulk loading, the need for improved session performance must be weighed against the ability to recover an incomplete session. The Data Integration Service can use the **SKYVVA** Bulk API to write data to sObjects. Use the Bulk API to write large amounts of data to Salesforce with a minimal number of API calls. User can use the Bulk API to write data to Salesforce targets with Salesforce API. With a Bulk API write, each batch of data can contain up to 10,000 records or one million characters of data in CSV format. When the Data Integration Service creates a batch, it adds required characters such as, quotation marks around text, to format the data. User can configure a Bulk API target session to load batches serially or in parallel. By default, the data load is in parallel mode, but you can override the data load to serial mode. User can also monitor the progress of batches in the session log. To configure a session to use the Bulk API for Salesforce targets, select the Use **SKYVVA** Bulk API session property. When user selects this property, the Data Integration Service ignores the Max Batch Size session property. #### SKYVVA Bulk Interface Processing SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When the user has much data, using Bulk Interface Processing is necessary (over **5000** records). Before configuring Bulk Interface Processing, the user has to know about the parameters: **BULK Mode:** Check this flag if you want to run interface in a bulk mode using Salesforce BULK API. **Bulk Version:** We support SFDC pure bulk mode in version 1.0 or 2.0. Then we have our own SKYVVA bulk mode. This uses SKYVVA workflow and mapping and thus is more powerful but slower than the pure bulk API technique from Salesforce. This one is SKYVVA’s own bulk mode. **Bulk Processing Mode:** This field indicates the two-mode, which is support with bulk version 1.0. With bulk, version 2.0 only parallel mode is supported. Therefore, the value here depends on the selection of the field bulk version e.g. when we want to use ‘Serial’ then we needs to choose ‘Bulk V 1.0’. There are two modes which are: ![](../images/2020/04/Bulk-mode1-1.png) - In figure we showing SKYVVA BULK Processing mode which include Parallel and series mode. **Parallel:** When you select this processing mode, it will run parallel. **Serial:** When you select this mode, it will not run at the same time. **Bulk Package Size:** This parameter determines how many records are split into Bulk data size. If your Message contains **10.000** records and the value for this parameter is 1000 so the user will get 10 bulk data set in Salesforce. **Bulk Monitor Keep Size:** The number of bulk executes logs to be kept. **Bulk Search Frequency:** This is the schedule time frequency for the bulk scheduler on the interface. Bulk Integrate Time Interval (minute): The interval (minutes) used to integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. #### Bulk Mode In Bulk Mode, the Integration services bypass the database logs during job run for improved performance.   There are two options of bulk mode, which is including SKYVVA bulk and SFDC bulk. The following section will be explained more detail about these two modes. - ** SKYVVA Bulk** - ** SFDC Bulk** ![](../images/2020/04/Bulk-mode2.png) #### SKYVVA Bulk Mode In SKYVVA Bulk Mode user can create upsert, update, insert, and query, query All, pullQuery or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data over a **5000** records. SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use the SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing modes, which is Parallel and Serial. The default value is Serial. ![](../images/2020/04/Bulk-mode3.png) #### Advantages - The major advantage of using **SKYVVA** bulk load is in the significant improvement of performance. Especially in the large volume table, bulk loading speeds up the process. - If the **SKYVVA** job fails, the recovery is not possible due to the bypass of database logs. The only option during job failure is truncate and reprocess. #### SFDC Bulk Mode We support SFDC pure bulk mode in version 2.0 that is very fast but cannot use the SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk requires the data has to be mapped already on the sender side and doing the additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. In SFDC Bulk Mode user can create update, or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data from a few thousand to millions of records. ![](../images/2020/04/Bulk-mode4.png) #### Difference Between SKYVVA Bulk and SFDC Bulk Mode? **SKYVVA Bulk Mode** **SFDC Bulk Mode** In SKYVVA Bulk Mode user can create upsert, update, insert, and query, query All, pullQuery or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data over a **5000** records. In SFDC Bulk Mode user can create update, or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data from a few thousand to millions of records. **Monitoring in Bulk Control Board:** As user did integrate, your data you might want to check or monitor if all your data are successfully integrated. To monitor bulk data. There are three orders to monitor bulk processing: **Bulk Data Inbox : **When data pushed from the client using Bulk API, that will appear in this section **Bulk Data Processing: **Bulk Data Processing is using to store data that are processing**.** **Bulk Monitor: **User can monitor the total records of attachments, total batch and batches that had processed. **Monitoring Bulk Data Load Jobs:** Process a set of records by creating a job that contains data that will be processed asynchronously. The job specifies which object is being processed and what type of operation is being used. Indexes, constraints, auto-generated features can be available in table level during the job run. **Operations:      ** The processing operation for all the batches in the job. The valid values are: - delete - insert - query - queryall - upsert - update It support SFDC **BulkV1.0,SFDCV2.0** for all Job Type **Operations:      ** The processing operation for all the batches in the job. The valid values are: - delete - insert - query (Bulk V1 type jobs only) - queryall(Bulk V1 type jobs only) - upsert - update hardDelete (Bulk V1 type jobs only) It also support BulkV2 for some Job Type ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Bulk Processing Title: 9. Bulk processing with old agent control board Slug: 18-9-bulk-processing-with-old-agent-control-board URL: https://help.skyvva.com/#article/18-9-bulk-processing-with-old-agent-control-board ================================================================================ # 9. Bulk processing with old agent control board In **SKYVVA**, the bulk-loading option increases the performance of a session where huge volumes of data are involved. During bulk loading, the Integration Service bypasses the database log, which results in performance improvement. Without writing to the database log, however, the target database cannot perform a rollback. While using bulk loading, the need for improved session performance must be weighed against the ability to recover an incomplete session. The Data Integration Service can use the **SKYVVA** Bulk API to write data to sObjects. Use the Bulk API to write large amounts of data to Salesforce with a minimal number of API calls. User can use the Bulk API to write data to Salesforce targets with Salesforce API. With a Bulk API write, each batch of data can contain up to 10,000 records or one million characters of data in CSV format. When the Data Integration Service creates a batch, it adds required characters such as, quotation marks around text, to format the data. User can configure a Bulk API target session to load batches serially or in parallel. By default, the data load is in parallel mode, but you can override the data load to serial mode. User can also monitor the progress of batches in the session log. To configure a session to use the Bulk API for Salesforce targets, select the Use **SKYVVA** Bulk API session property. When user selects this property, the Data Integration Service ignores the Max Batch Size session property. #### SKYVVA Bulk Interface Processing SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When the user has much data, using Bulk Interface Processing is necessary (over **5000** records). Before configuring Bulk Interface Processing, the user has to know about the parameters: **BULK Mode:** Check this flag if you want to run interface in a bulk mode using Salesforce BULK API. **Bulk Version:** We support SFDC pure bulk mode in version 1.0 or 2.0. Then we have our own SKYVVA bulk mode. This uses SKYVVA workflow and mapping and thus is more powerful but slower than the pure bulk API technique from Salesforce. This one is SKYVVA’s own bulk mode. **Bulk Processing Mode:** This field indicates the two-mode, which is support with bulk version 1.0. With bulk, version 2.0 only parallel mode is supported. Therefore, the value here depends on the selection of the field bulk version e.g. when we want to use ‘Serial’ then we needs to choose ‘Bulk V 1.0’. There are two modes which are: ![](../images/2020/04/Bulk-mode1-1.png) - In figure we showing SKYVVA BULK Processing mode which include Parallel and series mode. **Parallel:** When you select this processing mode, it will run parallel. **Serial:** When you select this mode, it will not run at the same time. **Bulk Package Size:** This parameter determines how many records are split into Bulk data size. If your Message contains **10.000** records and the value for this parameter is 1000 so the user will get 10 bulk data set in Salesforce. **Bulk Monitor Keep Size:** The number of bulk executes logs to be kept. **Bulk Search Frequency:** This is the schedule time frequency for the bulk scheduler on the interface. Bulk Integrate Time Interval (minute): The interval (minutes) used to integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. #### Bulk Mode In Bulk Mode, the Integration services bypass the database logs during job run for improved performance.   There are two options of bulk mode, which is including SKYVVA bulk and SFDC bulk. The following section will be explained more detail about these two modes. - ** SKYVVA Bulk** - ** SFDC Bulk** ![](../images/2020/04/Bulk-mode2.png) #### SKYVVA Bulk Mode In SKYVVA Bulk Mode user can create upsert, update, insert, and query, query All, pullQuery or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data over a **5000** records. SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use the SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing modes, which is Parallel and Serial. The default value is Serial. ![](../images/2020/04/Bulk-mode3.png) #### Advantages - The major advantage of using **SKYVVA** bulk load is in the significant improvement of performance. Especially in the large volume table, bulk loading speeds up the process. - If the **SKYVVA** job fails, the recovery is not possible due to the bypass of database logs. The only option during job failure is truncate and reprocess. #### SFDC Bulk Mode We support SFDC pure bulk mode in version 2.0 that is very fast but cannot use the SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk requires the data has to be mapped already on the sender side and doing the additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. In SFDC Bulk Mode user can create update, or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data from a few thousand to millions of records. ![](../images/2020/04/Bulk-mode4.png) #### Difference Between SKYVVA Bulk and SFDC Bulk Mode? **SKYVVA Bulk Mode** **SFDC Bulk Mode** In SKYVVA Bulk Mode user can create upsert, update, insert, and query, query All, pullQuery or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data over a **5000** records. In SFDC Bulk Mode user can create update, or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data from a few thousand to millions of records. **Monitoring in Bulk Control Board:** As user did integrate, your data you might want to check or monitor if all your data are successfully integrated. To monitor bulk data. There are three orders to monitor bulk processing: **Bulk Data Inbox : **When data pushed from the client using Bulk API, that will appear in this section **Bulk Data Processing: **Bulk Data Processing is using to store data that are processing**.** **Bulk Monitor: **User can monitor the total records of attachments, total batch and batches that had processed. **Monitoring Bulk Data Load Jobs:** Process a set of records by creating a job that contains data that will be processed asynchronously. The job specifies which object is being processed and what type of operation is being used. Indexes, constraints, auto-generated features can be available in table level during the job run. **Operations:      ** The processing operation for all the batches in the job. The valid values are: - delete - insert - query - queryall - upsert - update It support SFDC **BulkV1.0,SFDCV2.0** for all Job Type **Operations:      ** The processing operation for all the batches in the job. The valid values are: - delete - insert - query (Bulk V1 type jobs only) - queryall(Bulk V1 type jobs only) - upsert - update hardDelete (Bulk V1 type jobs only) It also support BulkV2 for some Job Type #### Use case to Use Bulk Mode **Using SKYVVA Bulk version** - Create Integration ![](../images/2020/10/Capture1.png) - Create Interface ![](../images/2020/10/Capture2.png) - Click on Interface - Scroll down to Bulk Setting section - Check flag of BULK Mode - Select **SKYVVA Bulk1.0** valuefrom picklist - Save ![](../images/2020/10/Capture3.png) - Scroll down to Source Definition section - Choose file & Save ![](../images/2020/04/Bulk-modeUC3-e1603107459301.png) - Click on Open Mapping Button ![](../images/2020/10/Capture4.png) ![](../images/2020/10/Capture5.png) - Select Ext Id - Save **Agent Control Board:** **Go to your Salesforce Org.** - Click on setup - Write Remote Site on the Search box ![](../images/2020/05/image_2020_05_26T08_54_22_083Z.png) - Click on New Remote Site button ![](../images/2020/05/Screenshot-1181.png) - Great user-created New Remote site successfully **Go to Agent Control Board Tab** - Click on your AGENT Properties File under Configuration Tab - See Status is OFFLINE - Click on the continue button ![](../images/2020/10/Capture6.png) - Users can see now AGENT properties file import the Salesforce Credential successfully - Username, Security token, Password and also status ONLINE - Click on Save button now ![](../images/2020/10/Capture7.png) Click on ping connection. ![](../images/2020/10/Capture8.png) **Create adapter.** - Go to adapter tab -> click on **New  **button. - Create File adapter with appropriate details and save it. ![](../images/2020/10/Capture9.png) Add this adapter in interface. ![](../images/2020/10/Capture10.png) Go to Interface tab to process the interface. ![](../images/2020/10/Capture12.png) Go to Bulk control board and check the processing basket. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: 8. Import OpenAPI 3.x to create message type Slug: 14-8-import-openapi-3-x-to-create-message-type URL: https://help.skyvva.com/#article/14-8-import-openapi-3-x-to-create-message-type ================================================================================ # 8. Import OpenAPI 3.x to create message type SKYVVA has been added a new feature that can import message type and supported different files format such as XSD, JSON schema, wsdl1.1 & 2.0, swagger 2.0, openAPI3.x.After import the message type; therefore, you can further mapping in the SKYVVA mapping tool. ![](../images/2020/11/import-opn-API.png) Message Type: Skyvva provide message type feature to create Istructure repository using different file format.  We  introducing the new concept of using message type as interface data type. So basically there are two way to put field mapping in interface is: 1. Use sobject: we use the sobject fields as source field in interface 2. Message type: we use costume fields created in message type as source field. Import  file feature is used to create message type and ISTructure. Skyvva support different format to create message type: **xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x** This functionality is processing based on the message type node. It’s working with REST adapter and have a specific template message type contain URL, header, body.we have a different template for request and response .it has Format Structure as following: - it will generate like structure as below ![](../images/2020/08/B1.png) - Under of Components: Will generate default “ReferenceObject” (Type = Reference Object) as a message and cover field on components. - It will generate IStructure and MessageType based on Primitive Data or object Type: For example, Field has type as primitive (int, string, boolean, double ……..)So it will be the IStructure. A field is an object so it will be MessageType. - Under of Paths **Paths **Section will be API name type REST_Service **Request** Request URL - Request Header - Request Body - **Response** Response Header - Response Body [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Operation such as post, get, delete, patch and put you can check under parameter of operation. - Name of creating Messagetype or Istructure - “in” the place where we can put in the Request template - Description for add value into the description of IStructure or Message type - “ref” link to other messagetype[/su_box] ** Basic Pre-requisite:** First, you need to do some required steps before you can use the function “Importing OpenAPI3.x“ - Create Metadata Provider /Repository - File OpenAPI3 - Create integration /interface - REST Adapter - MockService #### Configuration - Import metadata Create Metadata Provider, Repository, and click the Import Metadata button. ![](../images/2020/08/B2.png) - Generate Message type ![](../images/2020/08/B3.png) In the section, you got a message type and you can further be mapping in the SKYVVA mapping tool, here is an example Callout V3 with Rest adapter using Message Type. **Use Case:** **Step-1**: Create Integration and Interface - Create an Outbound interface for Account object, Status: Deployed, Operation type: Query and Choose MetaData Provider name, Repository, and Message Type click Save button. ![](../images/2020/08/B4.png) Step-2: Do Mapping ![](../images/2020/08/B5.png) Step-3: Create Remote site - Go to setup and create the new remote site. ![](../images/2020/08/B6.png) Step-4: Create rest adapter from the SAP control board Create an Adapter and link to the outbound interface. - The Configuration create a new adapter ![](../images/2020/08/B7.png) Step-5: The Configuration MockService We callout V3 with Rest adapter using Message Type to Mock Service. ![](../images/2020/08/B8.png) Step-6: Query Data - Navigate to setup -> developer console ![](../images/2020/08/B9.png) [aux_code language="javascript" theme="tomorrow" title="Apex code" extra_classes=""] skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{0016E00001BEi9cQAD}; skyvvasolutions.Iservices.invokeCalloutV3('Test openAPI','OutBound',ids,'SYNC', c); [/aux_code] ![](../images/2020/08/B10.png) - Check the result on monitor after execute callout ![](../images/2020/08/B11.png) - Check Message details ![](../images/2020/08/B12.png) Summary: This feature we have learned about importing open API3x, and we have understood how to importing message type from open API3.x file format. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 14. REST template message type Slug: 4-13-rest-template-message-type-2 URL: https://help.skyvva.com/#article/4-13-rest-template-message-type-2 ================================================================================ # 14. REST template message type Rest Template is used to create applications that consume REST Web Services. To   secure our data transmission system need specific formatted data. #### What is the rest template message type? We use a message type which we create according to the response structure of the REST response then the message name should be the root node. The processing should be based on the message node. To secure our data transmission system need specific formatted data. We have create message type.  The messaging contain message data and metadata i.e. information about message itself. In Skyvva we have specific soap template message type contains URL, body. we need both part e.g. Request and Response. When we design the callout interface using our different template we put Request into the outbound and Response into the inbound interface. We are using template mainly for the outbound call. In Skyvva we have specific Rest template message type contains URL, header and body. We have different template for request and response. . As we have three element in Request: , - Request URL - Request Header - Request Body **Request Structure:** ``` { "Google REST Service":{ "Request":{ "URL":{ "PATH Param":{ //Flate Strture.. }, "Query Param":{ //Flate Strture.. } }, "Header":{ //Flate Strture.. }, "Body":{ //Custom Buisness Messagetype } } } } ``` #### What is Rest response? When an JSON String is sent to a REST service, you must set Content-Type HTTP header to be "application/JSON". The REST service converts the XML input data to the JSON format that is accepted by REST services. Only contain business Message type. Response Structure: ``` { root //Custom Buisness Message Type like Account,Contact,Asset,Opportunity,Case } ``` So , when we get response and we will get both header and body so based on mapping we will perform DML operation for the data we got in response. **Template should Looks like:** Example: **Template should Looks like:** Example: { "Complex_JSON_REST_Service": { "Request": { "URL": { "Path Parameter": {}, "QUERY Parameter": {} }, "Header": {}, "Body": { "Account.Owner": [ { "Account Number": "Acoount-1", "Phone": 123456789, "Shipping Address": { "Shipping City": "Surat", "Shipping Street": "292, Gayatri Society", "Description Information": { "Description": "Testing Account1 Description." } }, "Billing Address": { "Billing City": "Surat", "Billing Country": "India", "Billing Street": "292, Gayatri Society" }, "My.Contact": [ { "FirstName": "Testing", "LastName": "Contact1", "Other Address": { "Other City": "Surat", "Other Country": "India", "Other Street": "292, Gayatri Society" }, "Mailing Address": { "Mailing City": "Surat", "Mailing Street": "292, Gayatri Society", "Description Information": { "Description": "Testing Contact1 Description." } }, "MyAsset": [ { "AssetName": "Testing Asset1", "Quantity": 15, "SerialNumber": "Asset-1" } ] } ] } ] } }, "Response": { "root": { "MyAccount": [ { "Description": "Testing Account1 Description.", "Name": "Testing Account1", "MyContact": [ { "FirstName": "Testing", "LastName": "Contact1", "MyAsset": { "AssetName": "Testing Asset1", "Quantity": "15.00", "SerialNumber": "Asset-1" } }, { "FirstName": "Testing", "LastName": "Contact2", "MyAsset": { "AssetName": "Testing Asset2", "Quantity": "15.00", "SerialNumber": "Asset-2" } } ] }, { "Description": "Testing Account2 Description.", "Name": "Testing Account2", "MyContact": [ { "FirstName": "Testing", "LastName": "Contact3", "MyAsset": { "AssetName": "Testing Asset3", "Quantity": "15.00", "SerialNumber": "Asset-3" } }, { "FirstName": "Testing", "LastName": "Contact4", "MyAsset": { "AssetName": "Testing Asset4", "Quantity": "15.00", "SerialNumber": "Asset-4" } } ] } ] } } } } In message type table, your template should looks like as below; ![](../images/2020/11/Untitled2.png) ![](../images/2020/11/Untitled1.png) **Message Type Template format:** ``` ** Rest Adapter Template** "Rest Service":{ "Request":{ "URL":{ "PATH Parameter":{ //flat Structure }, "QUERY Parameter":{ //flat Structure } }, "Header":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } } } } ``` **Terms should know:** **Request URL:** A Request URL specifies the Method Token (GET, PUT … ) followed by the RequestURI and then the HTTP Protocol that is being used. There are two URL parameter: - Path parameter: - Query parameter: **Request Header:** The REST headers and parameters contain a wealth of information that can help you track down issues when you encounter them. **Request Body: **The request body is used to send and receive data. **Response Status:** It provides information about the status codes and error messages that can be received. **Response Header: **The response may contain URI in Location header field in HTTP headers list, which can have reference to the newly created resource #### How to create Message Type? There are different ways to create message type from IStructureRepository: - Upload File - Open Editor - Manually create New Message Type. ![](../images/2020/03/Untitled12-1.png) #### Upload File: Skyvva support different file formats(xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x) to create message type.  Upload button  automatically create a hierarchical structure like msgtype Istructure  from hierarchical file. #### Pre-requisite: **To create Metadata Provider.** To Create ** Istructure Repository.** Go to Istructure **Repository and click on "Upload File" button.** #### **Select file format which you want to upload.** #### #### Open Editor **To create Metadata Provider.** To Create ** Istructure Repository.** Go to Istructure **Repository and click on "Open Editor" button.** #### #### Manually Create message type: - **To create Metadata Provider.** - To Create ** Istructure Repository.** - Go to Istructure **Repository and click on "New message Type" button.** ![](../images/2020/11/Capture4.png) It will navigate to: ![](../images/2020/03/SoapmsgType4.png) Once we Save this Message type is created. ![](../images/2020/03/SoapmsgType5.png) ![](../images/2020/11/Capture6.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 8. V4 Integrate API Services Slug: 8-8-v4-integrate-api-services URL: https://help.skyvva.com/#article/8-8-v4-integrate-api-services ================================================================================ # 8. V4 Integrate API Services #### Introduction: - Our V4/integrate rest variant supports JSON and XML and therefore it is possible to pass the Rest envelope XML or JSON to the body of the v4/integrate. This means that for invoking the skyvva API we use only the rest variant ../services/apexrest/skyvvasolutions/v4/Integrate with either XML or JSON payload. - In the URL of V4 API, the query parameter is added in URL only. We have two type of response: 1. standard response 2. custom response using the response (outbound) interface to do the mapping #### 1. standard response **Pre-requisites:-** - Create an Integration - Create Metadata Provider - Create Repository. - Create a Message Type. #### 1. Create Inbound Interface:- a. Enter Metadata Provider. b. Enter Repository. c. Message Type. ![](../images/2020/12/v4.png) #### 2. Do Mapping:- ![](../images/2020/12/v4.1.png) - Save Mapping: ![](../images/2020/12/v4.2.png) #### 3. Configuration on postman side:- ![](../images/2020/12/v4.3.png) #### 1. V4 API:- V4 API pass Integration, Interface, mode, request-format, response-format parameter inside the URL query parameter. #### 2. The URL contains:- - Salesforce classic URL. - Integration name. - Interface name. - mode. - response-format. - request-format. **Please check the sample below:-** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] https://ruby-enterprise-95342-dev-ed.cs102.my.salesforce.com/services/apexrest/skyvvasolutions/V4/integrate?integration=V4_Integration&interface=V4 API&mode=Synchronous&response-format=JSON&request-format=JSON[/aux_code] #### 3. Authorization:- - Select No Auth. ![](../images/2020/12/v4.4.png) #### 4. Header:- - Enter "Bearer+Session ID". ![](../images/2020/12/v4.5.png) #### 5. Body:- - Enter JSON or XML payload as per your message type which we have created earlier. ![](../images/2020/12/v4.6.png) #### 6. Send the Request:- - Click on send button. ![](../images/2020/12/v4.6-1.png) #### 7. Check the Result:- ![](../images/2020/12/v4.7.png) #### 8. Check Result on Message monitoring:- ![](../images/2020/12/v4.8.png) #### Custom response using the response (outbound) interface to do the mapping if we want to get data from the response interface then we need do mapping for response interface and link it to request interface. Only data send from input will return back as response. If we want other than the input data then we have to use VLOOKUP formulae in the response mapping ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 1. REST API Slug: 8-1-rest-api URL: https://help.skyvva.com/#article/8-1-rest-api ================================================================================ # 1. REST API #### REST API REST is an architectural style of web services that work as a channel of communication between different computers or systems on the internet. The term REST API is something else. Those application programming interfaces that are backed by the architectural style of the REST architectural system are called REST APIs. REST API compliant web services, database systems, and computer systems permit requesting systems to get robust access and redefine representations of web-based resources by deploying a predefined set of stateless protocols and standard operations. By these protocols and operations and redeploying the manageable and updatable components without causing the effect on the system, REST API systems deliver fast performance, reliability, and more progression. ![](../images/2020/04/Screenshot-1091.png) #### Explaining a Simple REST Example IntegrateBatch The examples in this section use REST API resources to create, retrieve, update, and delete records, along with other record-related operations. - Open SoapUI - Click on REST ![](../images/2020/04/Screenshot-1092.png) **Login to your Salesforce org** - Go to setup - Copy your URL ![](../images/2020/04/Screenshot-1093.png) - Paste URL here to create new REST project - Click ok ![](../images/2020/04/Screenshot-1094-1.png) - Rest project created. ![](../images/2020/04/Screenshot-1095.png) - Expand URL - Right-click on Request - Click on Clone Request ![](../images/2020/04/Screenshot-1096.png) ![](../images/2020/04/Screenshot-1097.png) - Specify the name of cloned Request - Eg. Authorization - Click ok ![](../images/2020/04/Screenshot-1098.png) Now here something is very important **Method POST** Endpoint  URL: https://skyvva-test-dev-ed.lightning.force.com/ RESOURCE : /services/apexrest/skyvvasolutions/integrateBatch ![](../images/2020/04/Screenshot-1099.png) - Media type by default application/json where we post. (json is the format) - Header its some tricky although it is easy - Click on Header ![](../images/2020/04/Screenshot-1100.png) - Add header name eg. Authorization - A bearer is a keyword after press space key - Paste your sessionID - Press enter key **Now go back to your salesforce org** - Create Integration & copy IntegrationID - Create Interface & copy Interface Name ![](../images/2020/04/Screenshot-1101.png) ![](../images/2020/04/Screenshot-1102.png) Click on Related List & create IStructure - Name - BillingCity - BillingCountry ![](../images/2020/04/Screenshot-1103.png) - Click on Open Mapping button ![](../images/2020/04/Screenshot-1104.png) - Select Ext Id & Save **Go to SoapUI** Paste  this code under Media type section URL     : https://skyvva-test-dev-ed.lightning.force.com/ RESOURCE: /services/apexrest/skyvvasolutions/integrateBatch [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "INTEGRATIONID" : "a0W2v000019ePQOEA2", "INTERFACENAME" :  "akash_Interface", "messages": [ { "BillingCountry": "Cam", "Name": "Test01", "BillingCity": "PP" }, { "BillingCountry": "Cam", "Name": "Test02", "BillingCity": "PP" }, { "BillingCountry": "Cam", "Name": "Test03", "BillingCity": "PP" } ] }[/aux_code] ![](../images/2020/04/Screenshot-1105.png) - Paste the code and submit it. ![](../images/2020/04/Screenshot-1106.png) Great you pass - Number Of Records": "3" - Basket Name": "IB-00000" - Basket Id": "a0A2V0000uHgCiEAK" Go to your salesforce org - Go to your Integration - Click on Batch Control Board ![](../images/2020/04/Screenshot-1107.png) Here is all information about our Integration Inbound processing - Click on view - Successfully saved ![](../images/2020/04/Screenshot-1108.png) ![](../images/2020/04/Screenshot-1109.png) #### Explaining a Simple REST Example Create New Message Follow the same steps to create the REST project. **Go back to your salesforce org** - Create an Integration & copy IntegrationID - Create an Interface & copy Interface Name ![](../images/2020/04/Screenshot-1110.png) ![](../images/2020/04/Screenshot-1111.png) Click on Related List create IStructure - Name - BillingCity - BillingCountry ![](../images/2020/04/Screenshot-1112.png) - Click on Open Mapping Button - Go to mapping section select ExtId & save ![](../images/2020/04/Screenshot-1113.png) - **Go to SoapUI** - Paste this code under Media type section - URL     : https://skyvva-test-dev-ed.lightning.force.com/ - RESOURCE: /services/apexrest/skyvvasolutions/createNewMessage [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] { "integrationid":"a0W2v000019eQGkEAM", "INTERFACENAME":"Interface_createNewMessage" , "messages":[ { "imessage":{ "skyvvasolutions__status__c":"Pending", "skyvvasolutions__Comment__c":"Test Comment1123456" }, "idata":{ "BillingCity":"Billing City0", "Name":"Account01" } }, { "imessage":{ "skyvvasolutions__status__c":"New", "skyvvasolutions__Comment__c":"Test Comment1123456" }, "idata":{ "BillingCity":"Billing City0", "Name":"Account22" } }, { "imessage":{ "skyvvasolutions__status__c":"Failed", "skyvvasolutions__Comment__c":"Test Comment1123456" }, "idata":{ "BillingCity":"Billing City0", "Name":"Account12" } } ] } [/aux_code] - Submit ![](../images/2020/04/Screenshot-1114.png) - Great you pass code **Go to your Salesforce org** - Click on Message Board - Go to your Integration - Select Interface ![](../images/2020/04/Screenshot-1115.png) - OK - Click on search button ![](../images/2020/04/Screenshot-1116.png) **This is the example of Failed message see red flag, If user having business requirement New, Pending, and Cancelled messages use method process message to reprocess. As now we explain it in next step** #### Explaining a Simple REST Example Process Message We have to follow the same steps for creating REST Project 3 - Follow same steps **Go back to your salesforce org** - Copy Integration - Copy Interface Name ![](../images/2020/04/Screenshot-1117.png) **Go to SoapUI** - Paste this code under Media type section - URL      :   https://skyvva-test-dev-ed.lightning.force.com - RESOURCE: /services/apexrest/skyvvasolutions/processMessage [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "INTEGRATIONNAME" : "Integration_createNewMessage", "INTERFACENAME" : "Interface_createNewMessage", "MODE":"SYNC", "STATUS":[ "New", "Pending", "Failed" ], "messages": [ "a0N2v00000aLYAlEAO", "a0N2v00000aLYAmEAO", "a0N2v00000aLYAnEAO" ] } [/aux_code] [su_box title="Key to remember" box_color="#2a8af0" title_color="#000000"]Click here to find messageID[/su_box] ![](../images/2020/04/Screenshot-1119.png) - Click on Detail List - See Integration and Interface name ![](../images/2020/04/Screenshot-1120.png) **Go to SoapUI** - Submit ![](../images/2020/04/Screenshot-1121.png) - Great you pass code **Go to your salesforce org** - Go to your message board ![](../images/2020/04/Screenshot-1122.png) - Congratulation you done very easily #### Explaining a Simple REST Example Integrate Synchronous This feature is created to allow user call Skyvva Services by REST Api from their system. - Create integration & copy Name ![](../images/2020/04/Screenshot-1123.png) Create interface & copy Name ![](../images/2020/04/Screenshot-1124.png) **Click on Related list & create IStructure** - Name - BillingCity - BillingCountry ![](../images/2020/04/Screenshot-1125.png) - Click on Open Mapping Button ![](../images/2020/04/Screenshot-1126.png) **Go to SoapUI** - Paste this code under Media type section - URL      :  https://skyvva-test-dev-ed.lightning.force.com - RESOURCE: /services/apexrest/skyvvasolutions/IntegrateSynchronous [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] { "integrationid" : "Integrate_synchronous", "interfacename" : "Interface_synchronous", "batchmode" : "false", "messages": [ { "Name": "India", "BillingCity": "Mumbai", "BillingCountry": "India" } , { "Name": "USA", "BillingCity": "LA", "BillingCountry": "Virgina" } ] } [/aux_code] - Submit ![](../images/2020/04/Screenshot-1127.png) **Great code pass successfully** - Go to your salesforce org - Go to your Integration - Click on Message Monitoring Tab ![](../images/2020/04/Screenshot-1128.png) - Select your Integration - Select your Interface - OK **Click on Search button** ![](../images/2020/04/Screenshot-1129.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Data Loader Title: 1. Data Loader Slug: data-loader URL: https://help.skyvva.com/#article/data-loader ================================================================================ # 1. Data Loader #### Introduction This tool allows you to bulk import or export data in a few simple steps. Featuring a more robust engine than import wizards, you can use it to insert, update, delete, export, or upsert Salesforce records for both standard and custom objects. SKYVVA´s Free Dataloader is part of the SKYVVA´s Integration Cloud App and is a ]\native force.com App. As a true Cloud Service data can be uploaded over the Web without the need to install any software or hardware. SKYVVA´s FreeDataloader is perfectly suited for a business analyst and administrator to manage the import of critical business information such as accounts, contacts, assets products, leads or orders on time without being reliant on limited IT resources. Based on an intuitive (Salesforce Look & Feel) Web interface SKYVVA´s Free Dataloader is very easy to configure (No Coding) and maintain. The Free Dataloader is installed as a tab ‘Integration’ directly in the Salesforce menu bar. Fields are mapped by a visual editor, data are transformed using a formula editor. All operations are executed in the familiar Salesforce Look & Feel. Business analysts or administrators get alerted about failure in the service and are enabled to resolute data transforming or process logic without IT help via a message board. #### Objectives This document describes administrative tasks required to manage the data integration from your system to salesforce. #### Scope and Advantage Currently, our data loader import the file and the user needs to wait until the import process finishes. Sometimes for big size file, it takes too long and they should have the option to choose the mode e.g. online import or using our batch mode. In the batch mode, we will create the file and store the record for processing with our batch scheduler. #### Architecture Overview ![](../images/2021/01/Untitled1.png) SKYVVA´s Dataloader is a native Salesforce App and is designed to integrate data supporting CSV/XML format via a manual file upload. It is simple, intuitive and powerful to built integration in minutes. It is a Config&Click graphical mapping tool. Skyvva data loader use to upsert, insert, update, delete, or export Salesforce records. Data Loader is running in Bulk mode. If we want to send data to email, we can check the flag batch mode. But to use this mode we need to make sure that we have library SKYVVA__Workspace. If not go to create it. **Where you find the Dataloader?** "Dataloader" is located on integration level in the form of custom link. ![](../images/2021/01/Untitled2.png) This Custom link to Data loader dashboard. ![](../images/2021/01/Untitled3-1.png) On this first tab we can select function whatever we want to execute. Either you can Import data or export from salesforce. - **Import Data: **The DataLoader is mainly used for importing data from file in csv, XML or json format. We can do import Starting from inbound interface. - **Export function**: Like import function Dataloader is used for exporting data in file in csv, XML or json format. We can do Export Starting from out bound interface ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 12. Pass data from screens or apex class to the outbound processing. Slug: 7-11-pass-data-from-screens-or-apex-class-to-the-outbound-processing URL: https://help.skyvva.com/#article/7-11-pass-data-from-screens-or-apex-class-to-the-outbound-processing ================================================================================ # 12. Pass data from screens or apex class to the outbound processing. We can pass data from the screen and apex class where the data is going into the mapping instead coming from the database through the select statement in the interface. The caller is an apex class and use the class method invokeCallout2(). Inside this method we have a map parameter where the user can pass name/value pair to the method. The map with the key/value he has to build in the apex caller program. #### Why and when to use Screen and apex class to pass data? We always need to pass the sObject Id to select the data from the database. Here requirement is that user doesn't want to select data from the database. The data is coming from a screen and they want to make a call to SAP with that data. We have to pass the data which user enters into a screen to invokeCallout2() They don't want to have the data to be written into a table in Salesforce. Just whatevere user enters in the screen need to be put a request for the HTTP callout through the SFDC2SAPPI or other adapters. They would use customer class in the outbound interface, so they can extract data themselves. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]“The callout is done in mode SYNC only. Future and batch are not needed in this scenario[/su_box] The data which he build into the map can come from screen or just a constant or data he select himself with select statement. The data is not coming through the select statement in our outbound interface. There is different way to build the map and fill with data. - **From Screen:**from screen means that you have to write apex code to read data from screen first and then put into the map. - **From Apex:  **from apex means that you can set the map with constant value or read from the table or call first google API get the response and put the response into the map. #### Steps to use the API invokeCallout3() to pass data from the apex class: When user executes callout api to pass data They can use  invokeCallout2() or invokeCallout23() API. Here we are using SOAP adapter for outbound processing. **Step1: Create Adapter** - First Insert Adaptor Record By giving prefer Name and select Type = SOAP - Now Insert Properties:   If Need Authorization - Endpoint: “” , Insert Endpoint URL where Request will direct - Username: “”, Your Endservice UserName - Password: “”, Your Endservice Password - Authentication: “BASIC” Example: : [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] - Type: **SOAP** - Endpoint : e [http://110.74.222.147:9292/xml](http://110.74.222.147:9292/xml) - Authentication : Basic - Operation : Post - Username: e … admin - Password : e … 12345  [/aux_code] We can handle if the business has **URL Query Parameter** and **HTTP Header** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] URL Query Parameter : ?pCity={!City}&pCountry={!Country} HTTP Header : Content-Type:Application/xml|{!LastName}:{!FirstName} [/aux_code] ![](../images/2019/01/Saop_1.png)![](../images/2019/01/soap_@.png) #### Step2: Create Message Type For the Message Type , you have to use our defined Structure Defined Structure . Here is SOAP tamplate created by Message Type for build xml payload: ![](../images/2020/04/new.png) #### Step3. Create Integration. Refer  tutorial (How to create integration.) - Link adaptor we created earlier - Max Number of Retry (This means a number of times should we retry if the request fails the first time). ![](../images/2019/07/Untitled5-1.png) **Step4. Create Interface (Inbound/Outbound). Refer tutorial to create Interface**. ([How to create Interface?](#article/1-what-is-an-interface-and-how-to-create-it)) **Create outbound Interface for request** Must fill this fields of Outbound Interface : 1.     Outbound Adapter: Select we created earlier 2.     Metadata Provider: Select we created earlier 3.     IStructure Repository: Select created iStructure Repo. 4.     MessageTypes: Select MessageType (Selected MsgType TYPE should always be WSDL REQUEST) 5.     Source/Target Name:  Select Any Object 6.     Query: Query needs to be inserted and the query should always include all fields we have mapped or going to map. 7.     Map Fields ![](../images/2019/07/Untitled6.png) Scroll down the page to the mapping section. when we get the response and we will get both header and body so based on mapping we will perform DML operation for the data we got in response ![](../images/2019/07/Untitled6-1.png) Now callout the data with a developer console. Go to developer console and enter this code to Execute Anonymous window. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnXML=true; c.returnListRecord=true; c.isCreateMessage=true; String[] ids= new String[]{'0016F000033uIHKQA2'}; skyvvasolutions.CallOutResponse r = skyvvasolutions.Iservices.invokeCallout2('SOAP INTEGRATION','SOAP REQUEST',ids,'SYNC',c); [/aux_code] You can check result on message monitoring ![](../images/2019/01/SaopR_8.png) #### Steps to use the API invokeCallout3() to pass data from the Screen: User wants to pass the data of account or any hierarchical objects from the screen  then they have to write apex code to read data from screen first and then put into the map. And for it they have to create screen in salesforce. - **Create Screen** Let's take example of screen. ![](../images/2020/04/Screen1.png) **2. Enter the value in the UI. ** When ever any field value is upadted, upsert from UI or screen back end trigger executed automatically. So enter the value in fields  of your screens and click on Submit button. Here we are taking example of above screen. For example: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] apiKey-> /rest/get/mock/service clientSecret-> 'Account1' privateToken-> 'All' [/aux_code] **Read data by apex code** When Value is change from UI it read by apex code. When trigger executed it will read updated value. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] public class EventBriteConnectionController { Public EventBriteConnectionController(){ } @AuraEnabled Public static Map saveConnectionCustomSetting(String apiKey,String clientSecret,String privateToken,String publicToken){ Map response = new Map(); response.put('status','success'); response.put('message','success'); try{ Map pathParam = new Map(); pathParam.put('UId',apiKey); //Example : /rest/get/mock/service Map queryParam = new Map(); queryParam.put('UName',clientSecret); //Example: 'Account1' Map headerParam = new Map(); headerParam.put('AuthPermission',privateToken); //Example:'All' }catch(Exception e){ response.put('status','error'); response.put('message','Error:'+e.getLineNumber()+' '+e.getMessage()); } return response; } }[/aux_code] ** Call invokeCalloutV3()** We have to call invoke callout3() to pass the data we entered into a screen. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; c.pathParam = pathParam; c.queryParam = queryParam; c.headerParam = headerParam; String[] ids= new String[]{'0011X00000U5ryeQAB'}; //List ids= new List(); skyvvasolutions.Iservices.invokeCalloutV3('V3 Processing','Screen Test',ids,'SYNC',c); ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 13. Acknowledgement scenario for outbound processing. Slug: 7-12-acknowledgement-scenario-for-outbound-processing URL: https://help.skyvva.com/#article/7-12-acknowledgement-scenario-for-outbound-processing ================================================================================ # 13. Acknowledgement scenario for outbound processing. #### Introduction Acknowledgment can be of system and application acknowledgment. System acknowledgment is a technical message send back to the caller to indicate that the data has been technically transferred. Application acknowledgment is to tell the caller that the data has been successfully processed without any business error. The acknowledgment can be sent to the caller back as a reaction of what he has sent to us. This is for inbound message. For the outbound message, we can only request from the receiving system to send us an acknowledgment or notification. We can request from the receiver to send us back the technical or application acknowledgment. A notification or acknowledgement message can be immediately e.g. send back from the receiver immediately for the outbound message or at a later time. In both cases, the acknowledgement message is an asynchronous message. If we make a synchronous call then we have immediately the response where we are waiting for that and get blocked until the response arrives. In this real synchronous case, we don't need acknowledgement or notification because the response is already the acknowledgement/notification message. Acknowledgement and notification make sense only for asynchronous messages. **What should we provide for the outbound message?** For the outbound interface, we can only request from the receiving system to send us the acknowledgment or notification. For acknowledgment, it is enough when we get only the application acknowledgment. We don't need a system acknowledgment. ![](../images/2020/03/Untitled2-1.png) #### Usecase to built the acknowledgement scenario for the inbound and outbound processing: - **Create Adapter:** - Type: **SOAP ** + **Create Property** Name                                 Value - Endpoint :    e [http://110.74.222.147:9292/xml](http://110.74.222.147:9292/xml) - Authentication : Basic - Operation : Post - Username: e … admin - Password : e … 12345 We can handle if the business has **URL Query Parameter** and **HTTP Header** - URL Query Parameter : ?pCity={!City}&pCountry={!Country} - HTTP Header : Content-Type:Application/xml|{!LastName}:{!FirstName} **2. Create Integration : i.e Testing-SOAPV3** **Create Interfaces: Interface (inbound , outbound)** - Name: Request-Interface, type **outbound ** **Note: Chain Interface must be apply base on business.** - Name: Response-Interface: type **Inbound** **4. Create Metadata Provider : Meta-SOAPV3** **5. Create Repository : Repo-SOAPV3** **6. Create MessageType : MessageType must define as SOAP Template ** -Here is SOAP tamplate created by Message Type for build xml payload: MessageType :Google SOAP Service                          Type :  WSDL Service MessageType: **Request**                                               Type:   WSDL Request MessageType : HTPP Header                                      Type :  HTTP Header MessageType : URL Query Parameter                       Type : WSDL URL Query Parameter MessageType : SOAP Header                                       Type :  WSDL Header MessageType : SOAP Body                                           Type :  WSDL Body MessageType: **Response**                                            Type:   WSDL Response MessageType : HTPP Header                                      Type :  HTTP Header MessageType : SOAP Header                                      Type :  WSDL Header MessageType : SOAP Body                                           Type :  WSDL Body ** ** **MessageType we have created:** ![](../images/2020/03/Untitled3-2.png) ![](../images/2020/03/Untitled4-2.png) **Mapping of request:** ![](../images/2020/03/Untitled5-1.png) With the message Type “Google SOAP Service” You can define with other Name but type is still WSDL Service **Business MessageType:** The business message Type could be in SOAP Header and SOAP Body Example :  MyAccount, MyContact , MyCase ![](../images/2020/03/Untitled6-1.png) **7. Create IStructure ** **8. Create MessageField Entry** **9. Do Configuration with Request Interface(OutBound)** Source/Target Message Type = Google SOAP Service **10. Do Mapping ** After finished configuration then you can Execute Callout CallOutControl c=  new CallOutControl(); List r = IServices.invokeCalloutV3(‘Integration Name',Interface Name’,new String[]{'RecordId'},'SYNC',c); System.debug(r); **11. Look back to the Point 1 you see the Property name URL Query Parameter and HTTP Header** - If we execute callout with input param like queryparam and headerparam the value we replace on property name URL Query Parameter and HTTP Headeris base on CallOutControl input param, but if we don’t use this case the value will replace by mapping. **Example of input with CallOutControl** CallOutControl c=  new CallOutControl(); Map queryparam= new Map(); queryparam.put('City','Mumbai'); queryparam.put('Country','India'); Map headerparam= new Map(); headerparam.put('LastName','Patil'); headerparam.put('FirstName','Shweta'); c.queryParam(queryparam); c.headerParam(headerparam); List r = IServices.invokeCalloutV3(‘Integration Name',Interface Name’,new String[]{'RecordId'},'SYNC',c); **Example of value base on Mapping: ** We create IStructure for URL Query Parameter and HTTP Header - IStructure of URL Query Parameter for example,  1- City                 2- Country - IStructure of HTTP Header for example 1-  LastName                          2- FirstName And do mapping from Source field to Target field of these MessageType. - Following the **URL Query Paramter**: After we have replaced the value, then the value of property **URL Query Paramter** will be link with the Property **Endpoint**. Example : [http://110.74.222.147:9292/xml?pCity=PhnomPenh&pCountry=Cambodia](http://110.74.222.147:9292/xml?pCity=PhnomPenh&pCountry=Cambodia) - Following the **HTTP Header**: After we have replaced the value Example: Content-Type:Application/xml|Yan:Ranin ![](../images/2020/03/Untitled8-1.png) **Response Result (Inbound):** If the Response is success our functionality will create root API message for both Messages (Request and Response) and API of Request and Response message will link to each other. Otherwise if the Callout request failed and response with fault, Currently messages request will update to failed and fault error will put into the Messages comment. Here is some of to do mapping in response interface : We using the existing **Response** Message type that we have created in the Message Type **Google SOAP Service** for link to Interface response. ![](../images/2020/03/Untitled9-1.png) Currently our inbound processing is working only response with body, so the business response is must in the MessageType SOAP Body. We can do mapping from the messagetype “MyAccount” map to Node Target sObject “Account”. And then do map source field to target field. For the example you can testing with Mock Service and with the Fake response. ** The Result of API Messages of Request and Response:** ![](../images/2020/03/Untitled10-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Inbound Message Processing Title: 11. Acknowledgement scenario for Inbound processing Slug: 6-10-acknowledgement-scenario-for-inbound-processing URL: https://help.skyvva.com/#article/6-10-acknowledgement-scenario-for-inbound-processing ================================================================================ # 11. Acknowledgement scenario for Inbound processing #### Introduction Acknowledgment can be of system and application acknowledgment. System acknowledgment is a technical message send back to the caller to indicate that the data has been technically transferred. Application acknowledgment is to tell the caller that the data has been successfully processed without any business error. The acknowledgment can be sent to the caller back as a reaction of what he has sent to us. This is for inbound message. For the outbound message, we can only request from the receiving system to send us an acknowledgment or notification. We can request from the receiver to send us back the technical or application acknowledgment. A notification or acknowledgement message can be immediately e.g. send back from the receiver immediately for the outbound message or at a later time. In both cases, the acknowledgement message is an asynchronous message. If we make a synchronous call then we have immediately the response where we are waiting for that and get blocked until the response arrives. In this real synchronous case, we don't need acknowledgement or notification because the response is already the acknowledgement/notification message. Acknowledgement and notification make sense only for asynchronous messages. **What should we provide for the inbound message?** For an inbound message, we provide the application acknowledgement. The system acknowledgement is not needed because this is in any way the same as the technical error when the api call failed. the acknowledgement message is always sent when user set or activate the acknowledgement handling for an interface. ![](../images/2020/03/Untitled1-1.png) Here we have a new field 'Response handling' to define different setup as a picklist. For example, we have the following value: - Send response immediately - Caller uses polling to fetch the response - Send notification - Create Platform Event -> This is to publish the event in the event-bus of Salesforce so that client can subscribe to it. #### Pre-requisite - Create adapter. Here we are using soap adapter. - Create message Type. As we are using Soap adapter we need specific soap template for it. So create message type as per soap template. - Create Interface. - Inbound Interface: Request Interface - outbound Interface :response interface. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the Outbound message processing Title: 1. Different API for the Outbound message processing Slug: different-api-for-the-outbound-message-processing URL: https://help.skyvva.com/#article/different-api-for-the-outbound-message-processing ================================================================================ # 1. Different API for the Outbound message processing This concept is about outbound interface processing. The real-time outbound interface can be done in different ways i.e Using a button, Using trigger, Using the process builder. For outbound processing, we have two categories: Synchronous:- Apex code wait for the response of the HTTP callout. Asynchronous:- Apex code doesn’t wait for the response of the HTTP callout. It can have a response which is an asynchronous response. This response can come at any time. InvokeCallout2() method supports   SAP, SAP-PI, SAP-R/3, SFDC2SAPPI, SOAP, REST adapter types. The response could be a text of JSON, XML, List> based on given flag parameters in CallOutControl and Apex of each adapter handle setting when execute callout.  InvokeCallout2() method support different mode: 1. SYNC 2. FUTURE 3. BATCH 4. AUTO We get a real-time response in SYNC mode only. **Different API for the inbound message processing:** 1. Invoke callout 2.Invoke callout2 3. Invoke callout3 4. Different way how to invoke outbound interface - Process Builder: - Button - Trigger - Apex Class - Flow ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the Outbound message processing Title: 2. Invoke callout() Slug: invoke-callout URL: https://help.skyvva.com/#article/invoke-callout ================================================================================ # 2. Invoke callout() ## **1\. Overview** `invokeCallout()` is the **legacy outbound callout method** in Skyvva used to send data from Salesforce to external systems such as SAP or SAP PI via outbound interfaces. This method belongs to the **Interface API Version V2** architecture and is primarily designed for **simple and synchronous outbound processing scenarios**. It is commonly used in **SFDC to SAP PI (SFDC2SAPPI) integration** where minimal processing logic is required. --- ## **2\. Purpose** The main purpose of `invokeCallout()` is to: * Trigger outbound communication from Salesforce * Send a single record (or related child records) per request * Provide a lightweight integration mechanism * Support basic SAP PI integration flows --- ## **3\. When to Use invokeCallout()** Use `invokeCallout()` when: * The integration does **not use Message Type Template (IStructure)** * A simple outbound call is required * Queueable or advanced processing is not required * Working with legacy SAP PI integration (SFDC2SAPPI adapter) --- ## **4\. Limitations** `invokeCallout()` has the following limitations: * Does **NOT support Message Type Template (IStructure)** * Does **NOT support Queueable processing** * Does **NOT support Batch processing** * Limited to legacy V2 integration architecture --- ## **5\. Supported Interface API Version** | Feature | Value | | ----- | ----- | | Interface API Version | V2 | --- ## **6\. Supported Execution Modes** | Mode | Support | | ----- | ----- | | `SYNC` | ✅ Supported | | `AUTO` | ✅ Supported | | `FUTURE` | ✅ Supported | | `QUEUEABLE` | ❌ Not Supported | | `BATCH` | ✅ Supported | --- ## **7\. Adapter Support** | Adapter Type | Support | | ----- | ----- | | SFDC2SAPPI Adapter | ✅ Supported | | REST Adapter | ❌ Not Supported | | SOAP Adapter | ❌ Not Supported | | SAP PI/PO Modern Adapter | ❌ Not Supported | --- ## **8\. Parameters** `invokeCallout()` requires the following parameters: | Parameter | Description | | ----- | ----- | | Interface ID | The Skyvva Interface configuration ID | | IDs | Salesforce record IDs to process | | Mode | Execution mode (`SYNC`, `AUTO`, `FUTUR`, `BATCH`) | --- ## **9\. Sample Apex Script for invokeCallout()** ```java List ids = new List(); for(Account a : [SELECT Id FROM Account]) { ids.add(a.Id); } IServices.invokeCallout('Interface_ID', ids, 'BATCH'); ``` --- ## **10\. Processing Flow** ![image](../images/2026/05/paste-1778833459051.png) --- ## **11\. Key Characteristics** * Legacy V2 integration method * Simple outbound processing * Synchronous execution only (SYNC/AUTO) * Mainly used for SAP PI (SFDC2SAPPI) integrations * No support for modern message structures or async queueing --- ## **12\. Summary** `invokeCallout()` is a **legacy Skyvva outbound method** designed for simple and direct integration scenarios. It is best suited for: * SFDC2SAPPI-based SAP integrations * Simple synchronous outbound communication * Existing legacy systems that do not require modernization --- ## **13\. Recommendation** * Use `invokeCallout()` only for **legacy or existing integrations** * For new implementations, consider `invokeCalloutV3()` for better scalability, adapter support, and message flexibility ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the Outbound message processing Title: 3. Invoke callout2() Slug: 3-invoke-callout2 URL: https://help.skyvva.com/#article/3-invoke-callout2 ================================================================================ # 3. Invoke callout2() ## **1\. Overview** `invokeCallout2()` is an **extended outbound callout method** in Skyvva based on **Interface API Version V2**. It is designed to improve the legacy `invokeCallout()` by adding support for **asynchronous processing modes** while still maintaining compatibility with older SAP PI integration architecture (SFDC2SAPPI). This method is please help write a document only invokeCallout2()? # **Skyvva Outbound Callout Method – invokeCallout2() (V2 Extended)** ## **1\. Overview** `invokeCallout2()` is an enhanced outbound callout method in Skyvva based on **Interface API Version V2**. It extends the original `invokeCallout()` functionality by introducing **asynchronous processing capabilities** while still remaining within the legacy V2 integration architecture. This method is mainly used for **SFDC to SAP PI (SFDC2SAPPI)** integrations where more flexible execution modes are required. --- ## **2\. Purpose** The main purpose of `invokeCallout2()` is to: * Provide outbound integration with extended processing options * Support both synchronous and asynchronous execution * Improve scalability compared to `invokeCallout()` * Maintain compatibility with V2-based legacy integrations --- ## **3\. When to Use invokeCallout2()** Use `invokeCallout2()` when: * You are working within **Interface API Version V2** * Asynchronous processing is required * You need Queueable or Batch processing support * The integration does **not use Message Type Template (IStructure)** * You are integrating with **SFDC2SAPPI adapter** --- ## **4\. Limitations** `invokeCallout2()` has the following limitations: * Does **NOT support Message Type Template (IStructure)** * Does **NOT support modern V3 adapter framework** * Limited to **V2 architecture** * No support for advanced V3 message structures (custom/sObject mapping) --- ## **5\. Supported Interface API Version** | Feature | Value | | ----- | ----- | | Interface API Version | V2 | --- ## **6\. Supported Execution Modes** | Mode | Support | | ----- | ----- | | `SYNC` | ✅ Supported | | `AUTO` | ✅ Supported | | `FUTURE` | ✅ Supported | | `QUEUEABLE` | ✅ Supported | | `BATCH` | ✅ Supported | --- ## **7\. Adapter Support** | Adapter Type | Support | | ----- | ----- | | SFDC2SAPPI Adapter | ✅ Supported | | REST Adapter | ❌ Not Supported | | SOAP Adapter | ❌ Not Supported | | SAP PI/PO Modern Adapter | ❌ Not Supported | --- ## **8\. Parameters** `invokeCallout2()` requires the following parameters: | Parameter | Description | | ----- | ----- | | Interface Name | Name of the outbound interface | | Integration Name | Name of the integration configuration | | IDs | Salesforce record IDs | | Mode | Execution mode (`SYNC`, `AUTO`, `FUTURE`, `QUEUEABLE`, `BATCH`) | | CallOutControl | Configuration object for processing behavior | --- ## **9\. CallOutControl Configuration Example** ```java skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnxml=true; c.returnListRecord=true; c.iscreatemessage=true; ``` --- ## **10\. Sample Apex Script for invokeCallout2()** ```java skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnxml=true; c.returnListRecord=true; c.iscreatemessage=true; List lId = new List(); for(Account a : [SELECT Id FROM Account]){ lId.add(a.Id); } skyvvasolutions.IServices.invokeCallout2('IntegrationName','InterfaceName',lId, 'QUEUEABLE', c); ``` ## **11\. Processing Flow** ![image](../images/2026/05/paste-1778832457272.png) --- ## **12\. Key Characteristics** * Based on **Interface API Version V2** * Supports **asynchronous execution (Future / Queueable / Batch)** * Compatible with **legacy SAP PI (SFDC2SAPPI) integrations** * No support for Message Type Template (`IStructure`) * Designed for **extended legacy integration scenarios** --- ## **13\. Summary** `invokeCallout2()` is a **V2 extended outbound callout method** that improves upon `invokeCallout()` by adding support for asynchronous processing. It is best suited for: * SFDC2SAPPI-based integrations * Legacy SAP PI environments requiring async processing * V2 architecture-based outbound integrations --- ## **14\. Recommendation** * Use `invokeCallout2()` for **legacy V2 systems requiring async processing** * For new enterprise integrations, consider `invokeCalloutV3()` for full adapter and message flexibility ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the Outbound message processing Title: 4. Invoke Callout3() Slug: 4-invoke-callout3 URL: https://help.skyvva.com/#article/4-invoke-callout3 ================================================================================ # 4. Invoke Callout3() ## **1\. Overview** `invokeCalloutV3()` is the **latest and modern outbound callout method** in Skyvva, based on **Interface API Version V3**. It is designed for **enterprise-grade integration scenarios**, supporting multiple adapters, advanced message structures, and scalable asynchronous processing. This method is the **recommended approach for all new integrations**. --- ## **2\. Purpose** The main purpose of `invokeCalloutV3()` is to: * Enable modern outbound integration from Salesforce to external systems * Support flexible message structures (template, custom, and sObject-based) * Provide full asynchronous processing capabilities * Support enterprise integration patterns with scalability and reliability --- ## **3\. When to Use invokeCalloutV3()** Use `invokeCalloutV3()` when: * You are building **new integrations** * You require **REST, SOAP, or SAP PI/PO modern adapter support** * You need **Message Type Template (IStructure) support** * You need **Custom Message Type or sObject-based integration** * You require **Queueable or Batch processing** * You are working with **Interface API Version V3 architecture** --- ## **4\. Interface API Version** | Feature | Value | | ----- | ----- | | Interface API Version | V3 | --- ## **5\. Supported Execution Modes** | Mode | Support | | ----- | ----- | | `SYNC` | ✅ Supported | | `AUTO` | ✅ Supported | | `FUTURE` | ✅ Supported | | `QUEUEABLE` | ✅ Supported | | `BATCH` | ✅ Supported | --- ## **6\. Adapter Support** `invokeCalloutV3()` supports modern integration adapters: | Adapter Type | Support | | ----- | ----- | | REST Adapter | ✅ Supported | | SOAP Adapter | ✅ Supported | | SAP PI/PO Adapter | ✅ Supported | | SFDC2SAPPI Legacy Adapter | ⚠️ Limited (legacy compatibility only) | --- ## **7\. Message Structure Support** `invokeCalloutV3()` supports multiple message formats: ### **7.1 Message Type Template (IStructure)** * Standardized integration templates * Reusable mapping configuration * Enterprise governance support ### **7.2 Custom Message Type** * Flexible payload structure * Custom integration formats * Dynamic transformation support ### **7.3 Salesforce sObject Support** * Direct mapping from Salesforce objects * Account, Contact, Opportunity, Custom Objects * Simplified outbound configuration --- ## **8\. Parameters** `invokeCalloutV3()` requires the following parameters: | Parameter | Description | | ----- | ----- | | Integration Name | Name of integration configuration | | Interface Name | Outbound interface name | | IDs | Salesforce record IDs | | Mode | Execution mode (`SYNC`, `AUTO`, `FUTURE`, `QUEUEABLE`, `BATCH`) | | CallOutControl | Configuration object for processing behavior | --- ## **9\. CallOutControl Configuration Example** skyvvasolutions.CallOutControl c \= new skyvvasolutions.CallOutControl(); c.returnXml \= true; c.returnListRecord \= true; c.isCreateMessage \= true; c.actionDoIntegrate \= true; --- ## **10\. Sample Apex Script for invokeCalloutV3()** ```java skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnxml=true; c.returnListRecord=true; c.iscreatemessage=true; List lId = new List(); for(Account a : [SELECT Id FROM Account]){ lId.add(a.Id); } skyvvasolutions.IServices.invokeCallout2('IntegrationName','InterfaceName',lId, 'QUEUEABLE', c); ``` --- ## **11\. Processing Flow** ![image](../images/2026/05/paste-1778821391695.png) --- ## **12\. Key Characteristics** * Based on **Interface API Version V3** * Fully supports **modern enterprise integration architecture** * Supports multiple message formats: * Message Type Template (IStructure) * Custom Message Type * Salesforce sObject mapping * Supports all execution modes: * SYNC / AUTO / FUTURE / QUEUEABLE / BATCH * Supports modern adapters: * REST, SOAP, SAP PI/PO * Designed for **scalability, flexibility, and enterprise integration** --- ## **13\. Summary** `invokeCalloutV3()` is the **modern Skyvva outbound callout method** designed for enterprise integration scenarios. It provides: * Full V3 architecture support * Flexible message structures * Multi-adapter compatibility * Advanced asynchronous processing * Scalable integration design ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the Outbound message processing Title: 5. Process builder Slug: 5-process-builder URL: https://help.skyvva.com/#article/5-process-builder ================================================================================ # 5. Process builder Process Builder is a Salesforce’s point-and-click tool that lets you easily automate if/then business processes and see a graphical representation of your process as you build. Every process consists of a trigger, at least one criteria node, and at least one action. You can configure immediate actions or schedule actions to be executed at a specific time. To keep things simple, this unit focuses on the most common process type: Record Change, which means the process, will start when the records are created or edited. - **Create a process builder to create CP Record** ![](../images/2018/11/2-18.png) ![](../images/2018/11/3-16.png) ![](../images/2018/11/4-13.png) Select SKYVVA apex API ![](../images/2018/11/5-11.png) Add input definition Setting apex variable values: integrationName: integration name Interface name: interface name: isCreateCPRecord: True (*False, if the value is not specified*) recordIds: salesforce sObject.Id (i.e Account.Id) ![](../images/2018/11/6-10.png) ![](../images/2018/11/7-5.png) You can test modification account from the screen and Save. I have executed mass update 10 account in developer console then got 10 CP records ![](../images/2018/11/8-6.png) - **Process Builder executes callout.** ![](../images/2018/11/9-5.png) You can edit the account on screen the save, then check the message on message-monitoring. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the Outbound message processing Title: 6. Apex Class Slug: 6-apex-class URL: https://help.skyvva.com/#article/6-apex-class ================================================================================ # 6. Apex Class #### Why and when to use Screen and apex class to pass data? We always need to pass the sObject Id to select the data from the database. Here requirement is that user doesn't want to select data from the database. The data is coming from a screen and they want to make a call to SAP with that data. We have to pass the data which user enters into a screen to invokeCallout2() They don't want to have the data to be written into a table in Salesforce. Just whatevere user enters in the screen need to be put a request for the HTTP callout through the SFDC2SAPPI or other adapters. They would use customer class in the outbound interface, so they can extract data themselves. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]“The callout is done in mode SYNC only. Future and batch are not needed in this scenario[/su_box] The data which he build into the map can come from screen or just a constant or data he select himself with select statement. The data is not coming through the select statement in our outbound interface. #### Steps to use the API invokeCallout2() to pass data from the  apex class: User want to pass data when s/he executes callout api, so only api invokeCallout2 can handle this scenario. here we are using SFDC2SAPPI adapter for outbound processing. **Step1**: Create SFDC2SAPPI adapter. ![](../images/2019/11/screencapture-shwetatest-dev-ed-lightning-force-lightning-r-skyvvasolutions-Adapter-c-a006F00003MrqqJQAR-view-2019-11-05-13_53_33.png) **Step2**: Create Integration. **Step2**: Create Outbound Interface ![](../images/2019/11/Untitled1.png) Step3: Do mapping ![](../images/2019/11/Untitled2.png) Step4: Push data with apex class - Go to set up - Click on developer console - Open Anonymous Window and enter following apex code. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); Map m=new Map(); m.put('Name', 'AC1'); m.put('BillingCity','City1'); m.put('BillingCountry','DE'); m.put('BillingState','State1'); m.put('ERP_DEBTOR_ID__c','AC1'); m.put('SAP_Division__c','00'); m.put('SAP_Sales_Org__c','00'); c.setPayLoad(m); skyvvasolutions.IServices.invokeCallout2('Shweta', 'Account', null, 'SYNC', c); [/aux_code] **Step5: **check result on message board ![](../images/2019/11/screencapture-shwetatest-dev-ed-lightning-force-lightning-r-skyvvasolutions-Integration-c-a0W6F00000oZCBXUA4-view-2019-11-05-15_53_44.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the Outbound message processing Title: 8. Send data with button or Trigger Slug: 7-send-data-with-button-or-trigger URL: https://help.skyvva.com/#article/7-send-data-with-button-or-trigger ================================================================================ # 8. Send data with button or Trigger To show the different technology which can be use to push data to the external client by using Skyvva. For example, different possibility  like: Using Trigger, Process Builder process, Flow, Apex class to send data out. The callout methods are using to send data from salesforce to external system (SFDC to SAP/SAP-PI) through interface outbound. The Service only sends one record/children per request to SAP. To invoke callout from apex trigger the method invokeCallout(interfaceId, ids, ‘AUTO’) is recommended. #### Why we use button, trigger, the process build process to push data from salesforce? - **Button** : when user push a button the change data should sent - **Trigger**: When a record is changed the change data should sent. #### Trigger When a record is changed the change data should sent. Whenever a record e.g. an account in Salesforce is changed this change are sent immediately to the client. This is the opposite way to the batch/async. variant. Follow the given steps: - Select Trigger Type “APEX TRIGGER” - Tick Trigger Event (can tick more than one) - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode : None, Auto, Future, Batch - Click button “Generate Script” - Now you will see the script apex trigger in the box and can copy to use it - In the script, change to your own name to your own name ![](../images/2019/06/trigger-1.png) #### Button - Select Trigger Type “BUTTON” - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode: Sync,Future,Batch - Click button “Generate Script” - Now you will see the script trigger button in the box and can copy to use it. ![](../images/2019/06/button-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 16. SAP Business One adapter Slug: 4-14-sap-business-one-adapter URL: https://help.skyvva.com/#article/4-14-sap-business-one-adapter ================================================================================ # 16. SAP Business One adapter #### Introduction In Skyvva, we have a new feature to send out data from Salesforce to SAP Business one client application by using SAP business one adapter. This adapter has worked with different SAP business modules such as Business Partner, Sale, Purchasing, and many modules in Sap Business One. This section will show how to use SAP Business One Adapter. To use this Adapter we need to have SAP Business one connection destination and we need to generate SAP Business One Message Type. This Adapter supports Dynamic URLs, PATH Parameter, QueryParamenter, and multiple operations such as POST, GET, PATCH, DELETE. SAP Business One Adapter is used for Request and Response processing by using SAP business one Message type. To generate SAP Business One Message Type follow this link [How to generate SAP  business one message Type](#article/14-9-sap-business-one-message-type-from-metadata). There are two deployments in this adapter such as On Cloud and Premise. - If we using On Cloud we need to follow the properties required: - Deployment: On Cloud. - Integration Framework: Service Layer. - Protocol: Rest - Authentication: Basic - API Service Endpoint URL: (The API service layer) - Header: (Optional) - URL Path Parameter: ( to put the key-value when some operation needed), - URL QUERY Parameter: (Optional) - Operation: (what we want to use) - Request Format and Response Format: Application/JSON. - Connection Destination - If we using on Premise we need to follow properties required: (Not yet Implement) - Deployment: On-premise. - Integration Framework: B1if. - Protocol: (We can choose REST and SOAP) - Authentication: Basic - API Service Endpoint URL: (The API service layer) - Header: (Optional) - URL Path Parameter: ( to put the key-value when some operation needed), - URL QUERY Parameter: (Optional) - Operation: (what we want to use) - Request Format and Response Format: Application/JSON. - Connection Destination. #### Setup: Step1:  Create SAP Business One Destination. - Go to Integration and click SAP Control Board. Here’s an example below. ![](../images/2021/05/3.png) - Create Connection Destination. - Choose Type to SAP Business One, fill in the Name, and click continue. ![](../images/2021/05/5.png) - After we click Continue, we need to configure SAP Credential. ![](../images/2021/05/6.png) - When we configured SAP Credential, we need to click the save button and click the Ping SAP Connection Button to ensure that the credential is correct. ![](../images/2021/05/8.png) Step2: Create SAP Business One Adapter on SAP Control Board. - Click adapter tap on SAP Control Board and click New Button. ![](../images/2021/04/20.png) - Fill in the required fields of properties Adapter, Click the Ping connection button to make sure that it works, and then click the save button. - Here's the example. ![](../images/2021/04/22.png) #### II. How to using Instance value in URL Path Parameter on adapter SAP Business One? We use Path Parameter on SAP Business One because some Operations are needed. For example, when we want to update the Order so we need to change Operation from POST to PATH and update the Order in sap business one Application, we need to know DocEntry to put DocEntry in Field URL PATH Parameter. See the example below. ![](../images/2021/04/23.png) To know about PATH Query Parameter and URL  QUERY Parameter Fileds in Adapter please Follow this Link: #article/4-11-how-to-build-the-dynamic-url-parameter-for-the-soap-rest-adapter ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 22. Init-Operations Slug: 3-21-init-operations URL: https://help.skyvva.com/#article/3-21-init-operations ================================================================================ # 22. Init-Operations **Learning Objectives:-** - Describe what are the different init-operation for the chained interface. - Comfortably use different init-operation for the chained interface. #### Introduction:- Skyvva provides the different init-operation for the chained interface I,e None, Delete First, Delete specific child and Delete Anyway. #### Which are different init-operation for the chained interface? The feature with our inti operation for the chained interface is to handle the deletion of a child from the sending system. There are different init-operation for the chained interface as per the condition. - None: Add a new child or update existing. - Delete First: Delete all child records of a parent. - Delete specific child: delete specific child of the parent. - Delete Anyway: This will always delete the children, no matter if you only send Parent or Parent + Children. - Upsert+ Delete **Upsert+ Delete:** ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: What is an interface? Title: 23. Processing in transactional mode Slug: 3-22-processing-in-transactional-mode URL: https://help.skyvva.com/#article/3-22-processing-in-transactional-mode ================================================================================ # 23. Processing in transactional mode #### Introduction The functionality in the context of a system that integrates with the **SKYVVA** application and Salesforce, using different versions (V3 and V4) of an API or integration method. Let's break down your description: - **interface.isTransactional__c=true**: This appears to be a condition indicating that a transactional mode is enabled for the interface. When this is set to true, it means that if a node in the integration process fails, the entire tree of nodes will be rolled back, ensuring that no partial data is saved. - **Multiple Trees**: If a request is posted to **SKYVVA** with more than one tree, and a node within one of those trees fails, no message will be saved. This implies that the entire integration process is atomic, and it either succeeds entirely or fails. - **V3 and V4**: **SKYVVA** has two different versions of integration methods (V3 and V4) that are used for calling data from Postman to **SKYVVA**/Salesforce. These versions might have different ways of making the integration work. Step 1: Create Message Type. - Create Metadata - Create Istructure Repository - Create Message type ![](../images/2021/04/12-1-2023-2-27-59-PM.png) Step 2: Create the Integration. Step 3: Create the Inbound Interface link with the message type, then check the** 'Transactional Handling'** mode. ![](../images/2021/04/12-1-2023-3-32-37-PM.png) Step 4: Do mapping. ![](../images/2021/04/12-1-2023-3-38-37-PM.png) The transactional mode is a flag that we can set as true or false. "IsTransactional__c=true" Means that when a node has failed it will roll back the whole tree. There are two modes: **1. Transactional Mode** **2. Non-Transactional Mode** **Case1: Transactional Mode ** - Transactional Mode is used in the **SKYVVA** application. In a transactional mode, a series of operations are grouped into a single transaction. The **SKYVVA** application ensures that either all these operations are completed successfully, or none of them are, to maintain data consistency and integrity. If a failure occurs at any point during the transaction, the system can "roll back" the entire transaction to its original state, effectively undoing all the changes made during that transaction. - We have three levels of messages account, contact, and asset. If the Transactional Mode flag is ON, and a failure occurs at the "asset" level, it will trigger a rollback of the entire transaction. This means that any changes made to the "account" and "contact" messages during the same transaction will be undone, and the data will return to its original state. - When a record fails, all messages within the entire tree will be rolled back, and the message status will be set to 'Cancelled' for any message indicating a failed transaction. This visual representation signifies that the data is in an inconsistent state due to the failed transaction, with the specific implications varying depending on the SKYVVA application. When the Transactional Mode flag is ON, if a record fails in one of the messages, all messages within the entire tree will be rolled back. Let's take an example: we have three levels of messages - account, contact, and asset. When an Account fails, it will be canceled throughout the entire tree, and its child nodes will show as 'New' as follow: ![](../images/2021/04/12-1-2023-11-06-34-AM.png) **Case2: Non-Transactional Mode** - In a non-transactional mode, each message is processed independently without any inherent guarantee of consistency. This means that if one message fails, it doesn't trigger an automatic rollback or transaction reversal. - Three levels of messages - "account," "contact," and "asset." These messages likely represent data operations within a **SKYVVA** application. - When the 'Account' record fails in one of the messages, it does not check the child messages, resulting in a cascading effect on the 'Contact' and 'Asset' messages. Consequently, these messages are set to a 'new' status. This is normal case, if a record fails in one of the messages, the API message's status is set to Partial Completed. Let's take an example: we have three levels of messages - account, contact, and asset. When an Account fails, the root message will be set to Partial Completed. ![](../images/2021/04/12-1-2023-1-53-48-PM.png) #### Summary - If interface.isTransactional__c is set to true, the integration is in a transactional mode where failures in any part of the process will trigger a rollback of the entire integration. - The integration involves posting requests from **Postman/FileZila** to **SKYVVA**/Salesforce, and the data payloads and formats used can vary between V3 and V4. V4 uses Query Parameters with JSON data payload, while V3 uses Request Body with data formats like JSON and XML. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 14. Behavior of Sibling and Uncle node Slug: 16-13-behavior-of-sibling-and-uncle-node URL: https://help.skyvva.com/#article/16-13-behavior-of-sibling-and-uncle-node ================================================================================ # 14. Behavior of Sibling and Uncle node ### The default behavior of the Sibling and Uncle node When we use parent data to a child node, we copy data from parent to child. This means it repeats the data of the parent for all children. - In the case of a Sibling, we are making a pair of the couple and repeating the data from brother and sister with a couple. Ex: When the current node has 2 occurrences and the brother/sister has 3 occurrences then we are creating 2 couples and map the data accordingly. These mean 1 occurrence gets lost because we cannot build a pair/couple for them. ![](../images/2021/04/Untitled.png) - In the case of the uncle, we are taking an occurrence of the parent node. EX: we have 2 uncles and 1parent then we take only 1occurrence and we are losing 1occurrence. ![](../images/2021/04/Untitled1.png) - ### Sibling node - In the below data, we have 1 Account,1 Asset, and 2 Contact including its child. - Asset and Contact are siblings because they stay on the same level and have the same parent ` 20001 TestAccount1-SB Cambodia1 PhnomPenh1 101 Test description ACCOUNT object Test-Asset_01 10 Test description ASSET object 2.3412 AS-000121 201 TestContact_01 DContact2 Dtest.2019_201@gmail.com 301 Test description CONTACT object TestCase Agent-01 401 Failed 2001 Test description CASE object 401 TestContact_02 CContact2 ctest.2019_102@gmail.com 102 Test description CONTACT object ` #### Do Mapping - In this case, we have mapped “ContactTestV3” to the target object node. Then we map the field from “AssetTestV3” to target. Because we want to retrieve data from “AssetTestV3”.![](../images/2021/04/Untitled2.png) [su_box title="The result on Message Monitoring " box_color="#2a8af0" title_color="#000000"]The data is displayed correctly. Because “AssetTestV3” has only one occurrence but “ContactTestV3” has two occurrences. So the “ContactTestV3” on index 2 cannot get data from “AssetTestV3”.[/su_box] ![](../images/2021/04/Untitled3.png) ### UseCase with  Uncle node - In the below data, we have 1 Account,2 Asset, and 3 Contacts including its child as a Case. - Asset and Contact are the siblings. Then Asset is the uncle of Case. It is the same thing as in real-life family relationships. ` 20001 TestAccount1-SB Cambodia1 PhnomPenh1 101 Test description ACCOUNT object Test-Asset_01 10 Test description ASSET object 2.3412 AS-000121 Test-Asset_02 20 Test description ASSET object 2.3412 AS-000122 201 TestContact_01 DContact2 Dtest.2019_201@gmail.com 301 Test description CONTACT object TestCase Agent-01 401 Failed 2001 Test description CASE object TestCase Agent-02 501 Failed 3001 Test description CASE object 401 TestContact_02 CContact2 ctest.2019_102@gmail.com 102 Test description CONTACT object TestCase Agent-03 202 Failed 4001 801 TestContact_03 CContact3 ctest.2019_103@gmail.com 103 Test description CASE object TestCase Agent-04 204 Failed 4004 ` **Do Mapping** - In this case, we have mapped “CaseTestV3” to the target object node. Then we map the field from “AssetTestV3” to target. Because we want to retrieve data from “AssetTestV3”. ![](../images/2021/04/Untitled4.png) [su_box title="The result on Message Monitoring" box_color="#2a8af0" title_color="#000000"]The data is displayed correctly. Because “AssetTestV3” has only 2 occurrences but “ContactTestV3” has 3 occurrences. So the “CaseTestV3” of “ContactTestV3” on index 3 cannot get data from “AssetTestV3”.[/su_box] ![](../images/2021/04/Untitled5.png) **Filter Condition of Sibling and Uncle node** **Filter Sibling** - In this data, I have 1 Account, 3 assets,s and 1 Contact including its child. Asset and Contact are siblings, if I want to take data from Asset to Contact by default it will take from the index 1. But at this time, we can set a condition to pick up data from any Asset that we need. [su_box title="Note" box_color="#F91113" title_color="#000000"]The condition value must be unique. If the condition is not unique then run-time will display incorrect results.[/su_box] ` 20001 TestAccount1-SB Cambodia1 PhnomPenh1 101 Test description ACCOUNT object Test-Asset_01 10 Test description ASSET object 2.3412 AS-000121 Test-Asset_02 20 Test description ASSET object 2.3412 AS-000122 Test-Asset_03 30 Test description ASSET object 2.3432 AS-000123 201 TestContact_01 DContact2 Dtest.2019_201@gmail.com 301 Test description CONTACT object TestCase Agent-01 401 Failed 2001 Test description CASE object TestCase Agent-02 402 Failed 2002 Test description CASE object ` ### Do Mapping - In this example “AssetTestV3” and “ContactTestV3” are the sibling because they stay on the same level and have the same parent that is “AccountTestV3” - We choose “ContactTestV3” as the master node to map to the Contact object then take data from the field “AssetName” of node“AssetTestV3” **![](../images/2021/04/Untitled6.png)** - Click “Set/Remove Filter”: this function allows the user to set the condition that they want. If we want to change or remove the condition, then we can go back to this function. ![](../images/2021/04/Untitled7.png) ** ** ** ** ** ** - A pop-up form will display to set the condition ![](../images/2021/04/Untitled8.png) - Choose the target field **![](../images/2021/04/Untitled9.png)** - Set the condition and click Ok to save **![](../images/2021/04/Untitled10.png)** - After do mapping complete then Save ![](../images/2021/04/Untitled11.png) ![](../images/2021/04/Untitled12.png) - Post data from Postman using SKYVVA V4 API ![](../images/2021/04/Untitled13.png) [su_box title="Result of Message Monitoring " box_color="#2a8af0" title_color="#000000"]The result is correct. We get data from the field “AssetName” if “SerialNumber” equal “AS-000122”[/su_box] ![](../images/2021/04/Untitled14.png) ** ** ### Filter uncle - The data is the same as in **Case 3. **We have 1 Account, 3 Assets, and 1 Contact, including its child. Asset and Contact are siblings, and Asset is the uncle of Case. I want to take data from Asset to Case. By default, it will take from index 1 because the parent of Case, Contact, stayed on index 1. But at this time, we can set a condition to pick up data from any Asset that we need. [su_box title="Note" box_color="#F91113" title_color="#000000"]The condition value must be unique. If the condition is not unique then run-time will display incorrect results. For the filter condition, we can not filter from the own node or from the parent node which does not make sense. [/su_box] ` 20001 TestAccount1-SB Cambodia1 PhnomPenh1 101 Test description ACCOUNT object Test-Asset_01 10 Test description ASSET object 2.3412 AS-000121 Test-Asset_02 20 Test description ASSET object 2.3412 AS-000122 Test-Asset_03 30 Test description ASSET object 2.3432 AS-000123 201 TestContact_01 DContact2 Dtest.2019_201@gmail.com 301 Test description CONTACT object TestCase Agent-01 401 Failed 2001 Test description CASE object TestCase Agent-02 402 Failed 2002 Test description CASE object ` **Do Mapping** - In this example “AssetTestV3” plays as uncle of “CaseTestV3”, because “AssetTestV3” and “ContactTestV3” are the sibling. The relationship of node is the same thing as real life family relationship We choose “CaseTestV3” as the master node to map to the Case object then take data from the field “AssetName” of node“AssetTestV3” ![](../images/2021/04/Untitled15.png) - After, we map the field from “AssetTestV3” that we have called an uncle node then right-click on the field, and we have a map to set the condition. ![](../images/2021/04/Untitled16.png) ** ** - After putting the condition then click Ok to save the condition record ** ![](../images/2021/04/Untitled17.png)** - ** D**o the mapping complete then Save it? ![](../images/2021/04/Untitled18.png) - Post data from Postman using SKYVVA V4 API ![](../images/2021/04/Untitled19.png) - The result is correct. We derive data from the field “AssetName” if “SerialNumber” equals “AS-000123”. Du to the data of “ContactTestV3” has two children occurrences all the child of “ContactTestV3” will get data from “AssetTestV3” ![](../images/2021/04/Untitled20.png) ** ** [su_box title="Note" box_color="#F91113" title_color="#000000"]To identify the node relationship, we start considering the first node map to the target object we can call this node the root node, and another node that maps to the target is called a master node. - Sibling node: When the node has the same parent and stays on the same level within the same path by comparing with the root or master node. - Uncle node: When the node stays on a different path by comparing with the root or master node. [/su_box] ### Filter Condition by Formula ![](../images/2021/04/Untitled21.png) - After dragging Function to the target field, the formula screen will display and then browse the node that we need to retrieve data ![](../images/2021/04/Untitled24.png) - Choose the field ![](../images/2021/04/Untitled22.png) - ** **After choosing a field, the user will be asked whether to set a condition on it. If not, click **Cancel.** If we want to set the condition, click OK. ![](../images/2021/04/Untitled23.png) - ** **If we click **Ok** from the above question then we can set conditions. After that click Ok to save the condition record ** ![](../images/2021/04/Untitled25.png)** - Click Save for the saving formula ![](../images/2021/04/Untitled25-1.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: 9. SAP Business One Message Type from SAP Metadata Slug: 14-9-sap-business-one-message-type-from-metadata URL: https://help.skyvva.com/#article/14-9-sap-business-one-message-type-from-metadata ================================================================================ # 9. SAP Business One Message Type from SAP Metadata #### Introduction In SKYVVA, we have a function import SAP metadata in the Repository that can import SAP Business One  Message Type by using the credential of SAP Business One Client application. To use this function to import SAP Business One Message Type, we need to create a Metadata provider,  Repository and we need to connection destination on SAP Control board. #### Why we use the import SAP metadata function to create the SAP Business One template? We use the import SAP metadata function to create the SAP Business One template because this function very helpful for user who wants to send data from Salesforce to SAP Business One  Client application by using SKyvva. As we knew that SAP Business One Client Application has many modules and has complex structures in each module. Therefore,  Skyvva has created this function to help users to generate the request and response  Message Type or structure of each module in SAP Business One. This function is contained with the URL or endpoint that easy to use with the module that we are choosing. **How to use SAP Metadata** Pre-required - Create Integration - Go to SAP Control Board - Connection Destination. - Import SAP Metadata. **Step1: Create Integration. ** Click this link below to see more detail about What is Integration [#article/integration](#article/integration) - Go to Integration => click the New button. ![](../images/2021/05/1-1.png) - Fill in the name and click Save Button. see the picture as an example. ![](../images/2021/05/2.png) **Step2:  Connection Destination on Sap Control board.** - Go to Integration and click SAP Control Board. Here’s an example below. ![](../images/2021/05/3.png) - Create Connection Destination. - Choose Type to SAP Business One, fill in the Name, and click continue. ![](../images/2021/05/5.png) After we click Continue, we need to configure SAP Credential. ![](../images/2021/05/6.png) - **Fill the Host URL:** That’s the URL which SAP Business One Client installed. - **Port Forward:** That’s the Port that we have forwarding of SAP business one client installed application. - **UserName:** That’s the Username to log in to SAP business one client application. - **Password:** That’s the Password to Login to SAP business one client application. - **URL path:** That’s the path of login to SAP Business one client application - **Company Database:** That’s the Company Name of Database [su_box title="Note" box_color="#2a8af0" title_color="#000000"] First, We need to create Remote Site for the URL and Port. Here’s the picture. [/su_box] ![](../images/2021/05/7.png) - When we configured SAP Credential done we need to click the save button and click the Ping SAP Connection Button for making sure that the credential is correct. ![](../images/2021/05/8.png) **Step 3: Import SAP Metadata.** - To use this function, we need to Create Metadata Provider first, and then we need to create a Repository. - Go to Metadata and click New Button. ![](../images/2021/05/10.png) - Fill in the name of Metadata Provide and click the Save button. ![](../images/2021/05/11.png) - After creating Metadata, we need to Create a Repository. ![](../images/2021/05/12.png) - Fill in the name of the repository and type - Click the Save button. ![](../images/2021/05/13.png) After we create a Repository, we can use the Import SAP Metadata in the Repository. - Go to Repository and click Import SAP Metadata. ![](../images/2021/05/14.png) - Choosing Direction SAP Connection - Select Connection Type - Select Connection Destination. - Choosing to Create Message type to invoke SAP Business One API. - And click Retrieve. Here’s an example: ![](../images/2021/05/15.png) After we click Retrieve, we can see modules of SAP Business One. - Here’s an example. ![](../images/2021/05/16.png) We can use the template of the module that we want. Example We want to use Order so we can search Order. - Here’s Example. ![](../images/2021/05/17.png) - Select Orders and click Create Message Type. ![](../images/2021/05/18.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] The URL is helpful for put to endpoint in properties SAP Business One Adapter because different Modules have different APIs. [/su_box] - Here’s the result that we create the template of Order in SAP Business One. ![](../images/2021/05/19.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Interface Group Title: 8. Processing of interface group Slug: 5-7-processing-of-interface-group URL: https://help.skyvva.com/#article/5-7-processing-of-interface-group ================================================================================ # 8. Processing of interface group #### Introduction An interface group is a unit to group logical interfaces together. You can group an interface that is related to each other (Account and contact to one interface group) to the processing at the same time. Interface group is the object user define at configuration time. This processing can read data from Agent database adapter such as Oracle, Ms. SQL, My SQL,..... and it also can read data from Agent file adapter such as SFTP, FTP, and FTPs. We have two type interface group - EO: this group the member of the interface group can be processed in any sequence. We just need to start the execution of the different interfaces in the group after the order. The execution order can follow the sequence of the group, if the user has not defined the sequence then the execution order is random. - EOIO: The interface in this group will have the sequence number. The user must define the sequence number because we are processing the interface based on this sequence. If the group has an error, it will stop the processing of the group. #### How to do manually an interface group type EO? - Go to Agent control board  and connection destination . - Go to Tap Interface Group on Agent Control Board and click New Button. ![](../images/2021/06/68.png) create an inbound interface group ![](../images/2021/01/a16.png) - Add interfaces into an interface group Go to interface group detail and click on the "Add interface" button. ![](../images/2021/01/a17.png) Do Manual process per-interface group - Before you do the manual process you need to check to make sure that the interface group, Adapter, Integration, IChain, mapping, or workflow that we set on an interface is caches retrieved. ![](../images/2021/01/a18.png) - Select on interface group and click on the Manual Process button. ![](../images/2021/01/a19.png) - After the user click on the Manual Process button. ![](../images/2021/01/a20.png) - You need to check the message monitor to ensure that salesforce received data from the database correctly. ![](../images/2021/01/a21.png) **How to run the scheduler per-interface group type EO?** Step1: Agent Control Board - Before you run the schedule you make sure your interface group, Adapter, Integration, Interface, mapping, IChain, Workflow, is cache retrieved correctly. ![](../images/2021/01/a22.png) - The agent will be generated scheduler after the user click the scheduler tab ![](../images/2021/01/a23.png) - Set the time to Run At ![](../images/2021/01/a24.png) - Click on Action Button ![](../images/2021/01/a25.png) - After start the scheduler ![](../images/2021/01/a26.png) - Navigate to message monitor to check the result ![](../images/2021/01/a27.png) #### How to do manually an interface group type EOIO? Navigate to the Agent control board and click on the interface group tab. Click New button to create Interface Group ![](../images/2021/01/b4.png) - Create inbound interface group type EOIO ![](../images/2021/01/b5.png) - Add interfaces into an interface group ![](../images/2021/01/b6.png) - Before you do the manual process you need to check to make sure your properties are cache retrieved. ![](../images/2021/01/b7.png) - Go to the Interface group tab select one interface group and click the Manual Process button. ![](../images/2021/01/b8.png) - After clicking the Manual Process button. ![](../images/2021/01/b9.png) - Checking the result on message monitor to ensure that database sends data to salesforce correctly. ![](../images/2021/01/b10.png)**How to run the scheduler per-interface group type EOIO?** Step1: Agent Control Board - Before you run the scheduler you need to check to make sure that the interface group, adapter, interface, Ichain, Mapping, or workflow that we set on an interface is cache retrieved. ![](../images/2021/01/b11.png) - The agent will be generated a scheduler after the user clicks the scheduler tab. ![](../images/2021/01/b12.png) - Set the time to Run At ![](../images/2021/01/b13-1.png) - Click on the Action button. ![](../images/2021/01/b14.png) - After you start the scheduler. ![](../images/2021/01/b15.png) - You need to check the message monitor tab to make sure salesforce is received data from the database is correct. ![](../images/2021/01/b16.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 9. V4 integrate api with xml, json and CSV format Slug: 8-9-v4-integrate-api-with-xml-json-and-csv-format URL: https://help.skyvva.com/#article/8-9-v4-integrate-api-with-xml-json-and-csv-format ================================================================================ # 9. V4 integrate api with xml, json and CSV format #### Introduction: - Our V4/integrate rest variant supports JSON, XML and CSV therefore it is possible to pass the Rest envelope XML or JSON or CSV to the body of the v4/integrate. This means that for invoking the skyvva API we use only the rest variant ../services/apexrest/skyvvasolutions/v4/Integrate with either XML or JSON, CSV payload. - In the URL of V4 API, the query parameter is added in URL only. We have **two** types of **response**: 1. standard response 2. custom response using the response (outbound) interface to do the mapping if we want to get data from the response interface then we need to do mapping for the response interface and link it to request interface. Only data send from the input will return back as the response. If we want anything other than the input data then we have to use VLOOKUP formulae in the response mapping. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 17. Dropbox Slug: 4-16-dropbox URL: https://help.skyvva.com/#article/4-16-dropbox ================================================================================ # 17. Dropbox This adapter will be used to create CSV, EXCEL, XML, and JSON files inside the dropbox drive folder. **Dropbox Configuration:** We need to configure dropbox to use an adapter. Here is a link from where you can configure dropbox: [https://www.dropbox.com/developers/documentation/http/documentation](https://www.dropbox.com/developers/documentation/http/documentation) ![](../images/2021/07/Untitled1-2.png) **how to create app?** Create app as follwing: ![](../images/2021/07/Untitled3.png) Check some permission scopes and submit Generate access_token Recommend:long-live access_token (no expire) ![](../images/2021/07/Untitled4.png)Copy access_token ![](../images/2021/07/Untitled5.png)**Inbound Interface:** This adapter will be used to create CSV, EXCEL, XML, and JSON files inside the dropbox drive folder. Here we will go to see an example for  JSON file. **Dropbox InBound Adapter configure** Example create JSON adapter : ![](../images/2021/07/Untitled1-3.png) ![](../images/2021/07/Untitled2-1.png) Check  the Ping Connection: ![](../images/2021/07/Untitled3-1.png) We have to create the following data for inbound processing: - Create Metadata for message type -> Create I structure Repository in it -> Create appropriate message type. - The next step is to create Integration. - Then Create an Inbound Interface where we have to select your Metadata, Repository, and message type. Then Select your adapter. ![](../images/2021/07/Untitled4-1.png) **Mapping: **Open mapping tool. and Do mapping using tool. ![](../images/2021/07/Untitled5-1.png) The next step is to Execute inbound processing. There is two way to execute Inbound processing: - Manual Process on integration, - or scheduler. Here, I’m using a manual process as shown in the picture: ![](../images/2021/07/Untitled6.png) ![](../images/2021/07/Untitled7.png) We can check result on message monitor. Go to message monitor and search for your Interface. ![](../images/2021/07/Untitled8.png) Adapter configuration for all For all file format configuration is same just select your file format. **NOTE** File name for InBound can use with regular expression Apex: [https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_pattern_and_matcher_using.htm](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_pattern_and_matcher_using.htm) regular expression: [https://www.w3schools.com/java/java_regex.asp](https://www.w3schools.com/java/java_regex.asp) For example, will match the file with a name that starts with Request_Saleforce_JSONxxxxxxx and end with .json ![](../images/2021/07/Untitled9.png) Execute with the same example interface JSON Here is my dropbox file : ![](../images/2021/07/Untitled10.png) Check the result on the message monitor: ![](../images/2021/07/Untitled11.png) You can see dropbox folder is empty as all the files are moved to back up folder. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 18. Google Drive adapter Slug: 4-17-google-drive-adapter URL: https://help.skyvva.com/#article/4-17-google-drive-adapter ================================================================================ # 18. Google Drive adapter Google drive adapter is to write and read files from the cloud storage. **Adapter Screen:** ![](../images/2021/07/adapter_config_1.jpg) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 19. Microsoft Dynamic Slug: 4-18-microsoft-dynamic URL: https://help.skyvva.com/#article/4-18-microsoft-dynamic ================================================================================ # 19. Microsoft Dynamic Dynamics CRM is a piece of business software, made by Microsoft. It's a **customer relationship management software** that helps businesses manage their customer database, generate new leads, engage with their customers, and resolve customer service issues. The Microsoft Dynamic NAV adapter is defined in the Microsoft Control Board. This means that the on-cloud and on-premise variant that doesn't use the agent as the middleware is defined in the Microsoft Control Board. When the Agent should be used as the middleware for the on-premise deployment for Dynamics 365 xx, NAV, and AX then we are using the Agent Control Board and the Agent Microsoft Dynamics 365xx, NAV, and AX adapter from there. we can see that NAV can provide an Odata and soap API. Thus we can access these APIs using our soap and OData adapter. So that For 'Dynamics NAV' we can use the soap or rest adapter because 'Dynamics NAV' provides both flavors of API. Microsoft Dynamics NAV Server supports a range of different client types. This includes the Microsoft Dynamics NAV Windows client and the Microsoft Dynamics NAV Web client and two types of web services - Direct connection from Salesforce to NAV. In this case the connection is open through the firewall directly to the NAV System. What is in front is only the reverse proxy if exist. - Indirect connection from skyvva to NAV through the Agent. In this scenario the customer don't want to allow the direction connection to NAV due to security concern. Therefore they put the agent as the middleware in between Salesforce and NAV in the DMZ. The agent play the role of the gateway or middleware to block the direction connection from Salesforce. The connection goes only to the agent and the agent make the call to NAV using soap or rest API. To do this we provide for NAV als an adapter in agent e.g. 'Agent Microsoft Dynamics NAV'. The name of  connector is **'Dynamics NAV'**. Here are the steps he needs to follow in the configuration: - Chose the deployment option. Do we have only on-premise? Because when it is the on-cloud deployment then it is called Dynamics 365 Business Central and thus the connector 'Dynamics 365 xx' has to use. If it is on-premise the we need to use the Agent. Here like the AX variant we need to use the Agent Microsoft NAV adapter when the user want to use the Agent as a gateway in the DMZ. So it the MS control board we configure the direction op-premise connection. If we need to use agent then we have to go to the Agent Control Board. - Chose the authentication type e.g. i think that NAV support only the Basic Authentication - If in step 1 on-premise is chosen then we will have the field 'Connection Destination' where the use need to enter the connection he has created in the first step in the Microsoft Control Board. - Chose the protocol e.g. soap or rest/odata. Unlike AX we see that NAV support both API e.g. soap and rest. - Now fill in other properties based on the protocol selection in step 3 e.g. if soap then we show the same properties as the soap adapter. If REST/OData then we show similar to the REST adapter properties. If the protocol is soap then we use the code from the soap adapter. If it is REST/OData then we use the code from the rest adapter to make the callout to the API. **Microsoft Dynamic Nav is supporting 3 types of authentication:** - Basic: It requires a username and password. - Web Service Key: It's a required API Key. - Office 365 Authentication. ![](../images/2021/08/clipboard-202103181755-bpt0e.png) **Adapter Screen:** ![](../images/2021/08/Capture1.png) **Name**: Name can be anything. **Type**: We have to select type of adapter as Microsoft dynamic NAV. **Direction**: Direction can be Inbound or Outbound. **Status**: Status should Active of adapter. ![](../images/2021/08/clipboard-202103161722-r55rx.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Operation Types Title: 13. Add a new operation 'Create New Message' for the inbound API Slug: 23-14-add-a-new-operation-create-new-message-for-the-inbound-api URL: https://help.skyvva.com/#article/23-14-add-a-new-operation-create-new-message-for-the-inbound-api ================================================================================ # 13. Add a new operation 'Create New Message' for the inbound API We have to add a new picklist value 'Create Custom Message' as the Operation type. The message can be any payload format like text, csv, XML, json, or binary. User just wants to configure on the interface a new operation mode like 'Create New Message'. We get the raw message and we create the message with the status 'New'. Then we stop the processing The use case for this new operation type is that the user can use our message layer to store messages. user doesn't need to create his own message layer and write the rest API for creating the message. He can use our V4/Integrate API and create the message. With our message layer, he has the advantage to use our message monitor, to set status, etc.. But he will not be able to use our standard function of message reprocessing. He needs to have his own code for message reprocessing if he needs it. He can only use our monitoring to see the message record and the status. He needs to do the correct status handling with the message in his apex class. Since he can use our message monitor he saves time to develop such a monitoring tool. That is the advantage for him to use our API with the new operation type and our message monitor. When the status is 'New' then our reprocessing logic will not fetch those messages. But if he changes the status to 'Failed' or 'Pending' then our standard reprocessing function will fetch those messages but will be failed to execute correctly. When we create the message we have to set a new message type in the field 'skyvvasolutions__Message_Type__c'. This field is a picklist field and has the following value right now: - sObject Message - API Message - Event Message We will add a new type called 'Custom Message' to indicate that the processing of those messages has to be handled by the custom apex class. The users who want to use this function must add the new picklist manually to the relevant object as below: - add a new picklist for Operation Type on the object Interface, the name is " **Create Custom Message** " - add a new picklist for Message Type on the object Message, the name is " **Custom Message** " Support from V2.48 and later. But this type of Message is not ignored for reprocessing yet. We just create an Inbound Interface with the operation "Create Custom Message" then push data. We can use the Interface V2 or V3. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Workflow Title: 7. Import and Export IWorkflow Slug: import-and-export-iworkflow URL: https://help.skyvva.com/#article/import-and-export-iworkflow ================================================================================ # 7. Import and Export IWorkflow We need to add the import, export, and transport to other org workflow functions in the workflows screen to make it easy and friendly for the user can back up, restore, or transport to another org. ![](../images/2022/02/image_2022_02_03T13_52_31_738Z.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 10. Change API response Slug: 8-10-change-api-response URL: https://help.skyvva.com/#article/8-10-change-api-response ================================================================================ # 10. Change API response We added a new parameter called 'http_error_status' which user can use in the API query parameter to set the behavior of how you want to have the HTTP response code in your client. The possible values are - 'Failed', - 'Pending', - 'Partial Completed'. Users can set for example all 3 or only 1 or two. In this example &http_error_status =Failed, Pending, Partial Completed it means that want to get the HTTP status code 500 internal error when the message status is 'Failed', 'Pending', or 'Partial Completed'. When you set like this &http_error_status =Failed, Pending then it means that you want only to get the HTTP status code 500 when the message status is 'Pending', or 'Failed' but not 'Partial Completed'. In case the message has the status 'Partial Completed' you will get the HTTP 200 OK. The separator to use here is the semicolon. If you don't use this query parameter then the behavior is the old one as you know e.g. we return the HTTP 200 OK code even the message has the status 'Failed', 'Pending', or 'Partial Completed'. - - Default return the HTTP 200 OK code when the message has the status 'Failed', 'Pending', or 'Partial Completed'. and Param is ***http_error_status = Blank** ![](../images/2021/12/clipboard-202111221151-iimm3.png) - Return the HTTP 500 error code when the message has the status 'Failed', 'Pending', or 'Partial Completed'. and Param is **http_error_status = Failed, Pending,Partial Completed** ![](../images/2021/12/clipboard-202111221154-ohks5.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Outbound Message Processing Title: 14. Search by the Business External Id in outbound message (Interface) Slug: 7-13-search-by-the-business-external-id-also-in-the-outbound-message URL: https://help.skyvva.com/#article/7-13-search-by-the-business-external-id-also-in-the-outbound-message ================================================================================ # 14. Search by the Business External Id in outbound message (Interface) #### Introduction For new enhancement, the** BUSINESS EXTERNAL ID** on message monitoring will show the external id value when the user checks the flag external id in the mapping of the Outbound interface. **SKYVVA** external ID field contains the External ID attribute with unique record identifiers from a system outside Salesforce. **Hit link below ↓** [**How to use ?**](#article/169-search-by-the-business-external-id-in-outbound-message-interface) The Data mapping task uses external IDs to identify the parent-child relationships objects in the target Object. **SKYVVA** recommends to create and use external IDs instead of custom field lookup or unique field lookup to insert or upsert the target Object data. When user create an external ID from the Target Object, the Data mapping  to the name of the external ID. The Target Object shows the External IDs that user create in the Data mapping . ![](../images/2022/05/image_2022_05_04T13_24_19_147Z.png) The Data mapping creates an additional field for the external ID in the target Object at the mapping time. If an external ID exists for the object, the task uses the same external ID. User can either retain or delete the external IDs after you run the mapping task. User can retain the external ID fields if user wants to perform another upsert operation. If user cannot create an external ID field for an object, user can select a unique field or an lookup field for the source object from the Target object when user perform an upsert operation. For example, you can select a unique field or an lookup field for the target object. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Message Content(Data) can filter only the value of data in the message, not the field. - E.g. in below example we search with External Business Id LastName John (Contact) [/su_box] ![](../images/2022/05/image_2022_05_04T13_43_43_430Z.png) - Apart from that the Business External Id is shown like that without filter when user click on search button (Coca & John) in hierarchical format - Coca Business External Id (Account) Name - John Business External Id (Contact) LastName ![](../images/2022/05/image_2022_05_04T13_48_09_212Z.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Workflow Title: 8. How to build Sample Data to Test the Formula of IWorkflow Condition? Slug: 8-how-to-build-sample-data-to-test-the-formula-of-iworkflow-condition URL: https://help.skyvva.com/#article/8-how-to-build-sample-data-to-test-the-formula-of-iworkflow-condition ================================================================================ # 8. How to build Sample Data to Test the Formula of IWorkflow Condition? #### Introduction We have to enhance the **‘Workflow’** screen to allow users to build **‘Sample Data’** for testing formulas. This will provide an easy way to test the formula in the **Workflow** without having to update the IStructure in the Interface or the Message type. Additionally, we can handle Message types of type Salesforce sObject with no field entries. #### The Configuring of Test Formulas in the IWorkflow Conditions - Create an **Integration** - Create an** Inbound Interface **-> Upload file to create** IStructure** ![](../images/2023/06/1-1.png) - Open the **Integration** Detail page -> Click on the **Workflows **tab -> Select the **Source Interface** ![](../images/2023/06/2-1.png) - Create a **New IWorkflow Condition** -> You can see the new **'Sample Data'** section on the screen as shown below. ![](../images/2023/06/3-1.png) - This section should have 3 buttons: **Refresh Button: **The refresh button will get the sample data that describes from sObject, Message Type Field Entry, or IStructure, depending on the design of your interface. **For Example: **On Interface V2 and Upload the IStructure, the refresh button will get sample Data from the IStructure of the Interface. - Before clicking the **Refresh** Button: ![](../images/2023/06/4-1.png) - Then change the Value field on the **Sample Data**: ![](../images/2023/06/5-1.png) - After **Saved**: ![](../images/2023/06/6-1.png) - After Click **Refresh** Button, it will get sample data from the IStructure of the Interface: ![](../images/2023/06/7-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - If you create and upload the IStructure from the V2 interface, the refresh button will get sample Data from the IStructure of the Interface. - If your interface does not have a Message type or IStructure, the refresh button will describe the sObject that you added in the source or target of the interface. - If your interface is designed with a Message type, the refresh button will use the Message Type Field Entry from the Message type that links in the interface. - If you manually create an IStructure in the V2 interface, the refresh button will merge it with the sObject. [/su_box] - **Save Button: **Save data into a file with the type txt. Change the Value field on the **Sample Data** -> **Save** ![](../images/2023/06/8-1.png) - After **Saved**: ![](../images/2023/06/9-1.png) - If you want to save that field and value into the file, you can click on the **Save Button** ![](../images/2023/06/10-1.png) - After clicking on the **Save Button,** the alert **‘Save Sample Data’** pop-up screen, you have to input **File Name **->** Save** ![](../images/2023/06/11-1.png) - After **Saved,** it will alert message [SUCCESS: Save IWorkFlows-Test001 file successfully.] ![](../images/2023/06/12-1.png) - **Retrieve Button: **In the **'Retrieve'** button, there are two tabs: **'Existing File'** and **'Import File'.** The **'Existing File'** tab is used to store your old sample data, and the **'Import File'** tab is used to import your Iworkflow file from your backup. Click on the ‘**Retrieve’ **button, it will alert the pop-up screen **‘Retrieve Sample Data’** has two tap **Existing File** and **Import File** - **Existing File** is used to store that **Sample Data** file after it has been saved and has two actions **‘Download’** and **‘Delete’.** ![](../images/2023/06/13-1.png) - After selecting the File -> **Save,** it will take that value file to show on the **Sample Data.** ![](../images/2023/06/14-1.png) - **Import File **use for Upload file IWorkflow that you have downloaded. ![](../images/2023/06/15-1.png) ![](../images/2023/06/16-1.png) - After Choosing the file to **Uploaded** -> **Save**, it will take that value on the file you uploaded to show on the **Sample Data.** ![](../images/2023/06/17-1.png) - Finish getting the IStructure of the interface shown on the data table and also can test the formula with sample data on the screen as below. ![](../images/2023/06/18.png) ![](../images/2023/06/19.png) **Result: **We can build sample data to test the formula. This is an easy way to test the formula in the workflow without updating the IStructure in the interface or the message type. We can also handle the message type of type salesforce sObject with no field entries. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - **Interface External Mapping V2:** All fields will be retrieved directly from the interface source Name, without any mapping checks. - **Interface V2:** Similar to Interface External Mapping V2, all fields will be retrieved from the interface source name without any mapping checks. - **Interface External Mapping V3:** Fields will be retrieved based on the mapping. If a mapping doesn't exist, fields will be retrieved via the interface source name. - **Interface V3:** If the interface is linked with a Message Type, fields will be retrieved based on the mapping. If no mapping exists, fields will be retrieved via the Message Type link with the interface. [/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 15. How to Callout Salesforce Organization’s ID By Mapping Formula 'GETORGID'? Slug: how-to-callout-salesforce-organizations-id-by-mapping-formula-getorgid URL: https://help.skyvva.com/#article/how-to-callout-salesforce-organizations-id-by-mapping-formula-getorgid ================================================================================ # 15. How to Callout Salesforce Organization’s ID By Mapping Formula 'GETORGID'? #### Introduction: The formula function called GETORGID has been introduced, which enables the retrieval of the Org ID. This function provides a useful solution for determining the Salesforce instance from which a request message is being sent to a receiver. The retrieved org ID information can be utilized to send a response message back to the caller via a synchronous call. #### Pre-Requisite:- - Create an Integration. - Create a Message type. - Create an Adapter Outbound e.g. SAP CPI. - Create an Outbound Interface -> Add Message Type -> Add Adapter - Do Mapping **Screenshot:** ![](../images/2023/06/1.1.1.png) - Query filter on the **'SOQL Query for filter sObject'** section for executing callout. **Screenshot:** ![](../images/2023/06/1.1.2.png) - Click Manual Process for Callout **Screenshot:** ![](../images/2023/06/1.1.3.png) - After Executed Callout, we get the Message Monitoring **Screenshot:** ![](../images/2023/06/1.1.4.png) **Result: **The Salesforce Org ID will be generated into the payload. Please look at the screenshot below. **Here is the Payload:** ![](../images/2023/06/1.1.5.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: How to Import File JSON to Create Message Type. Slug: how-to-import-file-json-to-create-message-type URL: https://help.skyvva.com/#article/how-to-import-file-json-to-create-message-type ================================================================================ # How to Import File JSON to Create Message Type. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 11. Calling SKYVVA REST API: V3/integrate Application: Skyvva Agent Slug: 11-calling-skyvva-rest-api-v3-integrate-application-skyvva-agent URL: https://help.skyvva.com/#article/11-calling-skyvva-rest-api-v3-integrate-application-skyvva-agent ================================================================================ # 11. Calling SKYVVA REST API: V3/integrate Application: Skyvva Agent **Skyvva** Agent is a cloud-based integration platform designed to connect Salesforce with other applications, data sources, and services. It facilitates data synchronization, transformation, and automation between Salesforce and various endpoints. **Skyvva** Agent can be a powerful tool for organizations looking to streamline their business processes, improve data accuracy, and enhance customer experiences by seamlessly integrating Salesforce with other essential systems and applications. However, the specific features and capabilities may vary depending on the version and configuration of the **Skyvva** Agent you are using, so it's important to refer to the official documentation and seek support from **Skyvva** if needed. **1. Understand SKYVVA Agent V3/integrate:** - **SKYVVA** Agent V3/integrate is a part of the **SKYVVA** Integration Suite designed for Salesforce. It facilitates data integration and synchronization between Salesforce and other systems (Agent). **2. Identify Integration Use Case:** - Determine why user want to integrate **SKYVVA** Agent V3/integrate into application. Common use cases include syncing customer data, order processing, and real-time data updates between Salesforce and other platforms (Agent). **3. Prerequisites:** - Ensure user have access to the **SKYVVA** Agent V3/integrate software and appropriate licenses. - Understand the specific requirements and prerequisites for your integration, including Salesforce setup and permissions. **4. Configuration:** - Configure **SKYVVA** Agent V3/integrate according to your integration requirement. This includes setting up connectors, defining data mappings, and establishing the synchronization schedule. **5. Authentication and Authorization:** - Implement authentication and authorization mechanisms to ensure secure communication between your application and **SKYVVA** Agent V3/integrate. This may involve API keys, OAuth, or other methods. **6. Data Transformation:** - Depending on your integration requirements, you may need to transform data between your application and **SKYVVA** Agent V3/integrate. This might involve data mapping, data enrichment, or data cleansing. - Adding parameter on **URL Query parameter ***(Do not add this parameter into request payload)* ![](../images/2023/09/image_2023_09_06T07_08_38_537Z.png) - Request payload with JSON business data ![](../images/2023/09/image_2023_09_06T07_10_18_895Z.png) - Or request payload with XML business data ![](../images/2023/09/image_2023_09_06T07_11_48_409Z.png) - After posting, the type of message transform as **Agent Message** ![](../images/2023/09/image_2023_09_06T07_13_10_387Z.png) ![](../images/2023/09/image_2023_09_06T07_14_24_949Z.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 12. Calling SKYVVA REST API: V4/integrate Application: Skyvva Agent Slug: 12-calling-skyvva-rest-api-v4-integrate-application-skyvva-agent URL: https://help.skyvva.com/#article/12-calling-skyvva-rest-api-v4-integrate-application-skyvva-agent ================================================================================ # 12. Calling SKYVVA REST API: V4/integrate Application: Skyvva Agent **Skyvva** Agent is a cloud-based integration platform designed to connect Salesforce with other applications, data sources, and services. It facilitates data synchronization, transformation, and automation between Salesforce and various endpoints. **Skyvva** Agent can be a powerful tool for organizations looking to streamline their business processes, improve data accuracy, and enhance customer experiences by seamlessly integrating Salesforce with other essential systems and applications. However, the specific features and capabilities may vary depending on the version and configuration of the Skyvva Agent you are using, so it's important to refer to the official documentation and seek support from Skyvva if needed. **1. Understand SKYVVA Agent V4/integrate:** - **SKYVVA** Agent V4/integrate is a part of the **SKYVVA** Integration Suite designed for Salesforce. It facilitates data integration and synchronization between Salesforce and other systems (Agent). **2. Identify Integration Use Case:** - Determine why user want to integrate **SKYVVA** Agent V4/integrate into application. Common use cases include syncing customer data, order processing, and real-time data updates between Salesforce and other platforms (Agent). **3. Prerequisites:** - Ensure user have access to the **SKYVVA** Agent V4/integrate software and appropriate licenses. - Understand the specific requirements and prerequisites for your integration, including Salesforce setup and permissions. **4. Configuration:** - Configure **SKYVVA** Agent V4/integrate according to your integration requirement. This includes setting up connectors, defining data mappings, and establishing the synchronization schedule. **5. Authentication and Authorization:** - Implement authentication and authorization mechanisms to ensure secure communication between your application and **SKYVVA** Agent V4/integrate. This may involve API keys, OAuth, or other methods. **6. Data Transformation:** - Depending on your integration requirements, you may need to transform data between your application and **SKYVVA** Agent V4/integrate. This might involve data mapping, data enrichment, or data cleansing. - Adding parameter on **URL Query parameter** ![](../images/2023/09/image_2023_09_06T07_21_05_188Z.png) - Request payload with JSON business data ![](../images/2023/09/image_2023_09_06T07_22_33_168Z.png) - Or request payload with XML business data ![](../images/2023/09/image_2023_09_06T07_23_53_961Z.png) - After posting, the type of message transform as **Agent Message** ![](../images/2023/09/image_2023_09_06T07_25_05_264Z.png) ![](../images/2023/09/image_2023_09_06T07_26_06_946Z.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 13. Calling SKYVVA REST API: V3/IntegrateWithIMessage Application: Skyvva Agent Slug: 13-calling-skyvva-rest-api-v3-integratewithimessage-application-skyvva-agent URL: https://help.skyvva.com/#article/13-calling-skyvva-rest-api-v3-integratewithimessage-application-skyvva-agent ================================================================================ # 13. Calling SKYVVA REST API: V3/IntegrateWithIMessage Application: Skyvva Agent **Skyvva** Agent is a cloud-based integration platform designed to connect Salesforce with other applications, data sources, and services. It facilitates data synchronization, transformation, and automation between Salesforce and various endpoints. **Skyvva** Agent can be a powerful tool for organizations looking to streamline their business processes, improve data accuracy, and enhance customer experiences by seamlessly integrating Salesforce with other essential systems and applications. However, the specific features and capabilities may vary depending on the version and configuration of the Skyvva Agent you are using, so it's important to refer to the official documentation and seek support from Skyvva if needed. **1. Understand SKYVVA Agent V3/IntegrateWithIMessage :** - **SKYVVA** Agent V3/IntegrateWithIMessage is a part of the **SKYVVA** Integration Suite designed for Salesforce. It facilitates data integration and synchronization between Salesforce and other systems (Agent). **2. Identify Integration Use Case:** - Determine why user want to integrate **SKYVVA** Agent V3/IntegrateWithIMessage into application. Common use cases include syncing customer data, order processing, and real-time data updates between Salesforce and other platforms (Agent). **3. Prerequisites:** - Ensure user have access to the **SKYVVA** Agent V3/IntegrateWithIMessage software and appropriate licenses. - Understand the specific requirements and prerequisites for your integration, including Salesforce setup and permissions. **4. Configuration:** - Configure **SKYVVA** Agent V3/IntegrateWithIMessage according to your integration requirement. This includes setting up connectors, defining data mappings, and establishing the synchronization schedule. **5. Authentication and Authorization:** - Implement authentication and authorization mechanisms to ensure secure communication between your application and **SKYVVA** Agent V3/IntegrateWithIMessage . This may involve API keys, OAuth, or other methods. **6. Data Transformation:** - Depending on your integration requirements, you may need to transform data between your application and **SKYVVA** Agent V3/IntegrateWithIMessage . This might involve data mapping, data enrichment, or data cleansing. - Add parameter on **URL Query parameter ***(Do not add this parameter to request payload)* ![](../images/2023/09/image_2023_09_06T13_14_48_975Z.png) - Request payload ![](../images/2023/09/image_2023_09_06T13_15_53_625Z.png) - After posting, the type of message transform as **Agent Message** ![](../images/2023/09/image_2023_09_06T13_16_58_608Z.png) ![](../images/2023/09/image_2023_09_06T13_17_49_728Z.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the inbound message processing Title: 14. Calling SKYVVA REST API: V4/IntegrateWithIMessage Application: Skyvva Agent Slug: 14-calling-skyvva-rest-api-v4-integratewithimessage-application-skyvva-agent URL: https://help.skyvva.com/#article/14-calling-skyvva-rest-api-v4-integratewithimessage-application-skyvva-agent ================================================================================ # 14. Calling SKYVVA REST API: V4/IntegrateWithIMessage Application: Skyvva Agent **Skyvva** Agent is a cloud-based integration platform designed to connect Salesforce with other applications, data sources, and services. It facilitates data synchronization, transformation, and automation between Salesforce and various endpoints. **Skyvva** Agent can be a powerful tool for organizations looking to streamline their business processes, improve data accuracy, and enhance customer experiences by seamlessly integrating Salesforce with other essential systems and applications. However, the specific features and capabilities may vary depending on the version and configuration of the Skyvva Agent you are using, so it's important to refer to the official documentation and seek support from Skyvva if needed. **1. Understand SKYVVA Agent V4/IntegrateWithIMessage :** - **SKYVVA** Agent V4/IntegrateWithIMessage is a part of the **SKYVVA** Integration Suite designed for Salesforce. It facilitates data integration and synchronization between Salesforce and other systems (Agent). **2. Identify Integration Use Case:** - Determine why user want to integrate **SKYVVA** Agent V4/IntegrateWithIMessage into application. Common use cases include syncing customer data, order processing, and real-time data updates between Salesforce and other platforms (Agent). **3. Prerequisites:** - Ensure user have access to the **SKYVVA** Agent V4/IntegrateWithIMessage software and appropriate licenses. - Understand the specific requirements and prerequisites for your integration, including Salesforce setup and permissions. **4. Configuration:** - Configure **SKYVVA** Agent V4/IntegrateWithIMessage according to your integration requirement. This includes setting up connectors, defining data mappings, and establishing the synchronization schedule. **5. Authentication and Authorization:** - Implement authentication and authorization mechanisms to ensure secure communication between your application and **SKYVVA** Agent V4/IntegrateWithIMessage . This may involve API keys, OAuth, or other methods. **6. Data Transformation:** - Depending on your integration requirements, you may need to transform data between your application and **SKYVVA** Agent V4/IntegrateWithIMessage . This might involve data mapping, data enrichment, or data cleansing. - Adding parameter on **URL Query parameter** ![](../images/2023/09/image_2023_09_06T13_20_26_263Z.png) - Request payload ![](../images/2023/09/image_2023_09_06T13_21_26_084Z.png) - After posting, the type of message transform as **Agent Message** ![](../images/2023/09/image_2023_09_06T13_22_57_657Z.png) ![](../images/2023/09/image_2023_09_06T13_24_23_628Z.png) ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Basket Generic Filters Title: Introduction Global Basket Slug: introduction-global-basket URL: https://help.skyvva.com/#article/introduction-global-basket ================================================================================ # Introduction Global Basket "**Global Baskets**" is   that provides users with multiple filter baskets for managing and **SKYVVA** data or records. These baskets allow users to sort and filter items based on various criteria, including names, information content, record counts, and date-related attributes. The "Delete Basket" is a specialized feature for managing items marked for deletion. - **Name or Attachment Name Filter Basket**: This filter basket likely allows users to search and filter records or items based on their names or attachment names. It can be useful for quickly locating specific files or records within a larger dataset. - **Information Filter Basket**: The Information Filter Basket may be a tool that allows users to apply filters to records or items based on their content or associated information. Depending on the system's functionality, this could include keywords, tags, categories, or other metadata. - **Number of Record Filter Basket**: This filter basket may enable users to set criteria related to the quantity or number of records they want to retrieve or manipulate. For instance, users could filter for records that meet a certain numerical threshold, like finding all records with sales figures exceeding a specific amount. - **Date Created or Last Modified Filter Basket**: This filter basket is likely designed to filter records or items based on their creation or last modification dates. Users can specify date ranges to identify items created or modified within a certain time frame. This can be crucial for managing data and tracking changes over time. - **Delete Basket**: The Delete Basket appears to be a distinct feature that allows users to mark records or items for deletion. This basket might serve as a temporary holding area for items that users intend to delete but want to review or confirm before permanently removing them. This feature can help prevent accidental data loss. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Basket Generic Filters Title: 1. Name & Attachment Name Basket Slug: 1-name-attachment-name-basket URL: https://help.skyvva.com/#article/1-name-attachment-name-basket ================================================================================ # 1. Name & Attachment Name Basket **Name **& **Attachment Name Basket** feature would enhance the user experience by making it easier to find and manage Baskets within the **SKYVVA** application. - **Input Value Name or Attachment Name for Apply Filter Basket** ![](../images/2023/09/e.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will already add some more column filters to search and tool delete function on generic page of Baskets. After Apply Filter it will show 1 record Basket has filter name we searched.[/su_box] - **Name Filter:** This is a filter that allows users to search for a specific basket by its name. - **Attachment Name Filter:** This is a filter for attachment names associated with the baskets. - **Apply filters**: After applying the filters, the page would display the search results, and if a user applied the name filter, it would show the Basket with the name matching the search query. - **Delete Function:** This is a feature that allows users to delete a selected basket record. [su_box title="Note" box_color="#FF0000" title_color="#000000"]Name and Attachment Name filter just one record basket and need we input full Name[/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Basket Generic Filters Title: 2. Information Filter Basket Slug: 2-information-filter-basket URL: https://help.skyvva.com/#article/2-information-filter-basket ================================================================================ # 2. Information Filter Basket In essence, this feature allows users to effectively manage and view data within the Information Filter Basket by applying various filters, including the option to add custom column filters. It also provides the capability to delete records that match the selected criteria. This functionality can be quite useful in data management and analysis scenarios. - **Select Information filter for Apply Filter Basket** ![](../images/2023/09/g.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will already add some more column filters to search and tool delete function on generic page of Baskets. After Apply Filter it will check Basket record all information filter we selects then it will show records we choose[/su_box] - **Interface Group**: This contains a group of filters available within the Information Filter Basket. These filters likely allow users to refine the data they see based on certain criteria. - **Interface**: This contains a group of filters available within the Information Filter Basket. These filter likely help users narrow down the dataset based on specific criteria. - **Integration**: Integration contains a group of filters available within the Information Filter Basket. These workflows define how data flows between different systems, specifying triggers, actions, and data mappings. The interface allows you to configure and monitor these workflows. - **Status**: This could be a filter category or an attribute related to the status of the items in the basket. - **Apply filters**: After applying the filters, the page would display the search results, and if a user applied the name filter, it would show the Basket with the name matching the search query. - **Delete Function:** This is a feature that allows users to delete a selected basket record. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Basket Generic Filters Title: 3. Number of Record Filter Basket Slug: 3-number-of-record-filter-basket URL: https://help.skyvva.com/#article/3-number-of-record-filter-basket ================================================================================ # 3. Number of Record Filter Basket **Number of Record Filter Basket** feature implies user count the number of records (rows) that satisfy the filter criteria. This count represents the "Number of Records" that match the filter. This process is essential for various data-related tasks, as it allows you to obtain subsets of data that meet specific requirements, generate insights  based on those filtered records. - **Input Number of Record for Apply Filter Basket** ![](../images/2023/09/j.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will already add some more column filters to search and tool delete function on generic page of Baskets. After Apply Filter it will check all Basket records have Number of Record we filtered.[/su_box] - **Number of Record :** After applying the filter, the system should check the number of records that match the filter criteria. - **Apply filters**: After applying the filters, the page would display the search results, and if a user applied the **Number of Record** filter, it would show the Basket with the **Number of Record** matching the search query. - **Delete Function:** This is a feature that allows users to delete a selected basket record. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Basket Generic Filters Title: 4. Date Filter Basket Slug: 4-date-filter-basket URL: https://help.skyvva.com/#article/4-date-filter-basket ================================================================================ # 4. Date Filter Basket **Date Filter Basket** after filtering the "Baskets" records, user can check if all records have either a "**CreateDate**" or "**LastModifiedDate**" within the specified date range, restate through the filtered records and verify that each record meets this condition. - **Select Date for Apply Filter Basket** **Add Date Filters**: - Add two date input fields on the page: "**From Date**" and "**To Date**." - Allow users to select dates within these input fields. - When users choose a date range and click an "Apply Filter" button, the system should remember these date values for filtering. ![](../images/2023/09/j-1.png) - **Go to Detail Basket we can see Date Created or Last Modified.** - Add date filter options to your Basket page, allowing users to specify date ranges for **CreateDate** and **LastModifiedDate**. ![](../images/2023/09/j-2.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will already add some more column filters to search and tool delete function on generic page of Baskets. After Apply Filter it will check all Basket records have CreateDate or LastModifiedDate we filtered it.[/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Basket Generic Filters Title: 5. Delete Basket Slug: 5-delete-basket URL: https://help.skyvva.com/#article/5-delete-basket ================================================================================ # 5. Delete Basket **Delete Basket** feature in a **SKYVVA** application where user can delete a basket, and before the deletion is confirmed, additional column filters are added to dialog box, and a delete confirmation is displayed. If the user clicks "Yes," the basket is deleted, and if the user clicks "No," the deletion process is canceled. - **Click tool Delete for Basket we want to deleted** ![](../images/2023/09/j-3.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will already add some more column filters to search and tool delete function on generic page of Baskets. After Click Yes that Basket do process deleted but if we Click No that Basket don’t do process deleted.[/su_box] **Delete Basket:** - If the user clicks "Yes," proceed with the basket deletion process. - If the user clicks "No," cancel the deletion process. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: 10. How to use ‘Open Editor’ button to create message type ? Slug: 10-how-to-use-open-editor-button-to-create-message-type URL: https://help.skyvva.com/#article/10-how-to-use-open-editor-button-to-create-message-type ================================================================================ # 10. How to use ‘Open Editor’ button to create message type ? #### Introduction **SKYVVA** application's functionality for importing **JSON Swagger, OpenAPI 3. x, and EDMX** files using an **Open Edito**r button. The enhancement, here we described involves a pop-up screen for importing metadata and opening the editor. The main difference is in the second step of importing metadata, where users can manually enter values in the '**Open Editor**' and click the '**Upload**' button to choose the **API** of the message type. Here's a breakdown of the process described: - **Importing Metadata**: Users click on the "**Open Editor**" button to initiate the process. - **Pop-up Screen**: A pop-up screen appears, where users can select the file they want to import. This file can be in **JSON Swagger, OpenAPI 3. x, or EDMX** format. - **Manual Entry**: In this step, users have the option to manually enter values in the "**Open Editor**" field. it is text input where users can provide input. - **Click Upload**: After entering the desired values in the "**Open Editor**" field, users click the "**Upload**" button. This action likely triggers the import process for the selected API or message type based on the entered values. It's important to ensure that the user interface is clear and intuitive so that users can easily understand and navigate through these steps. [su_box title="**Expectation**:" box_color="#2a8af0" title_color="#000000"]The screen has been enhanced for the** Open Editor** and Import MetaData buttons. This enhancement will allow the user to select the specific API in order to generate the message type.[/su_box] > [su_heading] #### How to use the ‘Open Editor’ button to create a message type. [/su_heading] **Case 1:** **Swagger 2.0/OpenAPI 2.0 file types.** The process for generating an **API** from a Swagger 2.0/OpenAPI 2.0 file. Here's a breakdown of the steps are mentioned: - **Select Swagger 2.0/OpenAPI 2.0 File Type**: The user starts by selecting the file type you want to use, which is Swagger 2.0 or OpenAPI 2.0. These are commonly used specifications for describing RESTful APIs. - **Upload Open Editor Button**: After selecting the file type, the user likely has an open editor box where the user inputs the content or path to your Swagger 2.0/OpenAPI 2.0 file. This file typically contains the API definition, including endpoints, request/response schemas, and other relevant information. - **Generate the API**: Once you've provided the necessary input, a process is initiated to generate the API based on the contents of the Swagger 2.0/OpenAPI 2.0 file. This process may involve parsing the file and creating code or configuration files necessary to expose the API. - **API Appears on the Screen**: After the generation process is complete, the resulting API is displayed on the screen. This could include a visual representation of the API endpoints, documentation, or other relevant information. - **Choose and Save Message Type**: At this point, you have the option to choose and store the message type for a specific API. Message types might refer to how requests and responses are formatted or serialized, such as JSON, XML, or other custom formats. This step allows you to configure how the API will send and receive data. Overall, this process appears to be a streamlined way to import a Swagger 2.0/OpenAPI 2.0 definition, generate an API, and configure message types for communication with the API. It's a common workflow in API development and integration. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]After selecting the Swagger 2.0/OpenAPI 2.0 file type and entering the value in the open editor box, the API will be generated on the screen, enabling us to choose and store the message type for a specific API.[/su_box] ***Required step:*** - Create metadata provider and repository. - Go to the repository then click the Open Editor button. ![](../images/2023/09/j-17.png) - Choose the file type as Swagger 2.0/OpenAPI 2.0 and click the next button, then manually enter the values in the box. - Click the ‘Upload’ button and click choose the API Name. - The save button will generate a message type. ![](../images/2023/09/j-4.png) This is a process where a pop-up screen displays API information, including the API name and ReferenceObject, and then generates a REST template, including the Request and Response. Here's a general outline of how users configure this: - **User Interaction**: Create a user interface that allows users to input the API name and ReferenceObject. This interface of the **SKYVVA** application. - **Pop-Up Display**: When the user inputs the API name and ReferenceObject, trigger a pop-up or modal dialog that displays this information. - **Generate REST Template**: **Request**: Based on the API name and ReferenceObject, dynamically generate the REST request template. This template should include the HTTP method (GET, POST, PUT, DELETE, etc.), the API endpoint, request headers, and request body. - **Response**: Similarly, generate the REST response template. This should include the expected HTTP status codes, response headers, and response body structure. - **Display Templates**: Display the generated request and response templates to the user within the format screen. Users can format these templates in a user-friendly way, such as JSON or XML, depending on the API and user preferences ![](../images/2023/09/j-5.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name and ReferenceObject. It will generate the REST template, including the Request and Response.[/su_box] **Case 2:** **OpenAPI 3. x file types.** This process is related to working with OpenAPI 3.x files and generating an API. OpenAPI is a specification for building APIs, and it provides a standardized way to describe the endpoints, data models, and operations of an API. Here's a breakdown of the steps you mentioned: - **Select 'OpenAPI 3.x' File Type:** This step involves choosing the OpenAPI version the user wants to work with. OpenAPI 3.x is one of the versions, and it might be offered as an option when users are setting up or configuring an API with the **SKYVVA** application. - **Enter a Value in the Open Editor Box:** After selecting the 'OpenAPI 3.x' file type, the user would typically need to provide or upload an OpenAPI specification file. This file is usually written in XML or JSON and contains the details of your API, such as endpoints, request and response schemas, authentication methods, etc. The "Open Editor Box" is likely where you paste the contents of your OpenAPI specification file. - **Generate the API on the Screen:** Once the user enters the OpenAPI specification, the system or tool the user using will process it and generate an API based on the provided specification. This API generation process may involve parsing the OpenAPI file configurations for user API. - **Choose and upload Message Type for a Specific API:** After the API is generated, a user may have the option to choose and upload a message type for a specific API. Message types could refer to data formats or structures used for communication within the API, such as JSON, or XML. Depending on user requirements, a user might need to select a message type that aligns with your API's design. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]After selecting the ‘**OpenAPI 3. x’** file type and entering the value in the open editor box, the API will be generated on the screen, enabling us to choose and store the message type for a specific API.[/su_box] ***Required step:*** - Create metadata provider and repository. - Go to the repository then click the Open Editor button. ![](../images/2023/09/j-6.png) - Choose the file type as OpenAPI 3. x and click the next button, then manually enter the values in the box. - Click the ‘Upload’ button and click choose the API Name. - The save button will generate a message type. ![](../images/2023/09/j-7.png) This is a process where a pop-up screen displays API information, including the API name and ReferenceObject, and then generates a REST template, including the Request and Response. Here's a general outline of how users configure this: - **User Interaction**: Create a user interface that allows users to input the API name and ReferenceObject. This interface of the **SKYVVA** application. - **Pop-Up Display**: When the user inputs the API name and ReferenceObject, trigger a pop-up or modal dialog that displays this information. - **Generate REST Template**: **Request**: Based on the API name and ReferenceObject, dynamically generate the REST request template. This template should include the HTTP method (GET, POST, PUT, DELETE, etc.), the API endpoint, request headers, and request body. - **Response**: Similarly, generate the REST response template. This should include the expected HTTP status codes, response headers, and response body structure. - **Display Templates**: Display the generated request and response templates to the user within the format screen. Users can format these templates in a user-friendly way, such as JSON or XML, depending on the API and user preferences ![](../images/2023/09/j-8.png) [su_box title="Result" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name and ReferenceObject. It will generate the REST template, including the Request and Response.[/su_box] Case 3**:** **EDMX file types.** This process is related to working with EDMX files and generating APIs using either a REST template or a SOAP template. Let us break down the steps based on your description: - **Select the EDMX File Type:** You start by selecting the "EDMX" file type. EDMX (Entity Data Model XML) files are often used in the context of Entity Framework. - **Enter a Value in the Open Editor Box:** After selecting the EDMX file type, you might be prompted to enter a specific value in an open editor box. This value could be related to the configuration or setup of the API user generating. - **Choose Between Two Templates:** Next, you have the option to choose between two templates: - **REST Template:** If the user selects the REST template, it means the user wants to create a RESTful API based on the EDMX file. RESTful APIs are commonly used for web services. - **SOAP Template:** If the user selects the SOAP template, you're opting for a SOAP-based API. SOAP (Simple Object Access Protocol) is a protocol used for exchanging structured information in the implementation of web services 4. **Generate the API:** After selecting one of the templates (either REST or SOAP), the system will generate                the API on the screen. This generated API is likely a basic structure that users can customize to meet their                      specific requirements. **      5. Choose and upload the Message Type:** Once the API is generated, the user has the opportunity to choose        and save the message type for a specific API.  This step allows the user to configure the API to work with the                  specific data formats you need. [su_box title="Expectation" box_color="#2a8af0" title_color="#000000"]After selecting the ‘**EDMX’** file type and entering the value in the open editor box, you can choose between two templates: Rest template and Soap template. If you select one of them, the API will be generated on the screen, allowing us to choose and store the message type for a specific API.[/su_box] - **Rest Template** - **EntitySet** **Select Function 'EntitySet'**: After selecting the template, the user will need to specify the function the user wants to use. Choose the "EntitySet" function, which relates to a collection of entities in the **SKYVVA** data model. - **Choose File Type as EDMX**: Begin by selecting the file type as "EDMX" (Entity Data Model XML) in the **SKYVVA** application. This involves opening a dialog or interface for selecting file types. - **Click the Next Button**: After selecting the EDMX file type, click the "Next" button. This action should take us to the next step of the process. - **Manually Enter Values in the Box**: In the subsequent screen or dialog, you will need to manually enter values into one or more inputs. These values could be related to the **SKYVVA** data model, configuration settings, and parameters. The specific details of what users need to enter will depend on the **SKYVVA** Application and the context of user business requirements. - **Click the 'Upload' Button**: After entering the required values, locate and click the "Upload" button. This action will likely initiate the processing or validation of the information the user provided. - **Select Template 'Rest Template'**: In the next step, the user will be prompted to select a template. Choose the "Rest Template" from the available options. This template defines the structure and behavior of the API users are generating. - **Click the API Name and 'Save' Button**: The user will now need to provide a name for the user API. After entering the API name, click the "Save" button. This action will trigger the generation of the message type or the creation of the API based on user selections and configurations. ***Required step:*** - Create metadata provider and repository. - Go to the repository then click the Open Editor button. ![](../images/2023/09/j-8.png) - Choose file type as edmx and click the next button, then manually enter the values in the box. - Click the ‘Upload’ button. - Select template ‘**Rest Template**’, Select function ‘**EntitySet’** - click the API Name and ‘save’ button it will generate a message type. ![](../images/2023/09/j-9.png) This is a process where a pop-up screen displays API information, including the API name, and then generates a REST template, including the Request and Response. Here's a general outline of how users configure this: - **Pop-up Screen**: After performing a certain action, a pop-up screen appears. This pop-up screen likely contains information related to an API. - **API Name**: The pop-up screen displays the name of the API. This could be the title or identifier of the API being used. - **REST Template Generation**: The process also involves generating a REST template. A REST template is typically used to structure and document RESTful API requests and responses. This template will help users understand how to interact with the API effectively. - **Request and Response**: Within the generated REST template, there will be sections or fields for the Request and Response. These sections will provide details on how to structure requests to the API (e.g., HTTP methods, headers, parameters, and body) and what to expect in the API's response (e.g.headers, and response data). Overall, this process is a user interface element (the pop-up screen) that helps users access information about an API, and it streamlines the process of generating a REST template to work with that API, including guidance on how to structure requests and handle responses. ![](../images/2023/09/j-10.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name. It will generate the REST template, including the Request and Response.[/su_box] - **Rest Template** - **FunctionImport** **Select template 'Rest Template', Select function 'FunctionImport'**: It appears the user choosing a specific template (in this case, "Rest Template") and a function (likely for defining a RESTful API endpoint or operation) as part of the configuration process. Based on the instructions the user provided, it appears to be related to configuring and setting up API or service using an EDMX file, likely in an environment. Here's a general breakdown of the steps you've mentioned: - **Choose file type as edmx and click the next button:** This suggests that you are selecting a specific file type (EDMX, which is commonly used for Entity Data Model XML files) in some kind of software or tool. After selecting the file type, you're clicking a "Next" button, which likely takes you to the next step in the configuration process. - **Manually enter the values in the box:** The user is expected to input certain values into some input fields. These values are related to configuring the EDMX file or setting up the API or service. - **Click the 'Upload' button:** Once the user entered the required values, you click an "Upload" button to submit the data or configuration. - **Click the API Name and 'save' button:** The user seems to be naming the API or specifying some kind of identifier for it. After providing the API name, the user clicks a "Save" button to finalize the configuration. - **It will generate the message type:** After completing the above steps, the **SKYVVA** application will automatically generate a message type, presumably related to the API or service user configuring. ***Required step:*** - Choose file type as edmx and click the next button, then manually enter the values in the box. - Click the ‘Upload’ button. - Select template ‘**Rest Template**’, Select function ‘**FunctionImport’** - Click the API Name and ‘save’ button it will generate the message type. ![](../images/2023/09/j-11.png) It describes a result or outcome related to displaying a pop-up screen with API information and generating a REST template with Request and Response components. Here's a more detailed description of the result: **Result Description**: When the user performs the specified action, the following result: - Pop-up Screen Display: A pop-up screen will be shown on the message types. This pop-up screen will contain the relevant API name, providing a clear and informative display for users. - REST Template Generation: REST template will be automatically generated as part of this process. The REST template will include both Request and Response components, simplifying the process of interacting with the API. Here's what the user can expect in the generated REST template: Request Component: - The Request component of the REST template will include: HTTP method (e.g., GET, POST, PUT, DELETE) required to interact with the API. - Endpoint URL or URI, specifies the location of the API. - Headers and authentication information, if applicable. - Request body, including parameters, payload, or data required for the API call. Response Component: - The Response component of the REST template will include: Expected HTTP status codes (e.g., 200 OK, 404 Not Found) and their meanings. - Sample response data or schema, indicating the structure of the data returned by the API. - Error handling information specifies how errors or exceptions will be handled in the response. This result ensures that users have access to essential information about the API and a preconfigured REST template to facilitate API interactions, streamlining the integration process. ![](../images/2023/09/j-12.png) [su_box title="Result" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name. It will generate the REST template, including the Request and Response.[/su_box] - **Soap Template** - **Function: EntitySet** It describes a series of steps to perform a specific task related to working with an EntitySet Data Model (EDMX), SOAP templates, and function imports in a **SKYVVA** application. These steps are typically part of the configuration process in an **SKYVVA** application. Here's a breakdown of the steps you mentioned: - **Select function 'FunctionImport**': Users select a function import, which is a way to expose a function or method from your data model as a callable operation **SKYVVA** application. - **Choose file type as edmx:** This step involves selecting the file type as EDMX (Entity Data Model XML) when users are working with data models in an **SKYVVA** application. - **Click the next button:** This suggests that the user should proceed to the next step or screen in our **SKYVVA** application. - **Manually enter the values in the box**: This refers to filling in specific information or configuration settings in a dialog box or form within the **SKYVVA** application. The exact values to enter would depend on user-specific business requirements. - **Select template 'Soap Template'**: This step involves choosing a SOAP (Simple Object Access Protocol) template as the basis for your development work. SOAP is often used for web services. - **Click the API Name and 'save' button:** It appears that the user is providing a name for your API and saving the configuration. This could be the name of the function import or some other API-related component. - **It will generate the message type:** After completing these steps, the **SKYVVA** application should generate a message type function import user configured. This message type can be used to send and receive data when working with SOAP web services. ***Required step:*** - Choose file type as edmx and click the next button, then manually enter the values in the box. - Click the ‘Upload’ button. - Select template ‘**Soap Template**’, Select function ‘**EntitySet’** - Click the API Name and ‘save’ button it will generate the message type. ![](../images/2023/09/j-13.png) It describes a **SKYYVA** application feature or functionality related to working with APIs and SOAP (Simple Object Access Protocol). To provide more specific guidance or assistance, Here's a general breakdown of the components you mentioned: - **Pop-up Screen**: This is likely a user interface element that displays information to the user. It could be a modal dialog or a pop-up window. - **API Name**: This is the name of the API you're working with. It's essential for identifying which API users want to use and generating a SOAP template. - **SOAP Template**: A SOAP template typically consists of the following parts: **Request**: This represents the structure and content of the data you send to the API as a request. It includes information like the method to call, input parameters, and data format. - **Response**: This outlines the expected structure and content of the data used received as a response from the API. - **Fault**: Describes the potential errors or exceptions that might occur during the API call and how they should be handled. ![](../images/2023/09/j-14.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name. It will generate the SOAP template, including the Request and Response and Fault.[/su_box] - **Soap Template** - **Function: FunctionImport** **Select Function 'FunctionImport'**: Choose an operation called '**FunctionImport**. This function is within the EDMX file or a function exposed by the SOAP service user working with it. - **Choose File Type as EDMX**: Select the EDMX file format within the **SKYVVA** application. Users may need to create a new EDMX file. - **Click the Next Button**: This suggests that there is a wizard or a series of steps you need to follow within the **SKYVVA** application. Clicking "Next" typically advances you to the next step in the process. - **Manually Enter Values in the Box**: The user will need to provide specific information, which includes data configuration settings. - **Select Template 'Soap Template'**: The user should have the option to choose a template for the user project service. Select the "Soap Template" which is relevant to your business requirement. - **Click the API Name**: Locate the field where the user can define the API name. - **Click the 'Save' Button**: Save your configuration. This might generate a message type and perform the actions in ipmort MetaData. - **Generate the Message Type**: After saving, the **SKYVVA** application automatically generates a message type. ***Required step:*** - Choose file type as edmx and click the next button, then manually enter the values in the box. - Select template ‘**Soap Template**’, Select function ‘**FunctionImport’** - Click the API Name and ‘save’ button it will generate the message type. ![](../images/2023/09/j-15.png) It describes the expected result of a process involving an API, particularly in the context of SOAP (Simple Object Access Protocol). To clarify, here's a breakdown of the described result: - **Pop-up Screen**: A pop-up screen will appear. This screen serves as a user interface element to provide information options related to the API operation. - **API Name**: The pop-up screen will display the name of the API. This is important for users to identify which API they are working with, as there may be multiple APIs in a system. - **SOAP Template**: The result will include the generation of a SOAP template. SOAP is a protocol for exchanging structured information in the implementation of web services. The SOAP template will contain the following components: **Request**: This part of the template specifies how to structure the data and format the request that the client sends to the server. It defines the input parameters and data expected by the API. - **Response**: The response part of the SOAP template outlines the expected structure of the data that the server will send back to the client after processing the request. It includes details about the response format and content. - **Fault**: The fault describes how error or exception handling is structured in the SOAP message. It specifies how errors will be reported back to the client if something goes wrong during the API call. In summary, the described result involves a user-friendly pop-up screen displaying the API name and providing a SOAP template that includes sections for request, response, and fault handling. This setup is typical in systems that use SOAP-based APIs for communication between different SKYVVA application components. ![](../images/2023/09/j-16.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name. It will generate the SOAP template, including the Request Response and Fault.[/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Metadata Provider Title: 11. How to Import file to create message type ? Slug: 11-how-to-import-file-to-create-message-type URL: https://help.skyvva.com/#article/11-how-to-import-file-to-create-message-type ================================================================================ # 11. How to Import file to create message type ? #### Introduction It is the process of the **SKYVVA** application managing message types and handling files in a repository. Where the user can  provide some general information on how message types and import/export of metadata work in our **SKYVVA** application: - **Message Types:** Message types are used in the context of data exchange between **SKYVVA **application components. In which users have to define the structure and format of the data that is sent or received. These can be simple data structures or complex data objects. - **Repository:** In the **SKYVVA** application, a repository is a centralized location where various assets like configurations or data are stored and managed. - **Import Metadata:** Importing metadata typically means bringing in information about data structures, schemas, or other artifacts into a repository. This metadata helps in understanding and working with the data. - **File Types:** When users import metadata, they often have to specify the format or type of the file they are importing. The options you mentioned (Swagger 2.0/OpenAPI 2.0, OpenAPI 3.0, XSD, WSDL 1.1, and EDMX) are common file formats or standards used in the **SKYVVA** application: **Swagger 2.0/OpenAPI 2.0:** These are specifications for defining RESTful APIs. They use JSON or XML format to describe API endpoints and their parameters. - **OpenAPI 3.0:** A newer version of the OpenAPI specification with improved features and support for a wider range of API scenarios. - **XSD (XML Schema Definition):** XSD is a language for defining the structure and data types of XML documents. It's commonly used for describing the structure of XML data. - **WSDL (Web Services Description Language) 1.1:** WSDL is an XML format for describing web services and their operations. It's used in the context of SOAP-based web services. - **EDMX:** Entity Data Model XML (EDMX) is used in the context of Entity Framework, a popular Object-Relational Mapping (ORM) framework for .NET applications. It defines the data model for an application. The user is using the **SKYVVA** application platform that allows the user to import message types from these various file formats into a repository, which can be a helpful feature when managing and working with different types of data and APIs in an **SKYVVA** application. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]The Import Metadata button appears on the screen. When we upload a file, this allows you to select the specific API in order to generate the message type.[/su_box] Pre-required step: 1. Create a metadata provider and repository. 2. Select on repository then click the import metadata button. 3. Select the file type and attach the upload file. 4. You will get the API name. 5. After choosing the API name and clicking the save button it will generate a message type. ![](../images/2023/09/j-18.png) **How to use the ‘Import Metadata’ button to create a message type.** **Case 1:** **Swagger 2.0/OpenAPI 2.0 file types.** It is a process related to generating an API using Swagger 2.0/OpenAPI 2.0 files and storing message types. As per expectation after selecting the Swagger 2.0/OpenAPI 2.0 file type and attaching the file, an API is generated on the screen, and the user should have the option to choose an API to store message types. These steps are broken down into a series of steps: - **File Selection:** The user anticipates that there will be an option to select the file type as 'Swagger 2.0/OpenAPI 2.0.' - **File Attachment:** After specifying the file type, the user can expect to be able to attach the Swagger 2.0/OpenAPI 2.0 file to the system. - **API Generation:** Once the file is attached, the user expects the system to automatically generate an API based on the contents of the Swagger 2.0/OpenAPI 2.0 file. This file-generated API will be displayed on the screen. - **Message Type Storage:** After the API is generated, the user foresees being able to choose an API to store different message types. This implies that the system configurations define how message types are stored within the API. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]After selecting the **‘Swagger 2.0/OpenAPI 2.0’ **file type and attaching the file, the API will be generated on the screen, allowing us to choose an API to store the message type.[/su_box] ***Required step:*** - Create metadata provider and repository. - Go to the repository then click the Import Metadata button. ![](../images/2023/09/j-19.png) - Choose the file type as Swagger 2.0/OpenAPI 2.0 click the next button, then Attach the upload file. - Choose the API Name. - Click the Save button it will generate a message type. ![](../images/2023/09/j-20.png) This is a process where a pop-up screen displays API information, including the API name and ReferenceObject, and then generates a REST template, including the Request and Response. Here’s a general outline of how users configure this: - **User Interaction**: Create a user interface that allows users to input the API name and ReferenceObject. This interface of the **SKYVVA** application. - **Pop-Up Display**: When the user inputs the API name and ReferenceObject, trigger a pop-up or modal dialog that displays this information. - **Generate REST Template**: **Request**: Based on the API name and ReferenceObject, dynamically generate the REST request template. This template should include the HTTP method (GET, POST, PUT, DELETE, etc.), the API endpoint, request headers, and request body. - **Response**: Similarly, generate the REST response template. This should include the expected HTTP status codes, response headers, and response body structure. - **Display Templates**: Display the generated request and response templates to the user within the format screen. Users can format these templates in a user-friendly way, such as JSON or XML, depending on the API and user preferences ![](../images/2023/09/j-21.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name and ReferenceObject. It will generate the REST template, including the Request and Response.[/su_box] **Case 2:** **OpenAPI 3. x file types.** This is the process using OpenAPI 3. x files to generate an API. OpenAPI is a specification for building APIs, and it's commonly used for describing RESTful APIs. To clarify the process describe the following: - **Select 'OpenAPI 3. x' File Type**: The user has a file in the OpenAPI 3. x format, which is typically an XML or JSON file. This file contains a description of your API, including endpoints, request, and response types. - **Attach the File**: The user needs to upload or attach this OpenAPI 3. x file to the **SKYVVA** application platform that can generate API code based on the specification. - **API Generation**: Once the file is uploaded, the **SKYVVA** application processes it and generates the API code. - **Select API Message Type**: After the API code is generated, the user will likely have the option to choose or configure the message type. This can include specifying JSON, XML, and data that the API sends and receives. - **Review and Store**: Finally, the user can review the generated API code and make any necessary customizations. Once the user is satisfied, the user can proceed to store or deploy the API according to the business requirements. [su_box title="Expectation: " box_color="#2a8af0" title_color="#000000"]After selecting the **‘OpenAPI 3. x’** file type and attaching the file, the API will be generated on the screen, allowing us to choose an API to store the message type.[/su_box] ***Required step:*** - Create a new repository. - Go to the repository then click the Import Metadata button. ![](../images/2023/09/j-22.png) - Choose file type as OpenAPI 3. x and click the next button, then Attach the upload file. - Choose the API Name. - Click the Save button it will generate a message type. ![](../images/2023/09/image_2023_09_26T03_32_31_431Z.png) This is a process where a pop-up screen displays API information, including the API name, and then generates a REST template, including the Request and Response. Here’s a general outline of how users configure this: - **Pop-up Screen**: After performing a certain action, a pop-up screen appears. This pop-up screen likely contains information related to an API. - **API Name**: The pop-up screen displays the name of the API. This could be the title or identifier of the API being used. - **REST Template Generation**: The process also involves generating a REST template. A REST template is typically used to structure and document RESTful API requests and responses. This template will help users understand how to interact with the API effectively. - **Request and Response**: Within the generated REST template, there will be sections or fields for the Request and Response. These sections will provide details on how to structure requests to the API (e.g., HTTP methods, headers, parameters, and body) and what to expect in the API’s response (e.g.headers, and response data). Overall, this process is a user interface element (the pop-up screen) that helps users access information about an API, and it streamlines the process of generating a REST template to work with that API, including guidance on how to structure requests and handle responses. ![](../images/2023/09/j-24.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name and ReferenceObject. It will generate the REST template, including the Request and Response.[/su_box] **Case3:** **WSDL 1.1 file types** This process is related to working with a WSDL (Web Services Description Language) file in the context of generating an API. These steps are broken down into a few steps: - **File Type Selection**: The user selects the 'WSDL' file type. This suggests that users are dealing with a web service and want to generate an API from a WSDL file. WSDL files describe the structure of web services and their operations. - **File Attachment**: The user attaches the WSDL file to the **SKYVVA** application. This is the initial step in the process. - **API Generation**: After attaching the WSDL file, the user expects that an API will be generated on the screen. This API will likely represent the web service described in the WSDL file. It will contain information about the available operations, data types, and endpoints. - **API Configuration**: The user anticipates that, after the API is generated, the user will have the opportunity to choose an API to store the message type. This step might involve configuring the generated API to determine how it will handle incoming and outgoing messages and data types. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]After selecting the **‘WSDL’** file type and attaching the file, the API will be generated on the screen, allowing us to choose an API to store the message type.[/su_box] ***Required step:*** - Create a new repository. - Go to the repository then click the Import Metadata button. - Choose file type as **WSDL** and click the next button, then Attach the upload file. - Choose the API Name - Click the save button it will generate the message type ![](../images/2023/09/j-25.png) It is a process to import a message-type file in the context of Web Services Description Language (WSDL) 1.1. WSDL is an XML-based language used to describe the functionalities offered by a web service. Let us try to clarify some concepts for the user: - **WSDL 1.1**: This is a version of the Web Services Description Language, used for defining the structure and functionality of web services. It defines how web services communicate with each other over the internet. - **Message Type**: In the context of WSDL, a message is a definition of the data being exchanged between a client and a web service. It specifies the structure and types of the input and output parameters for the operations provided by the web service. - **complexType**: In WSDL, complexType is often used to define complex data structures. It's a way to create structured types that can be used as elements in messages. - **API Name**: API name typically refers to the name given to a specific function or operation within the web service API. It appears the user wants to import a WSDL 1.1 file, and when the user does so, you expect it to generate a **complexType** for storing references to objects and message types along with API names. However, it's essential to clarify a few things: - Importing a WSDL file into the **SKYVVA** application (e.g., using a tool like Apache or other SOAP libraries) will typically generate code or metadata structures that correspond to the service operations and data types defined in the WSDL. - Whether or not a **complexType** is generated and how it's named will depend on the specifics of our **SKYVVA** application. - The generation of API names is usually not part of the WSDL import process, as API names are more related to how you choose to expose or use the web service within our **SKYVVA** application. [su_box title="Result" box_color="#2a8af0" title_color="#000000"] When we import the message type file WSLD 1.1, it will generate a message type name complexType to store the reference object and message type API name. It will create the message type and structure as below:[/su_box] - Here’s the message type generated already. ![](../images/2023/09/j-26.png) [su_box title="Result" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name and Complex Type. It generates the SOAP template, including the Request, Response, and fault.[/su_box] **Case 4:** **EDMX file types.** This process is related to working with an 'EDMX' file type to generate APIs with two template options: Rest template and Soap template. Here's a step-by-step breakdown of how this process might work: `` `` `` - **File Selection:** The user starts by selecting an 'EDMX' file, which is typically an Entity Data Model XML file used for modeling data in the context of the Entity Framework. - **Attach the File:** After selecting the 'EDMX' file, the user attaches it to the **SKYVVA** application you're using for API generation. This step may involve uploading the file to a specific field. - **Template Selection:** Once the 'EDMX' file is attached, users are presented with two template options: Rest template and Soap template. These templates are pre-defined configuration templates for generating APIs based on the data model described in the 'EDMX' file. - **API Generation:** After selecting one of the templates (either Rest or Soap), the **SKYVVA** application generates an API. This generated API includes endpoints and data structure components for interacting with the data carried in the 'EDMX' file. - **Message Type Selection:** As part of the API generation process, the user is given the opportunity to choose and store the message type for the specific API the user is creating. This step involves defining how the API will send and receive data, including the format and structure of messages. - **API Customization (Optional):** Depending on the complexity and flexibility of the system, the user might have the option to further customize the generated API. This involves defining additional endpoints and specifying authentication methods. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]After selecting the** ‘EDMX' **file type and attaching the file, you can choose between two templates: Rest template and Soap template. If you select one of them, the API will be generated on the screen, allowing us to choose and store the message type for a specific API.[/su_box] **Rest Template** - **EntitySet** **Select Function ‘EntitySet’**: After selecting the template, the user will need to specify the function the user wants to use. Choose the “EntitySet” function, which relates to a collection of entities in the **SKYVVA** data model. - **Choose File Type as EDMX**: Begin by selecting the file type as “EDMX” (Entity Data Model XML) in the **SKYVVA** application. This involves opening a dialog or interface for selecting file types. - **Click the Next Button**: After selecting the EDMX file type, click the “Next” button. This action should take us to the next step of the process. - **Manually Enter Values in the Box**: In the subsequent screen or dialog, you will need to manually enter values into one or more inputs. These values could be related to the **SKYVVA** data model, configuration settings, and parameters. The specific details of what users need to enter will depend on the **SKYVVA** Application and the context of user business requirements. - **Click the ‘Upload’ Button**: After entering the required values, locate and click the “Upload” button. This action will likely initiate the processing or validation of the information the user provided. - **Select Template ‘Rest Template’**: In the next step, the user will be prompted to select a template. Choose the “Rest Template” from the available options. This template defines the structure and behavior of the API users are generating. - **Click the API Name and ‘Save’ Button**: The user will now need to provide a name for the user API. After entering the API name, click the “Save” button. This action will trigger the generation of the message type or the creation of the API based on user selections and configurations ***Required step:*** - Create metadata provider and repository. - Go to the repository then click the Import Metadata button. `` ![](../images/2023/09/j-27.png) `` - Choose file type as EDMX and click the next button, then Attach the upload file. - Select template ‘Rest Template’, Select Function ‘EntitySet’ - Choose the API Name. - Click the Save button it will generate message type. `` ![](../images/2023/09/j-28.png) This is a process where a pop-up screen displays API information, including the API name, and then generates a REST template, including the Request and Response. Here’s a general outline of how users configure this: - **Pop-up Screen**: After performing a certain action, a pop-up screen appears. This pop-up screen likely contains information related to an API. - **API Name**: The pop-up screen displays the name of the API. This could be the title or identifier of the API being used. - **REST Template Generation**: The process also involves generating a REST template. A REST template is typically used to structure and document RESTful API requests and responses. This template will help users understand how to interact with the API effectively. - **Request and Response**: Within the generated REST template, there will be sections or fields for the Request and Response. These sections will provide details on how to structure requests to the API (e.g., HTTP methods, headers, parameters, and body) and what to expect in the API’s response (e.g.headers, and response data). Overall, this process is a user interface element (the pop-up screen) that helps users access information about an API, and it streamlines the process of generating a REST template to work with that API, including guidance on how to structure requests and handle responses. `` ![](../images/2023/09/j-29.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name. It will generate the REST template, including the Request and Response.[/su_box] **Rest Template** `` - **FunctionImport** **Select template ‘Rest Template’, Select function ‘FunctionImport’**: It appears the user choosing a specific template (in this case, “Rest Template”) and a function (likely for defining a RESTful API endpoint or operation) as part of the configuration process. Based on the instructions the user provided, it appears to be related to configuring and setting up API or service using an EDMX file, likely in an environment. Here’s a general breakdown of the steps you’ve mentioned: - **Choose file type as edmx and click the next button:** This suggests that you are selecting a specific file type (EDMX, which is commonly used for Entity Data Model XML files) in some kind of software or tool. After selecting the file type, you’re clicking a “Next” button, which likely takes you to the next step in the configuration process. - **Manually enter the values in the box:** The user is expected to input certain values into some input fields. These values are related to configuring the EDMX file or setting up the API or service. - **Click the ‘Upload’ button:** Once the user entered the required values, you click an “Upload” button to submit the data or configuration. - **Click the API Name and ‘save’ button:** The user seems to be naming the API or specifying some kind of identifier for it. After providing the API name, the user clicks a “Save” button to finalize the configuration. - **It will generate the message type:** After completing the above steps, the **SKYVVA** application will automatically generate a message type, presumably related to the API or service user configuring. ***Required step:*** - Choose file type as EDMX and click the next button, then Attach the upload file. - Select template ‘Rest Template’, Select Function ‘FunctionImport’ - Choose the API Name. - Click the Save button it will generate message type. `` ![](../images/2023/09/j-30.png) This is a process where a pop-up screen displays API information, including the API name, and then generates a REST template, including the Request and Response. Here’s a general outline of how users configure this: - **Pop-up Screen**: After performing a certain action, a pop-up screen appears. This pop-up screen likely contains information related to an API. - **API Name**: The pop-up screen displays the name of the API. This could be the title or identifier of the API being used. - **REST Template Generation**: The process also involves generating a REST template. A REST template is typically used to structure and document RESTful API requests and responses. This template will help users understand how to interact with the API effectively. - **Request and Response**: Within the generated REST template, there will be sections or fields for the Request and Response. These sections will provide details on how to structure requests to the API (e.g., HTTP methods, headers, parameters, and body) and what to expect in the API’s response (e.g.headers, and response data). Overall, this process is a user interface element (the pop-up screen) that helps users access information about an API, and it streamlines the process of generating a REST template to work with that API, including guidance on how to structure requests and handle responses. `` ![](../images/2023/09/j-31.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name. It will generate the REST template, including the Request and Response.[/su_box] `` **Soap Template** - **Function: EntitySet** It describes a series of steps to perform a specific task related to working with an EntitySet Data Model (EDMX), SOAP templates, and function imports in a **SKYVVA** application. These steps are typically part of the configuration process in an **SKYVVA** application. Here’s a breakdown of the steps you mentioned: - **Select function ‘FunctionImport**‘: Users select a function import, which is a way to expose a function or method from your data model as a callable operation **SKYVVA** application. - **Choose file type as edmx:** This step involves selecting the file type as EDMX (Entity Data Model XML) when users are working with data models in an **SKYVVA** application. - **Click the next button:** This suggests that the user should proceed to the next step or screen in our **SKYVVA** application. - **Manually enter the values in the box**: This refers to filling in specific information or configuration settings in a dialog box or form within the **SKYVVA** application. The exact values to enter would depend on user-specific business requirements. - **Select template ‘Soap Template’**: This step involves choosing a SOAP (Simple Object Access Protocol) template as the basis for your development work. SOAP is often used for web services. - **Click the API Name and ‘save’ button:** It appears that the user is providing a name for your API and saving the configuration. This could be the name of the function import or some other API-related component. - **It will generate the message type:** After completing these steps, the **SKYVVA** application should generate a message type function import user configured. This message type can be used to send and receive data when working with SOAP web services. `` ***Required step:*** - Choose file type as EDMX and click the next button, then Attach the upload file. - Select template ‘Soap Template’, Select Function ‘EntitySet’ - Choose the API Name. - Click the Save button it will generate message type. `` ![](../images/2023/09/j-32.png) It describes a **SKYYVA** application feature or functionality related to working with APIs and SOAP (Simple Object Access Protocol). To provide more specific guidance or assistance, Here’s a general breakdown of the components you mentioned: - **Pop-up Screen**: This is likely a user interface element that displays information to the user. It could be a modal dialog or a pop-up window. - **API Name**: This is the name of the API you’re working with. It’s essential for identifying which API users want to use and generating a SOAP template. - **SOAP Template**: A SOAP template typically consists of the following parts: **Request**: This represents the structure and content of the data you send to the API as a request. It includes information like the method to call, input parameters, and data format. - **Response**: This outlines the expected structure and content of the data used received as a response from the API. - **Fault**: Describes the potential errors or exceptions that might occur during the API call and how they should be handled. `` ![](../images/2023/09/j-33.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name. It will generate the SOAP template, including the Request Response and Fault. [/su_box] `` **Soap Template** - **FunctionImport** **Select Function ‘FunctionImport’**: Choose an operation called ‘**FunctionImport**. This function is within the EDMX file or a function exposed by the SOAP service user working with it. - **Choose File Type as EDMX**: Select the EDMX file format within the **SKYVVA** application. Users may need to create a new EDMX file. - **Click the Next Button**: This suggests that there is a wizard or a series of steps you need to follow within the **SKYVVA** application. Clicking “Next” typically advances you to the next step in the process. - **Manually Enter Values in the Box**: The user will need to provide specific information, which includes data configuration settings. - **Select Template ‘Soap Template’**: The user should have the option to choose a template for the user project service. Select the “Soap Template” which is relevant to your business requirement. - **Click the API Name**: Locate the field where the user can define the API name. - **Click the ‘Save’ Button**: Save your configuration. This might generate a message type and perform the actions in ipmort MetaData. - **Generate the Message Type**: After saving, the **SKYVVA** application automatically generates a message type. ***Required step:*** - Choose file type as EDMX and click the next button, then Attach the upload file. - Select template ‘Soap Template’, and Select Function ‘Function’. - Choose the API Name. - Click the Save button it will generate message type. `` ![](../images/2023/09/j-34.png) It describes the expected result of a process involving an API, particularly in the context of SOAP (Simple Object Access Protocol). To clarify, here’s a breakdown of the described result: - **Pop-up Screen**: A pop-up screen will appear. This screen serves as a user interface element to provide information options related to the API operation. - **API Name**: The pop-up screen will display the name of the API. This is important for users to identify which API they are working with, as there may be multiple APIs in a system. - **SOAP Template**: The result will include the generation of a SOAP template. SOAP is a protocol for exchanging structured information in the implementation of web services. The SOAP template will contain the following components: **Request**: This part of the template specifies how to structure the data and format the request that the client sends to the server. It defines the input parameters and data expected by the API. - **Response**: The response part of the SOAP template outlines the expected structure of the data that the server will send back to the client after processing the request. It includes details about the response format and content. - **Fault**: The fault describes how error or exception handling is structured in the SOAP message. It specifies how errors will be reported back to the client if something goes wrong during the API call. In summary, the described result involves a user-friendly pop-up screen displaying the API name and providing a SOAP template that includes sections for request, response, and fault handling. This setup is typical in systems that use SOAP-based APIs for communication between different SKYVVA application components. `` ![](../images/2023/09/j-35.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will show the pop-up screen below, displaying the API name. It will generate the SOAP template, including the Request Response and Fault.[/su_box] `` **Case5:**** XSD file type** - **Create the Message Type:** Define the data structure for the message type. This is a configuration or an interface. - Specify the properties or attributes that the message type should have. For example, if it's a message for properties like sender, receiver, and message content. - **Create the IStructure:** Define the IStructure interface, which typically represents data structure. - Specify the methods or operations that the IStructure should support. These methods could include adding data, retrieving data, updating data, and deleting data, depending on the business requirement of the IStructure. ***Required step:*** - Create metadata provider and repository - Go to the repository then click the Import Metadata Button - Select File Type as XSD and Attach the uploaded file - Click the Save button it will generate a message type `` ![](../images/2023/09/j-36.png) - Here’s the message type generated already.![](../images/2023/09/j-37.png) `` `` [su_box title="Result:" box_color="#2a8af0" title_color="#000000"] It will create the message type and IStructure as below: [/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Mapping Title: 16. New Button Test Mapping Slug: 16-new-button-test-mapping URL: https://help.skyvva.com/#article/16-new-button-test-mapping ================================================================================ # 16. New Button Test Mapping #### Introduction - **Inbound Mapping:** The source panel will show the text area where the user can modify the template we provide as SoapUI does. We support CSV, XML, and Json formats. The user can enter the data into the template and execute the mapping test. The mapping result is shown in a table tree view on the left panel. We don't need to show the mapping result in a text area as CSV, XML, or Json. The mapping result shows the result in a table view, and there is no need to make any changes. The mapping result contains the final data with the sObject field names ready to be posted. But we are not doing the real posting. We show only the mapping result for debugging purposes and analysis. - **Outbound Mapping: **The source side shows the sObject and the mapping result in a table tree view is displayed on the target side. We provide the query editor to let the user choose a sObject record where we read the data and provide for the mapping test. Then the user doesn't need to enter the complete data. He can modify the data we have read from the record if needed. #### Inbound Mapping It is the feature of the inbound mapping functionality of a **SKYVVA** application, an integration tool. Here's a breakdown of what we have mentioned: - **Source Panel**: This is where users can input or modify a template. The template appears to be provided in a format compatible with CSV, XML, or JSON. - **Supported Formats**: Users can work with data templates in three formats: CSV, XML, and JSON. This flexibility allows users to manipulate data in the format they prefer or that suits their business requirement integration needs. - **Data Entry**: Users can enter data into the provided template. This suggests that the **SKYVVA** application allows users to customize the template according to their business requirements. - **Mapping**: After entering data into the template, users can execute a mapping process. This mapping transformations to the data as per the mapping configuration. - **Mapping Result Display**: The mapping results are displayed in a table tree view on the left panel. This view provides a structured and organized representation of the mapped data. - **Result Format**: The mapping results are not displayed as CSV, XML, or JSON, which means that the output is presented in a structured, tabular format. This format is more user-friendly and suitable for analysis. - **Subject Field Names**: The mapping result includes sObject field names. These field names likely correspond to the data elements in the template or have been generated as part of the mapping process. - **Debugging and Analysis**: The mapping results are primarily intended for debugging purposes and analysis. This suggests that users can review and assess the mapped data to identify any issues or discrepancies in the mapping process. - **No Real Posting**: The **SKYVVA** application performs data transmission. It focuses solely on the mapping aspect, preparing data in the desired format for further integration. [su_box title="**Inbound Mapping**" box_color="#C0C0C0" title_color="#000000"]Inbound Mapping feature within a tool designed to facilitate the mapping and transformation of data from one format to another, with a focus on ease of use, flexibility, and providing clear, structured results for users friendly to experience.[/su_box] **Case1: Test Mapping with Inbound Interface** A "**Mapping Button"** for an inbound interface is a feature used in integration tools to facilitate testing and debugging of data mappings. It allows users to execute or test the payload by applying a specific mapping to convert data from one format to another. This is particularly useful when dealing with different data formats like CSV, XML, and JSON. Here's how it typically works: - **Select Source Data**: The user starts by selecting the source data that needs to be transformed. This could be a file or a message type. - **Choose Mapping**: The user then selects to specify the mapping rules that define how the source data should be converted into the desired format (e.g., CSV to XML, XML to JSON, etc.). This mapping can be predefined or customized based on user integration business requirements. - **Execute/Test**: After configuring the source data and mapping rules, the user uses the "**Mapping Button**" to test the mapping process. The SKYVVA application tool applies the mapping rules to the source data, transforming it into the target data. - **View Mapping Results**: Once the mapping is complete, the user can view the results to ensure that the data transformation was successful. This would involve viewing the transformed data in the desired format (e.g., CSV, XML, JSON) or checking for errors and discrepancies by pop-up dialogue screen. This capability is crucial in integration business scenarios where data from different sources and in different formats need to be harmonized or translated to be compatible with the target data of our **SKYVVA** application. It allows users to quickly verify that the mappings are working correctly and to troubleshoot any issues that may arise during the data Mapping. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]The **Test Mapping** Button for Inbound Interface is used to **Execute**/**Test** the payload in different formats, such as **CSV**, **XML**, and **JSON**, in order to check/view the mapping results.[/su_box] **Required step:** - Create an **Integration** - Create an **Inbound Interface -> **Set** Interface API Version: V3** ![](../images/2023/09/j-38.png) - Do **Mapping** ![](../images/2023/09/j-39.png) - Go to **Interface** -> click on Button **Test Mapping** ![](../images/2023/09/j-40.png) - After click on the **Test Mapping** -> we can see the pop-up screen **Test Mapping** as below: ![](../images/2023/09/j-41.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - The left box is used to input the payload in different formats such as CSV, XML, and JSON. It also allows you to select an existing message to execute/test the mapping and view the mapping results. - The right box is used to check the mapping results after the payload has been executed from the left box. - If you use Interface **V3**, the left column shows 4 tabs (CSV, XML, JSON, Message) - If you use Interface **V2**, the left column shows 2 tabs (CSV, Message) [/su_box] "Inbound Interface" with five buttons, and one of those buttons is the "**Execute Button**." The purpose of the "Execute Button" is to trigger the execution of a payload in order to test the mapping of the result. Here's a breakdown of its functionality: - **Execute Button**: This button initiates the execution of a payload. It sends the payload to a specific destination or service and then waits for the results to be returned. This is useful for testing the configuration and ensuring that data is being processed correctly. - This is used to execute the payload to test the mapping of the results Before clicking the Execute Button: ![](../images/2023/09/j-42.png) - After Executed, we got the result as below ![](../images/2023/09/j-43.png) The "**Refresh**" button is a common user interface element in the **SKYVVA** application that serves to update or reload content, which can include payloads and results, to ensure that users have access to the most current information or data available. The specific behavior and functionality of the "**Refresh**". **Refreshing a Payload**: In APIs (**SKYVVA** Application Interfaces) or web services, a "Refresh" button is used to resend a request with the same or updated parameters to retrieve a new payload or response from the server. - **Refresh Button: **is used to refresh the Payload and the Results Before clicking the button Refresh ![](../images/2023/09/j-44.png) - After clicking the Refresh button ![](../images/2023/09/j-45.png) The "**Import File Button**" is a feature or component in a **SKYVVA** application that allows users to bring external files into the system. It has the following functionalities: - **File Type Selection:** The user can choose the type of file they want to import. It supports file types such as CSV, XML, and JSON. This means that users can specify the format of the file they are importing. - **Mapping:** The import process involves mapping the data in the external file to the data structure or schema within the **SKYVVA** application. "Defined mapping," which recommends that the **SKYVVA** application might have predefined mappings for certain file types. **For example**: if the mapping is flat (i.e., a one-to-one mapping of fields), it would work for CSV files. More complex mappings might be needed for other file types like XML or JSON. - **File Import:** After selecting the file type and mapping (if necessary), the users can initiate the import process. The **SKYVVA** application reads the selected external file and extracts the relevant data according to the mapping rules. Click on the **Import File** button, and its alert pop-up screen Import File has **chosen a file Type** and **Upload Files** button ![](../images/2023/09/j-46.png) - After clicking on **Save**, it reads the payload from a file and writes it onto the screen then when clicks on the Execute ![](../images/2023/09/j-47.png) "**Save File**" is an option in the **SKYVVA** application, that allows users to save the content displayed on the screen into a file. This action involves taking the information or payload currently visible on the screen and writing it to a file on the storage system. Here's how it generally works: - **User Action**: The user, initiates the "**Save File**" action by selecting it from the **SKYVVA** application menu. - **Dialog Box**: After selecting "Save File," the **SKYVVA**  application usually opens a pop-up screen that allows the user to specify various options for saving the file. This may include choosing the file name, file format (e.g., CSV, JSON, XML), location on your computer, and another system. - **Saving the Payload**: Once the user has configured the settings in the dialog box, the user confirms. The **SKYVVA** application then takes the content currently displayed on the screen (the payload) and writes it to the specified file on the computer. - **File Saved**: After the file is successfully saved, the user can access it at the specified location on the computer for future reference. After clicking on** the Save File **button**, the **alert** ‘Save Payload’ **pop-up screen, you have to input **File Name** -> **Save** ![](../images/2023/09/j-48.png) - After **Saved**, it will alert message [SUCCESS: Save Test02 file successfully ![](../images/2023/09/j-49.png) **Retrieve File **is a feature related to handling payload files, in a **SKYVVA** application. Here's a breakdown : - **Payload File**: The file that contains data that needs to be processed within an **SKYVVA** application. - **Save and Read**: This is a process where the user first saves the payload data to a file and then later reads it from that file. This is an approach for working with data in the **SKYVVA** application. - **Write it onto the Screen**: After reading the payload from the file, the user intends to display it on a screen. - **Retrieve File**: This is a feature in your **SKYVVA** application that deals with handling the payload file. It has two actions: **Download**: This action allows users to download the payload file, which is useful if they want to keep a copy of it for reference. - **Delete**: This action allows users to delete the payload file, which is useful for managing storage space or for privacy/security reasons. After clicking on the** Retrieve File **button**, **we can see that the pop-up screen** Retrieve File **has stored the file type (CSV/XML/JSON) we have saved before ![](../images/2023/09/j-50.png) - After selecting the **File** -> **Save**, it will take that value file to show on the screen. ![](../images/2023/09/j-51.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]The Test Mapping Button is used to execute/test the payload in different formats, such as CSV, XML, and JSON, in order to check/view the mapping results.[/su_box] [su_box title="Note:" box_color="#2a8af0" title_color="#000000"] - **Interface API Version V2:** On the Test Mapping Button, the structure of the payload will be described based on the source sObject definition. For V2, only CSV is available because it is a flat format. - **Interface V2:** If you upload a structure from a file, it will retrieve the structure payload from the imported file in the source interface. - **Interface API Version V3:** The Interface without specifying a message type, On the Test Mapping Button, the structure of the payload will be described based on the source sObject definition. For V3, CSV, XML and JSON are available as they can handle hierarchical payloads. - **Interface V3:** If the interface is linked with a Message Type, On the Test Mapping Button fields will be retrieved via the Message Type link with the interface. [/su_box] #### Outbound Mapping It is a feature or functionality related to data mapping in the context of working with sObjects, which typically refers to Salesforce objects in the Salesforce platform. **SKYVVA** application provides a user-friendly way for users to map data from a source sObject to a target data structure, and the user considers the use of a query editor to facilitate this process. Here's a breakdown of your description: - **Outbound Mapping**: This feature works with data integration or data transformation, where users are taking data from a source (in this case, an sObject) and mapping it to a target data structure. - **Source sObject**: In Salesforce, a sObject is a generic term used to represent any standard or custom object. It seems the user using a sObject as the source of data for the mapping. - **Mapping Result in Table Tree View**: The user experience displays the mapping result in a table tree view on the target side. This table tree view would show how the data from the source sObject maps to the target structure, making it easier for users to understand the data flow. - **Query Editor**: The user provides a query editor to allow users to select a sObject record. This query editor would enable users to choose a specific record from the source sObject. - **Modify Data**: Users can modify the data retrieved from the source sObject if needed. This suggests that the mapping process is not entirely automated and allows for manual adjustments to the mapped data. [su_box title="Outbound Mapping " box_color="#C0C0C0" title_color="#000000"]feature is user-friendly and practical for business scenarios where users need to map data from one structure to another, especially when working with complex data integration tasks, such as when integrating with Salesforce.[/su_box] **Case2: Test Mapping with Outbound Interface** It is a feature within an **SKYVVA** application with outbound interfaces and testing mappings. This feature appears to be related to data transformation or integration testing. Here's a breakdown of what you've described: - **Outbound Interface**: This is a component of an **SKYVVA** application system that is responsible for sending data or messages from the system to external systems or services. Outbound interfaces are used in integration business scenarios to exchange information with other systems. - **Test Mapping**: This feature is used for testing purposes, specifically for mapping data from one format or structure to another. Mapping is often used in integration business scenarios to transform data from one schema to another so that it can be properly processed by the receiving system. - **Two Boxes**: Here are two boxes, a left box for querying data/messages and a right box for viewing test mapping results. This suggests that the Test Mapping feature has a user interface with two input areas: **Left Box (Query)**: This is where the user specifies the data or messages want to use for testing. You may enter queries or select data/messages from a source, such as a database, file, or previous system interactions. - **Right Box (Results)**: This is where the user can see the outcomes or results of the test mapping process. It displays how the data/messages will be transformed based on the mapping rules the user has defined. In essence, this feature allows you to set up test scenarios for your outbound interface by selecting or specifying data/messages in the left box and then observing how they will be transformed using the mapping rules in the right box. This can be helpful for ensuring that your integration processes are working correctly and that data is being properly transformed before it is sent to external systems. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]For the outbound interface, the **Test** **Mapping** feature allows you to query messages and records to obtain the payload for testing with mapping. There are two boxes: the left box is used for querying data/messages, and the right box is used to view the results of the test mapping.[/su_box] **Required step:** - Create an **Integration** - Create an **Adapter** e.g., Adapter **SOAP** ![](../images/2023/09/j-52.png) - Create an **Outbound Interface** -> link with **Message Type Template** and **Adapter** ![](../images/2023/09/j-53.png) - Do Mapping ![](../images/2023/09/j-54.png) - Go to **Interface** -> click on Button **Test Mapping** ![](../images/2023/09/j-55.png) - After click on the **Test Mapping** -> we can see the pop-up screen **Test Mapping** as below: ![](../images/2023/09/j-56.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - The left box is used to execute SOQL queries and query messages for the current interface. After executing, you will receive records and then you can select them to test your mapping result/payload. - The right box is used to check the mapping results/payload after the records have been executed from the left box. - The left box is used to execute SOQL queries and query messages for the current interface. After executing, you will receive records and then you can select them to test your mapping result/payload. - The right box is used to check the mapping results/payload after the records have been executed from the left box. [/su_box] The user interface with three buttons related to executing SOQL queries and querying data from a database. Let us explain the functions of each button based on the information provided: - **Execute Button:** This button is used to execute SOQL (Salesforce Object Query Language) queries and query messages. Its primary purpose is to test the results or payload mapping the queries. When the user clicks this button, it sends the SOQL query to the database and retrieves the corresponding data, which can then be used for testing or analysis. - **Open Query Editor:** This button is used to open a query editor interface. In this editor, the user can specify the specific objects and fields user wants to query from the database. It helps to build and customize the query statements before executing them using the Execute Button. The query statements created in the Query Editor can be sent for execution when the user is ready. - **Refresh Button:** The Refresh Button is used to refresh the Query Editor and possibly other components of the interface. It ensures that any changes or updates made to the query editor or the data are reflected in the interface. This can be helpful when the user working with dynamic data or making adjustments to your query. Before clicking the Refresh Button, the user may want to make sure that the user completed necessary changes or updates in the Query Editor or other parts of the interface, and the user has to ensure that the displayed data is up-to-date. Clicking the Refresh Button will refresh the interface to reflect the current state of the data and any changes the user has made. In summary, these three buttons are part of designed for querying and testing data using SOQL in a database, with the Execute Button for running queries, the Open Query Editor for customizing queries, and the Refresh Button for updating the interface's displayed data and status. - The section with **Outbound Interface** has 3 buttons: - **Execute** **Button**: is used to execute SOQL queries and query messages to test the results/payload mapping - **Open Query Editor** is used to query specific objects and fields from the **Database** to get query statements into the **Query** **Editor** on **Test** **Mapping** ![](../images/2023/09/j-57.png) - When click on **Open** **Query** **Editor,** it alerts pop-up screen for filer query statements then click **Save** **SOQL** ![](../images/2023/09/j-58.png) - After clicking **Save** **SOQL**, it gets query statements into the **Query** **Editor** on **Test** **Mapping** ![](../images/2023/09/j-59.png) - Before **Execute** test mapping result you need to **Execute SOQL** for the query records you want to test **Execute** ![](../images/2023/09/j-60.png) - After clicking **Execute SOQL** -> Select the **Records** -> then click **Execute** Button to test Mapping Result/Payload ![](../images/2023/09/j-61.png) ![](../images/2023/09/j-62.png) - **Refresh** **Button**: is used to refresh the **Query** **Editor** and the Before clicking the Refresh Button ![](../images/2023/09/j-63.png) - After clicking the Refresh Button ![](../images/2023/09/j-64.png) It is a feature or functionality in a **SKYVVA** application that involves testing the connection and configuration of an adapter. Here's a breakdown of the information you provided: - **Test Connection Button:** This button is used to initiate a connection test and check the configuration of an adapter. It is specifically designed to work with Interface V3. - **Functionality:** When the "**Test Connection**" button is clicked, it triggers a page reload that takes the user to the "**Adapter Test Connection**" page. - **Adapter Test Connection Page:** This page is divided into four sections:a. **Adapter Detail:** This section likely provides information about the adapter being tested, such as its name, type, and version.b. **Property:** This section allows users to view and possibly edit the properties of the adapter configuration.c. **Existing Test Case:** This section may display information about any previously saved test cases related to this adapter. It shows test case results.d. **Test Connection:** This is where the actual testing of the adapter's connection and configuration takes place. Users can initiate the test from here and check whether the adapter is functioning as expected. - **Saving Test Cases:** The users have the option to save the test cases they've performed on this page. Saving test cases can be helpful for reusing test business scenarios in the future for reference. This functionality is part of a SKYVVA application that allows users to test and manage the configuration of adapters, specifically those using Interface V3. The "**Adapter Test Connection**" page provides a comprehensive interface for performing these tasks and managing test case records. - **Test Connection**: is used to **Test** **Connection** and check **Configuration** **Adapter**. This button just supports only the Interface V3. When clicking on the **Test** **Connection,** it will reload the page to the **Adapter** **Test** **Connection ** ![](../images/2023/09/j-65.png) 2. On the **'Adapter Test Connection'** page, you can see four sections: **Adapter** **Detail**, **Property**, **Existing** **Test** **Case**, and **Test** **Connection**. It allows you to test and check the **Adapter** configuration and also provides the option to save the **Test Case** that you have checked previously. ![](../images/2023/09/j-66.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]The Test Mapping allows you to query messages and records to obtain the payload for testing with mapping. There are two boxes: the left box is used for querying data/messages, while the right box is used to view the results of the test mapping. It also provides the payload view, giving you an idea of what the payload looks like during the callout.[/su_box] [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - **Interface API Version V2/V3 (without a message type):** The Test Mapping feature does not support generating the **Payload**; it only displays the **Results** **Mapping**. - **Interface V2 for Outbound: **The **‘Test Connection’** button is not supported. Instead, we display two buttons: **'Execute'** and **'Refresh'**. - **Interface** **V3** **with a message type**: If you link an **Adapter** to the **Interface**, the **Payload** will be generated based on the **Adapter** [/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Scheduler Title: 10. Functional Category screen pop-up on multi-picklist Slug: 10-functional-category-screen-pop-up-on-multi-picklist URL: https://help.skyvva.com/#article/10-functional-category-screen-pop-up-on-multi-picklist ================================================================================ # 10. Functional Category screen pop-up on multi-picklist **Description: **We need to enhance the filter screen of the scheduler. Change Multi-Picklist on Functional Category that shows as a pop-up screen. - **Identify the Current Implementation:** The current implementation of the filter screen and the Multi-Picklist on the Functional Category. - Identify the technology stack and framework used in the scheduler in the **SKYVVA** Integration application. - **Modify the Multi-Picklist:** Locate the flow responsible for rendering the Multi-Picklist on the Functional Category. - Enhance the Multi-Picklist to suit business requirements better. This involves improving its appearance, adding new values, and modifying the behavior. - **Introduce Pop-up Screen:** Create a new pop-up screen that will display the Multi-Picklist. - This pop-up is triggered from the scheduler's generic page, on the filter section. - **Connect Pop-up to Multi-Picklist:** Ensure that the pop-up screen is connected to the Multi-Picklist, and any changes made in the pop-up are reflected in the Multi-Picklist on the scheduler page. **Case: Multi-Picklist  Functional Category is pop up on the generic page of the scheduler** **Required step:** - Go to global Scheduler, and we can see the section Filters at function “Functional Category” It has been changed screen pop-up on multi-picklist. ![](../images/2024/01/image_2024_01_31T07_22_15_045Z.png) - Select Information filters if you want to Apply Filter Scheduler ![](../images/2024/01/image_2024_01_31T07_23_03_446Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]The user has successfully achieved the goal of changing the multi-picklist on the Functional Category to pop up on the generic page of the scheduler in the **SKYVVA** integration application. This is the expected result, that's great news![/su_box] ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Different API for the Outbound message processing Title: 7. InvokeCallout V3 based on the interface setting ? Slug: 7-invokecallout-v3-based-on-the-interface-setting URL: https://help.skyvva.com/#article/7-invokecallout-v3-based-on-the-interface-setting ================================================================================ # 7. InvokeCallout V3 based on the interface setting ? #### Introduction Currently, the callout mode—such as ***SYNC, AUTO, FUTURE, QUEUEABLE, or BATCH***—is specified using the mode parameter in the **invokeCalloutV3()** method. However, confusion arises when the mode is defined as '***Synchronous***' on the interface, but the method call specifies '***FUTURE***'. Since '***FUTURE***' inherently denotes an asynchronous process, this creates a discrepancy between the interface definition and the actual runtime behavior. To clarify, the mode specified  **invokeCalloutV3() **takes precedence over the interface settings. While this is not a problem per se, it does lead to a mismatch that can confuse users. To address this, we propose making the mode parameter optional. By doing so, we can default to the settings defined on the interface itself. The settings for the outbound interface would then be as follows: - **Synchronous** -> SYNC - **Asynchronous** -> QUEUEABLE (Queueable is provides better tracking and management due to the availability of job IDs) - **Batch** -> BATCH - **Bulk** -> This setting remains exclusive to the inbound interface. - **Auto-Switch** -> This could correspond to the AUTO mode, allowing a switch between Future, Queueable, and Batch modes only. The Bulk mode does not apply to the outbound interface. If the user still specifies the mode parameter, it will function as it currently does. However, if the mode parameter is not set, the system will default to using the defined mode on the interface. This approach simplifies configuration and aligns runtime behavior with user expectations, leveraging the capabilities of the **SKYVVA** integration application for streamlined, effective integrations. #### Case: InvokeCalloutV3 based on the interface setting - ***Creating an Interface outbound for callout data without mode as a parameter based on the interface setting.*** To effectively manage the expectations for parameter usage in Skyvva's V3 integration application, specifically concerning the outbound interface settings, users are calculated making certain parameters optional. This change reflects a flexible approach that can accommodate diverse integration needs, allowing users to either specify a mode or proceed without specifying one, depending on the configuration of the interface. Here's an outline of how this can be configured: **Current Approach** You might be required to specify a mode when calling the **invokeCalloutV3() **method. This requires pre-defining how the callout should behave, which can be restrictive depending on the integration business scenario. The enhancement is to make the '**mode**' parameter optional. This allows the system to adapt based on settings predefined at the interface level, which can be more dynamic and tailored to specific use cases. Here's how the method signatures would look based on this new setup: - **No mode as a parameter** `IServices.invokeCalloutV3('integrationName', 'interfaceName',ids, new CallOutControl());` - **Mode as parameter** `IServices.invokeCalloutV3('integrationName', 'interfaceName',ids,null, new CallOutControl());` `IServices.invokeCalloutV3('integrationName', 'interfaceName',ids, '', new CallOutControl());` [su_box title="Note" box_color="#F81B1B" title_color="#000000"] - If the interface Use_Auto_Switch_Mode__c = true, mode = 'AUTO' - If the interface Batch_Mode__c = true, mode = 'BATCH' - If the interface Interface_Mode__c = 'Synchronous, mode = 'SYNC' - If the interface Interface_Mode__c = 'Asynchronous', mode = 'QUEUEABLE'[/su_box] **Required step:** - Create a new **Interface Outbound **as screenshot below - Click the **Save** button ![](../images/2024/04/image_2024_04_18T14_17_48_721Z.webp) - Go to **Interface** - Click **Open Mapping** - Mapping node and file - **Save** ![](../images/2024/04/image_2024_04_18T14_18_52_115Z.webp) - After mapping, it will get SOQL Query - Go to **interface** - Scroll down we can see **SOQL Query to select the sObject data** section ![](../images/2024/04/image_2024_04_18T14_23_09_633Z.webp)![](../images/2024/04/image_2024_04_18T14_36_26_928Z.webp) **1. Invoke Callout Data Use Auto-Switch Mode on the interface ** - Go to **interface** - Check **Use Auto-Switch Mode** - **Save** ![](../images/2024/04/image_2024_04_18T14_30_50_715Z.webp)![](../images/2024/04/image_2024_04_18T14_38_56_153Z.webp) - The user can copy this code to pass developer consoles to be executed. - It will send all records from the Account out [su_box title="Note" box_color="#F81B1B" title_color="#000000"] Make sure to replace on integration with your integration name and interface to your interface name.[/su_box] `String[] ids = newString[]{}; For(Accounta: [select id from account]) ids.add(a.Id); IServices.invokeCalloutV3('integrationName', 'interfaceName',ids, newCallOutControl());` ![](../images/2024/04/image_2024_04_18T14_46_57_788Z.webp)![](../images/2024/04/image_2024_04_18T14_23_09_633Z-2.webp) - After Executing **Apex Code**, it will check all records in the Account to the processing Job Type with **Future**, **Queueable**, and **Batch Apex.** - **Future process 50 records** ![](../images/2024/04/image_2024_04_18T14_48_57_300Z.webp)![](../images/2024/04/image_2024_04_18T14_23_09_633Z.webp) - **Queueable process 50 records ** ![](../images/2024/04/image_2024_04_18T14_50_46_753Z.webp) - **Other records will be processed with Batch Apex.** ![](../images/2024/04/image_2024_04_18T14_51_53_517Z.webp) [su_box title="**Result:**" box_color="#2a8af0" title_color="#000000"]After processing the apex job completed, it will send all records out with **Feature**, **Queueable**, and **Batch Apex** Mode. The Auto mode will switch based on the salesforce resource limit. First, it will check the Future work. If the Future reaches the limit, then it will take the Queueable. Then remaining, it will do on Batch apex mode.[/su_box] ![](../images/2024/04/image_2024_04_18T14_54_36_532Z.webp) **2. Invoke Callout Data uses Batch Mode on the interface ** - Go to** interface** - Scroll down we can see the **Batch Setting** - Check on **Batch Mode** - **Save** ![](../images/2024/04/image_2024_04_18T14_56_57_146Z.webp) - The user can copy this code to pass developer consoles to be executed. It will send all records from the Account out [su_box title="Note" box_color="#F81B1B" title_color="#000000"]Make sure to replace on integration with your integration name and interface to your interface name.[/su_box] `String[] ids = newString[]{}; For(Accounta: [select id from account]) ids.add(a.Id); IServices.invokeCalloutV3('integrationName', 'interfaceName',ids, newCallOutControl());` - After Executing **Apex Code**, it will check all records in the Account to the processing Job Type with **Batch Apex.** ![](../images/2024/04/01.webp) [su_box title="**Result:**" box_color="#2a8af0" title_color="#000000"]After processing the apex job completed, it will send all records out with **Batch Apex** Mode.[/su_box] ![](../images/2024/04/image_2024_04_18T15_06_20_566Z.webp) **3. Invoke Callout Data uses Asynchronous processing mode on the interface ** - Go to** interface** - Processing Mode: **Asynchronous** - **Save** ![](../images/2024/04/image_2024_04_18T15_07_57_731Z.webp) - The user can copy this code to pass developer consoles to be executed. It will send all records from the Account out [su_box title="Note" box_color="#F81B1B " title_color="#000000"]Make sure to replace on integration with your integration name and interface to your interface name.[/su_box] `String[] ids = newString[]{}; For(Accounta: [select id from account]) ids.add(a.Id); IServices.invokeCalloutV3('integrationName', 'interfaceName',ids, newCallOutControl());` - After Executing **Apex Code**, it will check all records in the Account to the processing Job Type with **Queueable.** ![](../images/2024/04/image_2024_04_18T15_14_56_068Z.webp) [su_box title="**Result:**" box_color="#2a8af0" title_color="#000000"]After processing the apex job completed, it will send all records out with Asynchronous (**Queueable**) Mode.[/su_box] ![](../images/2024/04/image_2024_04_18T15_24_22_944Z.webp) **4. Invoke Callout Data uses Synchronous processing mode on the interface ** - Go to** interface** - Processing Mode: **Synchronous** - **Save** ![](../images/2024/04/image_2024_04_18T15_27_56_860Z.webp) - The user can copy this code to pass developer consoles to be executed. It will send all records from the Account out [su_box title="Note" box_color="#F81B1B" title_color="#000000"]Make sure to replace on integration with your integration name and interface to your interface name.[/su_box] `String[] ids = newString[]{}; For(Accounta: [select id from account]) ids.add(a.Id); IServices.invokeCalloutV3('integrationName', 'interfaceName',ids, newCallOutControl());` [su_box title="**Result:**" box_color="#2a8af0" title_color="#000000"]After Executing Apex Code, it will check all records in the Account to send data out and create a root message API to store all Business records.[/su_box] ![](../images/2024/04/image_2024_04_18T15_44_43_247Z.webp) [su_box title="Note" box_color="#F81B1B" title_color="#000000"]If we use mode '**SYNC**' means we process real-time, so it doesn’t show processing in the **Apex Job**[/su_box] #### Summary Now user understands making the '**mode**' parameter optional in **SKYVVA** V3 allows dynamic, flexible callouts based on interface settings. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Title: Adapter Operational Status & Processing Behaviors Slug: adapter-operational-status-processing-behaviors URL: https://help.skyvva.com/#article/adapter-operational-status-processing-behaviors ================================================================================ # Adapter Operational Status & Processing Behaviors **Overview** This document explains how the system behaves when an Adapter is set to an inactive status. When an adapter becomes inactive, the system must stop processing integrations immediately. No outbound or inbound transaction should continue processing until the adapter is active again. The inactive adapter feature helps provide: * Better transaction control * Safe processing management * Traceability for stopped transactions * Reprocessing support after reactivation * Flexible inbound batch and bulk handling This functionality applies to both: * Outbound Processing * Inbound Processing --- # **1\. Adapter Status List** The adapter status configuration contains 3 processing behaviors. | Status | Description | | ----- | ----- | | **Active** | Process integrations normally | | **Inactive with Create Pending Message or Basket** | Stop processing but preserve the transaction | | **Inactive with Hard Stop Processing** | Stop processing completely with no transaction storage | --- # **1.1. Active Status** ## **1.1.1. Description** When the adapter status is set to: **Active** the integration works normally. The system continues processing requests without restriction. This applies to both outbound and inbound integrations. --- ## **1.1.2. Outbound Processing** For outbound processing, the system performs: * Message transformation * Adapter execution * External API callout * Response handling ### **Outbound Active Flow** ![image](../images/2026/05/paste-1779180544703.png) --- ## **1.1.3. Inbound Processing** For inbound processing, the system performs: * Request validation * Data mapping * Salesforce processing * Business logic execution ### **Inbound Active Flow** ![image](../images/2026/05/paste-1779180778072.png) --- # **1.2. Inactive with Create Pending Message or Basket** ## **1.2.1. Description** When the adapter status is set to: Inactive with Create Pending Message or Basket the system stops active processing but keeps the transaction for future reprocessing. The way the transaction is preserved depends on: * Adapter direction * Processing mode configuration The system may create: * Pending Message or * Basket depending on the processing scenario. --- # **1.2.2. Outbound Processing** ## **Description** Outbound processing supports only: * Pending Message creation Outbound processing does not support: * Basket creation * Batch Mode * Bulk Mode * Auto-Switch Mode Because outbound integrations do not support these processing modes, Basket creation is not available for outbound processing. --- ## **System Behavior** When the outbound adapter is inactive: * No external callout is executed * No outbound processing occurs * No data is sent to external systems Instead, the system creates a Pending Message for future reprocessing. ### **Pending Message Information** | Field | Value | | ----- | ----- | | Status | Pending | | Comment | Adapter is inactive | --- ### **Outbound Inactive Flow** ![image](../images/2026/05/paste-1779180968085.png) --- # **1.2.3. Inbound Processing** ## **Description** Inbound processing fully supports: * Batch Mode * Bulk Mode * Auto-Switch Mode Depending on the selected processing mode, the system creates either: * Basket or * Pending Message when the adapter is inactive. --- # **1.2.4. Inbound Processing Logic** ## **Scenario 1 — Batch/Bulk/Auto-Switch Enabled** If the user enables one of the following: * Batch Mode * Bulk Mode * Auto-Switch Mode the system creates: Basket This allows the inbound transaction to be grouped and processed later. --- ### **Inbound Basket Flow** ![image](../images/2026/05/paste-1779181213652.png) --- ## **Scenario 2 — All Modes Unticked** If all processing modes are disabled: * Batch Mode \= false * Bulk Mode \= false * Auto-Switch Mode \= false the system creates: Pending Message instead of Basket. --- ### **Inbound Pending Message Flow** ![image](../images/2026/05/paste-1779182693342.png) --- # **1.3. Inactive with Hard Stop Processing** ## **1.3.1. Description** When the adapter status is set to: Inactive with Hard Stop Processing the system completely ignores the transaction. No processing activity is performed. --- ## **1.3.2. System Behavior** The system performs: * No outbound processing * No inbound processing * No transformation * No mapping * No external callout * No Pending Message creation * No Basket creation * No transaction storage This mode is useful for: * Emergency stop processing * Temporary integration shutdown * Maintenance activities * Full transaction blocking --- ### **Hard Stop Flow** ![image](../images/2026/05/paste-1779182862056.png) --- # **2\. Reprocessing Behavior** Transactions preserved as: * Pending Message or * Basket can later be reprocessed after the adapter becomes active again. --- ## **2.1. Reprocessing Options** The system supports: * Manual reprocessing * Automatic reprocessing after adapter reactivation This helps ensure that temporarily stopped integrations can continue processing later without losing transaction information. --- # **3\. Important Notes** ## **3.1. Outbound Processing Notes** * Outbound processing supports Pending Message creation only * Outbound processing does not support Basket creation * Outbound processing does not support Batch Mode, Bulk Mode, or Auto-Switch Mode * All inactive outbound transactions create Pending Message only --- ## **3.2. Inbound Processing Notes** * Inbound processing fully supports Batch Mode, Bulk Mode, and Auto-Switch Mode * Basket creation is supported only for inbound batch and bulk processing * If all modes are unticked, the system creates Pending Message --- # **4\. Full processing flow** ![image](../images/2026/05/paste-1779183308596.png) # **5\. Summary** | Adapter Direction | Processing Mode | Result | | ----- | ----- | ----- | | Outbound | All Modes | Create Pending Message | | Inbound | Batch/Bulk/Auto-Switch Enabled | Create Basket | | Inbound | All Modes Unticked | Create Pending Message | | Any Direction | Hard Stop Processing | No Processing | ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Adapter Title: 20. Adapter Status Processing Behaviour Slug: 20-adapter-status-processing-behavior URL: https://help.skyvva.com/#article/20-adapter-status-processing-behavior ================================================================================ # 20. Adapter Status Processing Behaviour # **Overview** This document explains how the system behaves when an Adapter is set to an inactive status. When an adapter becomes inactive, the system must stop processing integrations immediately. No outbound or inbound transaction should continue processing until the adapter is active again. The inactive adapter feature helps provide: * Better transaction control * Safe processing management * Traceability for stopped transactions * Reprocessing support after reactivation * Flexible inbound batch and bulk handling This functionality applies to both: * **Outbound Processing** * **Inbound Processing** --- # **1\. Adapter Status List** The adapter status configuration contains 3 processing behaviors. | Status | Description | | ----- | ----- | | **Active** | Process integrations normally | | **Inactive with Create Pending Message or Basket** | Stop processing but preserve the transaction | | **Inactive with Hard Stop Processing** | Stop processing completely with no transaction storage | --- # **1.1. Active Status** ## **1.1.1. Description** When the adapter status is set to: Active the integration works normally. The system continues processing requests without restriction. This applies to both outbound and inbound integrations. --- ## **1.1.2. Outbound Processing** For outbound processing, the system performs: * Message transformation * Adapter execution * External API callout * Response handling ### **Outbound Active Flow** ![image](../images/2026/05/paste-1779187493361.png) --- ## **1.1.3. Inbound Processing** For inbound processing, the system performs: * Request validation * Data mapping * Salesforce processing * Business logic execution ### **Inbound Active Flow** ![image](../images/2026/05/paste-1779187604160.png) --- # **1.2. Inactive with Create Pending Message or Basket** ## **1.2.1. Description** When the adapter status is set to: Inactive with Create Pending Message or Basket the system stops active processing but keeps the transaction for future reprocessing. The way the transaction is preserved depends on: * Adapter direction * Processing mode configuration The system may create: * Pending Message or * Basket depending on the processing scenario. --- # **1.2.2. Outbound Processing** ## **Description** Outbound processing supports only: * Pending Message creation Outbound processing does not support: * Basket creation * Batch Mode * Bulk Mode * Auto-Switch Mode Because outbound integrations do not support these processing modes, Basket creation is not available for outbound processing. --- ## **System Behavior** When the outbound adapter is inactive: * No external callout is executed * No outbound processing occurs * No data is sent to external systems Instead, the system creates a Pending Message for future reprocessing. ### **Pending Message Information** | Field | Value | | ----- | ----- | | Status | Pending | | Comment | Adapter is inactive | --- ### **Outbound Inactive Flow** ![image](../images/2026/05/paste-1779188115056.png) --- # **1.2.3. Inbound Processing** ## **Description** Inbound processing fully supports: * Batch Mode * Bulk Mode * Auto-Switch Mode Depending on the selected processing mode, the system creates either: * Basket or * Pending Message when the adapter is inactive. --- # **1.2.4. Inbound Processing Logic** ## **Scenario 1 — Batch/Bulk/Auto-Switch Enabled** If the user enables one of the following: * Batch Mode * Bulk Mode * Auto-Switch Mode the system creates: Basket This allows the inbound transaction to be grouped and processed later. --- ### **Inbound Basket Flow** ![image](../images/2026/05/paste-1779188340067.png) --- ## **Scenario 2 — All Modes Unticked** If all processing modes are disabled: * Batch Mode \= false * Bulk Mode \= false * Auto-Switch Mode \= false the system creates: Pending Message instead of Basket. --- ### **Inbound Pending Message Flow** ![image](../images/2026/05/paste-1779188572999.png) --- # **1.3. Inactive with Hard Stop Processing** ## **1.3.1. Description** When the adapter status is set to: Inactive with Hard Stop Processing the system completely ignores the transaction. No processing activity is performed. --- ## **1.3.2. System Behavior** The system performs: * No outbound processing * No inbound processing * No transformation * No mapping * No external callout * No Pending Message creation * No Basket creation * No transaction storage This mode is useful for: * Emergency stop processing * Temporary integration shutdown * Maintenance activities * Full transaction blocking --- ### **Hard Stop Flow** ![image](../images/2026/05/paste-1779188821906.png) --- # **2\. Reprocessing Behavior** Transactions preserved as: * Pending Message or * Basket can later be reprocessed after the adapter becomes active again. --- ## **2.1. Reprocessing Options** The system supports: * Manual reprocessing * Automatic reprocessing after adapter reactivation This helps ensure that temporarily stopped integrations can continue processing later without losing transaction information. --- # **3\. Important Notes** ## **3.1. Outbound Processing Notes** * Outbound processing supports Pending Message creation only * Outbound processing does not support Basket creation * Outbound processing does not support Batch Mode, Bulk Mode, or Auto-Switch Mode * All inactive outbound transactions create Pending Message only --- ## **3.2. Inbound Processing Notes** * Inbound processing fully supports Batch Mode, Bulk Mode, and Auto-Switch Mode * Basket creation is supported only for inbound batch and bulk processing * If all modes are unticked, the system creates Pending Message --- # **4\. Full Processing Flow** ![image](../images/2026/05/paste-1779188891710.png) # **5\. Summary** | Adapter Direction | Processing Mode | Result | | ----- | ----- | ----- | | Outbound | All Modes | Create Pending Message | | Inbound | Batch/Bulk/Auto-Switch Enabled | Create Basket | | Inbound | All Modes Unticked | Create Pending Message | | Any Direction | Hard Stop Processing | No Processing | ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Queue Processing Behavior Title: 1. Interface Queue Execution Mode Configuration Slug: 1-interface-queue-execution-mode-configuration URL: https://help.skyvva.com/#article/1-interface-queue-execution-mode-configuration ================================================================================ # 1. Interface Queue Execution Mode Configuration # Overview This document describes the Interface Level Queue Processing Configuration used to control queue execution behavior during interface processing. The configuration determines how the queue engine handles message failures and processing continuation. Supported execution modes: - Continue When an Error Occurs (EO) - Stop When an Error Occurs (EOIO) The document also explains: - Queue lifecycle statuses - Queue reprocessing behavior - Hold and Stop by Admin restrictions - Queue restart rules - Developer and QA validation scenarios - Customer usage recommendations # 1. Execution Modes Execution Mode is configured at the Interface Detail level. ![image](../images/2026/05/paste-1779270765966.png) Users can select the processing behavior directly from the Interface Detail configuration screen. Supported execution modes: - Continue When an Error Occurs (EO) - Stop When an Error Occurs (EOIO) The selected execution mode controls how the queue processing engine handles message failures during interface execution. ## 1.1 Continue When an Error Occurs (EO) (Default) When this option is configured, the queue processing engine continues processing the remaining queue records even if an error occurs in one of the messages. This behavior follows EO (Exactly Once) processing behavior. --- ## Processing Behavior - A queue is automatically created during interface execution. - Each message is processed independently. - If one message fails: - The failed message is marked with an error status. - Remaining queue records continue processing. - Queue execution is not interrupted by individual message failures. --- ## Processing Flow ![image](../images/2026/05/paste-1779361834559.png) ### Important Note When using Continue When an Error Occurs (EO), the queue processing continues even if message errors occur. After all queue records are processed, the queue status automatically returns to: Ready No manual restart or queue recovery action is required. --- ## Example Scenario Queue contains 5 messages: | Message | Result | |---|---| | Message 1 | Success | | Message 2 | Success | | Message 3 | Failed | | Message 4 | Success | | Message 5 | Success | ### Result - Message 3 is marked as Failed. - Messages 4 and 5 continue processing successfully. - Queue processing remains active. --- ## Recommended Usage Use this mode when: - Messages are independent. - High processing availability is required. - Failed messages should not affect other messages. - Sequential processing is not required. - Maximum throughput is preferred. --- ## Advantages - High availability - Better processing throughput - Individual message isolation - Reduced queue interruption --- ## Considerations - Message order is not guaranteed after failures. - Failed records require separate reprocessing. - Dependent transactions may become inconsistent if ordering matters. --- # 1.2 Stop When an Error Occurs (EOIO) When this option is configured, the queue processing engine stops processing immediately after the first error occurs. This behavior follows EOIO (Exactly Once In Order) processing behavior. --- ## Processing Behavior - A queue is automatically created during interface execution. - Messages are processed sequentially. - When a message fails: - Queue execution stops immediately. - Processing stops immediately after the failed message. - Next message processing is not executed. - Remaining queue records are not created because processing does not continue to the next messages. - Queue status changes to Hold. - Processing resumes only after: - the issue is resolved, and - the queue is manually restarted. --- ## Processing Flow ![image](../images/2026/05/paste-1779361984816.png) --- ## Example Scenario Queue contains 5 messages: | Message | Result | |---|---| | Message 1 | Success | | Message 2 | Success | | Message 3 | Failed | | Message 4 | Not Created | | Message 5 | Not Created | ### Result - Processing stops at Message 3. - Messages 4 and 5 are not created because processing does not continue to the next messages. - Queue status becomes Hold. --- ## Recommended Usage Use this mode when: - Message order is important. - Data dependency exists between records. - Strict sequential processing is required. - Downstream systems require ordered delivery. - Data consistency is critical. --- ## Advantages - Maintains message sequence integrity - Prevents downstream inconsistency - Supports dependent transactions - Easier root cause analysis --- ## Considerations - Queue processing stops after the first error. - Manual intervention may be required. - Lower throughput compared to Continue mode. - Pending records wait until recovery is completed. --- # 2. Queue Monitoring Users can view queue records in the Queue Monitoring tab. ## Queue Creation Behavior - A queue record is automatically created after the interface starts processing. - Users can monitor the queue status from the Queue Monitoring tab. - If the user executes the same interface again: - A new queue is not created. - The existing queue record is updated and reused for processing. ## Queue Monitoring Visibility Users can view: - Queue status - Processing progress - Failed messages - Queue execution results - Queue recovery status --- # 3. Queue Status Lifecycle The queue status lifecycle controls processing state transitions during execution and recovery. --- ## Queue Statuses The following queue statuses are available during interface processing lifecycle: | Status | Description | |---|---| | Ready | Queue is ready for processing | | Worker | Queue worker is assigned and waiting to start processing | | Running | Queue is actively processing messages | | Failed | Queue processing failed due to message error | | Hold | Queue processing is paused due to an error | | Stop by Admin | Queue processing is manually stopped by an administrator | | Completed | Queue processing completed successfully | --- # 4. Queue Reprocessing Flow When an interface is configured with **Stop When an Error Occurs**, queue processing stops immediately after an error is detected. The queue remains in Hold status until the issue is resolved and the queue is manually restarted. ![image](../images/2026/05/paste-1779273852846.png) --- # 5. Queue Processing Restrictions If the interface queue status is: - Hold - Stop by Admin then the user cannot: - Reprocess failed messages - Execute the interface again - Restart queue processing --- ## Restriction Flow ![image](../images/2026/05/paste-1779274042936.png) --- # 6. Queue Restart Rules Please note that before changing the queue status from Hold to Ready, the user must first resolve the failed message or processing error. Processing is only allowed after the queue status is manually changed back to: Ready Once the queue status becomes Ready, the user can: - Reprocess failed messages - Execute the interface again - Restart queue processing --- # 7. Functional Comparison | Feature | Continue When an Error Occurs | Stop When an Error Occurs | |---|---|---| | Processing continues after error | Yes | No | | Queue stops on failure | No | Yes | | Failed message blocks others | No | Yes | | Queue status changes to Hold | No | Yes | | Manual restart required | No | Yes | | Processing style | EO-like | EOIO-like | | Message order guarantee | No | Yes | | Throughput priority | High | Medium | | Sequential integrity | Low | High | --- # 8. User Notes ## Continue When an Error Occurs Users should use this mode when: - Transactions are independent. - Parallel or high-volume processing is required. - Failed messages can be retried independently. Important Notes: - Failed messages should be monitored from Queue Monitoring tab. - Users can reprocess failed messages after queue status returns to Ready. - Queue processing continues even when message errors occur. --- ## Stop When an Error Occurs Users should use this mode when: - Processing sequence is critical. - Records depend on previous transactions. - Ordered delivery must be preserved. Important Notes: - Users must resolve the error before restarting queue processing. - Queue status changes to Hold when processing stops. - Processing continues only after queue status is changed back to Ready. --- # 9. User Scenarios ## Continue When an Error Occurs ### Expected Behavior 1. Execute interface with multiple messages. 2. Force one message to fail. 3. Verify: - Failed message receives error status. - Remaining messages continue processing. - Queue remains active. --- ## Stop When an Error Occurs ### Expected Behavior 1. Execute interface with multiple messages. 2. Force one message to fail. 3. Verify: - Queue processing stops immediately. - Remaining messages are not created for processing. - Queue status changes to Hold. --- ## Reprocessing Validation ### Expected Behavior 1. Queue enters Hold status. 2. Verify user cannot: - Reprocess message - Execute interface again 3. Change queue status to Ready. 4. Verify processing becomes available again. --- # 10. User Guidance ## When to Use Continue When an Error Occurs Recommended for: - Independent transactions - High-volume integrations - Non-sequential business processing - Maximum operational continuity Examples: - Customer synchronization - Product updates - Independent API transactions --- ## When to Use Stop When an Error Occurs Recommended for: - Sequential processing - Financial transactions - Ordered integrations - Dependent business processes Examples: - Order processing - Invoice sequencing - Inventory synchronization with dependency rules --- # 11. Summary | Execution Mode | Queue Behavior | |---|---| | Continue When an Error Occurs (EO) | Queue continues processing after failed messages | | Stop When an Error Occurs (EOIO) | Queue stops processing after the first failed message | # Full Processing between Continue When an Error Occurs (EO) and Stop When an Error Occurs (EOIO) ![image](../images/2026/05/paste-1779275711659.png) --- # 12. Key Functional Rules ## Continue Mode - Queue continues despite individual failures. - Errors are isolated to failed messages. - Processing availability is prioritized. --- ## Stop Mode - Queue stops immediately on failure. - Queue enters Hold status. - Manual intervention is required before continuation. - Sequential integrity is prioritized. --- ## Reprocessing Rule Reprocessing or executing the interface again is only allowed when: Queue Status = Ready If queue status is: - Hold - Stop by Admin then processing actions are blocked until the queue status is manually changed back to Ready. ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Queue Processing Behavior Title: 2. Integration Queue Processing Behavior Slug: 2-integration-queue-processing-behavior URL: https://help.skyvva.com/#article/2-integration-queue-processing-behavior ================================================================================ # 2. Integration Queue Processing Behavior # **1\. Introduction** The Skyvva Integration Queue framework controls how Integrations, Interface Queues, and Messages are processed during runtime execution. The framework is responsible for: * Integration orchestration * Queue creation * Sequential and parallel execution * Message processing * Queue monitoring * Error handling * Queue recovery and reprocessing The Integration Queue is created only after the Integration execution is triggered. Integration execution can be triggered by: * Manual processing * Scheduler processing --- # **2\. High-Level Processing Architecture** The overall processing structure is: ![image](../images/2026/05/paste-1779867537174.png) --- # **3\. Integration Processing Trigger** An Integration can be executed using two trigger mechanisms. ## **3.1 Manual Processing** The user manually executes the Integration. Example: * User clicks Execute * User starts Integration from UI * User manually starts reprocessing --- ## **3.2 Scheduler Processing** The system automatically executes the Integration based on configured schedules. Example: * Time-based execution * Scheduled batch processing * Automatic background processing --- # **4\. Integration Queue Creation** After the Integration execution is triggered: * The system creates the Integration Queue * The Integration Queue becomes the main runtime controller The Integration Queue is responsible for: * Orchestrating Interface Queue execution * Applying execution rules * Managing processing behavior * Managing runtime status * Handling Hold and recovery processing --- # **5\. Processing Architecture** The runtime processing hierarchy contains four processing layers. ![image](../images/2026/05/paste-1779868822760.png) --- # **6\. Queue Monitoring Structure** When Integration execution starts: * One Integration Queue is created * Multiple Interface Queues are created under the Integration Queue * Each Interface Queue processes its own messages Example: Integration Queue ![image](../images/2026/05/paste-1779869159056.png) --- # **7\. Integration Queue Configuration** The Integration Queue contains three major processing configurations. ![image](../images/2026/05/paste-1779869548854.png) --- # **7.1 Execution Mode** Execution Mode controls how Interface Queues are executed. Available options: \- Sequential Processing (Default) \- Parallel Processing --- ## **Sequential Processing** Processes Interface Queues one by one according to sequence order. ### **Processing Flow** ![image](../images/2026/05/paste-1779870000112.png) Characteristics: * Ordered processing * Dependency-based execution * Controlled transaction flow --- ## **Parallel Processing** Processes Interface Queues simultaneously. ### **Processing Flow** ![image](../images/2026/05/paste-1779870135310.png) Characteristics: * Faster throughput * Independent execution * High-performance processing --- # **7.2 Processing Behavior** Processing Behavior controls how the Integration Queue reacts when an Interface Queue fails. Available options: \- Continue Next Interface When an Error occurs (EO) \- Stop Next Interface When an Error occurs (EOIO) --- # **7.3 Restart Processing Strategy** Restart Processing Strategy controls where queue reprocessing resumes after recovery. Available options: \- Continue from the beginning (Default) \- Continue from the failed interface --- # **8\. Interface Execution Mode** Each Interface contains its own message processing behavior. Available options: \- Continue when an error occurs (Default) \- Stop when an error occurs This setting controls message-level processing inside the Interface Queue. Important: * This setting controls message processing only * This setting does not directly control Integration Queue orchestration --- # **9\. Direct Interface Execution** When a user executes an Interface directly: * Only an Interface Queue is created * The Interface Queue follows its configured Execution Mode --- # **9.1 Continue when an error occurs** If one message fails: * Remaining messages continue processing ### **Processing Flow** ![image](../images/2026/05/paste-1779870752019.png) --- # **9.2 Stop when an error occurs** If one message fails: * Remaining messages stop processing immediately ### **Processing Flow** ![image](../images/2026/05/paste-1779872131273.png) --- # **10\. Integration Execution** When a user or scheduler executes an Integration: * Integration Queue is created * Multiple Interface Queues are created * Integration Queue controls runtime orchestration The runtime behavior depends on the configured Processing Behavior. --- # **11\. Integration Processing Behavior \= EO** ## **Continue Next Interface When an Error occurs** Configuration: Processing Behavior: Continue Next Interface When an Error occurs (EO) --- # **11.1 Important Runtime Rule** When Processing Behavior is EO: * The Integration Queue overrides Interface Execution Mode * All Interface Queues internally process messages using: Continue when an error occurs This applies even if the Interface itself is configured with: Stop when an error occurs --- # **11.2 EO \+ Interface Execution Mode \= Continue when an error occurs** ### **Processing Flow** ![image](../images/2026/05/paste-1779872466404.png) Result: * Failed Interface Queue does not stop Integration processing * Remaining Interface Queues continue processing --- # **11.3 EO \+ Interface Execution Mode \= Stop when an error occurs** Even if the Interface configuration is: Stop when an error occurs actual runtime behavior becomes: Continue when an error occurs because Integration Queue orchestration overrides Interface behavior. ### **Processing Flow** ![image](../images/2026/05/paste-1779938611892.png) Result: * Remaining messages continue processing * Remaining Interface Queues continue processing * Integration Queue does not enter Hold status --- # **12\. Integration Processing Behavior \= EOIO** ## **Stop Next Interface When an Error occurs** Configuration: Processing Behavior: Stop Next Interface When an Error occurs (EOIO) --- # **12.1 Important Runtime Rule** When Processing Behavior is EOIO: * Integration Queue respects Interface Execution Mode * Interface Queue processing follows its configured Execution Mode * Failed Interface Queue stops Integration processing --- # **12.2 EOIO \+ Interface Execution Mode \= Continue when an error occurs** In this scenario: * Failed messages do not stop remaining message processing immediately * Remaining messages continue processing * Interface Queue may still complete with Failed status Once Interface Queue becomes Failed: * Integration Queue changes to Hold * Remaining Interface Queues stop processing ### **Processing Flow** ![image](../images/2026/05/paste-1779939464286.png) --- # **12.3 EOIO \+ Interface Execution Mode \= Stop when an error occurs** In this scenario: * Failed messages immediately stop message processing and remaining messages are not processed the interface Queue immediately becomes Failed. Once Interface Queue becomes Failed: * Integration Queue changes to Hold * Remaining Interface Queues stop processing ### **Processing Flow** ![image](../images/2026/05/paste-1779940479974.png) --- # **13\. Integration Queue Processing Flow The queue processing flow follows a linear start with branching outcomes: Flow: * READY → queue is waiting * WORKER → worker is assigned * RUNNING → processing is in progress From RUNNING, the process ends in one of four final states: * COMPLETED → successful execution * FAILED → error occurred during processing * HOLD → processing paused due to recoverable issue * STOP_BY_ADMIN → manually stopped by administrator **High-Level Flow** The queue processing lifecycle follows this pipeline: ![image](../images/2026/05/paste-1779942727333.png) --- # **14\. Queue Hold and Recovery** When Integration Queue status becomes: On Hold processing stops. Before reprocessing: * User must resolve the failed issue * User manually changes queue status: Hold → Ready Examples: * Fix invalid data * Correct mapping configuration * Resolve external system errors * Restore authentication/connectivity --- # **15\. Restart Processing Strategy** --- # **15.1 Continue from the beginning** Reprocessing starts from the first Interface Queue. ### **Processing Flow** ![image](../images/2026/05/paste-1779943826488.png) --- # **15.2 Continue from the failed interface** Reprocessing resumes from the failed Interface Queue. ### **Processing Flow** ![image](../images/2026/05/paste-1779944217271.png) --- # **16\. Runtime Behavior Summary Matrix** | Scenario | Interface Execution Mode Applied? | Integration Queue Behavior | | ----- | ----- | ----- | | Direct Interface Execution | Yes | Interface controls message behavior | | Integration Execution \+ EO | No | Integration Queue overrides Interface behavior | | Integration Execution \+ EOIO | Yes | Integration Queue respects Interface behavior | --- # **17\. Functional Summary** The Skyvva Integration Queue framework provides: * Integration orchestration * Queue management * Sequential and parallel execution * Message processing control * Queue monitoring * Queue recovery * Hold and reprocessing management * Controlled restart strategies * STOP_BY_ADMIN handling and controlled restart recovery **Framework Capabilities** The framework supports enterprise-level: * Integration processing governance * Error handling and recovery management * Queue lifecycle monitoring * Administrative stop and restart control * Reliable reprocessing execution ================================================================================ Book: SKYVVA Administration Guide Section: SKYVVA Administration Guide Subsection: Queue Processing Behavior Title: 3. Interface Group Queue Processing Behavior Slug: 3-interface-group-queue-processing-behavior URL: https://help.skyvva.com/#article/3-interface-group-queue-processing-behavior ================================================================================ # 3. Interface Group Queue Processing Behavior ## **1\. Overview** The Interface Group Queue framework provides centralised runtime orchestration for processing multiple Interfaces within an Interface Group. The framework controls how Interfaces are executed, monitored, recovered, and managed during runtime processing. An Interface Group represents a collection of Interfaces that are executed together as part of a business integration process. During execution, the system creates runtime queues that coordinate Interface execution and monitor processing status across all Interfaces and Messages. The Interface Group Queue framework is designed to support enterprise-level integration processing with: * Runtime queue orchestration * Sequential and parallel processing * Message-level processing control * Failure handling * Queue recovery management * Restart processing strategies * Runtime monitoring and governance The framework allows administrators and integration users to control how processing behaves when errors occur and how processing resumes after recovery. --- # **2\. Runtime Processing Architecture** When an Interface Group is executed, the system creates a runtime processing hierarchy. Each layer in the hierarchy has a different responsibility during execution. ## **2.1 Runtime Hierarchy** ![image](../images/2026/05/paste-1779962952492.png) ## **2.2 Runtime Layer Description** ### **Interface Group** The Interface Group is the top-level configuration object that contains multiple Interfaces. Responsibilities: * Defines Interface execution order * Controls processing behavior * Controls restart processing strategy * Defines runtime orchestration rules --- ### **Interface Group Queue** The Interface Group Queue is the runtime execution container created during processing. Responsibilities: * Controls Interface execution * Monitors processing status * Handles runtime orchestration * Controls queue lifecycle * Applies EO or EOIO processing behavior * Coordinates queue recovery and restart processing --- ### **Interface** An Interface is an executable processing unit inside the Interface Group. Responsibilities: * Processes Messages * Executes mappings and transformations * Handles adapter communication * Applies Interface Execution Mode * Controls message-level processing behavior --- ### **Message** A Message is the lowest processing unit. Responsibilities: * Contains runtime payload data * Executes individual processing transactions * Generates processing status * Produces success or failure results --- # **3\. Queue Creation Process** The Interface Group Queue is automatically created when Interface Group execution starts. Execution can be triggered by: * Manual execution * Scheduler execution ## **3.1 Queue Creation Flow** ![image](../images/2026/05/paste-1779963386335.png) ## **3.2 Runtime Initialization** During queue creation: 1. The system generates a new Interface Group Queue record 2. Runtime worker resources are allocated 3. Queue status changes to READY 4. Worker assignment begins 5. Interface processing starts according to configured Execution Mode The queue remains active until: * Processing completes successfully * Processing fails * Queue enters HOLD status * Queue is manually stopped --- # **4\. Queue Runtime Lifecycle** The queue lifecycle defines how queue statuses change during runtime execution. ## **4.1 Queue Status Flow** ![image](../images/2026/05/paste-1779963625821.png) ## **4.2 Important Runtime Rule** The following statuses are final runtime outcomes: * COMPLETED * FAILED * HOLD * STOP\_BY\_ADMIN These statuses are alternative runtime results and are not sequential processing states. Example: RUNNING ![image](../images/2026/05/paste-1779964009483.png) A queue cannot move from COMPLETED to FAILED because both are final runtime states. --- # **5\. Queue Status Definitions** ## **5.1 READY** The queue has been created but processing has not yet started. ### **Runtime Characteristics** * Queue initialized * Waiting for worker assignment * Processing not yet active READY is typically a temporary initialization state. --- ## **5.2 WORKER ASSIGNED** A runtime worker has been assigned to the queue. ### **Runtime Characteristics** * Worker allocated * Runtime resources prepared * Queue initialization completed * Processing about to start --- ## **5.3 RUNNING (PROCESSING)** The queue is actively processing Interfaces and Messages. ### **Runtime Characteristics** * Interface execution active * Message processing active * Queue orchestration active * Runtime monitoring enabled During RUNNING status: * Interfaces may succeed or fail * Messages may continue or stop depending on configuration * Queue orchestration logic is continuously evaluated --- ## **5.4 COMPLETED** The queue finished processing successfully. ### **Runtime Characteristics** * Runtime execution completed * No blocking failures occurred * Queue processing finalized successfully COMPLETED does not necessarily mean all Messages succeeded. Under EO processing, failed Messages or Interfaces may still exist while overall queue processing completes. --- ## **5.5 FAILED** The queue finished with runtime failure. ### **Runtime Characteristics** * Runtime processing terminated * Failure condition encountered * Queue processing unsuccessful FAILED usually occurs when processing cannot continue due to runtime exceptions or unrecoverable failures. --- ## **5.6 HOLD** The queue is paused due to processing failure and requires user intervention. ### **Runtime Characteristics** * Processing stopped * Queue recoverable * Manual recovery required * Runtime execution paused ### **Common Causes** * EOIO processing failure * Interface failure * Validation exceptions * External system errors * Authentication issues * Connectivity failures Queues in HOLD status remain recoverable after the underlying issue is resolved. --- ## **5.7 STOP\_BY\_ADMIN** Queue processing was manually stopped by an administrator. ### **Runtime Characteristics** * Administrative stop operation * Processing forcefully terminated * Runtime execution intentionally stopped This status is typically used for operational control or emergency processing stop scenarios. --- # **6\. Execution Mode** Execution Mode controls how Interfaces are processed inside the Interface Group Queue. ## **6.1 Available Execution Modes** | Execution Mode | Description | | ----- | ----- | | Sequential Processing (Default) | Interfaces execute one by one according to configured order | | Parallel Processing | Interfaces execute simultaneously | --- # **7\. Sequential Processing** Sequential Processing executes Interfaces one after another according to the configured sequence order. ## **7.1 Sequential Processing Flow** ![image](../images/2026/05/paste-1779964085744.png) ## **7.2 Runtime Behavior** During Sequential Processing: * Only one Interface executes at a time * Next Interface starts only after previous Interface finishes * Interface order is strictly maintained * Runtime dependency control is preserved ## **7.3 Typical Use Cases** Sequential Processing is recommended when: * Interfaces depend on previous processing results * Transaction order must be preserved * Business process sequencing is required * Controlled execution flow is necessary --- # **8\. Parallel Processing** Parallel Processing executes multiple Interfaces simultaneously. ## **8.1 Parallel Processing Flow** ![image](../images/2026/05/paste-1779964236135.png) ## **8.2 Runtime Behavior** During Parallel Processing: * Multiple Interfaces execute concurrently * Runtime throughput increases * Independent processing is optimized * Overall processing time may be reduced ## **8.3 Typical Use Cases** Parallel Processing is recommended when: * Interfaces are independent * No execution dependency exists * High-volume processing is required * Runtime performance optimization is necessary --- # **9\. Processing Behavior** Processing Behavior controls how the Interface Group Queue reacts when Interface failures occur. ## **9.1 Available Processing Behaviors** | Processing Behavior | Description | | ----- | ----- | | Continue Next Interface When an Error occurs (EO) | The queue continues processing the remaining Interfaces | | Stop Next Interface When an Error occurs (EOIO) | Queue stops remaining Interface processing | Processing Behavior operates at the Interface Group Queue orchestration level. --- # **10\. Interface Execution Mode** Each Interface independently controls its own message-level processing behavior. ## **10.1 Available Interface Execution Modes** | Interface Execution Mode | Description | | ----- | ----- | | Continue when an error occurs (Default) | Remaining messages continue processing after failure | | Stop when an error occurs | Remaining messages stop immediately after failure | Interface Execution Mode applies only inside the Interface Queue and controls message processing behavior. --- # **11\. Direct Interface Execution** When an Interface is executed directly outside an Interface Group: * One Interface Queue is created * Interface Execution Mode fully controls message processing behavior The Interface behaves independently without Interface Group orchestration rules. --- # **12\. Continue when an error occurs** Under this mode, failed Messages do not stop remaining Message processing. ## **12.1 Runtime Behavior** If a Message fails: * Remaining Messages continue processing * Interface processing continues * Queue processing completes ## **12.2 Processing Flow** ![image](../images/2026/05/paste-1779964501388.png) ## **12.3 Processing Result** * Failed Messages are logged * Remaining Messages continue processing * Interface Queue completes runtime execution This mode is useful for high-volume processing where partial failures should not stop processing. --- # **13\. Stop when an error occurs** Under this mode, failed Messages immediately stop remaining Message processing. ## **13.1 Runtime Behavior** If a Message fails: * Remaining Messages stop immediately * Interface processing stops * Queue enters HOLD status ## **13.2 Processing Flow** ![image](../images/2026/05/paste-1779965597063.png) ## **13.3 Processing Result** * Processing immediately stops * Queue becomes recoverable * User intervention required before restart This mode is useful for critical transactional processing where failures must stop further execution. --- # **14\. EO Processing Behavior** EO means: Continue Next Interface When an Error occurs. Under EO processing: * Interface failures do not stop remaining Interface execution * Queue orchestration continues processing remaining Interfaces ## **14.1 Important EO Rule** When Processing Behavior \= EO: * Interface Execution Mode is internally overridden * All Interfaces behave as: Continue when an error occurs This applies even if the Interface configuration is: * Stop when an error occurs EO processing prioritizes continuous queue orchestration. --- # **15\. EO \+ Continue when an error occurs** ## **15.1 Runtime Behavior** During processing: * Failed Messages do not stop remaining Messages * Failed Interfaces do not stop remaining Interfaces * Queue processing continues until all Interfaces finish ## **15.2 Processing Flow** ![image](../images/2026/05/paste-1779965948055.png) ## **15.3 Processing Result** * Remaining processing continues * Queue orchestration never stops * Queue completes successfully --- # **16\. EO \+ Stop when an error occurs** Even if the Interface configuration is: * Stop when an error occurs runtime behavior changes to: * Continue when an error occurs because EO processing overrides Interface Execution Mode. ## **16.1 Runtime Behavior** Under EO: * Remaining Messages continue * Remaining Interfaces continue * Queue processing completes ## **16.2 Processi ng Flow** ![image](../images/2026/05/paste-1779966237647.png) --- # **17\. EOIO Processing Behavior** EOIO means: Stop Next Interface When an Error occurs. Under EOIO processing: * Queue orchestration respects Interface Execution Mode * Failed Interfaces stop remaining Interface execution EOIO processing provides strict runtime control. --- # **18\. EOIO \+ Continue when an error occurs** ## **18.1 Runtime Behavior** If one Message fails: * Remaining Messages continue processing * Interface eventually becomes Failed Once the Interface becomes Failed: * Queue changes to HOLD * Remaining Interfaces stop processing ## **18.2 Processing Flow** ![image](../images/2026/05/paste-1779966695739.png) ## **18.3 Processing Result** * Current Interface finishes processing * Queue orchestration stops afterward * User recovery required --- # **19\. EOIO \+ Stop when an error occurs** ## **19.1 Runtime Behavior** If one Message fails: * Remaining Messages stop immediately * Interface immediately becomes Failed Once the Interface fails: * Queue changes to HOLD * Remaining Interfaces stop processing ## **19.2 Processing Flow** ![image](../images/2026/05/paste-1779967106771.png) ## **19.3 Processing Result** * Processing stops immediately * Queue enters HOLD status * Remaining Interfaces are not executed This mode provides the strictest runtime control. --- # **20\. Restart Processing Strategy** Restart Processing Strategy controls where queue reprocessing resumes after recovery. ## **20.1 Available Restart Strategies** | Restart Strategy | Description | | ----- | ----- | | Continue from the beginning (Default) | Queue restarts from first Interface | | Continue from the failed interface | Queue resumes from failed Interface | --- # **21\. Continue from the beginning** Under this strategy: * Queue reprocessing starts from the first Interface ## **21.1 Processing Flow** ![image](../images/2026/05/paste-1779967493309.png) This strategy ensures full processing consistency. --- # **22\. Continue from the failed interface** Under this strategy: * Queue resumes processing from the failed Interface ## **22.1 Processing Flow** ![image](../images/2026/05/paste-1780025667229.png) This strategy improves recovery efficiency by avoiding reprocessing successful Interfaces. --- # **23\. Queue Recovery** Queues in HOLD status require manual recovery. ## **23.1 Recovery Steps** 1. Resolve the failed issue 2. Change queue status: HOLD → READY 3. Restart queue processing ## **23.2 Recovery Flow** ![image](../images/2026/05/paste-1780026706940.png) ## **23.3 Typical Recovery Actions** * Correct invalid payload data * Fix mapping configurations * Restore authentication credentials * Resolve connectivity issues * Fix external system failures --- # **24\. Functional Summary** The Interface Group Queue framework provides: * Enterprise-level runtime orchestration * Sequential and parallel execution * Message-level processing control * Runtime monitoring * HOLD and recovery management * Restart processing strategies * Operational governance and scalability The framework enables controlled, recoverable, and scalable Interface Group processing across enterprise integration environments. ================================================================================ Book: Tutorials Section: Tutorials Subsection: (General) Title: Tutorials Introduction Slug: tutorial-v2-41-lightning URL: https://help.skyvva.com/#article/tutorial-v2-41-lightning ================================================================================ # Tutorials Introduction Skyvva is a commercial software integration product that facilitates data integration. It is s a client application for the bulk import or export of data. SKYVVA´s Dataloader is a native Salesforce App and is designed to integrate data supporting CSV/XML format via a manual file upload. It is simple, intuitive and powerful to built integration in minutes. It is a Config&Click graphical mapping tool. **Required Tools: ** - Salesforce Organisation. - Agent application. - SoapUI application - Postman **Here Tutorials are guided learning paths through projects that help you cover the most ground in the shortest amount of time.** **Basic of Skyvva:** **Learn about the Salesforce developer org.** - Enter the given link in browser: [https://developer.salesforce.com/signup](https://developer.salesforce.com/signup) -  Enter your contact information. -  Enter a unique username. - Submit the form, and wait for your welcome email. - In the welcome email, click the link to set your password. **Learn about the Installation of Skyvva how to install.** The purpose is to introduce the product or component to be installed. This guide covers the installation of the system and its related components like domain creation and updates Skyvva license key. We can get an installation link from the release note. –  [How to install SKYVVA Integration Suite?](#article/skyvva-integration-suite-installation) **Learn about the Integration and how to create.** This is the first step and the basic to understand the concept of the SKYVVA integration Cloud. It describes the main SKYVVA object called “Integration”. SKYVVA integration is such a concept to create a container or folder to keep related interface together. So here Integration is a logical folder or group to hold interfaces belonging to the same business context. –  [What is an integration and how to create it?](#article/what-is-an-integration-and-how-to-create-it) **Learn about the Interface and how to use.** The interface is the second main object in SKYVVA after the integration. Interface describes the structure of data to exchange between Salesforce and other applications. We have two types of Interface: - Inbound Interface - Outbound Interface –  [What is an interface and how to create it?](#article/1-what-is-an-interface-and-how-to-create-it) **Learn about Skyvva mapping and how to use skyvva mapping tool.** SKYVVA’s Mapping tool is a tool to map other system object and field with SFDC object field. Here we will map source fields with target object fields. Source fields are nothing but our Istructure. – [How to use mapping?](#article/how-to-use-mapping) – [How to use formulas in mapping?](#article/2-how-to-use-formulas-in-mapping) **Learn about Skyvva Dataloader and how to upload data manually.** SKYVVA´s Dataloader is designed to integrate data supporting CSV/XML format via a manual file upload. Skyvva data loader use to upsert, insert, update, delete, or export Salesforce records. – [How to upload Account Data using Data Load](#article/how-to-upload-account-data-using-manual-load)er? [– How to import flat XML file?](#article/how-to-import-xml-file-manual-load) **Learn about Message Monitoring and how to use the message board.** Message Monitoring is used to check the integration result after processing the Inbound or Outbound interface. The integration result includes Pending, Failed, Completed, Cancelled status and the reason why it failed.  Additionally, we can know the real Sobject is integrated successfully with completed status. – [What is Message Monitoring?](#article/message-monitoring) **Learn about Message reprocessing and how to Reprocess fail and pending message.** Fail or pending message can be reprocessed by manually or automatically. Automatic reprocessing is done by the “MessageReprocess” job. – [How to use message reprocessing?](#article/how-to-use-message-reprocessing) – [How to use message reprocessing per integration?](#article/11-3-how-to-use-message-reprocessing-per-integration) **Learn about Message type and how to create message type with different file formats?** The message type is a structure definition that is stored in the Repository. We can manually create a free defined message type or create it by uploading file functionality. The message type can be resided in a WSDL, in SAP IDoc, SAP Bapi, etc… It can be stored in a file in CSV, XML, JSON,  or other formats. – [How to create free defined message type?](#article/2-how-to-create-free-defined-message-type) – [How to create message type, for example: using WSDL or XSD…?](#article/tutorial-v2-41-lightning) – [How to create message type from different file format as xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x?](#article/tutorial-v2-41-lightning) – [How to process message type based Interface?](#article/22-4-how-to-process-message-type-based-interface) **Learn about Hierarchical data import and how to create parent-child interface. ** To arrange interfaces in order means hierarchical interface. It is a structure in which interfaces are ranked according to levels of importance. In hierarchical Interfaces, one interface is a  parent’s of another interface. It means that the child interface inherited External ID from its parent’s interface. For example, the Account interface is the parent’s contact interface because of Contact inherited External ID from Account. [– How to create hierarchical interface using VLOOKUP](#article/2-how-to-create-hierarchical-interface-using-vlookup) – [How to create hierarchical interface using Foreign Key?](#article/how-to-create-hierarchical-interface-using-foreign-key) – [How to use tree mapping concept to create hierarchical interfaces?](#article/13-3-how-to-use-tree-mapping-concept-to-create-hierarchical-interfaces) – [How to import hierarchical xml file?](#article/13-4-how-to-upload-account-contact-and-asset-data-in-a-xml-file-in-a-step-according-to-salesforce) – [How to upload account, contact and asset data in a CSV file in a step according to Salesforce?](#article/how-to-upload-account-contact-and-asset-data-in-a-csv-file-in-a-step-according-to-salesforce) **Advance of Skyvva** **Learn about Skyvva workflow and how to use the formula in workflow.** Skyvva workflow rule define **Rule** and **Condition** based processing for interfaces. It controls the flow of interface processing with conditions. Workflow is used to push the database on condition, and the condition bases on Interfaces. – [How to use workflow?](#article/tutorial-v2-41-lightning) – [How to use formulas in workflows?](#article/tutorial-v2-41-lightning) – [What is the Workflow transaction and how to use it?](#article/what-is-the-workflow-transaction-and-how-to-use-it) – [What is new in workflow with the Spring ’19 release](#article/2-what-is-new-in-workflow-with-the-spring-19-release) **Learn about Batch processing and how to use batch control board.** Batch Control Board is a place where you can monitor Inbound Processing, Interfaces, Queues and Schedulers. Each tab holds a different function. Batch Control Board is using for mass data which is more than 5000. – [How to use Batch Control Board?](#article/how-to-use-batch-control-board) – [How to use batch processing for inbound interfaces?](#article/1-how-to-use-batch-processing-for-inbound-interfaces) –[ How to speed up batch processing?](#article/2-how-to-speed-up-batch-processing) **Learn about Bulk processing and how to use bulk control board.** Bulk Control Board is a place where you can monitor Inbound Processing, Interfaces, and Schedulers. These tabs are using for bulk processing performance. Bulk Control Board is using for mass data. SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have any data, using Bulk Interface Processing is necessary (over 5000 records). – [How to use Bulk Control Board](#article/how-to-use-bulk-control-board) – [How to use bulk processing for inbound interfaces?](#article/how-to-use-bulk-processing-for-inbound-interfaces) – [What is the difference between the bulk mode supported in Skyvva?](#article/what-is-the-difference-between-the-bulk-mode-supported-in-skyvva) – [SKYVVA bulk interface processing](#article/skyvva-bulk-interface-processing) – [What is the Auto-Switch mode and when to use it?](#article/what-is-the-auto-switch-mode-and-when-to-use-it) **Learn about** **different mode supported for inbound processing** SKYVVA provide a different mode  for inbound processing. Using this variety of modes we can integrate all kinds of data into salesforce. You can integrate data in different modes including Synchronous, Asynchronous, Batch Processing, Bulk Processing(SKYVVA Bulk and SFDC Bulk), and Automatic switch. **Learn about Skyva Adapter and how to use Skyvva adapter.** An adapter is a device for connecting pieces of equipment that cannot connect directly. We can use an adapter to transfer data to the external system. It provides the interface between a computer and a network connection. Skyvva provide different type of adapters. For example, File Adapter ( CSV, Excel, XML), JDBC Adapter (ORACLE, SQLServer, MySQL, MsAcess), FTP/SFTP Adapter, HTTP, EMAIL, SFDATALOADER, SAP-R/3, SFDC2SAPPI, Data Loader, REST, Soap, Force2Force Adapter. – [How to use JDBC adapter?](#article/how-to-use-jdbc-adapter) – [How to use file and ftp/sftp adapter?](#article/27-2-how-to-use-file-and-ftp-sft-adapter) – [How to use eMail adapter?](#article/27-3-how-to-use-email-adapter) – [How to use HTTP adapter?](#article/27-4-how-to-use-http-adapter) –[ How to create SOAP interface using the SOAP adapter?](#article/27-5-how-to-create-soap-interface-using-the-soap-adapter) – [How to create REST interface using REST adapter?](#article/27-6-how-to-create-rest-interface-using-rest-adapter) – [How to use Mule skyvva adapter?](#article/how-to-use-mule-skyvva-adapter) – [How to use the REST adapter to consume Google API?](#article/overview-of-existing-skyvva-adapters) **Learn about CDC processing and how to use the CDC control board.** CDC Control Board is a place where you can monitor Change Pointer, Interfaces and Scheduler. These taps added to make thing easier for you and they have a different function. we use this CDC processing for the outbound interface. CDC is made up of two components, the CDD, and the CDT. CDC stands for Change Data Detection and CDT is stand for Change Data Transfer. These two components have different functionality. –[ How to use CDC Control Board?](#article/how-to-use-cdc-control-board) – [What is CDC and how to configure it?](#article/how-to-use-cdc-control-board) – [How to create change record using Process Builder?](#article/18-2-how-to-create-change-record-using-process-builder) **Learn about real-time outbound processing and how to create it.** Real-time outbound interface we can do in different way i.e Using a button, Using trigger, Using the process builder. This feature use our** invokeCallout2()** method. This method support   **SAP, SAP-PI, SAP-R/3, ****SFDC2SAPPI, SOAP, REST **adapter types. The response could be a text of JSON, XML, List> based on given flag parameters in CallOutControl and Apex of each adapter handle setting when executing callout. – [How to build real-time outbound interface?](#article/tutorial-v2-41-lightning) – [How to do invoke callout using Queueable mode?](#article/how-to-do-invoke-callout-using-queueable-mode) – [How to do invoke callout by using Auto mode?](https://mybestoffernow.de/docs/tutorial-v2-41-lightning/how-to-use-message-reprocessing/11-1-how-to-do-invoke-callout-mode-auto-use-only-10-callouts-per-transaction/) **Learn about SKYVVA Scheduler and how to use it.** SKYVVA Schedulers is a program that starts and handles job automatically. Each scheduler has a different purpose. These functions include Agent Scheduler, Basket Processing Scheduler, Bulk Processing Scheduler, CDD&CDT Scheduler, doMaintenance Scheduler, Message Reprocessing Scheduler, Basket Reprocessing Scheduler, and Checker Scheduler. – [Overview of SKYVVA Scheduler](#article/overview-of-skyvva-scheduler) **Learn about** **SKYVVA soap and rest api and how to use it.** SOAP-based APIs are designed to create, recover, update and delete records like accounts, passwords, leads, and custom objects. REST is basically an architectural style of the web services that work as a channel of communication between different computers or systems on the internet –[ Overview of SKYVVA soap and rest api](#article/overview-of-skyvva-soap-and-rest-api) **Learn about interface group and how to use it** Interface group is a unit to group logical interfaces together. For example, you can group interfaces which are related to each other e.g. Account and Contact to one interface group. Interface group is the object user define at configuration time. – [What is an interface group and in which case is it used?](#article/what-is-an-interface-group-and-in-which-case-is-it-used) – [How to use the CDD and CDT with the different scheduler per integration, per interface group and per interface?](#article/tutorial-v2-41-lightning) – [How to use the Message Reprocessing scheduler per integration, per interface group and per interface?](#article/tutorial-v2-41-lightning) **Learn about** **queues and how to use it** Queue is a dynamic object, which created automatically based on the interface group. You have to remember if you do not define an interface group SKYVVA will create a default interface group with the name “skyvva_DefaultIG”. Each interface group will be created queues. –  [What are queues and where is it used?](#article/what-are-queues-and-where-is-it-used) ![](../images/2018/10/stopedByAdmin.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is Salesforce? Title: 1. What is Salesforce? Slug: what-is-salesforce URL: https://help.skyvva.com/#article/what-is-salesforce ================================================================================ # 1. What is Salesforce? **Learning Objectives:-** #### What is Salesforce? Salesforce launch with the vision of regenerate & retain the Customer Relationship Management (CRM). Where we have data on our existing and future customers. For as much as we have changed the way enterprise software is delivered and used, changing the industry forever. All salesforce products run perfectly in the cloud so there are no expensive setup costs, no maintenance, and our employees can work from any device with an internet connection. Example: Smartphone, tablet or laptop ![](../images/2018/10/salesforceIcon-300x213.jpg) #### What is CRM? (Customer Relationship Management) Customer relationship management is a software that stores customer contact information like Name, Address, Phone number, as well as keeps track of customer activity like website visits, phone calls, email and more. We make CRM easy to use for small businesses and large scale enterprises. This approach has helped to make Sales Cloud the World’s topmost CRM system. Sales & Marketing is not the end of CRM. Our platform enables us to manage all interactions with our customers and prospects so that our organization can grow and succeed. That’s why we call it the Customer Success Platform. ![](../images/2018/10/Homepage.png) #### What CRM do? - Strongly & actively tracks and manages customer's information. - Associate your entire team from any device. - Intelligently captures customers Emails. - Simplifies repetitive tasks so you can concentrate on leads. - Delivers instant insights and recommendations. - Extends and customizes as your business grows. #### What is Cloud Computing? The idea behind cloud computing is similar, the user can simply use storage, computing power, or specially crafted development environments, without having to worry about how these work internally. Cloud computing is usually Internet-based computing. The cloud is a symbol for the Internet-based on how the internet is described in computer network diagrams which means it is an abstraction hiding the complex infrastructure of the internet. It is a style of computing in which IT-related capabilities are provided as a service, allowing users to access technology-enabled services from the Internet in the cloud without the knowledge of or control over the technologies behind these servers. ![](../images/2018/10/CloudCompIcon-300x264.jpg) Cloud computing, often referred to as simply “The Cloud“ is the delivery of on-demand computing resources everything from application to Datacenters over the internet on a pay-for-use-basis. As we showed laptops, tablets, smartphones. #### Applications:- Enterprise Software describes a collection of computer programs with common business application tools for modeling how the entire organization works & development tools for building applications unique to the organization. The software is expected to solve an enterprise-wide problem, rather than a departmental problem. Enterprise-level software aims to improve the enterprise's productivity and efficiency by providing business logic support functionality. Enterprise applications are about the display, manipulation, and storage of large amounts of often complex data and the support or automation of business processes with that data. ![](../images/2018/10/Application-300x200.jpg) - Present-day every company is in the app business. - Apps are where our customers meet our brand, where our employees connect with each other, and where business processes are up-to-date, automated and mobilized across the enterprise. - App Cloud is our one-stop-shop for building, running managing and optimizing apps using the same technology and expertise that leads to our success. #### PaaS (Platform as a Service):- Platform as a service provides a cloud-based environment with everything required to support the complete life cycle of building and delivering web-based (cloud) applications. ![](../images/2018/10/PaaS.png) Without cost and complication of buying and managing the basic hardware, software, material and hosting. (PaaS) is offering that provides users a cloud environment in which they can develop, manage, and deliver applications. In addition to storage and other computing resources, users are able to use a suite of prebuilt tools to develop, customize and test their own applications. #### Merits of PaaS - Develop applications and get to market faster. - Deploy new web applications to the cloud in minutes. - Reduce complexity with middleware as a service. **PaaS Examples:- ** Runtimes (like java runtimes), Databases (like MySQL, Oracle) #### SaaS (Software as a Service) Cloud-based applications or software as a service run on remote computers in the cloud that are purchased and operated by others and that are purchased and operated by others and that connect to user's computers via the internet and usually a web browser. ![](../images/2018/10/SaaS.png)   SaaS is offering that provides users with access to a merchant’s cloud-based software. Users do not install applications on their local devices. Rather, the applications payload on a remote cloud network accessed through the web or an API (Application Programming Interface). Through the application, users can store and analyze data and participate in projects. #### Merits of SaaS - We can sign up and rapidly start using innovative business apps. - Apps & Data are accessible from any connected computer. - No data is lost if your computer breaks, as data in the cloud. - This service is able to dynamically range to usage needs. **SaaS Examples**:- Application like email (Gmail, Yahoo mail, Hotmail etc), Social Networking sites (Facebook, LinkedIn, Twitter etc) #### IaaS (Infrastructure as a service) Infrastructure as a service provides companies with computing assets including these Servers, networking Storage & data center space on a pay per use basis. ![](../images/2018/10/IaaS.png) IaaS is offering in which a merchant provides users access to computing resources such as servers, storage, and networking. Organizations use their own platforms and applications within a service provider’s infrastructure. #### Merits of IaaS - No need to invest in your own hardware. - Infrastructure scales on-demand to support lively assignment. - Flexible, innovative services available on demand. **IaaS Examples:-**  Deals with virtual Machines, Storage (Hard Disks), Servers, Networks, Load Balancers, etc. ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is SKYVVA? Title: 1. What is SKYVVA? Slug: what-is-skyvva URL: https://help.skyvva.com/#article/what-is-skyvva ================================================================================ # 1. What is SKYVVA? #### #### Introduction **SKYVVA** available in Enterprise, Performance, Unlimited, Developer, and Database.com Editions **SKYVVA** is a client application for the bulk import or export of data. Use it to insert, update, delete, or export Salesforce records. When importing data, Data Loader reads, extracts, and loads data from comma-separated values (CSV, XML) files or from a database connection. When exporting data, it outputs CSV, XML files. **SKYVVA** integration app is the act of combining different cloud-based systems into an integral whole. The term may also refer to joining cloud-based systems with on-premises systems. The ultimate goal of cloud integration is to connect the distinct elements of various cloud and local resources into a single, universal environment that allows administrators to seamlessly access and manage applications, data, services, and systems. #### How SKYVVA Integration app works There is no single means of implementing the **SKYVVA** integration app, but there are several common concepts to consider. **For example**, an IT team can achieve an **SKYVVA** integration app using mediation or federation. Mediation works between applications, the **SKYVVA** integration app platform recognizes an event in one application and then triggers a response that is sent to another connected application. By comparison, federation acts as a front end for two or more federated applications where the **SKYVVA** integration app platform can intercept and process events from outside of those applications and trigger corresponding actions. It's also possible to combine these two approaches so mediation handles the actions between applications and federation handles the actions from outside of the connected applications. **SKYVVA** integration app can function **asynchronously** or **synchronously** depending on the communication taking place. **Asynchronous** integration communicates data and commands without having to wait on a response from the receiving application. This prevents unnecessary delays in sending or originating data because it does not need to wait for the receiving or target application to respond. **Synchronous** integration will wait for a response from the receiving application, which ensures the applications are fully synchronized before continuing. #### SKYVVA Integration platforms Commonly use adapters or connectors, which are **SKYVVA** software modules intended to interact with specific business applications. Thus, an **SKYVVA** integration platform can implement an **Agent** that handles security and authentication, while specific adapters accommodate the applications being integrated. The connector performs the communication and notifications. ![](../images/2018/10/Bild-16.png) Adapters can be for specific applications, such as **SAP**, or can be vendor-neutral, using standard communications protocols, such as simple mail transfer protocol (**SMTP**) message exchanges, simple object access protocol (**SOAP**) messaging, application programming interfaces (**APIs**), and the Java connector architecture (**JCA**). For data integration, **SKYVVA** integration platforms commonly use an application-independent data format, such as extensible markup language (**XML**). Each adapter will translate the application's specific format to the independent format before it performs any translations or conversions, and can then exchange that common data with the receiving application. #### Benefits of SKYVVA Integrating App **SKYVVA** Integration App is a technology in which users can experience software, information, and resources that can be accessed through multiple devices over a network, usually the Internet. It allows the use of cloud applications without the hassle of installation and access to personal and business files from any location through remote Internet access. This technology can improve computing efficiencies by centralizing storage, bandwidth, memory, and processing. **SKYVVA** is basically a physical location where IT resources such as operating systems, networks, computer hardware, databases, and storage and software applications can be stored and accessed instantly through an Internet connection. The **SKYVVA** allows incomparability, real-time information exchange, and agility making it a better choice for companies than just on-premise applications. To draw the maximum benefit from the **SKYYVA**, it is desirable to implement cloud computing integration of the multiple enterprise applications needed for various business processes in an organization. This helps to configure multiple on-premise or cloud applications to share data over the cloud. ![](../images/2018/10/0.jpg) **Up-to-date Information:** As all the applications on the **SKYVVA** are in-sync with each other, the end-users are able to fetch the most recent data or information related to various activities. A change made by one user reflects on another application almost instantaneously. **Improved functioning:** Changing all the manual segments to automated ones improves the accuracy level of various operations. This facilitates friction-less system-to-system process automation and eventually improves the overall efficiency of information sharing. **Streamline business goals:** Integration of businesses on **SKYVVA**, lines up the various aspects of a business like achievement or eCommerce management, logistics, etc. A clear projection of the various entities can be drawn from the perspective of the workforce. **Safe:** Username & password is allocated to each and every user in order to verify themselves to gain access to **SKYVVA**. Set of security protocols are also followed so that the information can’t be modified/altered by someone who doesn’t have the access to do so. **Flexibility and Scalability:** Enterprise applications and infrastructure’s integration with the **SKYVVA** facilitates a simple solution for organizations to upgrade or downgrade the version as per business requirements. This helps businesses to maintain the cost of various operations related to different projects or tasks. **Higher availability:** **SKYVVA** integration app provides higher availability of different resources to the end-users. As all the services are hosted on a cloud, it improves the efficiency of the organization’s infrastructure. Since only an internet connection is needed to access this cloud, there is no limitation on boundaries or on-premises flexibility. ![](../images/2018/10/Screenshot-339.png) After installation how **SKYVVA** managed package look like, it contains Package Name, Publisher, Version Number, Namespace Prefix, Tabs, Objects, and many more. ***We listen. Over the last decade, we’ve built our business by meeting organizations where they are—we solve the problems that matter to you, regardless of how simple or complex they may be*****.** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Integration? Title: 1. What is an integration and how to create it? Slug: what-is-an-integration-and-how-to-create-it URL: https://help.skyvva.com/#article/what-is-an-integration-and-how-to-create-it ================================================================================ # 1. What is an integration and how to create it? **Learning Objectives :-** This unit describes:- - The Integration feature in detail. - Overview of Integration level settings. #### Introduction This tutorial is the first step and the basic to understand the concept of the SKYVVA integration Cloud. It describes the main SKYVVA object called "Integration". #### What is Integration? - In general, Integration is the act of bringing together smaller components into a single system that functions as one.  It is the combination of technical and business processes used to combine data from disparate sources into meaningful and valuable information. - SKYVVA integration is such a concept to create a container or folder to keep related [interface](#) together. So here Integration is a logical folder or group to hold interfaces belonging to the same business context. For example,  create an integration with the name "Salesforce SAP Integration” in which you can create all interfaces related to the SAP connection. Create another integration with the name "Salesforce-Google Integration" to hold all interface related to Google business. - Another good use for creating different integration is that you can create different integration for different training purposes in your company. One integration is for the real business and another integration is for training so you don't mess up the interfaces between training and production integration. #### Why We Create Integration? In Skyvva, an interface can be created for a different purpose. Normally the company has different and many interfaces to exchange data between exiting applications.  For example, You have integration to connect SAP, Google or eBay to Salesforce. If you put all interface into one single view you would lose easily the overview. So the best approach is to create a logical folder or group to hold interfaces belonging to the same specific business context. **Following are the main steps of the tutorial:-** **Step 1: Create a Salesforce organization ** You need to register with salesforce. **Step 2: Install SKYVVA** To install SKYVVA App you need a user with Admin rights. Request for this user and follow the screen below to install the SKYVVA software. The installation link you get from the SKYVVA support team. **Step 3: Create Integration in your organization** To Create Integration in Skyvva, - Choose the Integration tab from Organization [https://login.salesforce.com/lightning/n/skyvvasolutions__Integration1](https://login.salesforce.com/lightning/n/skyvvasolutions__Integration1) - On the Integration page, find  **New** button and click on it to create a new integration. ![](../images/2018/10/Integration.png) - In the Name field, enter the name of your integration that you want to create. The name of integration identifies your integration. The Name field is a mandatory field. - Choose **Save**. You might need to wait a short while and refresh the page to see the new integration appear on the Integration tab. ![](../images/2018/10/1-11.png) #### Field Information On the integration object, the only name field is required to successfully save the integration. Other fields are optional. But you can describe your integration in the description field so that you know later what is the object or goal of this integration. There are some important parameter which is optional and have default value already when you don't set them. For example, the parameter  "**Max Number of Retry" **is default by 5 which mean that failed or pending message are going to be reprocessed automatically only 5 times. If exceed 5 times the message will remain in status failed/pending forever. If your requirement is to do message reprocessing more the 5 times (default value) you can set this parameter to any value you like for example 17. This would mean that the failed/pending messages will be re-processed max. 17 times. Please, refer screenshot: ![](../images/2018/10/2-8.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] That creating the Integration Object is a pre-requisite for further learning steps like creating an interface, mapping, etc. Without having an integration you cannot continue to develop an interface.[/su_box] #### Integration Group From the version, 2.x upward skyvva has introduced a new concept to create a so-called integration group. You group different integration into a logical group e.g. one integration group for Asian pacific and another integration group for Europe etc. The goal of creating an integration group is to have a small unit of integration for the processing. The integration will be processed by a scheduler e.g. an attachment process and attachment reprocesses scheduler. If the unit is quite small than the processing of the integration in this unit/group will be faster. If a unit/group is quite big than the processing will take longer until one integration got processed by the scheduler. Note: This concept of integration group is obsolete and not supported anymore. We should not use this concept and instead of that we should consider to use interface group. We can group the interface inside an integration in logical unit using the interface group. It is not needed anymore to split and organize a huge number of interface by using the integration group. Here the new concept is to create interface group if the number of the interface grows within an integration. #### Alerting Setup The alert setting on the integration level is used as a global setting in case the user forgot to set up an alerting rule on the interface level. If the user sets the alerting rule on the interface level then this should be valid and overwrite the setting on integration if any exist. We have a different type of alerting rules on the integration & interface level - Send Email SFDC User - CreateTask for User - Send Email External Mails - Chatter group Name #### Message Setup Delete Message is one of functionality that enables deletion of messages. The message deletion is not a default function. It works only after they set the flag 'Delete Message' on the integration. - Additional Message Statuses to Delete - Number of Days to Keep Messages - Delete Basket Histories - Delete Logs - Delete Log File - Log Levels to Delete ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to upload Account Data using data Loader? Title: 1. How to upload Account Data using data Loader? Slug: how-to-upload-account-data-using-manual-load URL: https://help.skyvva.com/#article/how-to-upload-account-data-using-manual-load ================================================================================ # 1. How to upload Account Data using data Loader? **Learning Objective: ** - Import Account Data into Salesforce with a csv-file and Data Loader Function - Describe SKYVVA data loader. ### #### Introduction SKYVVA´s Free Dataloader is part of the SKYVVA´s Integration Cloud App and is a native force.com App. As a true Cloud Service data can be uploaded over the Web without the need to install any software or hardware. SKYVVA´s FreeDataloader is perfectly suited for a business analyst and administrator to manage the import of critical business information such as accounts, contacts, assets products, leads or orders on time without being reliant on limited IT resources. Based on an intuitive (Salesforce Look & Feel) Web interface SKYVVA´s Free Dataloader is very easy to configure (No Coding) and maintain. The Free Dataloader is installed as a tab 'Integration' directly in the Salesforce menu bar. Fields are mapped by a visual editor, data are transformed using a formula editor. All operations are executed in the familiar Salesforce Look & Feel. Business analysts or administrators get alerted about failure in the service and are enabled to resolute data transforming or process logic without IT help via a message board. #### What is SKYVVA Data Loader? SKYVVA´s Dataloader is a native Salesforce App and is designed to integrate data supporting CSV/XML format via a manual file upload. It is simple, intuitive and powerful to built integration in minutes. It is a Config&Click graphical mapping tool. Skyvva data loader use to upsert, insert, update, delete, or export Salesforce records. #### Pre-requisite We should have salesforce organisation with Skyvva product. #### Configuration of SKYVVA Data Loader To import data from CSV/XML file into Salesforce Please follow the given steps: **Step 1. The first step is to create a new Integration to import our csv file.** - On the Menu Bar, you see the Integration tab -> clicks on the tap **Integration.** - Click On **New** button. ![](../images/2018/10/Integration.png) - Fill in the **Name** Field (Give a meaningful name that identify your integration.) We give our Integration a name and a short description of the use case for this integration. - All other fields can remain as default... - Click on **Save button**  and we have created an Integration to upload our csv file.![](../images/2018/10/Capture4.png) **Step 2.  The next step is to create the Interface for the Account Object**. To create new interface follow the given steps: - Go to your Integration page. - Click on Interface tab (near to detail tab). - Click On New Interface button. ![](../images/2018/10/New-Interface.png) We give our Interface a Name and change the Status to Deploy and choose in Source Name the proper SObject -> Account. All other fields can remain as default… Click on 'Save' button and created our Account Interface. **Interface Fields Information: ** - Name: It can be Account, Contact or Case.. etc to notify your Interfaces - Statue: Deployed (It can be used) - Sequence: Ranking number (1) - Adapter: It is the connector - Source Name: Salesforce Objects (Account, Contact or Case.. ect.) - Operation Type: There are 4 types: - **Upsert**: To update on existed data and insert new data that isn’t existed yet in Message Monitoring. - **Update**: Only update on data that is already existed in Message Monitoring. - **Insert**:  Add all data in the Message Monitoring. - **Delete**: Delete all data in Message Monitoring. - Type: There are 2 Types: - **Inbound**: Import data into Salesforce - **Outbound**: Export data outside Salesforce ![](../images/2018/10/Book-2.png) We click on 'Save' and created our Account Interface. ![](../images/2018/10/Book-3.png) We click on the 'Account Interface' link and see the Interface Details. It is navigate to: ![](../images/2018/10/Book-4.png) **Step 3    How to do Mapping** To create the Account structure we choose our CSV Separator (2) in 'Source Definition' Area and click on Search (3) and choose your csv file to upload and then click on 'Save' (4). ![](../images/2018/10/Book-5-1.png) After you have saved the uploaded csv file you get the message that our upload was successful and click on 'OK'. ![](../images/2018/10/Book-6.png) We see now our account structure with the automatically generated account fields. ![](../images/2018/10/Book-7.png) After uploading the files you will have to drag any fields from Source to drop on Target. An External Id field is required to be used for synchronization with external system, so external id field must be unique in order to avoid duplicate records on each object. It is usually Name or AccountNo. ![](../images/2018/10/mapping.png) Here is an example of Description formula when you want to add any formula in: Tick on check box ( Formula box) at the right as in the picture and types any kinds of formula in. Billing_Street &" "&Billing_City &" " & Billing_Country Clicks on **Test Formula** to see an output if it is true or fail then **Save **formula**.** ![](../images/2018/10/FormulaInmapping.png) After you map all fields, do the formula and  choose the External ID, please Save. Just in case that you forget to save, all your Data Mapping will be lost later on. **Steps 4:  How to do Data Load?** Now we have finished our interface setup and go back to our Integration Details Page and click on 'Data Loader' link . On the Data Load page, you will have choose the same file (1) and Upload (2) again. ![](../images/2018/10/Capture-1.png) Data loader page navigate to: ![](../images/2018/10/Capture1-2.png) Select Import data -> next. Select the inbound interface-> next Select file format and comma separated value->next. Then upload the csv file and push the button. ![](../images/2018/10/Capture2-1.png) After you have selected the records click on 'Push' Button to upload the data into Salesforce and you get the message that the upload process started. We click on the 'Message Board' Button  and come to the Message Board. **Step 5    How to use Message Monitoring?** Storage usage will be found when you are on Message Board page. And Filter below will show to how to use or search different criteria, for example: ![](../images/2018/10/DataStorage.png) Below in the 'Filters'  area you can search for different criteria e.g. Integration Name, Interface Name, Message Status or by Date. - Filters: - Integration Name: You can choose which Integration you prefer to see the result - Interface Name: You can chose which Interface you prefer to see the result - Message Status: There are many types of Status, but there are 3 common using types: - **Green** Flag   =  The upload was successful and is **Completed** - **Red** Flag    = **Failed** - **Yellow** Flag  = **Pending**   Then click on Search. ![](../images/2018/10/Filters.png) - Messages Section You will be able to see Total Number of Records as well. - Type: Inbound or Outbound - Target: is target interface that is used to be integrated to - Statue: It shows which flag is green, red or yellow... etc. - Creation Date: It shows which date interface is created - Modification Date: It shows which date interface is Modified - **Button** - Select All:  The function of Select All button is to select all Message results -Deselect All: The function of Deselect All button is  to Deselect all Message results -Delete: The function of delete button is to delete only selected Messages -Deleted All: The function of Delete All button is to delete all Message results -Cancel: cancel selected Messages that is pending status -Cancel All: The function of cancel All button is to cancel all Pending Message results ![](../images/2018/10/Capture5.png) As you can see the status of uploaded record was green which means it was success or completed. In case that you want to see your Account Detail In the Message area, clicking on ‘Related To‘ to jump there. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use mapping? Title: 1. How to use mapping? Slug: how-to-use-mapping URL: https://help.skyvva.com/#article/how-to-use-mapping ================================================================================ # 1. How to use mapping? ## Learning Objectives:- This unit describes:- - What is the SKYVVA mapping tool? - Configuration of the SKYVVA mapping tool. #### Introduction In order to figure out how the **data** needs to be **formatted** or **mapped**. It must also explain the primary key in the source system. SKYVVA's Mapping tool is a tool to map other system objects and fields with the SFDC object field. A mapping is a collection of key-value pairs where each unique key maps to a single value. SKYVVA´s Free Dataloader is part of the SKYVVA´s Integration Cloud App in which Fields are mapped by a visual editor, data are transformed using a formula editor. #### What is SKYVVA Mapping Tool? SKYVVA's Mapping tool is a tool to map other system objects and fields with the SFDC object field. A mapping is a collection of key-value pairs where each unique key maps to a single value. Here we will map source fields with target object fields. Source fields are nothing but our Istructure. We can create Istructure as: - Manually - Uploading file in source definition - Using the Message type feature. #### Pre-requisite - We have to create [Integration](#)(Please refer [#article/what-is-an-integration-and-how-to-create-it](#article/what-is-an-integration-and-how-to-create-it)) - After the Creating integration next step is to create [Interface](#)([#article/1-what-is-an-interface-and-how-to-create-it](#article/1-what-is-an-interface-and-how-to-create-it)) #### Configuration of SKYVVA Mapping Tool This section will show you how to drag and drop fields to do mapping in Salesforce. **Step 1:-** Click on the Interface you created. Scroll down in the Interface detail page to Source definition section. **Step 2:- **To upload a file. First, you have to **Choose File** And **Save** it. As shown in the screenshot given below. ![](../images/2018/10/UploadFile.png) **Step 3:-** After uploading the file we need to drag fields from Source and drop it to Target. **Step 4:-** Select an external Id ("External ID field is required to be used for synchronization with an external system, so External ID field must be unique in order to avoid duplicate records on each object. It is usually Name, ID or AccountNo.) ![](../images/2018/10/mapping-1024x476.png)**Step 5:-** When you want to add any formula, Select a checkbox on Formula at the right as in the picture. Write formula in "Formula expression" window as :- (Billing_Street &""&Billing_City &"" & Billing_Country). **Step 6:-** Click on Test Formula to see the output.  It will be true or false. **Step 7:-** Save it. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] **1. **If it is failed, it means that your formula is incorrect. **         2.** In case you forget to save it, all your Data Mapping will be lost. [/su_box] ![](../images/2018/10/FormulaInmapping.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Message Monitoring? Title: 1. Message Monitoring Slug: message-monitoring-2 URL: https://help.skyvva.com/#article/message-monitoring-2 ================================================================================ # 1. Message Monitoring **Learning Objectives:-** This unit describes:- - What is message monitor? - How to use the message monitor in a different case, for example, searching by content, sorted by Date, etc? #### Introduction:- SKYVVA´s Free Dataloader is part of the SKYVVA´s Integration Cloud App where message monitoring shows the result of processed inbound or outbound Interface.  Here the graphical representation of processed data is displayed. Users can easily sort out the pass, fail or pending data. #### What is Message Monitoring? Message Monitoring is used to check the integration result after processing the Inbound or Outbound interface. The integration result includes Pending, Failed, Completed, Cancelled status and the reason why it failed.  Additionally, we can know the real Sobject is integrated successfully with completed status. When the interface gets processed, we can see the result on the message monitoring page. It can be in two formats: 1. For a flat file. 2. For tree view. In both cases, fields and functionalities are the same but the view of the record is different. #### Pre-requisite:- - We have to create [Integration](https://mybestoffernow.de/wp-admin/post.php?action=edit&post=3232). - Creating integration the next step is to create [Interface](https://mybestoffernow.de/wp-admin/post.php?action=edit&post=3234). Do mapping with the help of the SKYVVA mapping tool. - Upload data using Skyvva manual load feature. #### How to use message monitoring? We have to process interfaces to integrate data. Here, we will show how to use message monitoring. and we can apply the different types of filters to search out the uploaded data or records. we have a different type of filters as: ![](../images/2018/10/new2.png) Filters Section contains the following fields: - Integration Name: You can choose which Integration you prefer to see the result. - Interface Name: We can search for data/record with the interface name. With a single interface or with all interface. - Message Name: We can apply the filter on message name which can be indicated as eg: # IM#2019-08-06 11:14:33.218000 - Message Content(Data): We can search with message data. For example, we can search with name, city, Lname, Fname. - Maximum Of Records: - Transaction Id: We can apply this filter to search for data. Transaction Id is given from the caller and thus caller knows it and he can search with it to find the corresponding message with his transaction Id. - Working Basket Name: We can search with Working Basket is nothing but the basket where inbound processing baskets will store and waiting to process. - Date: We can apply the filter on the creation date and modification date. - From Date and To Date: We can search a record which is created in a specific time - Sort By: we can sort by creation date and medication date of records. - Message Direction: We can search with the inbound and outbound direction of data processing. - External Id: We can search with external Id field which is defined in object. And we can choose which one should become key. - Transfer Id: we can this filter to get the required result. - Message Status: There are many types of Status, but there are 3 common using types: –  New(Blue): New messages flag is shown in blue color. It means the message is just created but the processing has not started. – Complete Message (Green): Completed messages flag is shown in green color. Data process successfully. – Failed Message (Red): Red messages flag is shown in Red color. It means that the message processing fails somewhere because of incorrect or insufficient data. – Pending Message (Yellow): Yellow messages flag is shown in Yellow color. It means that the is in the queue to process. – Canceled (gray): Gray messages flag is shown in Yellow color. We can not delete the pending message directly first we have to cancel it. – Partial completed(): This status will be used for hierarchical interfaces. Whenever the child data fail parent message is set to partial completed status. We can see the fail, pending and completed messages in the following screenshot: ![](../images/2018/10/new1.png) You can see the Cancelled messages in the following screenshot: ![](../images/2018/10/new3.png) You can see the new messages with a **tree view** in the following screenshot: ![](../images/2018/10/import12.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]You can select None if you prefer to see all types of message flags.[/su_box] #### How to re-process fail and pending messages? ** Failed Messages** The message is Failed because of a lot of reasons, you can see it in the Comment. This is one of many reasons, such as it doesn‘t have some fields to fulfill and complete the information. As you can see the screen below, it is Failed since the Account Required fields are missing [Name]. Click on Edit and fill the missing information then Reprocess. ![](../images/2018/10/FailMessage.png) Click On edit. ![](../images/2018/05/Reprocessfailmsg-300x188.png) **Pending Message** The message is Pending because of a lot of reasons. This is one of many reasons, it is waiting for other Failed Message to be Completed first (Message queued – Waiting for Message=IM#2017-06-21 11:08:38.853001 to be processed first). You can read reasons it is Pending in the Comment as an example below. Note: You can not delete Pending Message. You will have to Cancel it to become Grey first. ![](../images/2018/05/pendingMSg-1024x392.png) After you Reprocess the Failed Message to become Completed, Check on the Pending Message and click on button Reprocess ![](../images/2018/05/pendingReprocess-1024x394.png) After Reprocessing the pending message it should display as: ![](../images/2018/10/ReprocessingResult.png) Pending Message has become Failed because it required the missing Name. If it doesn‘t require the missing name and has completed information, it would become Completed. ![](../images/2018/10/FailMessage-1.png) The  Failed Message because (After evaluating the data source (Name), no data passed for the mapped external id field (Name). ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use message reprocessing? Title: 10. How to use message reprocessing? Slug: how-to-use-message-reprocessing URL: https://help.skyvva.com/#article/how-to-use-message-reprocessing ================================================================================ # 10. How to use message reprocessing? **Learning Objectives:-** This unit describes:- - Describe what is message processing and reprocessing? #### Introduction:- This tutorial explains to the user what message reprocessing is and why we need this functionality. It describes the manual reprocessing and the automatic reprocessing done by the "MessageReprocess" job. It also explains which status makes sense to be reprocessed and which not. #### What is MessageReprocess Job? MessageReprocess Job is the process to be used for reprocessing failed and a pending message from the previous integration. It might be failed if the user does not edit or edit wrong business logic in IMessage Data. #### Configuration of MessageReprocessing. Following, we will show you how to use the MessageReprocess job to correct the message records in different cases. The different cases we support are:- - **Pending Message (Yellow)** - **Failed Message (Red)** #### Pending Message:- The message can be Pending because of a lot of reasons. They have been shown in Comment. It is one of many reasons that causes Pending, as an example below "This message has not met a condition of all workflows." [su_box title="Note" box_color="#2a8af0" title_color="#000000"]You must correct your data to meet the condition of all workflows first before you can reprocess.[/su_box] **-  Manual Reprocess** After you correct your data and ready for reprocessing, please selects on which messages you want to reprocess then click on button Reprocess. ![](../images/2018/10/pendingReprocess1-1.png) **After Reprocessing:-** ![](../images/2018/10/ReprocessingResult1.png) -  **Schedule MessageReprocess Job** Navigates to Integration Admin -> Scheduler -> MessageReprocess - **Finds which Integration name you would like to use schedule.** - **Sets how many minutes you would like the schedule to run.** - **Starts.** ![](../images/2018/10/Schedular1.png) After that, Next Schedule Run will be appeared as in the picture mentioned below. You will be able to see the actual time that the schedule is going to run "5.24 **AM**".![](../images/2018/10/SchedularTime_1.png) ![](../images/2018/10/SchedularResult_1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Pending Messages sometimes might have become failed because of missing some field.[/su_box] #### Failed Messages:- The message is Failed because of a lot of reasons, they have been shown in the Comment. This is one of many reasons, such as it missed some fields and incompleted. As you can see the screenshot below, it is** “After evaluating the data source (accountname), no data passed for the mapped external id field (Name) **and **After evaluating the data source (accountname), no data passed for the mapped external id field (Name).“** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to configure Alerting? Title: 1. How to configure the Alerting Setup for Message Processing? Slug: how-to-configure-alerting URL: https://help.skyvva.com/#article/how-to-configure-alerting ================================================================================ # 1. How to configure the Alerting Setup for Message Processing? **Learning Objectives:-** **This unit describes:-** - Describe what is Alerting functionality. - Configuration use Alerting. #### Introduction:- - An alert in the context of the **SKYVVA** Integration App is a powerful feature designed to automatically send email notifications based on predefined rules and conditions. This functionality enables users to stay informed about important events or changes without constantly monitoring the system. Alerts can be set up on the interface level, providing a more granular and targeted approach to managing notifications. By configuring alerting rules directly at this level, you ensure that the notifications are precise and relevant to specific scenarios, making them more actionable. - One of the key advantages of configuring alerts on the interface level in **SKYVVA** is that these rules take precedence over any settings established at the integration level. This means that if an alerting rule is defined on the interface, it will overwrite and supersede any existing configurations at the integration level. This hierarchical structure ensures that your most critical alerts are always prioritized, giving you greater control over how you manage and respond to integration-related events. The ability to customize alerts in this way not only streamlines communication but also enhances your overall efficiency when using our Integration App, making it easier to identify issues and act swiftly to address them. #### What is Alert? - The alert setting on the integration level is used as a global setting in case the user forgets to set up an alerting rule on the interface level. If the user sets the alerting rule on the interface level then this should be valid and overwrite the setting on integration if any exist. - Interface-level users set a value that will overwrite the value on the integration level. If the user has not set anything on the interface level then take the value from the integration level. So the value on the integration level is like a default value for all interfaces that don’t have any alert rule. We have a different type of alerting rules on the integration & interface level - Send Email SFDC User - CreateTask for User - Send Email External Mails - Chatter group Name **Case1: None-realtime Alert creation in the category Message-Based Alert** The 'None-realtime Alert creation' option in the **SKYVVA** integration app, using the 'Message-Based Alert' category, focuses on detecting failed business messages. Instead of generating immediate alerts, it relies on the 'DoAlert' scheduler to manage notifications. When a failure is identified, the scheduler triggers an alert and sends a notification to the specified email address. This setup ensures that message failures are handled efficiently through scheduled checks, rather than real-time alerts, streamlining the monitoring process. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Users can set the option to create non-real-time alerts on the interface, interface group, and integration.[/su_box] - ***Message-Based Alert****: means that it checks only the root business message for failures, triggering an alert.* - ***Object-Based Alert: this ****means that it checks only the root business message for failed or partially completed messages.* Create the Integration, then navigate to the integration details to find the **Alerting Setup for Message Processing and Alert Channel Configuration section** - Tick None-realtime Alert creation - Select Alert Category: Object-Based Alert - Create a Task for the User - Input Chatter Group Name - Send Email SFDC User or Send Email External Mail ![](../images/2018/10/image_2024_10_18T13_01_13_240Z.webp) - Start the **'DoAlert'** scheduler to receive notifications. ![](../images/2018/10/image_2024_10_18T13_03_10_406Z.webp) - When a message fails, it will check. Subsequently, an email will be sent. ![](../images/2018/10/image_2024_10_18T13_04_18_739Z.webp) - Here's the message failed alert to email. ![](../images/2018/10/image_2024_10_18T13_05_29_170Z.webp) - After the email alert, the field 'Is Alerted' will be checked. ![](../images/2018/10/image_2024_10_18T13_06_41_050Z.webp) - Here’s the Task that was created. ![](../images/2018/10/image_2024_10_18T13_07_38_972Z.webp) - Here’s the Task that was created. ![](../images/2018/10/image_2024_10_18T13_08_37_071Z.webp) **Case2: None-realtime Alert creation in the category Object-Based Alert** The 'None-realtime Alert creation' option in the **SKYVVA** integration app, combined with the 'Object-Based Alert' category, monitors business root messages for failures or partial completions. Unlike real-time alerts, this alert is triggered by the 'DoAlert' scheduler. When an issue is detected, the alert process is initiated, and a notification is sent via email. This setup ensures that business-critical message errors are caught and communicated, even if they are not addressed in real time. This approach is useful for tracking message flow and handling errors with a more scheduled, organized response. Setting the Alerting Setup for Message Processing and Alert Channel Configuration. - Tick None-realtime Alert creation - Select Alert Category: Object-Based Alert - Create a Task for the User - Input Chatter Group Name - Send Email SFDC User or Send Email External Mail. ![](../images/2018/10/image_2024_10_18T13_18_19_310Z.webp) - Start the **'DoAlert'** scheduler to receive notifications ![](../images/2018/10/image_2024_10_18T13_19_22_496Z.webp) - When a message fails, it will check. Subsequently, an email will be sent. ![](../images/2018/10/image_2024_10_18T13_20_40_520Z.webp) - Here's the message failed alert to email. ![](../images/2018/10/image_2024_10_18T13_21_39_432Z.webp) - After the email alert, the field 'Is Alerted' will be checked. ![](../images/2018/10/image_2024_10_18T13_22_36_940Z.webp) - Here’s the Task that was created. ![](../images/2018/10/image_2024_10_18T13_23_30_934Z.webp) - Here’s the Group that was created ![](../images/2018/10/image_2024_10_18T13_24_47_169Z.webp) **Case3: Switch off Message Processing Alert** When using the **SKYVVA** Integration App, selecting the 'Switch off Message Processing Alert' field is expected to prevent notifications from being triggered for that particular message. This feature allows users to manage message alerts more efficiently by suppressing unnecessary notifications and focusing only on messages that require attention. This setting is particularly useful in scenarios where non-critical messages are processed, and alerts are not needed. Proper utilization of this option helps streamline workflow and reduces the distraction of irrelevant notifications, improving overall productivity within the **SKYVVA** integration environment - Setting the Alerting Setup for Message Processing and Alert Channel Configuration. ![](../images/2018/10/image_2024_10_18T13_26_08_436Z.webp) - Start the **'DoAlert'** scheduler to receive notifications. ![](../images/2018/10/image_2024_10_18T13_27_09_046Z.webp) - Here's the scheduler executed. ![](../images/2018/10/image_2024_10_18T13_30_04_238Z.webp) - Result: After the 'DoAlert' scheduler is executed, the Task is empty. ![](../images/2018/10/image_2024_10_18T13_31_05_749Z.webp) #### Summary Now the user understands how to configure the alert setting on the integration level acts as a default if no alerting rule is set on the interface level. When a rule is set on the interface level, it overrides the integration-level setting. Integration-level alerts serve as a global fallback. Alert types include sending emails to SFDC users, creating tasks, emailing external recipients, and notifying Chatter groups, all using the **SKYVVA** integration app. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to configure Message and logs deletion? Title: 1. How to configure Message and logs deletion? Slug: how-to-configure-message-and-logs-deletion URL: https://help.skyvva.com/#article/how-to-configure-message-and-logs-deletion ================================================================================ # 1. How to configure Message and logs deletion? **Learning Objectives** #### This unit describes - How to configure Message and logs deletion? #### Introduction To ensure your data are not exceeded storage limit, there are a number of functions available in SKYVVA, including Delete Message, Delete Basket Histories, Delete Logs, Delete Log File, Log Levels to Delete, Delete Attachments of Bulk Data set in the Bulk Control Board, and Delete Basket and Attachment. However, these functionalities need to be configured and activated to perform the cleanup operation. This documentation is written to guide you on "how to use each functionality". [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We provide a central scheduler called 'DoMaintenance' which locates among others in the Scheduler tab. It provide all the functionalities to keep the data storage clean. You have to activate and run this scheduler otherwise no data cleaning activities are carried out. The scheduler 'DoMaintenance' is a global scheduler. It exists only 1 in SKYVVA and process all integrations. This is the same as Checker. You can see this because in the column 'Integration or Interface Group or Interface' there is empty.[/su_box] #### Functional Explanation #### 1. Delete Message Delete Message is one of the functionalities that enable the deletion of messages. The message deletion is not a default function. It works only after they set the flag 'Delete Message' on the integration. The performance is to delete the completed messages. With just a simple check, you can eliminate the rest of the completed messages. To be configured, you have followed the screenshot below: - Enter the Integration page and Message Setup section. The checkbox on Delete Message to enable the performance. ![](../images/2018/10/img1-1.png) - There are two ways to find the Scheduler (DoMaintenance): - The first way is using the Scheduler tab in the Admin page - We have a Separate tab 'Scheduler' in the integration detail page. **1. ****Using Scheduler Tab in Admin page to find DoMaintenace:-** Get into Integration Admin and select on Scheduler Tab. Try to find the “Others” section and set the time for maintenance. ![](../images/2018/10/img3-2.png) **        2. Using Integration detail page to find Scheduler Tab:-** Enter the Integration detail page and click on Scheduler Tab. ![](../images/2018/10/img2-2.png) #### 2. Additional Message Statuses to Delete This function is no different from the above function since they attempt to delete messages. However, this functionality will delete the other status which is Pending and Fails. You can delete as your desire as long as you make the chosen for a specific status. To configure, please follow the screenshot below:- ![](../images/2018/10/img4-2.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you want to find the Scheduler (DoMaintenance) please kindly look at the content 1.[/su_box] #### 3. Number of Days to Keep Messages This functionality indeed will keep the messages accordingly to your determination. The messages will keep until the day you want them to delete. You can put any value number in here. Actually there is two Number of Days to Keep Messages which located in Integration level and Interface level. However, Interface is the first priority. It dominates over the Integration level. Whenever the scheduler (DoMaintenace)run it will automatically check on Interface first. So the messages will delete according to the value you put on the Interface level. The value number that you put in the Number of Days to Keep Messages is to determine the time you want your messages to be deleted. So If you leave the empty value, it means that you want to delete the messages immediately. Likewise, if you put 0 value, the messages will be deleted immediately too. To configure, please follow the screenshot below:- ![](../images/2018/10/img5-2.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you want to find the Scheduler (DoMaintenance) please kindly look at the content 1.[/su_box] #### 4. Delete Basket Histories When it comes to basket deletion, Delete Basket Histories appears to mind. The configuration isn’t hard to follow at all. The Maintenance scheduler will perform the History Deletion of an Integration. Furthermore, you can click on “Delete” or “Delete All” buttons in the Batch Control Board to clear all baskets. To configure, please follow the screenshot below ![](../images/2018/10/img6-2.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you want to find the Scheduler (DoMaintenance) please kindly look at the content 2.1.[/su_box] #### 5. Delete Logs Delete Logs locates, in Message Setup, Integration page, Its function is not different from the above two. Do Maintenance plays an important role in performing the schedule to cleanup Logs deletion. If you’re looking for steps to configure, you must follow the screenshot below: ![](../images/2018/10/img7-2.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you want to find the Scheduler (DoMaintenance) please kindly look at the content 2.1.[/su_box] #### 6. Delete Log File With this function, you can simply enable us to delete Log File. Here is the screenshot to ensure you to configure: ![](../images/2018/10/img8-2.png) #### 7. Log Levels to Delete Log Levels to Delete contains three levels such as Error, Warning, and Info. The performance of this function is based on the selected level. The steps of configuration are as follow: ![](../images/2018/10/img9-2.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you want to find the Scheduler (DoMaintenance) please kindly look at the content 2.1.[/su_box] #### 8. Delete Attachments of Bulk Data set in the Bulk Control Board:- There are three sections of Bulk Data which contain the “Delete” button. These buttons are created to delete bulk attachment that store in Bulk Control Board. However, the Maintenance scheduler isn't correlated with this function. If you want to perform the deletion for Attachment, just click on “Delete” or “Delete All” buttons. ![](../images/2018/10/img10-2.png)![](../images/2018/10/img11-1.png) #### 9. Delete Basket and Attachment This functional uses to delete Baskets and Attachment in the Batch Control Board. To delete Basket, just simply click on “Delete”, “Delete All”, or Cancel which locate in Batch Control Board screen. Furthermore, after baskets were deleted, attachments that link to the basket is deleted too. ![](../images/2018/10/img12-1.png)![](../images/2018/10/img13-1.png) **Summary:-** To sum up, if checkbox those functionalities they will delete: **1. Delete Message** - delete completed message in Messages Monitoring Board - delete completed message in Recycle Bin **2. Additional Message Statuses to Delete** - delete failed and pending messages in Messages Monitoring Board **3. Number of Days to Keep Messages** - delete the messages accordingly to the days you set the value **4. Delete Basket Histories** - Scheduler deletion using DoMaintenance - delete all histories baskets which store in Histories Basket section **5. Delete Logs** - Delete log in log monitoring **6. Delete Log File** - Delete log attachment in log monitoring **7. Log Levels to Delete** - Delete log base on the level user selected, error, warning, and info. **8. Delete Attachments of Bulk Data set in the Bulk Control Board** - Manually delete attachment **9. Delete Basket and Attachment** - Manually delete by click on “Delete” or “Delete All” - Delete all baskets first then delete all attachment that links to baskets ================================================================================ Book: Tutorials Section: Tutorials Subsection: Control Board Title: 8. How to use Batch Control Board Slug: how-to-use-batch-control-board URL: https://help.skyvva.com/#article/how-to-use-batch-control-board ================================================================================ # 8. How to use Batch Control Board ## Learning Objectives After completing this unit, you’ll be able to: - Describe what the batch control board is. - Comfortably use the batch control board. #### Introduction A job runs to process batches that use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. All processed batches are managed on the batch control board. **What is the Batch Control Board?** Batch Control Board is a dashboard where we can monitor Inbound Processing, Interfaces, Queues, and Schedulers. Each tab holds a different function. The board offers us to facilely monitor the batch processing. This document will guide us How to utilize the Batch Control board in detail. Batch Control Board is use for mass data which is less than 5000. #### How to use Batch Control Board Batch Control Board is located at the 'Detail' tab of Integration and exists in the 'Custom Links' section. We use the Batch Control Board to store data temporarily. To search the Batch Control Board follow the given steps : - Login to Salesforce and select Integration tab then click on Integration Detail page as per the screenshot shown below: ![](../images/2018/10/batch-control-1-1.png) - Select the 'Batch Control Board' which is on 'Custom Links' section ![](../images/2018/10/batch-control-5-e1555310139500.png) This is how the 'Batch Control Board' looks like the screenshot above. #### Monitoring Batch Control Board When you open the Batch Control board we will find four tabs available which are Inbound Processing, Interfaces, Queues, and Scheduler. Each tab has different functions and displays things relatable with Batch processing. The following steps will show you how to monitor each tab: #### Inbound Processing Inbound Processing is a tab which stores baskets that have inbound direction. There are three sections available in this tab. That section includes Filter, Working Baskets and History Basket. All the incoming basket will store in Working Basket until you set the schedule to run or manually process them. When the baskets are done processing they will move to the History Basket section automatically. #### Filter The filter is a screen where we can search the baskets. We can filter the baskets based on: - Created Date - Modified Date. - The result will reflect as below:- ![](../images/2018/10/batch-control-2-1-e1555319827412.png) #### Status: **Status** **Description** **Init** Basket is created. **Worker** Basket is the pass to the worker. **Processing** Basket currently processes by the worker. **Completed** The Basket has been successfully processed. **Failed** Basket processing gets failed. **Canceled** The Basket was canceled by the Administrator. Status Init This is the first status when the attachment is created. When a message is sent utilizing batch mode an affixment gets engendered in the working basket and the status is set to "Init". The Annexation Processing Scheduler will only cull ingresses to be processed which has this status. From this status, the affixment can become the status "Worker". Status Worker The Affixment Process Scheduler will fetch annexation with status "Init" and pass these affixments to the soi-disant Annexation "Worker". The Annexation Worker is an internal Skyvva component that will process the annexation e.g. deserialize and post the message resulting from the affixment. The Annexation Worker transmute the status from "Worker" to "Processing". Status Processing The Annexation Worker sets this status when it processes the affixment. When the Affixment Worker can process the annexation prosperously it will abstract this affixment from the working basket and move this annexation to history basket. If the Annexation Worker can not process the affixment it will set the status to "Failed" and the annexation is kept in the annexation basket and not moved into the history basket. Status Failed The Affixment Worker sets this status when it gets an error while processing the annexation. The annexation remains in the working basket and will not move into the history basket. All affixments with this status will be pickup by the Annexation Reprocess Scheduler. Status Cancelled This status can be set manually by a utilizer. A utilizer can abrogate the affixment from the working basket before it gets processed. #### Interface List of all interfaces which are processing on batch control board. This tab exhibit the interfaces that store in an Integration. You can facilely check or monitor them. If you land on the Batch Control board, just simply click on the interface tab then you will visually perceive all the interfaces. However, this tab is not editable like the Interface tab in the Integration detail page. #### Interface Group: An interface group is a unit to the group where logical interfaces come together. For example, you can group interfaces that are cognate to each other e.g. Account and Contact to one interface group. There are two kinds of interface group: :- Business related logical group :- Technical group We can apply this filter to probe data referring to a concrete interface group. #### Working Baskets Working Baskets section is a place where all the inbound processing baskets get store here and wait to process. This section contains some buttons such are Select All, Deselect All, Delete, Delete All, Cancel, Delete All Cancelled, Reprocess and Refresh. Likewise, this section withal exhibits the different statuses of affixments which is very facile for us to monitor the processing of the annexations. #### History Basket History Basket section is a location to store the processed baskets which are peregrinated from Working Baskets. If you opt to emaculate all the history baskets you can click on Delete or Delete All buttons. You can additionally use 'Do maintenance' (Scheduler) to perform the emaculate operation. #### Queues This tab is utilized to check 'How the queues work?'. You can filter queues base on Interface Group, Interface Name, and Status. Filter by Interface Group, Interface Name, and Status. ![](../images/2018/10/batch-control-4-1-e1555322263880.png)Queue inherit the priority from their interface group and thus a Queue will be a Prio-High, Prio-Medium or Prio-Low Queue. Queue Status: Status Worker This status is a temporary status set by the scheduler. Customarily most of the status is set by the worker because the worker is the one who does the job of processing the data package/queue passed from the scheduler.  Refer to chapter "11 Task disunion between Scheduler and Worker" to understand the task between scheduler and worker. This status is a helpful token that the scheduler has passed the data package/queue to the worker. When the worker starts to process the data package/queue it will transmute the status from "Worker" to "Running". Status Running This status is set by the worker. When a data package/queue is passed from the scheduler to the worker the status of this queue is "Worker". Then the worker transmutes the status from "Worker" to "Running". The following change from status "Running" can be transpired. If the queue is processed prosperously then the status will set to "Ready". This is valid for both queue type e.g. for EO- and EOIO-Queue. If an error occurred for whatever reason then the status is set to "Failed" for an EO-Queue and to "Hold" for an EOIO-Queue. Status Failed This status is set when processing a data package/queue got failed. This status is only utilized for the EO-Queue. For the EOIO-Queue the status can be used is "Hold" and not failed. If the processing of the EO-Queue is not ceased plenarily this status reflect an ephemeral status and can be set for example to "Ready" when next time the processing is prosperous. Processing an EO-Queue is not blocked if error encountered for EOIO-Queue. Because the nature of EO-Queue is overtaken of data which can be transpired and that we already understood when defining interface group/queue with the type EO. Status Hold This status is set when processing a data package/queue got failed. This status is only utilized for the EOIO-Queue. For the EO-Queue the status can be used is "Failed" not hold. If the status is set to "Hold" then the processing of this queue is ceased because we can create an overtaken of data. There is a reprocess mechanism of the affixment by the affixment reprocess scheduler. Refer to chapter "10 Variant of scheduler" for understanding the variant of a scheduler. For some error, the reprocess can resolve the error and ergo will reset the status of the queue to "Ready". Then the blocking of the queue will be relinquished. In some circumstances, because the error cannot be resolved automatically we will require the administrator to resolve the error situation and reset the queue status manually. Stop by Admin This status results from an admin action. An admin may want to stop the queue because of maintenance work. Another reason could be that we don't opt that the queue X should be processed and ergo we intentionally stop this queue. This is for example because we opt to have more resources for processing other queues than queue X. #### Scheduler There are two schedulers available in the Scheduler tab which are 'Attachment Process' and 'Attachment Reprocess '(reprocess the fail annexation). These schedules are for categorical integration. You can set the time and commence the schedule or refresh it. ![](../images/2018/10/batch-control-3-1-e1555321183796.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Control Board Title: 4. How to use Bulk Control Board Slug: how-to-use-bulk-control-board URL: https://help.skyvva.com/#article/how-to-use-bulk-control-board ================================================================================ # 4. How to use Bulk Control Board **Learning Objectives:-** This unit describes - What Bulk Control is Board? - Why we need it. - How to use it. #### Introduction Bulk Control Board is a place where you can monitor Inbound Processing, Interfaces, and Schedulers. These tabs are using for bulk processing performance. Bulk Control Board is using for mass data. #### How to use Bulk Control Board? Bulk Control Board is located in the Integration page detail and exists in the Custom links section. We use Bulk Control Board to store data temporarily. If you want to know how to use this board please see the following details given below:- - #### Finding Bulk Control Board:- In order to find Bulk Control Board please follow the steps given below: - Login to salesforce, select the integration tab and then click on the integration you created and then click on the detail page:- ![](../images/2018/10/Test-Control-Board.png) 2. Create Interface. ![](../images/2018/10/bulk8.png) 3. Push data into salesforce through Agent. 4. Select on Bulk Control Board which is on the Custom Links section. ![](../images/2018/10/bulkCB.png) It will navigate to: ![](../images/2018/10/Bulkcontrolboatrd.png) This is how Bulk Control Board looks like the screenshot shown above. #### Monitoring Bulk Control Board:- Bulk Control Board is located in the Integration page detail and exists in the Custom links section. We use Bulk Control Board to store data temporarily. If you want to know how to use this board please see the following - #### Inbound Processing:- Inbound Processing tabs contain 5 differences sections which are Filter, Bulk Interface Scheduler, Bulk Data Inbox, Bulk Data Processing, and Bulk Monitor. Each section plays different roles in bulk processing. The following will describe in detail each section and how they work. - #### Filter The filter is a screen where you can search for Interface Name. If you filter for a specific interface, the result will show each section as below: ![](../images/2018/10/filter.png) ![](../images/2018/10/Search.png) #### Bulk Interface Scheduler:- This section uses to monitor two schedulers Processing and Reprocessing. You can only Start/Stop the schedule here. If you want to set the time for your attachment processing, you have to enter the Scheduler tab. It only shows Job Id, Last Run Date, and Next Run Date. ![](../images/2018/10/bulkSchedular.png) #### Bulk Data Inbox:- When data pushed from the client using Bulk API, they will appear in this section. This means it contains new incoming data. The bulk processing scheduler will fetch the data from this section and process. So it is a place to store all the attachments which have been integrating from the external system. It contains 6 buttons which are Delete, Delete All, View List, Process Bulk Attachment, Upload, and Refresh. If you want to clear the attachment you can click on Delete and Delete All buttons. To process manually, you have to click on Process Bulk Attachment. #### Bulk Data Processing:- Bulk Data Processing is used to store data that are processing. These data will remove after it has done to the Bulk Monitor section. Whenever all the attachments that store has faced some problems like crashing you can use the Delete button to eliminate them. But if you want to stop this attachment processing you need to go to Apex job to abort them. Otherwise, the attachment will keep on processing. You can do reprocessing by checkbox and click on the “Re-Initialload” button. ![](../images/2018/10/bulkp.png) #### Bulk Monitor:- On the other hand, all the attachments will also move to “Bulk monitor”. In this section, you can monitor the total records of attachments, total batch and batches that had processed. Likewise, you can also know if the attachment is completed, failed or pending. ![](../images/2018/10/dataMonitoring.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Control Board Title: 5. How to use CDC Control Board Slug: how-to-use-cdc-control-board URL: https://help.skyvva.com/#article/how-to-use-cdc-control-board ================================================================================ # 5. How to use CDC Control Board **Learning Objectives :-** After completing this unit, you’ll be able to: - Explain the CDC feature. - Comfortably use the CDC control board. **Introduction** This tutorial will exhibit how can we utilize Change Data Control (CDC) for handling data vicissitudes in Salesforce. We can customize the data changes of any sObject and sent out  The client. It fortifies an asynchronous mode to accumulate transmuted data which we call the change pointer and sent out to the client. The main difference to the streaming API of Salesforce is that data can be bulk as astronomically immense data. Furthermore, customers can liberatingly schedule when the data will be sent e.g. every 5 minutes, 30 minutes, etc... With this feature, the customer doesn't require to develop such an app to amass data change and sent out to the client. Just use SKYVVA CDC. **What is CDC Control Board?** CDC Control Board is a dashboard where we can monitor Change Pointer, Interfaces and Scheduler. Each tab holds different functionality. Change Pointer is a table that stores change pointer records. So we can facilely monitor them on Change Pointer table in CDC Control Board rather than on the Integration Admin tab. This withal applies for Interfaces and Schedulers tab. **How to use CDC Control Board** CDC Control Board monitor the CDC processing result. It located in Integration page detail and exist in the Custom links section. Follow the given steps to use the CDC control board. **Step1:** Create an Adapter. **Step2:** Create Integration. **Step3:** Create Outbound Interface **Step4:** Configure CDC. Refer to this tutorial to configure CDC  [What is CDC and how to configure it?](#article/how-to-use-cdc-control-board) **Step5**: Go to CDC Control Board by CDC Control board custom link. ![](../images/2018/10/cdc.png) Click on Link. It will navigate to the following screen. ![](../images/2018/10/CDCBoard.png) **Step6: Monitoring CDC Control Board** When you open the CDC Control board you will find three tabs available which are Change Pointer, Interfaces and Scheduler. Each tab has different functions and displays things relatable with CDC. The following steps will show you how to monitor each tab: Change Pointer Change Pointer is a table that stores change pointer records. It is written every time a transaction modifies certain fields. The records are created by CDD. The records will store here until you set the scheduler (CDT) to transfer them to the external system. To monitor Change Pointer, just simply: - Go to Change Pointer tab - Filter the Integration Name, Interface Name and the status of the record you want to display - Click on the “Search'' button.  The result will display according to the status you set ![](../images/2018/10/Untitled3.png) We can Apply filters : **Filters** **Description** **Interface Name** Outbound Interface on which CDC configured. **Status** Two type status. New and **Max Number of Record** Filter on the number of records. **Application Id** Application Id is the Sobject Id. **Date** Filter on created or modified date **Sort by & Order by** Sort by creation date. Filter on Ascending or descending. **Interface** This tab displays the interfaces that store in an Integration. You can easily check or monitor them. If you land on CDC Control board, just simply click on interface tab then you will see all the interfaces. However, this tab is not editable like the Interface tab in the Integration detail page. **Interface Group** An interface group is a unit to the group where logical interfaces come together. For example, you can group interfaces that are cognate to each other e.g. Account and Contact to one interface group. There is two kinds of interface group: =>Business related logical group =>Technical group We can apply this filter to probe data referring to a concrete interface group. **Queue** Queue inherit the priority from their interface group and thus a Queue will be a Prio-High, Prio-Medium or Prio-Low Queue. ![](../images/2018/10/Untitled4.png) Queue Status: Status Worker This status is a temporary status set by the scheduler. Customarily most of the status is set by the worker because the worker is the one who does the job of processing the data package/queue passed from the scheduler. This status is a helpful  token that the scheduler has passed the data package/queue to the worker. When the worker starts to process the data package/queue it will transmute the status from “Worker” to “Running”. Status Running This status is set by the worker. When a data package/queue is passed from the scheduler to the worker the status of this queue is “Worker”. Then the worker transmutes the status from “Worker” to “Running”. The following change from status “Running” can be transpired. If the queue is processed prosperously then the status will set to “Ready”. This is valid for both queue type e.g. for EO- and EOIO-Queue. If an error occurred for whatever reason then the status is set to “Failed” for an EO-Queue and to “Hold” for an EOIO-Queue. Status Failed This status is set when processing a data package/queue got failed. This status is only utilized for the EO-Queue. For the EOIO-Queue the status can be used is “Hold” and not failed. If the processing of the EO-Queue is not ceased plenarily this status reflect an ephemeral status and can be set for example to “Ready” when next time the processing is prosperous. Processing an EO-Queue is not blocked if error encountered for EOIO-Queue. Because the nature of EO-Queue is overtaken of data which can be transpired and that we already understood when defining interface group/queue with the type EO. Status Hold This status is set when processing a data package/queue got failed. This status is only utilized for the EOIO-Queue. For the EO-Queue the status can be used is “Failed” not hold. If the status is set to “Hold” then the processing of this queue is ceased because we can create an overtaken of data. There is a reprocess mechanism of the affixment by the affixment reprocess scheduler. Refer to chapter “10 Variant of scheduler” for understanding the variant of the scheduler. For some error, the reprocess can resolve the error and ergo will reset the status of the queue to “Ready”. Then the blocking of the queue will be relinquished. In some circumstances, because the error cannot be resolved automatically we will require the administrator to resolve the error situation and reset the queue status manually. Stop by Admin This status results from an admin action. An admin may want to stop the queue because of maintenance work. Another reason could be that we don’t opt that the queue X should be processed and ergo we intentionally stop this queue. This is for example because we opt to have more resources for processing other queues than queue X. **Alert** This alert tab is used for monitoring the CDC table. If the threshold from the alert tab is smaller than the CDC table value, a notify email will be sent to the assigned alert channels. We have a different type of alerting rules on the integration & interface level - Send Email SFDC User - CreateTask for User - Send Email External Mails - Chatter group Name ![](../images/2018/10/Untitled5.png) **Scheduler** There are some schedulers available in the Scheduler tab which are Change Data Detection (CDD) for Integration, Change Data Transfer (CDT) for Integration and Change Data Transfer SKYWWA DefaultIG Outbound for Interface Group. You can set the time and start the schedule or refresh it. Note: If you manually create more Interface Group then they will display in the Scheduler tab. ![](../images/2018/10/Untitled6.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Overview of SKYVVA Scheduler Title: 21. Overview of SKYVVA Scheduler Slug: overview-of-skyvva-scheduler URL: https://help.skyvva.com/#article/overview-of-skyvva-scheduler ================================================================================ # 21. Overview of SKYVVA Scheduler This tutorial explains what SKYVVA Schedulers are and why do we need them. It describes each overview of scheduler. ### 1 What is SKYVVA Scheduler? **SKYVVA** Schedulers is a program that starts and handles jobs automatically. Each scheduler has a different purpose. These functions include Agent Scheduler, Basket Processing Scheduler, Bulk Processing Scheduler, CDD&CDT Scheduler, doMaintenance Scheduler, Message Reprocessing Scheduler, Basket Reprocessing Scheduler, and Checker Scheduler. ### 2 The functionality of SKYVVA Scheduler These schedules are important. They play different roles. To know more detail about these schedulers, you can check them below: **2.1 Agent Scheduler** Agent Scheduler is one of the **SKYVVA** schedules which is used in agent for running integration service. You can set up the scheduler as your wish. To find Agent Scheduler If you want to know where Agent scheduler is, please see the steps below: -  Run Agent ![](../images/2018/10/img-1.png) - Click on Integration Scheduling ![](../images/2018/10/img-2.png) - Select Property File ![](../images/2018/10/img-3.png) **Prerequisite** Before setup the scheduler, there are some properties you must know: - **Schedule Mode →**There are two types of modes that you can choose. These modes are Processing and Reprocessing. - **Integration Name →**The name of your integration. - **Interface Name →**The name of your interface in an integration. - **Integration Mode →**The direction of integration. They are Inbound and Outbound - **ON&OFF →** When you check this radio button it means you activate the scheduler to run. - Daily Frequency: 1. **Run at→** If you check this button it means you want the scheduler to run once a day but at a specific time. 2.** Run every→** The scheduler will run every hour or minute depending on you who set them up. If you want to run every X hour then you have to choose Hours. However, you have to choose the starting time along with the ending time you want it to end. - **Weekly Frequency →** The default is all day is selected. It means the scheduler will run every day. But if you want to skip one day or more you can deselect that day. - **Monthly Frequency →** The function of this one is similar to the above. If you want the scheduler to skip then deselect the month you don’t want to run. ### To set Agent Scheduler This section will be explained in detail how to set Agent Scheduler. To set the scheduler, you can follow the steps below: - Select Integration Scheduling ![](../images/2018/10/img-2.png) - Choose the schedule Mode: Processing or Reprocessing - Choose integration, Interface Name - Select Integration Mode: Inbound or Outbound - Click on ON radio button - Choose the one of Frequency you want to set for running - Click Save. ### 2.2 Basket Processing Scheduler Basket Processing Scheduler is used to process baskets attachments. The schedules are for a specific integration. You can set the time and start the schedule or refresh it. **To find Basket Processing Scheduler** Batch Processing Scheduler is located in Batch Control Board, Integration page detail and Integration Admin Tab. To find Basket Processing Scheduler, please see the steps below: - Batch Control Board: - Log in to Salesforce and enter Integration page detail - Click on Batch Control Board ![](../images/2018/10/img-4.png) - Click on Scheduler Tab ![](../images/2018/10/img-5.png) ### 2. Integration Detail Page - Log in to Salesforce and enter Integration Detail Page. ![](../images/2018/10/img-7.png) ### ### 3. Integration Admin Tab - Log in to Salesforce and select on Admin Tab ![](../images/2018/10/img-8.png) ### 2.3 Bulk Processing Scheduler Bulk Processing Scheduler is used to process bulk attachments which are with the huge record at high speed. You can set time intervals in the bulk processing scheduler of Skyvva anytime you want. Batch Processing Scheduler is located in Batch Control Board, Integration page detail and Integration Admin Tab. To find Basket Processing Scheduler, please see the steps below: - Log in to Salesforce and enter Integration page detail - Click on Bulk Control Board ![](../images/2018/10/img-4.png) - Click on Scheduler Tab ![](../images/2018/10/img-9.png) ### 2.4 CDD & CDT Scheduler CDD Scheduler is used to run and collect change data and save all those data into the Change Pointer table. CDT Scheduler is another scheduler that is running to collect the records from the Change Pointer table and sent to the external System such as SAP … etc. To find CDD & CDT Scheduler 1. CDC Control Board: - Log in to Salesforce and enter Integration page detail - Click on CDC Control Board - Click on Scheduler Tab- Click on Scheduler Tab- Click on Scheduler Tab- Click on Scheduler Tab- Click on Scheduler Tab![](../images/2018/10/cdc.png) - Click on Scheduler Tab ![](../images/2018/10/img-10.png) **2. Integration Detail Page:** Scheduler per Integration: - Log in to Salesforce and enter integration detail page then click on the Schedule tab ![](../images/2018/10/img-11.png)![](../images/2018/10/img-12.png) -  Scheduler per Interface Group: You can only find CDT Scheduler in this section. 3. Integration Admin Tab - Log in to Salesforce and select Integration Admin Tab ### 2.5 Basket Reprocessing Scheduler Basket Reprocessing Scheduler is used to reprocess basket attachment which is failing. The schedules are for a specific integration. You can set the time and start the schedule or refresh it. To find Basket Reprocessing Scheduler Basket Reprocessing Scheduler is located in Batch Control Board, Integration page detail and Integration Admin Tab. To find Basket Reprocessing Scheduler, please see the steps below: ### 1. Batch Control Board: - Log in to Salesforce and enter Integration page detail - Click on Batch Control Board ![](../images/2018/10/bas1.png) -  Click on Scheduler Tab ![](../images/2018/10/bas2.png) ### 2. Integration Detail Page:- - Log in to Salesforce and enter Integration Detail Page- ### ### 3. Integration Cloud Tab - Log in to Salesforce and select on Cloud Tab- ![](../images/2018/10/batrep1.png) ### ### ### ### 2.6  DoMaintenance Scheduler- doMaintenance is another global scheduler which locates among others in the Scheduler tab. It provides all the functionalities to keep the data storage clean. In simple words it deletes pending, failed and completed records  You have to activate and run this scheduler otherwise no data cleaning activities are carried out. It exists only 1 in SKYVVA process all integrations. There are two ways to find DoMaintenance Scheduler:- - Using the Scheduler tab in the Admin page. - Using the Separate tab 'Scheduler' in the integration detail page. Please this link for more understanding **↓** –  [DoMaintenance Scheduler](#article/21-1-domaintenance-scheduler) - **Using Scheduler Tab in Admin page to find DoMaintenace:-** Get into Integration Admin and select on Scheduler Tab. Try to find the “Others” section and set the time for DoMaintenance. The picture is given below for reference-  ![](../images/2018/10/do1.png) - ** Using the Separate tab 'Scheduler' in the integration detail page**:-                                                                                                                                     Enter in Integration detail page and click on Scheduler Tab. The picture is given below for reference-![](../images/2018/10/do2.png) ### 2.7 Alerting Scheduler for Batch processing with threshold value setting:- - The scheduler is in the Scheduler Tab of the Batch Control Board. Its call Alert. Alert Tab is also created and it is used for monitoring Working Basket limit, and EOIO queue’s status. If the status of the EOIO queue(s) is 'Hold' or the threshold from the alert tab is smaller than the working basket value, a notify email will be sent to the assigned alert channels. - The Alert Scheduler is to notify user email and send message to External Email when: Number of Working Basket records more than the value in Threshold EOIO-Queue turns to status “Hold” - To activate this alerting, you have to set up the alert in, “Alert” tab from Batch Control Board.  Input the value in Threshold including Email then Save. Start the scheduler. **The picture is given below for reference -** ![](../images/2018/10/Alerting.png) ![](../images/2018/10/b1.png) ![](../images/2018/10/b2.png) ![](../images/2018/10/alerting.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Control Board Title: 1. How to use Agent Control Board Slug: how-to-use-agent-control-board URL: https://help.skyvva.com/#article/how-to-use-agent-control-board ================================================================================ # 1. How to use Agent Control Board This tutorial explains what Agent Control Board is. It also describes how to configure Server configuration in Agent, Firewall Port configuration, and configuration Agent Control Board in SKYVVA tool. ### What is Agent Control Board? Agent Control Board is used to set up integration property to be connected to Salesforce. You can either create an adapter and set a scheduler to run the integration service. Likewise, it allows you to set up the Agent server credential for using SKYVVA Agent Control Board. ## Server configuration in Agent To be able to access to Agent Control Board, there are things you need to know. You have to configure the server in Agent by doing that it allows you to set up the Agent credential for **SKYVVA** Agent Control Board. - Navigate to AgentUI and enter Server Configuration ![](../images/2018/10/agent-1-1.png) - Fill in Username => Password => Port Application => Click Save ![](../images/2018/10/agent-2.png) Note: Only one user can use this. - Go to router configuration =>  Set static ip => forward port ![](../images/2018/10/agent-3.png) ## Firewall Port configuration This configuration allows you to set up the Agent Server credential for use with SKYVVA Agent control. You need to create a local port, as it is a requirement. To create a local port you need to follow the steps below: Configuration with both Inbound and Outbound - Navigate to Search Button and type Window Defender Firewall With Advanced on your desktop => Click Inbound Rule =>Click New Rule => Tick Port => Click Next Button ![](../images/2018/10/agent-4.png) - Fill port number that in Specific Local Ports ![](../images/2018/10/agent-5.png) - Tick Allow The Connection => Click Next Button ![](../images/2018/10/agent-6.png) - Tick all box => Click Next Button ![](../images/2018/10/agent-7.png) - Fill Name => Click Finish Button ![](../images/2018/10/agent-8.png) ## To configure the Agent Control Board You have to configure this step in order to connect to AgentUI. To configure this, there are steps you must follow: **Create Remote Site Setting** To create Remote Site Setting you can follow the steps below: - Navigate Setup => Type Remote Site Setting in Quick Find => click Remote Site Settings ![](../images/2018/10/agent-9.png) - Click on the New Remote Site Setting button ![](../images/2018/10/agent-10.png) - Fill in Remote Site Name => Remote Site URL ( Public IP+ “:”Forward Port) => click Save ![](../images/2018/10/agent-11.png) **Configure Agent Control Board in SKYVVA tool** To configure the Agent Control Board in the SKYVVA tool you can: -          Navigate to Agent Control Board => click configuration tab => Agent Setting => Agent Server Credential => Fill username => Fill Password => Fill Hostname/Public IP => Fill Port/Forwarding Port => click Ping Agent Connection = ![](../images/2018/10/agent-12.png) - Fill username => Password => Security Token => Select Server Environment => click Ping Salesforce Connection => click Save button ![](../images/2018/10/agent-13.png) **Test AGENT / OS INFORMATION** When you enter AGENT/ OS INFORMATION it will show the PC system. ![](../images/2018/10/agent-14.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: When to use synchronous, batch or bulk interface? Title: 1. When to use synchronous, batch or bulk interface? Slug: when-to-use-synchronous-batch-or-bulk-interface URL: https://help.skyvva.com/#article/when-to-use-synchronous-batch-or-bulk-interface ================================================================================ # 1. When to use synchronous, batch or bulk interface? **Learning Objectives:-** **This unit describes:-** - Different mode supported for inbound processing? - It explains when and why these modes will be used. - It also explains how to do the configuration. **Introduction:-** To help meet customer requirement SKYVVA is committing to provide a different mode which supported for the inbound interface. With the varieties of modes, you can integrate all kinds of data into salesforce. This tutorial enables you to know the way to use and why you need these modes. You can integrate data in different modes including Synchronous, Batch Processing, Bulk Processing(SKYVVA Bulk and SFDC Bulk). **SKYVVA mode explanation:-** As for this section, you will understand each mode's functionality. All SKYVVA modes processing are working differently. In this tutorial, we’ll discuss when and why these modes use. **Synchronous:-** Synchronous mode is called when integrate then create real-time messages along with posting each object. You can use this mode when you want to integrate a small amount of data. **The configuring of Synchronous:-** To get a better understanding of the Synchronous mode, you first need to know how to configure the posting behavior. The following screenshot below shows the way to configure this mode. Enter the interface detail page and scroll down to Runtime Configuration-Inbound section then click on Inbound Posting Behavior picklist to select immediately. ![](../images/2018/10/immediately.png) **Integrate from another system:-** Assuming you already have created interface since this part will be a focus on integrating from Agent as an example. To integrate from Agent, please run Agent-UI and more steps as following: - **After running the Agent-UI, the Integration Control Board will popup then you have** **to click on Integration Wizard** ![](../images/2018/10/agent.png) - **Select the existing integration and interface:-** ![](../images/2018/10/Agent-Interface.png) - **After selecting the interface you will be land on Interface Source Definition a place where you can configure the adapter. To create adapter please click on this link ([How to create adapter in Agent](#)). After creating the adapter, you can test the Query to see the data and then save it.** ![](../images/2018/10/adapter.png) **To schedule:-** To be able to integrate your data you can either process them manually or use the scheduler. This section will show how to use the scheduler. - **Go back to Agent Control Board and then select:-** ![](../images/2018/10/schedular-1.png) - **Select the name of Integration and interface along with Integration Mode then turn** **on the schedule and choose the time you want to run.** ![](../images/2018/10/schedular-setting.png) - **Enter Salesforce and go to Message Monitoring Board to check the result:-** ![](../images/2018/10/msgboard.png) **Batch Processing:-** Batch Processing is one of important mode in SKYVVA, which enable you to integrate your data into Salesforce. Batch processing uses for running a batch job. It has more capability than synchronous and you can check job monitoring. If records are more than 200 but less than 5000, then we use batch processing. It can store many records in one batch, and you can set a time interval in batch processing scheduler of SKYVVA to run at any time that we want. **The configuration of Batch Processing:-** To learn how to configure batch-processing mode, see the screenshot below: ![](../images/2018/10/batch7.png) **Integrate from another system:-** As an example, this tutorial portrays the integration from Agent to Salesforce. However, the process of integration is similar to Synchronous. Please kindly check out content 2.1.2 if you want to know how to integrate from Agent. **To check result:-** All the data, which you had integrated, are storing in Working Baskets. If you want to process them, you can set the schedule to run or manually process them. ![](../images/2018/10/BCBInterface.png)![](../images/2018/10/BCBIntResult.png) **To schedule:-** This step is showing you how to set the schedule to run the attachments. To set schedule you can select on Scheduler Tab and set the time as your desire. ![](../images/2018/10/setschedular.png)![](../images/2018/10/BatchProcess.png) - **The final step is to monitor the message in the Message Monitoring Board.** ![](../images/2018/10/batchMessageResult.png)**Bulk Processing:-** Bulk Processing uses for running attachment as batch too. It has more ability than synchronous, batch and running with huge records at high speed. The Records have more than 5000, so you use them with bulk processing. It can contain many records in an attachment, and you can set a time interval in bulk processing scheduler of SKYVVA or Agent Scheduler to run anytime that you want. However, there are two options of bulk processing which is including SKYVVA bulk and SFDC bulk. The following section will be explained more detail about these two modes. **Prerequisite** Before configuring Bulk Interface Processing, you have to know about the parameters: - **BULK Mode:** Check this flag if you want to run interface in a bulk mode using Salesforce BULK API. - **Bulk Version:** SKYVVA support SFDC pure bulk mode in version 2.0 then we have our own SKYVVA bulk mode. This uses Skyvva workflow and mapping and thus it is more powerful but slower than pure bulk API technique from salesforce. - **Bulk Processing Mode:** These fields indicate two modes which are support with bulk version 1.0 and bulk version 2.0 only parallel mode is supported. So the value depends here on the selection of field bulk version. For example, When we want to use "serial" we should select bulk 1.0. **1. Parallel:** When you select this processing mode, it will run parallel. **2. Serial:** When you select this mode, it will not run at the same time. - **Bulk Package Size:** This parameter determines how many records are split into Bulk data size. If your Message contains 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - ** Bulk Monitor Keep Size:** The number of bulk execute logs to be kept. - **Bulk Sch Frequency:** This is the schedule time-frequency for bulk scheduler on the interface. - **Bulk Integrate Time Interval (minute):** The interval (minutes) used for integrating bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. **SKYVVA Bulk:-** SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use the SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing modes, which is Parallel and Serial. The default value is Serial. **The configuration of SKYVVA bulk version:-** To be able to use SKYVVA bulk mode you have to enter Interface page detail and scroll down to Streaming and Bulk API Configuration section then checkbox on BULK Mode along with choosing Bulk Version. ![](../images/2018/10/SKYVVA-Bulk.png) **Integrate from another system:-** As an example, this tutorial portrays the integration from Agent to Salesforce. However, the process of integration is similar to Synchronous. **To monitor the result:-** Enter Bulk Control Board to check the attachments. To understand how to use Bulk Control Board, please check this link: [“How to use Bulk Control Board](#)”. ![](../images/2018/10/SKYVVA-Bulkprocessing.png) **To schedule:-** This step is showing you how to set the schedule to run the attachments. To set schedule you can follow this tutorial (Overview of SKYVVA Scheduler). **SFDC Bulk:-** We support SFDC pure bulk mode in version 2.0 that is very fast but cannot use the SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk requires the data has to be mapped already on the sender side and doing the additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. **The configuration of SFDC bulk version** To be able to use SKYVVA bulk mode you have to enter Interface page detail and scroll down to Streaming and Bulk API Configuration section then checkbox on BULK Mode along with choosing Bulk Version. ![](../images/2018/10/SFDC.png) When you check this flag, it means you activate the bulk processing and your data will be integrated from Agent. Note: When you do a mapping, you have to use the requirement field as external Id otherwise, this SFDC Bulk will not work. **Integrate from another system:-** As an example, this tutorial portrays the integration from Agent to Salesforce. However, the process of integration is similar to Synchronous. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to create an adapter in Agent? Slug: how-to-create-an-adapter-in-agent URL: https://help.skyvva.com/#article/how-to-create-an-adapter-in-agent ================================================================================ # 1. How to create an adapter in Agent? This tutorial explains what adapter is and why do we need it. It describes how to create them. **1.  What is adapter?** SKYVVA Adapter is a connector/device which store the property configuration of external system. Adapter is important, without it you can’t transfer the data. It provides the interface between a computer and a network connection. There are many different types of adapters such as File Adapter, FTP Adapter and JDBC (Database) Adapter, SAP-PI/PO Adapter and SAP-ERP Adapter. This document will describe about adapter which is being used in Agent. #### 2.   Adapter Type We have three types of adapter in Agent: -          File Adapter ( CSV, Excel, XML) -          JDBC Adapter (ORACLE, SQLServer, MySQL, MsAcess) -          FTP/SFTP Adapter **2.1    Creating of File adapter** File adapter is used to integrate data from file to SFDC and from Salesforce to file. The file type that our Agent support is CSV, XML and Excel that can be integrated with their content. You can integrate file attachment into attachment object. This document is focus only on the creation of adapter, so some steps before it would be skip eg. Creating Integration and Interface. To create JDBC Adapter, there are some steps must be followed: Run Agent UI > Integration Wizard > Choose Integration > Choose existing interface. Adapter Section: Choose Adapter Type (File) > Name Adapter Adapter Properties: -          File type: Choose CSV -          File Upload Mode: Choose CONTENT or FILE -          Folder: Choose the folder (path to get the file/ files) -          File Name: Choose file name (a file name for agent to query data from. If this field is empty it mean you to select all files in the selected folder. -          After Processing: Choose what you want to do with your file ·         Keep File: The file will keep in the folder. ·         Lock File: The file will  lock. ·         Delete File: The file will  delete. ·         Backup File: The file will backup in the other folder. -          Backup Folder: The folder to keep the processed file. If you choose to backup your file, you have to input your folder name here. Click “Test Source Connection” to test the connection to the specified folder and file. Click Save. ![](../images/2018/10/File-adapter.png) Note: For Excel and XML File, you can just do the same as CSV File. But just you need to change the file types, adapter and its properties accordingly. **2.2    Creating of JDBC adapter** JDBC Adapter is used as a connector to transfer data from Database to Salesforce and from Salesforce to Database. Agent supports five database type include Oracle, SQLServer, MySQL, MsAcess and PostgreSQL. The following sample is about SQLServer configuration. Run Agent UI > Integration Wizard > Choose Integration > Choose existing interface. - Adapter Section: Choose Adapter Type (JDBC) > Name Adapter - Adapter Properties:-          Database type: Choose SQLServer. The type of database to which the adapter connects. Select between SQLServer or other. -          Username: sa-          Password: ******* (The default password to use when making the connection to the database).-          Hostname: 192.168.1.141 (Ip address)-          Port: 1433 (default) -          Database Name: -          Server Instance: (Local) - Click “Test Source Connection” to test the connection to the specified folder and file. - Click Save. ![](../images/2018/10/JDBC-adapter.png) Note: For Oracle, MySQL, MsAcess and PostgreSQL database, you can just do the same as SQLServer. But just you need to change the database types, adapter and its properties accordingly. **2.3   Creating of FTP adapter** FTP Adapter is used as a connector to transfer data from FTP server to Salesforce and from Salesforce to FTP server. This document is focus only on the creation of adapter, so some steps before it would be skip eg. Creating Integration and Interface. To create FTP Adapter, there are some steps must be followed: Run Agent UI > Integration Wizard > Choose Integration > Choose existing interface. - Adapter Section: Choose Adapter Type (FTP) > Name Adapter - Adapter Properties:-          Authentication: Username_Password -          URL: the URL to your FTP server – here we use http://www.bplaced.net/ but it can be any link from your side-          Username: kktest (Username to log in to FTP server)-          Password: ******* (The default password to use when making the connection to the FTP Server)-          FTP File Type: Choose CSV or other -          Folder: /KOLINA (path to get the file/ files) -          FTP Type: Choose FTP -          Port: 21(Default) -          File Name: (Optional) a filel name for agent to query data from -     After Processing: Choose what you want to do with your file •    Keep File: The file will keep in the folder. •    Lock File: The file will  lock. •    Delete File: The file will  delete. •    Backup File: The file will backup in the other folder. -     Backup Folder: The folder to keep the processed file. If you choose to backup your file, you have to input your folder name here. - Click “Test Source Connection” to test the connection to the specified folder and file. - Click Save. ![](../images/2018/10/FTP-adapter.png) Note: For SFTP configuration, please kindly look for document (SFTP Configuration). ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is an external Id and how to use it to handle correct data update with an interface? Title: 1. What is an external Id and how to use it to handle correct data update with an interface? Slug: what-is-an-external-id-and-how-to-use-it-to-handle-correct-data-update-with-an-interface URL: https://help.skyvva.com/#article/what-is-an-external-id-and-how-to-use-it-to-handle-correct-data-update-with-an-interface ================================================================================ # 1. What is an external Id and how to use it to handle correct data update with an interface? **Learning Objectives:-** **This unit describes:-** - What is External Id? - How to use it? #### Introduction:- This tutorial will explain more in detail about external Id and will demonstrate how and where you can set it. You have to remember that external Id could be one field or combined fields in the sObject. Specified more external fields (even mapping in salesforce) which means combine key, the integration will find the record in salesforce based on those fields. The following contents will show how and where to set the external Id. #### What is an External Id? - External Id is a unique key or primary key that is different from salesforce Id. It is slightly created by the user in order to insert, upsert, delete and update records in Salesforce. - External Id cannot be duplicated. - You can select fields of a sObject e.g Account which as an external Id to be used as a composite key in an interface. #### How and where to set the external Id? **Pre-requisite:-** - Create Integration. - Create Interface Inbound and outbound. **The demonstration is mainly about how to set an external Id. You can set an external Id in two ways:-** - Set the checkbox “Ext Id” in Mapping Tool. - Choosing or inputting external Id in field “Salesforce External Id”. We will check both the ways in Inbound Interface and in Outbound Interface. **Inbound interface:-** - To set an external Id in the Mapping Section follow the steps given below:- - Enter in Interface detail page. - Click on "Open Mapping" as shown below. ![](../images/2018/10/28-2.png) - Check the Ext Id box. ![](../images/2018/10/28.1.png) 2. To choose or input external Id in field “Salesforce External Id”. - Enter the interface detail page and scroll down to section “Inbound Setup”. #### Outbound interface:- For an outbound interface, you can set external Id in Mapping Editor like inbound interface. However, you can choose or input an external Id in field “Salesforce External Id”. The steps to set external Id is similar to the inbound interface. To set external Id in Mapping Editor - Enter Interface page detail - Scroll down to “Mapping” section then you will see the Data Mapping editor ![](../images/2018/10/OutboudMapping.png) - The checkbox on Ext Id ![](../images/2018/10/ExternalID.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: What are the differences between the mapping modes? Title: 1. What are the differences between the mapping modes? Slug: what-are-the-differences-between-the-mapping-modes URL: https://help.skyvva.com/#article/what-are-the-differences-between-the-mapping-modes ================================================================================ # 1. What are the differences between the mapping modes? Learning Objective: After completing this unit, you’ll be able to: - Describe all mapping modes and differences between the mapping mode. - Comfortably use all mapping modes #### Introduction: We have a mapping tool that is a very useful and valuable feature of SKYVVA. It is having three modes of mapping  i.e, Internal mapping or Mapping in SFDC, External mapping, Hybrid mapping. In this unit, we are going to learn about all three modes, when and which one needs to use. These three modes have a complete solution regarding mapping and it makes work easier. #### What Is Mapping? - Mapping is one of the most useful and important features of SKYVVA. - It is basically a data transformation tool. - It's UI is in graphical form. - Mapping is a term to map source data fields to their related target data fields. It depends on the key concept. To check the fields in the UI/Front end forms and mapped consistently with the corresponding DB table. - In order to figure out how the data needs to be formatted or mapped. It must also explain the primary key in the source system. - We can do mapping in two ways i.e, Inbound and Outbound mapping. - In Outbound mapping, we have only one mode available which is Internal mapping or Mapping in SFDC. - In Inbound mapping, we have 3 modes available which are Internal mapping, External mapping, and Hybrid mapping. #### Mapping modes We have two ways of mapping i.e Inbound and Outbound mapping. The two flags are available on the interface to indicate the mapping mode which is External Mapping or Mapping in SFDC. - **In Outbound mapping-** We have only one mode available: - Internal mapping or Mapping in SFDC: Here we do mapping in skyvva on the SFDC platform and use our mapping tool. We are just mapping the data structure to the external structure. We just send the data to the receiver and if they need any transformation, we can use the formula. - **In Inbound mapping- **We have 3 modes available : - Internal mapping or Mapping in SFDC. - External mapping. (SAP-PI-SF) - Hybrid mapping. So basically, we have 3 mapping modes **Internal mapping** or **Mapping in SFDC**, **External mapping**, and **Hybrid mapping**. #### Internal Mapping Or Mapping in SFDC (Inbound Mapping): - When a sender sends data to us, they can send us data that Salesforce cannot understand, we need to transform the data into salesforce format this is what we are doing in mapping. - The field name is not the salesforce field name then we use internal mapping. - What do we need to do in order to post the data into sObject? So, If we get data for which salesforce doesn't understand the data format then we are transforming the data from the left side to salesforce field names and mostly it is sObject or in case of an event, it is an event object. - We can also map to an event object then we have an event interface and can publish an event. We can map to sObject or eObject. We are supporting sObject as well as eObject. - Mapping in SFDC is a default option when we don't check any field it means its behavior will work according to Mapping in SFDC. **For better understanding, below we can check the use case of "Internal Mapping of a complex and hierarchical object for Inbound ".** #### How to use it? **Pre-Requisite:-** - Create Integration. - Create Interface. - Add Metadata Provider. - Add Repository. - Add Message Type. ![](../images/2018/10/hierarchical-mapping.png) - Enter the Interface detail page, which you had just create, and mapping with the flat field that includes Account and Contact with sObject tree and then make VlookUp account with Contact. ![](../images/2018/10/2-15.png) - The following screen display that the Interface is automatically chained with contact after done mapping and VLOOKUP. ![](../images/2018/10/6-14.png) - Integrate the data to Salesforce ![](../images/2018/10/3-14.png) - Monitor the result in Message Monitoring Board ![](../images/2018/10/7-13.png) - And the below screenshot shows a result in detail of Account. ![](../images/2018/10/4-14.png) ![](../images/2018/10/5-13.png) #### External Mapping: - In Skyvva, **external mapping** means that you use the Salesforce field name. - When you select External mapping, in this case no mapping required. It means mapping and business logic is managed by an external system. - We just do processing for this we need sObject name. The posting we need sObject field name. - The client can send us a salesforce data structure, the sender can be a client application, SAP-PO, SOAP, etc. The client will use our Rest API to call v3 integrate when they pass the salesforce data structure i.e, sObject structure. We don't need to do mapping because they do mapping on their side. - They transfer there side the internal data into the salesforce structure. They send a salesforce structure then we don't need to do mapping again. - Therefore when you have the data you can map to the salesforce structure, we are exporting message Type. And that exported file we can map on the middleware side. In this situation middleware conduct all the data then they can send all the data and we do the processing immediately without using the skyvva mapping again and this is external mapping. **Below we can check the use case of "External Mapping" in which we will create an inbound interface using SKYVVA Bulk query mode in SAP PI/PO with a new SKYVVA V3 connector module.** #### How to use it? **Pre-Requisite:-** - Create Integration. - Create an inbound interface. - Select the Operation type as Bulk Query". As shown below. ![](../images/2020/02/Untitled-54.png) - Check the External mapping field. ![](../images/2018/10/external-mapping.png) - In this example, we are going to put the SQL statement in the SAP PO Mapping. - Now save the interface and download the WSDL from the Lightening mode. - For new V3 we are going to use the new way WSDL. - Generating the WSDL from Lightening as shown below. - Go to Integration in that user have to select the "**Generate Metadata**" ![](../images/2020/02/Untitled-150.png) ![](../images/2020/02/Untitled-151.png) - Provide all the required details and click on export to generate the file. ![](../images/2020/02/Untitled-152.png) - Now click on View to download the generated WSDL file. - In this example, we are going to use only one interface for both request and response. 3. Import WSDL into ESR #### Test the Inbound Interface. - Triggering the data from the Source system. - Here is the result from Salesforce. ![](../images/2019/12/Untitled-24.png) #### Hybrid Mapping: - Hybrid mapping is a combination of Internal and External mapping. - When we get data in sobject structure we only need to do the external mapping. But when we get a structure which senders give is not understandable to salesforce or for example to SAP PO, then we need to use both External and Internal mapping. - We can have a 99% data map on the SAP PO side but some data we can't. For 1%, we need our mapping tool, where we use Formula like VLOOKUP. - Our solution can be used to map the incoming data stream in SFDC. Currently for example in the case of SAP-PO users can map in SAP PO and thus no need to map again in SFDC. Therefore we set the flag “External Mapping”. - When we check the Flag ‘Mapping in SFDC‘ this means that the incoming data will be map again. But in this case, we need to do the whole mapping again. - In this new version, we have enabled the Hybrid mapping or merge the mapping from an external system and SFDC. - For Hybrid Mapping, we need to check both "**Mapping in SFDC**" and "**External Mapping**" as shown below. ![](../images/2019/08/Image4-85.png) - Whenever we are not able to handle the mapping logic in SAP PI/PO in those cases we try to use the mapping logics in SFDC. - For example in the Account inbound interface, If we want to send the data based upon the RecordType Id. In such cases, we have to use VLOOKUP formulae in Skyvva. ![](../images/2019/08/Image4-86.png) "**if(ISNULL(VLOOKUP(RecordType,Id,DeveloperName,Account.RecordTypeId)),NOTHING(),VLOOKUP(RecordType,Id,DeveloperName,Account.RecordTypeId))**". - Here the VLOOKUP will compare Account.RecordTypeId with DeveloperName, then in Account.RecordTypeId there will be developer name which will be mapped as constant to RecordTypeId in SAP PO as shown below. ![](../images/2019/08/Image4-87.png) - Then this vlookup first compares that name with the existing developer name in salesforce. if the developer name matched it returns Id of that record type. If the developer name doesn't match then it will do nothing. - In **Salesforce**, "**Record Types**" are a way to arrange and classify data in an object. An example of how **Record Types** can be particularly helpful is when you want to assign different sets of data to different groups of sales teams. - So, the above one is an example of Hybrid mapping where we can handle both in SAP PI/PO and in Skyvva. ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is an interface group and in which case is it used? Title: 1. What is an interface group and in which case is it used? Slug: what-is-an-interface-group-and-in-which-case-is-it-used URL: https://help.skyvva.com/#article/what-is-an-interface-group-and-in-which-case-is-it-used ================================================================================ # 1. What is an interface group and in which case is it used? ## Learning Objectives After completing this unit, you’ll be able to: - Explain what is interface group. - How to create it and how to use it. **Introduction** In SKYVVA, Integration is created to integrate data. To bind all interface which has same logic, we create group. **What is an interface group?** Interface group is a unit to group logical interfaces together. For example you can group interfaces which is related to each other e.g. Account and Contact to one interface group. Interface group is the object user define at configuration time. **Prerequisite** Before create interface group, there are some properties you must know: - **Interface Group Name**: It’s a name of interface group. The name will be used as a part of the queue name. - **Integration**: This is the integration. You create an interface group which belong to an integration. Only one interface can belong to an interface group and an interface group only also belong to an integration. The value of the integration you select here will be part of the queue name.. - **Type**:This is a type of the interface group. The value of group can be(EO,EOIO).- EO: Exactly Once - EOIO: Exactly Once in OrderWhen you create an interface group with type EO this interface group will be processed in a exactly once manner e.g. the order will not be guaranteed. If you want to keep order sending from the sender application you have to define this group with EOIONote that both type define a processing which is asynchronous. The type will be part of the queue name. - **Priority**:This property will allow you to define what priority you want to set for your interface group to processed faster. There are 3 types of Priorities such as:- High - Medium - LowWith this property you can define that interface group A is to be processed faster as interface group B by setting for interface group A = High and interface group B = Low or Medium. - **Package Size**: This is the number of records to bundle together and pass to a batch worker because of the optimization. - **Number of Records per Batch**: This property indicating the number of records to be processed per execute() used for basket processing batch. **Types of interface group** There are two types of interface group which are Business related logical group and Technical group. This section will be explained in detail what these interface group types are. **Business related logical group** This group is business related since the contact can only be posted after the account has been posted ( when you put the interface account and contact to one group). It’s all about an order of business process. To keep this order you can define the group and set the property to “EOIO”. When you set this way the account will be posted before contact interface. e.g. the group "Account_Contact". This group is business related because the contact can only be posted after the account has been posted. In this example there is an order of business process. To keep this order you can define the group "Account_Contact" and set the property to "EOIO" meaning Exactly Once In Order. In this way the skyvva runtime ensure that the account will be posted before contact interface. **Technical group** The technical group is to increase the performance for the posting of data. You need to create this group to group the interfaces which are not related to business and these interface is quite small. Without wasting time and resource, you can sent these interfaces once in same time by set this group to “EO”. For example, The technical group is for example to increase the performance for the posting of data. Imagine that you have five interfaces which do not related in a business way to each other. Those 5 interfaces are quite small e.g. small amount data will be send to Salesforce. In this example you will waste resource and time when you create five interface group for each interface and post the interface separately. The best way is to put these five interface into the same group and set the property of this group as "EO" meaning Exactly Once. This mean that the processing of those five interface in the group is not important. An overtaken can be happened and will not harm the business. By putting them together the scheduler will process much more data in one run than if the scheduler process them separately. **How The creating of interface group** Follow the given steps to create Interface group: **Step1**: Go to Integration Admin - Open “Integration Admin” and “Interface Group” tabs - Click on “New Interface Group” to create a new one ![](../images/2018/10/Interface_group.png) **Step2**: Fill the fields as shown inscreenshots: -  Enter a name for an interface group. -  Then select the integration where the interface group belong to. ![](../images/2018/10/IG1.png) - Choose the type of the interface group ![](../images/2018/10/IG2.png) - Select the priority for the interface group then click Save ![](../images/2018/10/IG3.png)**Step3**:** Add Interfaces** - Click on “Add Interfaces” to add interface to the group ![](../images/2018/10/IG4.png) - Select the interface you want to add to this new interface group ![](../images/2018/10/IG5-1.png) **Step4**: Here is the result of creating an interface group ![](../images/2018/10/IG6-1.png) **When to use interface group** Interface group is used when you want to speed up interface processing. You can manually create interface group and assign the interfaces which you want to run beside the default IG. We have to create an interface group. This is an optional step because the Skyvva engine create a default interface group for each integration. This default interface group contain all interfaces existing in an integration. For each interface group the Skyvva runtime will create a corresponding queue and inherit some property from the interface group to the queue. For example the queue will become the type attribute e.g. EO or EOIO and the priority e.g. High, Medium or Low from the interface group. Since the Skyvva default group contain all interfaces from an integration the Skyvva default queue bit complex queue for processing the attachment data. Therefore we recommend to create suitable and appropriate interface group to have an optimal way for queue processing. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Uninstall SKYVVA Agent? Title: 1. How to Uninstall SKYVVA Agent? Slug: how-to-uninstall-skyvva-agent URL: https://help.skyvva.com/#article/how-to-uninstall-skyvva-agent ================================================================================ # 1. How to Uninstall SKYVVA Agent? This tutorial explain you "How can you uninstall SKYVVA Agent". #### What is Agent? SKYVVA is professional services and commitment to great customer support enabled us to integrate multiple database systems quickly, easily and at a fraction of the cost of alternatives. You can uninstall SKYVVA agent in two ways: - Uninstall Agent by right click on Agent icon. - Uninstall Agent through Control panel. #### 1    Uninstall Skyvva Agent - Right-click Agent icon - Click on properties ![](../images/2018/10/Screenshot-1131.png) - Click on ‘Open File Location. ![](../images/2018/10/Screenshot-1132.png) - Click on Uninstall ![](../images/2018/10/Screenshot-1133.png)![](../images/2018/10/Screenshot-1134.png) - Click ‘Yes - Next ![](../images/2018/10/image-5-2-300x188.png) - Click ‘Uninstall‘ ![](../images/2018/10/image-6.png) - Click ‘ok‘ - Read this message carefully & copy (integration) in which users credential are save that is a User name, password, org ID, security token, license key ![](../images/2018/10/image-7.png) ![](../images/2018/10/image-8-1.png) ![](../images/2018/10/image-9-1.png) ![](../images/2018/10/image-10-1.png) - Finish ![](../images/2018/10/image-11-1.png) #### 2  Uninstall Skyvva Agent through Control Panel The control panel, in the context of Windows, is a software module used to perform administrative and management operating system tasks and/or provide access to specific software features. The control panel is used to configure and manage almost all aspects of Windows, including keyboard and mouse functionality, users and passwords, power options, network settings, desktop background, display settings, sound settings, mouse settings, hardware and software options, installation and removal of programs, parental control, speech recognition, etc. - Press Windows key on the keyboard ![](../images/2018/10/Screenshot-422.png) - Write Control Panel in search box - Click ![](../images/2018/10/Screenshot-423.png) - Click ‘Uninstall a program‘ Right-click on SKYVVA Integration Agent Click on Uninstall/Change ![](../images/2018/10/Screenshot-424.png) - Right-click on SKYVVA Integration Agent - Click on Uninstall/Change ![](../images/2018/10/image-15-1.png) ![](../images/2018/10/Screenshot-426.png) - Click ‘Yes‘ - Next ![](../images/2018/10/image-18-1.png) - Follow the instruction as we did previously - Finish - **SKYVVA** Integration Agent Uninstall successfully ================================================================================ Book: Tutorials Section: Tutorials Subsection: SKYVVA Integration App – Installation? Title: 1. SKYVVA Integration App - Installation? Slug: skyvva-integration-suite-installation URL: https://help.skyvva.com/#article/skyvva-integration-suite-installation ================================================================================ # 1. SKYVVA Integration App - Installation? **Learning Objective** **This unit describes:-** - The Installation process of the SKYVVA Integration Suite. #### Introduction This tutorial is an installation guide for Skyvva. The purpose of the tutorial is to introduce the product or component to be installed. This guide covers the installation of the system and its related components like update the Skyvva license key.  Please update the sample text to your system requirements. #### Identification - You can identify by title SKYVVA. - You can identify the Skyvva by its version number and release number. #### Point of contact - For troubleshooting, you  can send a mail to support@skyvva.com #### Pre-Installation Requirements The following prerequisites and requirements must be satisfied in order for the [product] to install successfully. - You should have your salesforce organization. Create your salesforce organization from [https://developer.salesforce.com/ ](https://developer.salesforce.com/) - You should have your organization login credentials with salesforce I,e username and password - Skyvva Integration suite installation link. #### Installation Steps **Step 1: Login with salesforce organization** Login with salesforce using valid credentials where the package has to be installed ([https://login.salesforce.com](https://login.salesforce.com)). ![](../images/2018/10/install8.png) **Step 2: Create My Domain.** - Type "My Domain" in the search box and then click on My Domain as shown in the picture given below. ![](../images/2018/10/install1.png) - Enter a domain name and check whether it is available, for this we need to click on the "Check Availability". ![](../images/2018/10/install2.png) - If the domain name is available, then we can register a domain for that we need to click on the "Register Domain". As shown in the picture given below. - Salesforce will take a few minutes. ![](../images/2018/10/install3.png) - After registration, we can log in to test it out. - And then we can select an option "Deploy to users". As shown in the picture given below. ![](../images/2018/10/install4.png) ![](../images/2018/10/install5.png) **Step 3: Enter Installation link** Copy the installation link (Skyvva Integration Suite package installation link) and paste it to the address bar. ![](../images/2018/10/install10.png) **Step 4: Install/Upgrade SKYVVA Integration Suite** Choose Install for admin the only option and click on the install button. ![](../images/2018/10/install11.png) You might need to wait a short while because it will take some time to install packages. As you refresh the page, you can see installed packages. #### Post Installation checklist - Check that the package is successfully installed or not. Please enter the install packages text in the quick find box. Choose the Install package option. Check the package name, the version number is correct. - Check that you can access the Skyvva product. - Please refer to the image for reference. ![](../images/2018/10/install12.png) #### Please check it after the installation to see the SKYVVA App: ![](../images/2018/10/install.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you have a problem display some objects of Integration, please creates permission set and choose license as Salesforce.[/su_box] #### Integration Object - Go to  salesforce organisation -> Click on  Setup -> Click on Object Manager-> Integration option -> Choose Buttons, Links & Actions. - Check your standard button is overridden or not if yes then keep as it is. if not then see figure where we explained how we can do it, visual force page is not overridden yet so follow the given steps : **Step 1:- Select New Button and Click on the dropdown icon and then on the Edit button.** ![](../images/2018/10/install16.png) **Step 2**:**-** **Select the visualforce  page as shown in the picture and click on the Save button.  ** ![](../images/2018/10/install6.png) #### Chatter Settings:- - From Setup, enter Chatter Settings in the Quick Find box, then select **Chatter Settings**. - Click **Edit**. - Select Enable Actions in the Publisher. Although the Enable Actions setting appears in Lightning Experience, it has no effect there. - Click **Save**. ![](../images/2018/10/chatter.png) #### IWorkflow Object Check - Go to  salesforce organisation -> Click on Setup -> Select Object-> Integration option -> Choose Buttons, Links & Actions. - Check your standard button is overridden or not if yes then don’t do anything if not then check the steps given below. **Step 1:** **Click on the edit button. This is directly proportional to the “EditIworkflow”  visualforce page that is not overridden yet.** - Choose the visualforce page and click on the Save button. **Step 2:       ** - Click on the New button. - Click on the edit button. - Select visualforce page clicks on the Save button. #### Skyvva Integration Suite Tabs Check - To add IAdapter Setup, Integration, Integration Admin, Adapter tabs on your page follow the given steps: **Step 1:-** **Click on Add More Items my button.** ![](../images/2018/10/install15.png) **  [su_box title="Note" box_color="#2a8af0" title_color="#000000"]In case if all tabs are hidden for the user’s profile.**[/su_box] - Please Go to Manage users-> Users -> Select users profile “Click" - Go to the profile page ->Tab setting. #### Skyvva Integration Suite License Key To use Batch Scheduler for Integration (HTTP, Email,…) we required a valid key which is license key. To add the License key please follow the steps given below. **Step 1:** **Go to the Integration admin page and click on the "License" tab, then click on Renew key, and select the user to update a license key Or Renew Key for All Users.** ![](../images/2018/10/install13.png) **Step 2:-** **Enter the license key as shown in the picture given below and click on the Renew License Key.** ![](../images/2018/10/install14.png) **[su_box title="Note" box_color="#2a8af0" title_color="#000000"]Contact SKYVVA support for a license key if you don't get it.[/su_box]** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to execute outbound Interface? Title: 1. Different way how to invoke outbound interface Slug: different-way-how-to-invoke-outbound-interface URL: https://help.skyvva.com/#article/different-way-how-to-invoke-outbound-interface ================================================================================ # 1. Different way how to invoke outbound interface Learning Objective: After completing this unit, you’ll be able to: - Describe which are the invoke outbound interface methods. - Comfortably use all the methods. Introduction To show the different technology which can be use to push data to the external client by using Skyvva.  For example, different possibility  like: Using Trigger, Process Builder process, Flow, Apex class to send data out. Why **SKYVVA Callout Methods** The callout methods are using to send data from salesforce to external system (SFDC to SAP/SAP-PI) through interface outbound. The Service only sends one record/children per request to SAP. To invoke callout from apex trigger the method invokeCallout(interfaceId, ids, ‘AUTO’) is recommended. ### Mode We can process the outbound interface using: - Using Trigger, - Process Builder process, - Flow, - Apex class ### Process Builder: Process Builder is a Salesforce’s point-and-click tool that lets you easily automate if/then business processes and see a graphical representation of your process as you build. Every process consists of a trigger, at least one criteria node, and at least one action. You can configure immediate actions or schedule actions to be executed at a specific time. To keep things simple, this unit focuses on the most common process type: Record Change, which mean the process, will start when the records are created or edited. The configuration This section will be portray the example of how to execute callout and process builder. 2.1 Callout To be able to execute callout, you have enter interface page detail and scroll down to Runtime Configuration- Outbound section then check flag “Use Skyvva Outbound Scheduler”. ![](../images/2018/10/OutboundProcessing_1.png) Note: - If you want to execute callout, the flag could be blank. - If you want to create CP Record, the flag is required. - The interface could be set creating change pointer by process builder or trigger. You have to select SKYVVA API. This is the pre-requisite to create process builder. ![](../images/2018/10/OutboundProcessing_2.png) This part is mainly explain the process of creating the process builder in order to create change pointer records. To build process builder, you can follow the steps below: - From Setup, enter Process Builder in the Quick Find Box, click Process Builder. When you are on process builder page, click on New button. ![](../images/2018/10/OutboundProcessing_3.png) - Fill in the name of the process ![](../images/2018/10/PB-4.png) - Add the Object and Specify when to start the Process. ![](../images/2018/10/PB-6.png) - Add the Criteria to define it for Action Group: 1. Name the Criteria 2. Choose Formula evaluate to true 3. Build Formula by insert the Function and Field then click Save . ![](../images/2018/10/PB-7.png) - Add the actions to execute when the criteria are met by: 1. Select the Action Type: Apex 2. Select the Action Name: Create CP Record 3. Select Apex Class: SKYVVA Callout/Create CP. When you section it, some of dropdown list will appear for you to choose. Then click Add Row to add 2 more. To be able to execute process builder, just click on Activate button. ![](../images/2018/10/PB-10.png) **To monitor change pointer records:** You can check the change pointer records in CDC Control Board. ![](../images/2018/10/PB-11.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: What are queues and where is it used? Title: 1. What are queues and where is it used? Slug: what-are-queues-and-where-is-it-used URL: https://help.skyvva.com/#article/what-are-queues-and-where-is-it-used ================================================================================ # 1. What are queues and where is it used? This tutorial contains the detail to help you understand what are queues, create them and describes how to use it? **What are queues?** A queue is a dynamic object, which created automatically based on an interface group. You have to remember if you do not define an interface group SKYVVA will create a default interface group with the name “skyvva_DefaultIG”. Each interface group will be created queues. **Queue details:-** This documentation will be described more in detail about queue handling.  The processing message has generally done in queues because of these advantages: - Keeping order of arriving data - Prioritize of queue - Parallel processing of queues - Stop / Start queue for administration purpose The queue name derived from three information: - Integration Id - Interface group Id - Interface Id + {EO, EOIO} ![](../images/2018/10/Queue.png) There are two types of queues, which are EO and EOIO. This property is inherited from the interface group. **EO-Queue:-** When the interfaces do not relate to each other and does not have depending sequence then you can define this group as an EO-Group. This queue is to group different interfaces with a small amount of data together, to improve the performance of processing. **EOIO-Queue:-** This type of queue is the opposite way of the EO-Queue. EOIO-Queue is the interface account and contact. In Salesforce you have to split the data into two different tables e.g. into account and contact table. If you post the contact before account than you will get an error because the contact references an account. The account is the parent of the contact and therefore has to be posted before. To achieve this goal you have to define an interface group e.g.  "Acccount_Contact" with the property type = EOIO. Then specify the sequence number 1 for the interface account and the sequence number 2 for the interface contact. **Parallel processing of the queue:-** Parallel processing is possible because the data in different queue is not related to each other and therefore can be posted independently. We have in the best case five apex jobs as a worker to do parallel processing. The maximum parallelization is 5 due to the SF limit of 5 batch apex job. **Status of the queue:-** This section will be explained about the status of queue and how each status works. There are 6 status of queues. - Ready - Worker - Running - Failed - Hold - Stop by Admin ![](../images/2018/10/status.png) **Description:-** **1. Status Worker:- **This status is a temporary status which is set by the scheduler. This status is a helping status to know that the scheduler has passed the data package/queue to the worker. When the worker starts to process the data package/queue it will change the status from "Worker" to "Running". **2. Status Running:-** This status is set by the worker. When a data package/queue is passed from the scheduler to the worker the status of this queue is "Worker". Then the worker changes the status from "Worker" to "Running". **3. Status Fail:-** This status is set when processing a data package/queue got failed. This status is only used for the EO-Queue. For the EOIO-Queue this status is not used but the status "Hold". **4. Status Hold:-** This status is set when processing a data package/queue got failed. This status is only used for the EOIO-Queue. For the EO-Queue this status is not used but the status "Failed". When the status is set to "Hold" then the processing of this queue is stopped because otherwise, you will create an overtaken of data. **5. Stop by Admin:-** This status is the result of an admin action. An admin might want to stop the queue because of maintenance work. **Administration of queue:-** The administrator can stop a queue so that it will not be processed by the scheduler. This might happen if the queue has accidentally too many entries and will take a long time to process. To stop a queue, please follow the given steps: - Open your integration,  Click on batch control board ![](../images/2018/10/Integraton_batchCtrlBoard.png) - Select the “Queues” tab. - Click on the “Stop” button to stop the queue. ![](../images/2018/10/stop_queue.png) - The system will ask you again for the confirmation. If you really sure that you want to stop the queue just click OK. ![](../images/2018/10/stopedByAdmin.png) As you can see from the above screenshot, the link has been changed from “Stop” to “Start”. The status also changed. **Where to use a queue?** The queue is used in Batch processing and CDT. ![](../images/2018/10/QueueInBCtrlB.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Overview of existing Skyvva adapters Title: 27. Overview of existing Skyvva adapters Slug: overview-of-existing-skyvva-adapters URL: https://help.skyvva.com/#article/overview-of-existing-skyvva-adapters ================================================================================ # 27. Overview of existing Skyvva adapters **1 What is Adapter?** An adapter is a device for connecting pieces of equipment that cannot connected directly. Adapter is also important; without it, you cannot transfer the data to the external system. It provides the interface between a computer and a network connection. There are many different types of adapters such as File Adapter, Database Adapter, FTP/SFTP Adapter, SAP-R/3 Adapter and SAP-ERP Adapter. File Adapter and Database Adapter supported for Agent. However, SAP-R/3 and SAP-ERP Adapter are used to connect to SAP-R/3. **2 Type of Adapter** This section will be describe about adapter types of SKYVVA. We have three types of adapters: - File Adapter ( CSV, Excel, XML) - JDBC Adapter (ORACLE, SQLServer, MySQL, MsAcess) - FTP/SFTP Adapter - HTTP - EMAIL - SFDATALOADER - SAP-R/3 - SFDC2SAPPI - Data Loader - REST - Force2Force Adapter **2.1 File Adapter** File adapter use to integrate data from file to SFDC and from Salesforce to file. The filetype that our Agent support is CSV, XML and Excel that can be integrated with their content. You can integrate file attachment into attachment object. This document is focus only on the creation of adapter, so some steps before it would be skip eg. Creating Integration and Interface. To create File Adapter, there are some steps must be followed: Run Agent UI > Integration Wizard > Choose Integration > Choose existing interface. 1. Adapter Section: Choose Adapter Type (File) > Name Adapter 2. Adapter Properties: - File type: Choose CSV - File Upload Mode: Choose CONTENT or FILE - Folder: Choose the folder (path to get the file/ files) - File Name: Choose file name (a file name for agent to query data from. If this field is empty, it mean you to select all files in the selected folder. - After Processing: Choose what you want to do with your file  Keep File: The file will keep in the folder.  Lock File: The file will lock.  Delete File: The file will delete.  Backup File: The file will backup in the other folder. - Backup Folder: The folder to keep the processed file. If you choose to backup your file, you have to input your folder name here. 3. Click “Test Source Connection” to test the connection to the specified folder and file. 4. Click Save. ![](../images/2018/10/1-21.png) Note: For Excel and XML File, you can just do the same as CSV File. But you only need to change the file types, adapter and its properties accordingly. **2.2 JDBC Adapter** JDBC Adapter is used as a connector to transfer data from Database to Salesforce and from Salesforce to Database. Agent supports five database type include Oracle, SQLServer, MySQL, MsAcess and PostgreSQL. The following sample is about SQLServer onfiguration. Run Agent UI > Integration Wizard > Choose Integration > Choose existing interface. 1. Adapter Section: Choose Adapter Type (JDBC) > Name Adapter 2. Adapter Properties: - Database type: Choose SQLServer. The type of database to which the adapter connects. Select between SQLServer or other. - Username: sa - Password: ******* (The default password to use when making the connection to the database). - Hostname: 192.168.1.141 (Ip address) - Port: 1433 (default) - Database Name: - Server Instance: (Local) 3. Click “Test Source Connection” to test the connection to the specified folder and file. 4. Click Save ![](../images/2018/10/2-11.png) Note: For Oracle, MySQL, MsAcess and PostgreSQL database, you can just do the same as SQLServer. But just you need to change the database types, adapter and its properties accordingly. **2.3 FTP/SFTP Adapter** FTP Adapter is used as a connector to transfer data from FTP server to Salesforce and from Salesforce to FTP server.To create FTP Adapter, there are some steps must be followed: Run Agent UI > Integration Wizard > Choose Integration > Choose existing interface. 1. Adapter Section: Choose Adapter Type (FTP) > Name Adapter 2. Adapter Properties: - Authentication: Username_Password - URL: the URL to your FTP server – here we use http://www.bplaced.net/ but it can be any link from your side - Username: kktest (Username to log in to FTP server) - Password: ******* (The default password to use when making the connection to the FTP Server) - FTP File Type: Choose CSV or other - Folder: /KOLINA (path to get the file/ files) - FTP Type: Choose FTP - Port: 21(Default) - File Name: (Optional) a filel name for agent to query data from - After Processing: Choose what you want to do with your file • Keep File: The file will keep in the folder. • Lock File: The file will lock. • Delete File: The file will delete. • Backup File: The file will backup in the other folder. - Backup Folder: The folder to keep the processed file. If you choose to backup your file, you have to input your folder name here. 3. Click “Test Source Connection” to test the connection to the specified folder and file. 4. Click Save. ![](../images/2018/10/FTP-adapter.png)![](../images/2018/10/ftp.png) Note: For SFTP configuration, please kindly look for document **2.5 Email Adapter** Email adapter is support-sending email to Salesforce using an attachment (source file) to carry the business data. The functionality is to pass parameters to the email subject and body. You can pass business data with the subject and body. As soon as the Email arrives, the data import is initiated automatically. **-> The configuring of email service on Salesforce** This section will be explained the process of configuring the Email-Service on Salesforce.You can follow the steps         below: - Log in to Salesforce and go to Setup then click on Custom Code. ![](../images/2018/10/email.png) - Click button "New Email service" - ![](../images/2019/01/email.png) **->**There are some field you must know on Email Service Information Page: - Email Service Name: E.g. E-mail Adapter. - Apex Class: search for “IAdapterEmailDataLoader”. - Accept Attachments: All. - Check icon ‘Active’. - On Failure Response Setting: Click on Dropbox field and configure how Salesforce response when an attempt to access this email service falls for the reason show below. - Click on “Save and New Email Address”. ![](../images/2019/01/email2.png) ![](../images/2018/10/001.png)Note: If you did not Check icon 'Active'  the Email Service is created deactivated in this case you can of the active manually , You will see under Setup -> App Setup -> Custom Code-> Email Service -> Click on your Email Service Name - - Add Email Address name- - Email Address: - ![](../images/2018/10/002.png) **->Creating an Email adapter** For this part, the explanation will be focus on the creating of email adapter. To create adapter you can follow the         steps below: - Click on the TAB “Adapter” than “New” and input the information in the require field:  Name: E.g. E-Mail Adapter  Type: Select from the Dropbox=> Email => Click Save ![](../images/2018/10/003.png) **->Editing on Interface** You can enter your existing interface and do some editing by choosing adapter. E.g. Email Adapter. ![](../images/2018/10/005.png)![](../images/2018/10/004.png) **Subject Line of your Email** Accept the email address from salesforce.com by email. The subject line of the email should read as follows: integration=your_IntegrationID;interface=Name_of_the_Interface Note: Provide the IntegrationID and the name of the Interfaces. The IntegrationID is found in the URL of the actual Integration. When you are there, search for a 15-digit ID(id= ....) - Attach the record that you want to import and send the email. ![](../images/2019/01/email11.png) 1. E-mail address generated by Salesforce . 2. Integration=your_IntegrationID;interface=Name_of_the_Interface. 3. Record that you want to import (must be the same in structure implements our interface). - In addition, send the email. TIP: Be sure to test the mapping of your integration first (manual upload). If this works, then get to work with the mail import ================================================================================ Book: Tutorials Section: Tutorials Subsection: Skyvva Formula Title: 1. Formula reference guide? Slug: 1-formular-reference-guide URL: https://help.skyvva.com/#article/1-formular-reference-guide ================================================================================ # 1. Formula reference guide? ### #### Formula Operators and Functions #### Summary Working with formulas. Find out which operators can be used in which formulas and what each one does. **           Math Operators        ** **Operator** **Description** +(Add) Calculates the sum of two values. -(Subtract) Calculates the difference of two values. *(Multiply) Multiplies its values. /(Divide) Divides its values. ^(Exponentiation) Raises a number to a power of a specified  number. ( ) (Open Parenthesis and Close Parenthesis) Specifies that the expressions within the open parenthesis and close parenthesis are evaluated first. All other expressions are evaluated using standard operator precedence. **Logical Operators** **Operator** **Description** = and == (Equal) Evaluates if two values are equivalent. The = and == operator are interchangeable. < > and != (Not Equal) Evaluates if two values are not equivalent. < (Less Than) Evaluates if a value is less than the value that follows this symbol. > (Greater Than) Evaluates if a value is greater than the value that follows this symbol. <= (Less Than or Equal) Evaluates if a value is less than or equal to the value that follows this symbol. >= (Greater Than or Equal) Evaluates if a value is greater than or equal to the value that follows this symbol. && (AND) Evaluates if two values or expressions are both true. Use this operator as an alternative to the logical function AND. || (OR) Evaluates if at least one of multiple values or expressions is true. Use this operator as an alternative to the logical function OR. **Text Operators**** ** **Operator** **Description** CONCAT CONCAT(text1,text2) Join text1 with text2 **Date and Time Functions** **Operator** **Description** MONTH MONTH(date) Returns the month, a number between 1 (January) and 12 (December) DATE   DATE(Long timestamp, Boolean isGMT) converts timestamp(millisecond) to a Date, If isGMT=true returns a date in the GMT time zone. Else returns a date in the local time zone of the current user. If the time zone cannot be determined, GMT is used. DATEADD   DATEADD(date, nbOfDays) return a new date which the specified nb of days has been added/substracted to/from the date if the nb of days is positive/negative respectively. date must be in the format: "dd.mm.yyyy" | "dd-mm-yyyy" | "dd/mm/yyyy" | "yyyymmdd" and nbOfDays is numeric Eg: DATEADD("10.10.2010",30); DATEADD("10.10.2010", -30) ** ** DATEDIFF DATEDIFF(date1Text, date2Text) return the number of days between two dates. If the date1 occurs after the date2, the return value is negative. date1 and date2 text must be in the format: "dd.mm.yyyy" | "dd-mm-yyyy" | "dd/mm/yyyy" | "yyyymmdd" Eg: DATEDIFF("10.10.2010",TODAY()); DATEDIFF("10.10.2011","31.10.2011") DATETIME DATETIME(Long timestamp, Boolean isGMT) converts timestamp(millisecond) to a Datetime, If isGMT=true returns a datetime in the GMT time zone. Else returns a datetime in the local time zone of the current user. If the time zone cannot be determined, GMT is used. DAY DAY("YYYYMMDD") Returns the day of the month, a number between 1 and 31 CDATE CDATE(dateText, dateFormat) Convert dateText to a Date based on a specified date format. dateFormat is ["x.y.z" | "x-y-z" | "x/y/z"] where [x,y,z] are: "d" for day; "m" for month; "y" for year. For example : CDATE("12/31/2010", "m/d/y") CDATETIME CDATETIME(datetimeText, dateFormat, isGMT[true/false]) Convert datetimeText to a DateTime based on a specified dateFormat and in GMT time zone if isGMT true, else in local one. dateFormat is ["x.y.z" | "x-y-z" | "x/y/z"] where [x,y,z] are: "d" for day; "m" for month; "y" for year. Eg: CDATETIME("12/31/2010 12:00:00", "m/d/y", true) TODAY TODAY([integer]) Returns the current date if integer is optional, else return current date +/- integer YEAR YEAR(date) Returns the year of a date **Logical Functions** **Operator** **Description** CASE CASE(expression, value1, result1, value2, result2,...,else_result) Checks an expression against a series of values. If the expression compares equal to any value, the corresponding result is returned. If it is not equal to any of the values, the else-result is returned IF IF(logical_test, value_if_true, value_if_false) Checks whether a condition is true , and returns one value if TRUE and another value if FALSE ISNULL ISNULL(expression) Checks whether an expression is null (blank) and returns TRUE or FALSE NOT NOT(boolean) Changes FALSE to TRUE or TRUE to FALSE NOTHING NOTHING() Returns the nothing value **Text Functions** **Operator** **Description** BEGINS BEGINS(text,compare_text) Checks if text begins with specified characters and returns TRUE if it does. Otherwise returns FALSE LEN LEN(text) Returns the number of characters in a text string LOWER LOWER(text) Converts all letters in the value to lowercase LPAD LPAD(text, padded_length [, pad_string]) Pad the left side of the value with spaces or the optional pad string so that the length is padded_length MAX MAX(number,number,...) Returns the greatest of all the arguments MID MID(text, start_num, num_chars) Returns character from the middle of a text string, given a starting position and length MIN MIN(number,number,...) Returns the least of all the arguments REPLACE REPLACE(text, old_text, new_text) Substitutes new_text for old_text in a text string. Use REPLACE when you want to replace specific text in a text string RIGHT RIGHT(text, num_chars) Returns the specified number of characters from the end of a text string RPAD Right side of the value with spaces or the optional pad string so that the length is padded_length SUBSTITUTE SUBSTITUTE(text, old_text, new_text) Substitutes new_text for old_text in a text string. Use SUBSTITUTE when you want to replace specific text in a text string SUBSTR SUBSTR(text,startIndex,endIndex) Get a substring from a string text from an index to an index TRIM TRIM(text) Removes all spaces from a text string except for single spaces between words UPPER UPPER(text) Converts all letters in the value to uppercase LEFT LEFT(text, num_chars) Returns the specified number of characters from the start of a text string LASTWORD LASTWORD(text) Returns the last word in the specified text. For example: LASTWORD("Toto Tata Titi") return Titi LASTINDEXOF LASTINDEXOF(Text, compareText) Returns the last index of a specified text in a Text CONTAINS CONTAINS(text, compare_text) Checks if text contains specified characters, and returns TRUE if it does. Otherwise, returns FALSE FIND FIND(text, search_text [, start_num]) Returns the position of the search_text string in text ENDS ENDS(text,compare_text) Checks if text ends with specified characters and returns TRUE if it does. Otherwise returns FALSE REPLACELINEBREAK REPLACELINEBREAK(text, replacement) Replaces each line break in text with the specified literal replacement **Advanced Functions** ![](../images/2018/10/f1.png) ## Commonly used formula, with Examples **SourceField=Content** **Formula** **Description** **Result in the target field** ** ** ?Target? Always provides the word ?Example? in the target field Example Field1 = ?A? Field1 & Field2 Unites the content of two fields AB Field1 = ?A? Field2 = ?B? Field1 &?? ??& Field2 Unites the content of two fields with spaces A B Active_Product = ?0?, ?1?, ?2? CASE (Active_Product, ??1??, true, NOTHING()) If Active_Product = 1, indicates the value ?true?; otherwise does not display any value 0 = ?? 1 = ?true? 2 = ?? DATE_Field = ?05.08.2018 09:51:40? IF(ISNULL(DATE) | LEN(DATE)<19,NOTHING(), SUBSTR(DATE,8,10) &"-"& SUBSTR(DATE,5,7) &"-"& SUBSTR(DATE,0,4)) Converts the data format 05-08-2018 DATE_Field= ?01/05/2018? ** ** Converts the data format 05.01.2018 VAT = ?19? TURNOVER = ?300? (VAT/100)*TURNOVER Calculates turnover tax (57?) on the basis of the turnover (300?) and the VAT rate (19%) 57 Pick list key = ?1?,?2?,?3? CASE(?A?, "1","B", "2","C", "3", other) Converts the Foreign Keys from external picklists into Text for picklists in Salesforce. 1 = ?A? 2 = ?B? 3 = ?C? else = ?other? Pick list key = ?1?,?2?,?3? CASE(?A?, "1","B", "2","C", "3","D","4", NOTHING()) Converts the Foreign Keys from external picklists into Text for picklists in Salesforce. 1 = ?A? 2 = ?B? 3 = ?C? else = ?? 1234567890 LEFT(TEXT,5) Reproduces only the left 5 characters 12345 1234567890 RIGHT(TEXT,5) Reproduces only the right 5 characters 67890 1.000.000,0 IF(CONTAINS(KLIMK,"."), SUBSTITUTE(SUBSTITUTE(KLIMK, ".", ""),",","."),KLIMK) Removes the separation character commas and replaces the decimal point separation char 1000000.00 Source_Nr = 512 VLOOKUP (Account, ID, Client_Nr__c, Source_Nr) Adds the Salesforce ID of the Account to the target field whose Client-Nr__c is consistent with the Source_Nr (512) Lookup Account ID = ?0012000000IL6xiAAD? Source_Email = ?user@skyvva.com? VLOOKUP (User, ID, email, Source_Email) Adds the Salesforce ID of the user into the target field whose email address is consistent with with the Source_Email (user@skyvva.com) Lookup User ID = ?0012000000IL6xiAAD? **Examples:** **IF: ** **IF(logical_test, value_if_true, value_if_false) ** Checks whether a condition is true , and returns one value if TRUE and another value if FALSE **IF** **IF with String** **IF(language__c = "German", 'D', 'E')** **Logic** IF(ISNULL(SALESFORCEID), VLOOKUP(Lead, Id, SAP_ID_REF__c, E101STRUC_IDENTIFICATIONKEY#IDENTIFICATIONCATEGORY:Z_SF#.IDENTIFICATIONNUMBER ) , SALESFORCEID) --- **SUBSTR:** **SUBSTR(text,startIndex,endIndex)** Get a substring from a string text from an index to an index **Example:** **SUBSTR("20120809",6,8)&SUBSTR("20120809",4,6)&SUBSTR("20120809",0,4)** **Output: 09082012** --- **REPLACE: ** **REPLACE(text, old_text, new_text)** Substitutes new_text for old_text in a text string. Use REPLACE when you want to replace specific text in a text string **Example:** **someone who wants to map the description field of an object. He gets a ";" as sign for a line break. Now he wants to replace the “;” with a break. What's the best way to do this?** **REPLACE(DESCRIPTION, ";", " ")** --- **CDATE: ** **CDATE(dateText, dateFormat)** Convert dateText to a Date based on a specified date format. dateFormat is ["x.y.z" | "x-y-z" | "x/y/z"] where [x,y,z] are: "d" for day; "m" for month; "y" for year. For example : CDATE("12/31/2010", "m/d/y") --- **Example: ** **Integration can support only authorized format date : dd.mm.yyyy or dd-mm-yyyy or yyyymmdd or dd/mm/yyyy** **if customer has data in format date like 2018-20-8, I suggest using function CDATE(XXXX, "y-d-m")** **i.e.: CDATE("2011-20-9", "y-d-m")** Output: 20.08.2018 --- **DATE: ** **DATE(Long timestamp, Boolean isGMT) ** converts timestamp(millisecond) to a Date, If isGMT=true returns a date in the GMT time zone. Otherwise returns a date in the local time zone of the current user. If the time zone cannot be determined, GMT is used **Example: ** **DATE("1292948797", false) => result: 16.01.1970 in format (dd.MM.yyyy) in local time zone of current user.** **DATE("1292948797", true)=>15.01.1970 in GMT time zone.** --- **CDATE: ** **CDATE(dateText, dateFormat) ** Converts dateText to a Date based on a specified date format. dateFormat is ["x.y.z" | "x-y-z" | "x/y/z"] where [x,y,z] are: "d" for day; "m" for month; "y" for year. For example : CDATE("12/31/2010", "m/d/y") **The following are the date formats which are supported by our tools:** **d/m/y or d-m-y or d.m.y** **If your date is in format 31/12/2012, the formula to convert date must ****be:** **target Source -> ClosedDate CDATE("31/12/2012", "d/m/y")** **or** **target Source -> ClosedDate CDATE("12/31/2012", "m/d/y")** **And if the date is in format 31-12-2012 : ClosedDate <-->** **CDATE("31-12-2012", "d-m-y")** ** ** --- #### More on VLOOKUP and Best Practices **Before you commence your first integration operation you should observe the following basis for file migration and integration:** 1) Parent / child objects must be created using a logical sequence **E.g.: ** **A contact (child) should have access to an account (parent). In order to assign a contact to an account, the account must exist in the system prior to the contact.** 2) Parent / child objects must be connected with primary and foreign keys **E.g.: ** **For each customer / account (child), there is a designated account owner / user (parent). To import a list of customers, a key which explicitly identifies the Account Owner is required.** ** ** **An example of the sequence during the creation of records and their relationship to each other:** ![](../images/2018/10/Screenshot-263-1.png) One way to do mapping is to use the Mapping tool at the interface detail page to perform mapping for the interface integration. Drag and Drop from Source Definitions to sObject Field **For Account mapping sheet, do mappings as shown in the figure:** ![](../images/2018/10/Screenshot-405.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For each object, it is required to have an External Id field which is to be used for synchronization with external system. This external id field must be unique in order to avoid duplicate records on each object.[/su_box] You can do formula mapping by (see the above figure) - Ticking Formula at a mapping record in the Data Mapping table. - Clicking the record row ![](../images/2018/10/Screenshot-268.png) Do as instructed in the above figure ![](../images/2018/10/Screenshot-406.png) **How can I put some logic in the mapped fields?** - If you select the mapped field and tick “Formula” and click again in the selected row, the formula screen appears. Below you will find a couple of examples of how VLOOKUP can be used with various objects in order to establish connections with other objects. Ensure that each object has a Primary Key (indicated with “*”), so that this object can be referenced. **Examples:** **User** Alias*                                                           <= Alias_Sourcefile **Account** Ext_ID_Account__c*                             <= Ext_ID_SourcefileA **SourceField                                          Target** Owner ID:                                                  VLOOKUP(User,Id,Alias,Alias_Sourcefile) **Contact** Ext_ID_Contact__c*                             <= Ext_ID_SourcefileK (alternative email address) **SourceField                                         Target** Owner ID                                                   VLOOKUP(Account,OwnerID,Ext_ID_Account__c,Ext_ID_SourcefileA) Account ID                                                VLOOKUP(Account,ID,Ext_ID_Account__c, Ext_ID_SourcefileA) #### Opportunity Ext_ID_Opportunity__c*                     <= Ext_ID_SourcefileO **SourceField                                         Target** OwnerID                                                    VLOOKUP(Account,OwnerID,Ext_ID_Account__c, Ext_ID_SourcefileA) Account Id                                                 VLOOKUP(Account, ID, Ext_ID_Account__c, Ext_ID_SourcefileA) Contact ID                                                 VLOOKUP(Contact,ContactID,Ext_ID_Contact__c,Ext_ID_SourcefileK) #### Opportunity Line Item In the Standard Price Book, the price for each product is listed as the Sales Price. The Quantity and Discount are then applied and define the Total Price. - Formula which calculates the Total Price based on Sales Price, Quantity and Discount **Target:** TotalPrice **Source:** Quantity*VLOOKUP(PricebookEntry, UnitPrice, ProductCode, Product_Number)/100*(100-Discount) - Formula which retrieves the PricebookEntry from the Standard Price Book **Target: ** PricebookEntry **Source:** VLOOKUP(PricebookEntry, Id, ProductCode, Product_Number) **StandardPricebookEntry** **Target:** Pricebook2Id **Source: ** IF(VLOOKUP(Pricebook2, Name, Name, PricebookName)="Standard Price Book", VLOOKUP(Pricebook2, Id, Name, PricebookName), VLOOKUP(Pricebook2, Id, Name, "Standard Price Book")) **Contact** **Target:   **AccountId **Source:** VLOOKUP(Account,Id,Name,Customer_Name) #### ADVANCE FEATURE **Add apex class to use as formula** This feature enables user extends function of mapping formula to execute their apex class. Sometime, standard formula cannot handle the complex business logic. So user can write the apex script to execute the business logic. The apex class must be extends skyvva's based class <**skyvvasolutions.IFormulaBase**> and override some methods: - **public override String execute(Map record*)***: execute when processing mapping. User can define the formula based on data in map **record **and return their result as text (of Number, Date, DateTime, Id) is required by integration. - **public override void preExecute(List> records)**: execute before **execute(…) **and processing mapping, It is optional. But important in case execute query statement to search existing record in salesforce and cached result for using accordingly. **Key**** of map (record)**: - lower-case for InBound - selected Field-Name (case-sensitive) for OutBound **Warning!** : Does not execute query in method **execute(…) **because it is called when processing mapping every message record data, It can exceed the query limit in salesforce. Please override the method **preExecute(…) **then query and cached the result for using in **execute(…).** Invoke apex class with formula APEXCLASS("SkyvvaCustomFormula"): The apex class must be surrounded by double quotes. Mapping ![](../images/2018/10/Screenshot-407.png) **Sample Apex Class:** This apex query all accounts based on ERP_DEBTOR_ID number to get each account id to map to target field AccountId for contact. **public override void preExecute(List> records)**: Queries all accounts in salesforce base on ERP_DEBTOR_ID’s values and caches result in Map. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]**public override String execute(Map record)**: Get account id from cached and return the id. ###### globalwith sharing class SkyvvaCustomFormula extends skyvvasolutions.IFormulaBase{ ###### //cache of account Id ###### Map erpIdAccountId=new Map(); ###### /* ###### Query accounts based on ERP_DEBTOR_ID and ceche the result in map  erpIdAccountId ###### @param records:      Collection of map data of every messages ###### i.e: list of map record records ###### {email=test1@gmail.com,  erp_debtor_id=RES001,  firstname=test1,  lastname=test1} ###### {email=test2@gmail.com,  erp_debtor_id=RES002,  firstname=test2,  lastname=test2} ###### */ ###### public override void preExecute(List> records){ ###### //System.debug('>SkyvvaCustomFormula.preExecute:message-records:'+records.size()); ###### //add value of erp_debtor_id into set ###### Set erpIds=new Set(); ###### for(Map m: records){ ###### //key must be lower case ###### String erpId=m.get('erp_debtor_id'); ###### if(String.isNotBlank(erpId))erpIds.add(erpId); ###### } ###### //System.debug('>SkyvvaCustomFormula.preExecute: Set erpIds:'+erpIds); ###### //>Set erpIds:{RES001, RES002} ###### //Query accounts based on set erpIds and put to cache ###### for(Account a: [select erp_debtor_id__c,id from Account where ERP_DEBTOR_ID__c ###### IN:erpIds]){ ###### erpIdAccountId.put(a.erp_debtor_id__c, a.Id); ###### } ###### //System.debug('>SkyvvaCustomFormula.preExecute:cache erpIdAccountId: ###### '+erpIdAccountId); ###### //>erpIdAccountId:{RES001=001F000001hGGJhIAO, RES002=001F000001mv8F4IAI} ###### } ###### /* ###### Find account id based on ERP_DEBTOR_ID from cache ###### @param record: map contains key/value of each message-data. the key of must be lower case ###### i.e: record{email=test1@gmail.com, erp_debtor_id=RES001, firstname=test1, lastname=test1} ###### */ ###### public override String execute(Map record){ ###### //System.debug('>SkyvvaCustomFormula.execute: '+record); ###### //key must be lower case ###### String erpIdVal=record.get('erp_debtor_id'); ###### //return account-id ###### return erpIdAccountId.get(erpIdVal); ###### } ###### } **Formula ARRAY() to create the JSON array for the outbound processing:** We can create a new function called 'ARRAY'. The user will use the fx field and map to a target field Tx. When the formula editor opens we can select the source field into this formula as we can do with, for example, **the CONCAT function.** The user can select any source fields as needed and it will look like this: ARRAY. Our runtime has to execute this function by looping over the selected fields, reading the fields, and creating a special format using a special separator that cannot be inside the data. Such a separator can be for example **'%3B'.** We hope that this character combination is not found inside the data field. Our data would look like 'January%3BFebruary%3BMarch'. This is the mapping result of the target field Tx. Now we need to change the code of the generic **JSON **generation class on the adapter side to understand this format and generate an array of strings because the target field data type is a string. The result would look like "month":["January", "February", "March"] Note: Function ARRAY is a formula to map multiple field values to a target field that requires values as an array in payload such as JSON structure. Mapping: ![](../images/2018/10/clipboard-202207061115-duopr.png) Generated payload: ![](../images/2018/10/clipboard-202207061116-k0cqs.png) [/aux_code] ***We listen. Over the last decade, we’ve built our business by meeting organizations where they are—we solve the problems that matter to you, regardless of how simple or complex they may be*****.** ![](../images/2018/10/Screenshot-408.png) ###### ###### ###### ================================================================================ Book: Tutorials Section: Tutorials Subsection: What to do after a instance refresh? Title: 1. What to do after a instance refresh? Slug: what-to-do-after-a-instance-refresh URL: https://help.skyvva.com/#article/what-to-do-after-a-instance-refresh ================================================================================ # 1. What to do after a instance refresh? This tutorial explains about what you do after refresh your production instance. It explain also about license key, certificate and key store, and how to save or download them for using later. #### What is formula? When a sandbox or development instance got refresh by a production instance, some information or data get lost. The following have to be renew or create again: **1. SKYVVA license key** **2. Certificate** **3. Keystore** #### License key After refreshing, the license key is not valid anymore. You will see this error message when trying to send data to Salesforce. Before refreshing your sandbox you can save your old license key somewhere to use later. The screenshot below show an error has occur due to invalid or expire of license key. This tutorial will tell you how to add or renew the license key. To add license key, you have to: - Go to the user used for integration ![](../images/2018/10/IR-1.png) Note: If you don't have the Skyvva licence key filed on user profile then Follow the given steps to add field by editing layout: - Click on edit layout icon. ![](../images/2018/10/user_01.png) 2. Add the Skyvva Licence filed and save it. ![](../images/2018/10/user02.png) - Here you get the SKYVVA license key and it now invalid after refresh ![](../images/2018/10/user03.png) - To generate a new license key we required some information i,e : Organization Name,Salesforce.com Organization ID ![](../images/2018/10/user04.png) here My details are: - Organization Name: Skyvva - Salesforce.com Organization ID: 00D6F000002WCZo - Old license key: SP+2WGSwnuugKpbcOeThOAcFjrI=????MTY5NTU3NDgwMDAwMA== Now you can apply the old/new license key. Go to edit mode and enter the new key provided by mail: ![](../images/2018/10/user05.png) #### Certificate For example, after refresh a dev/sandbox instance from a productive instance, the certificate got lost and you have to create it again. However, you do not have to create them again. We are talking here about download each certificate and export keystore. Note: Please remember that, before you refresh your sandbox you have to save your certificate otherwise the keystore will override. However if you don’t have any keystore then please skip the steps below. #### Download certificate After you have created the certificate, you can download it and install into a reverseproxy or other component. ![](../images/2018/10/1-28.png) Open the list of certificate management screen and click on the appropriate certificate, which you want to download from Salesforce. ![](../images/2018/10/2-27.png) Open the certificate you have created and click on button "Download Certificate". You have to save it to a directory on your PC at your choice. ![](../images/2018/10/3-24.png) Here how the certificate looks like. Now you can use this certificate e.g. import it into the SAP WebDisaptcher. **Save Keystore** To save keystore you can follow some steps below: Here you can check the certificate and key management in Salesforce. ![](../images/2018/10/5-21.png) Click on "Export to Keystore" button. ![](../images/2018/10/6-21.png) Input the password and click the Export button to save the keystore. ![](../images/2018/10/7-19.png) **Adapt the outbound Adapter if needed** This step you need only if the name of the certificate has been changed when created it again after a refresh. If you keep the old name then you do not need to adapt the adapter.  Not that this step is optional. Currently, the adapter for the outbound interface looks like this: ![](../images/2018/10/1-29.png) Therefore, the name used here is "GRT_SAPDis". Now we change the name to the new one e.g. to "CPQIntegrationUserCert". Note: we recommend creating a new self-signed certificate with the old name. In this case, you do not need to adopt the certificate in the adapter. ![](../images/2018/10/2-28.png) Take care to enter the correct name into the adapter. You have to take the name under the field "Unique Name" here in this example "CPQIntegrationUserCert". Do not take the Label on the left side. In this example, we have given both fields the same name. Therefore, it is not a good example for showing about difference name. Now go to the adapter and adopt the name of the certificate if you name it differently from the old one. ![](../images/2018/10/3-25.png) Click on "Edit" to change the value. ![](../images/2018/10/4-24.png) Now save it. ![](../images/2018/10/5-22.png) This is now the result after changing the certificate name of the adapter object. **User and Password in the adapter (outbound call)** After refresh, the user and password are encrypted again when inserting the new data. So it is double encrypted and the decryption is not working. Therefore, the user and password have to be adapted as well. We can test the adapter and we can see this error now: ![](../images/2018/10/1-30.png) Now we change the user and password. ![](../images/2018/10/2-29.png) ![](../images/2018/10/3-26.png) After changing user and password, we do not get the error with "unauthorized" anymore. Here is the test result: ![](../images/2018/10/4-25.png) So now, we can resend error message from the SKYVVA monitoring again to SAP. Here the error in the SKYVVA monitoring before we change the user and password: ![](../images/2018/10/5-23.png)![](../images/2018/10/6-22.png) When we select the entire message and reprocess it will do in batch via an Apex job. Here we can see the apex job for the reprocessing. ![](../images/2018/10/7-20.png) The number of “Total Batches" is 5 e.g. it was 5 messages to be reprocessed. ![](../images/2018/10/8-17.png) Now the reprocess is completed. Now the message is green in SKYVVA monitoring. ![](../images/2018/10/9-16.png) **Test Connectivity** In Skyvva we can do a connection test from Salesforce to SAP. We can do a technical ping. Here is an example where the ping is not successful. The problem was not clear and after the restart, the sap web dispatcher the ping test is working. Here is the result. ![](../images/2018/10/4-26.png) Now we do a test connection with the test payload. The result of the test looks like this: ![](../images/2018/10/5-24.png) This is ok since the test payload is not correct we get this exception from the soap sender channel. ![](../images/2018/10/6-23.png) This error is ok at the SAP-PI adapter side. We see that the connection went through the firewall and that the soap sender channel received the data from Salesforce. Nevertheless, this data is not correct and this is ok like this. We just want to test the pure technical connectivity and if the firewall is, open for Salesforce. Here the error message last time while the connectivity was not working. ![](../images/2018/10/7-21.png) Now we resend this message again after we restart the sap web dispatcher. The message was successfully reprocessed. ![](../images/2018/10/8-18.png) **Adapt the integration Id in PI-Mapping and Module** In the mapping of SF-Inbound interface, you have to adapt the integration Id in the interface determination in the directory. ![](../images/2018/10/1-31.png) Like shown in this screen in the mapping you will need the integration id but you pass the integration Id from the directory at the configuration time at the interface determination. ![](../images/2018/10/2-30.png) Here in the interface determination, you have to enter the new integration Id. The integration id is used in the SKYVVA module as well and here you have to adapt it as well. ![](../images/2018/10/3-27.png) The parameter session pooling.ItegrationID has to be adapted to the new integration Id value. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to do Hierarchical mapping? Title: 1. How to do Hierarchical mapping? Slug: how-to-do-hierachical-mapping URL: https://help.skyvva.com/#article/how-to-do-hierachical-mapping ================================================================================ # 1. How to do Hierarchical mapping? This tutorial explains about the configuring of hierarchical mapping. It describes the process of performing integration from external system. ## 1. What is Hierarchical mapping? Hierarchical mapping is a mapping in which you can map all different parts of data from different sObject into the tree target structure. We can do it in three ways:- - Hierarchical mapping by using vlookup . - Hierarchical mapping by using Foreign key. - Hierarchical mapping by using Message Type v3 or hierarchical message type. #### Pre-requisite:- - When we use message type, it means that the parent interface contains a child interface. - The child interface is created by message type automatically you did mapping on the parent interface. - The agent can read interface from skyvva/salesforce that interface type= Main-Interface only. **Follow the given steps to create message type:-** **1.1  Create MetaData Providers -> New MetaData Providers:-** ![](../images/2018/10/mapping4.png) **1.2 Create IStructure Repository click on New IStructure Repository :-** ![](../images/2018/10/mapping5.png) **1.3  Create 3 New Message Type (account, contact) click on New Message Type:-** **Account Interface:** ![](../images/2018/10/mapping6.png) **Contact Interface:** ![](../images/2018/10/mapping7.png) **1.4  Click on Message Types Related tab then click on Message Type field entry ->New button:-** ![](../images/2018/10/HM-07.png) - **New Button Navigate to:-** ![](../images/2018/10/HM-08.png) ![](../images/2018/10/HM-09.png) *** Follow the same steps for the contact Interface.** ## 2.  The configuration:- ### 2.1. The configuration for Hierarchical mapping by using vlookup :- To configure this, there are steps should be followed: - **Create an Interface which Lookup to MetaData Provider, IStructure Repository and Message Type.** ![](../images/2018/10/mapping8.png) - **Enter the Interface detail page, which you had just create, and mapping with flat field that include Account and Contact with sObject tree and then make VlookUp account with Contact:-** ![](../images/2018/10/mapping1.png) - **Then right click on field that we do vlookup:-** ![](../images/2018/10/mapping1-1.png) - **The following screen display that the Interface is automatically chain with contact after done mapping and vlookup:-** ![](../images/2018/10/HM-11.png) ### 2.1.1 Go to Agent To process data: - **Click on agent icon,  Select your integration, Interface:-** ![](../images/2018/10/mapping9-1.png) - **Click On edit Interface button:-** ![](../images/2018/10/mapping11.png) - **Save adapter and process the interface:-** ![](../images/2018/10/mapping10.png) ### 2.1.2. The monitoring result in Message Monitoring Board - **Please log in to Salesforce and enter Message Monitoring Board:-** ![](../images/2018/10/mapping9.png) ![](../images/2018/10/mapping2.png) - **You can Check the result:-** ![](../images/2018/10/mapping3.png) ### 2.2 The configuration for Hierarchical mapping by using foreign key :- To configure this, there are steps should be followed: - **Create an Interface which Lookup to MetaData Provider, IStructure Repositoy and Message Type:-** ![](../images/2018/10/fk.png) - Enter the Interface detail page, which you had just created. - Double click in the row as shown in the picture given below. ![](../images/2018/10/fk-1.png) - **Select Foreign key and then click on ok button:-** ![](../images/2018/10/fk1.png) - **The following screen display that the Interface is automatically chain with contact after done mapping:-** ![](../images/2018/10/fk2.png) ### 2.2.1. Go to Agent To process data: - **Click on agent icon,  Select your integration, Interface:-** ![](../images/2018/10/fk3.png) - **Click On edit Interface button:-** ![](../images/2018/10/fk4.png) - **Save adapter and process the interface:-** ![](../images/2018/10/fk5.png) ### 2.2.2 The monitoring result in Message Monitoring Board - **Please log in to Salesforce and enter Message Monitoring Board:-** ![](../images/2018/10/fk6.png) ![](../images/2018/10/fk7.png) - **You can Check the result:-** ![](../images/2018/10/fk8.png) 3. Hierarchical mapping by using Message Type v3 or hierarchical message type. Pre-required - Upload or create hierarchical message type. - Create Interface and link with hierarchical message type Step1: Upload or create hierarchical message type. - Here's a Soap Message Type. ![](../images/2018/10/1-19.png) Step2:  Create Interface and linked hierarchical message type  . ![](../images/2018/10/2-10.png) Step 3. How to do mapping with hierarchical? First we need to Mapping from left to right which is the parents node that we want to mapping . Example We need to get value from salesforce to do outbound base on the structure that we uploaded or created.  To do mapping we need to know which field that we want to map and then we need to map the parent node of salesforces to the parent node of the structure. - Here's the mapping tool ![](../images/2018/10/3-5.png) So if we need to get value from salesforce to do outbound we need to mapping parent node of salesforce  with the parent node of structure that we want, example we want to get the Name , FirstName, and LastName so we need to mapping the parent node of Account with the parent node of Structure. and then we map field to field that we want and then if we want to get value from the child node we need to do like that again so  meaning that we can mapping hierarchical depend on what we drag down and what we want. But if we can't mapping without parents node. See the example below. ![](../images/2018/10/4-8.png) As we see the picture above we can see we need to map node Account with Node MyAccount and node Contact with node MyContact because we need the value from those nodes. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Automated Report? Title: 1. How to use Automated Report? Slug: how-to-use-automated-report URL: https://help.skyvva.com/#article/how-to-use-automated-report ================================================================================ # 1. How to use Automated Report? This tutorial explains how to use Automated Report and how to export the messages report. ### 1.  What is Automated Report? An Automated Report is a function, which report daily the failed/rejected messages per interface through email. You can also export the report message. ### 2.  How to use Automated Report To use Automated Report is easy, just enter Integration admin page, and click on Reports & Links tab then Message Report. There is a filter to search for fail messages. You can filter on Integration Name, Interface Name, and Message Status. You can also search two or more statuses in the same time (Pending, Failed). You have to click on additional view option in order to show the messages fields. To search for Failed/Pending Message please: - Filter an integration, add interface, and add message status then click Search ![](../images/2018/10/automatedreport.png) - Click on Message report ![](../images/2018/10/report.png) If you need to export message report, there are three options for you to choose: - Send report with any result by email. - Download Current Display Result. - Download all Result. #### 2.1    Send report with any result by email. - When you click on 'Send Report with All Result by email' button, you will get all of messages in your email automatically. This button is available at the bottom of the page. - The Sending Report will pop up, and then you have to filter an email or the user and check your email. - On the other hand, you can also set the time to get the message by email too. To set it, you can follow given steps below:- - Click on Define scheduler in Scheduler section where we can edit Filter section. (As shown in the picture below). ![](../images/2018/10/report1.png) #### 2.2 Download Current Display Result:- - However, when you click on Download Current Display Result, you will get only 10 failed messages that show on the screen and it will download directly as csv file. **2.3  Download Current Display Result:-** - It means user can download all messages from all pagenation the file store on machine or user email if small file it store on machine if big file it will file to user email. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to do invoke callout using Queueable mode? Title: 1. How to do invoke callout using Queueable mode? Slug: how-to-do-invoke-callout-using-queueable-mode URL: https://help.skyvva.com/#article/how-to-do-invoke-callout-using-queueable-mode ================================================================================ # 1. How to do invoke callout using Queueable mode? **What is Queueable mode?** As you know that, customer is as our priority, so we want to provide a quality tools for them. For callout, we want to enhance the performance in order to support other technique, which is “Queueable”. Queueable have added to “Auto” mode. In a new release “Auto” mode supports future, batch and queueable. **The configuring of Invoke callout using Queueable mode** To callout, using “queueable”, there are some steps should be follow: 1. Interface configuration - Choose outbound type - Asynchronous Processing mode - And choosing adapter ![](../images/2018/10/img-1-6.png) - Navigate to Developer Console then click on Debug Menu and Open Execute Anonymous Window ![](../images/2018/10/img-2-5.png) - Enter Apex code below then Execute the code skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnxml=true; c.returnListRecord=true; c.iscreatemessage=true; List lId = new List(); for(Account a : [SELECT Id FROM Account]){ lId.add(a.Id); } skyvvasolutions.IServices.invokeCallout2('IntegrationName','InterfaceName',lId, 'QUEUEABLE', c); **3 To check the result** After you done executed the code, you can either check the result in apex job and Message monitoring. - Check in Apex Job ![](../images/2018/10/img-3-5.png) **Check on Message Monitoring** ![](../images/2018/10/img-4-4.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Export data without header for Agent component ? Title: 1. How to Export data without header for Agent component ? Slug: how-to-export-data-without-header-for-agent-component URL: https://help.skyvva.com/#article/how-to-export-data-without-header-for-agent-component ================================================================================ # 1. How to Export data without header for Agent component ? Export Data without header for Agent Component Now user can export data from Salesforce without header with Agent Agent can export data without header with Adapter Type = File, FTP & File Type = CSV, Excel file. - Go to Agent - Select Integration - Select Interface ![](../images/2018/10/img27.png) - Select interface and click on edit button ![](../images/2018/10/img41.png) - Select BillingCountry, BillingStreet, Billing City, BillingState, Name from Account - Click ok ![](../images/2018/10/img29.png) - Click ok - Save ![](../images/2018/10/img42.png) - Go to your Salesforce Dev - Click on Interface ![](../images/2018/10/img30.png) - Scroll down to Mapping Section & Map fields. ![](../images/2018/10/img31.png) - Click on Process button ![](../images/2018/10/img32.png) - Process complete - Press ok ![](../images/2018/10/img35.png) - Go to message board - Click on Search button ![](../images/2018/10/img33.png)![](../images/2018/10/img34.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to Import XML file Agent to Salesforce ? Slug: how-to-import-xml-file-agent-to-salesforce URL: https://help.skyvva.com/#article/how-to-import-xml-file-agent-to-salesforce ================================================================================ # 1. How to Import XML file Agent to Salesforce ? This document explain you that How can you Import XML file Agent to Salesforce. - Go to Salesforce dev - Create Adapter ![](../images/2018/10/Import-01.png) - Create Integration ![](../images/2018/10/Import-02.png) - Create Interface ![](../images/2018/10/Import-03.png) - Save - Now Go to Agent ![](../images/2018/10/Import-04.png) - Select your Integrations  name - Click on Edit Interface button ![](../images/2018/10/Import-05.png)   - Click on Test Source Connection - Click Test Query - Save - Now Go your salesforce dev org - Click on your Interface which you created ![](../images/2018/10/Import-06.png) - Scroll down to mapping section - Map the Source fields - Select Name Ext Id - Save ![](../images/2018/10/Import-07.png) - Now last step go to Agent - Select Interface & Click process button ![](../images/2018/10/Import-08.png) - Go to your Salesforce Org - Click On your Intrgration->Click on messages(it navigate to message board) ![](../images/2018/10/Import-09.png)![](../images/2018/10/Import-010.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to import flat xml file? Title: 1. How to import flat xml file? Slug: how-to-import-xml-file-manual-load URL: https://help.skyvva.com/#article/how-to-import-xml-file-manual-load ================================================================================ # 1. How to import flat xml file? ## Learning Objectives After completing this unit, you’ll be able to: - Describe what the Manual Load feature is. - Comfortably use the manual load feature to import XML data. ![](../images/2018/05/Book-1-768x391.jpg) #### Introduction SKYVVA´s Free Dataloader is part of the SKYVVA´s Integration Cloud App and is a native force.com App. As a true Cloud Service data can be uploaded over the Web without the need to install any software or hardware. SKYVVA´s Free Dataloader is perfectly suited for a business analyst and administrator to manage the import of critical business information such as accounts, contacts, assets products, leads or orders in a timely manner without being reliant on limited IT resources. Based on an intuitive (Salesforce Look & Feel) Web interface SKYVVA´s Free Dataloader is very easy to configure (No Coding) and maintain. The Free Dataloader is installed as a tab 'Integration' directly in the Salesforce menu bar. Fields are mapped by a visual editor, data are transformed using a formula editor. All operations are executed in the familiar Salesforce Look & Feel. Business analysts or administrator get alerted about failure in the service and are enabled to resolute data transforming or process logic without IT help via a message board #### What is SKYVVA Data Loader? SKYVVA´s Dataloader is a native Salesforce App and is designed to integrate data supporting CSV/XML format via a manual file upload. It is simple, intuitive and powerful to built integration in minutes. It is a Config&Click graphical mapping tool. Skyvva data loader use to upsert, insert, update, delete, or export Salesforce records. #### Pre-requisite We should have a salesforce organization with Skyvva products. #### Configuration of SKYVVA Data Loader To import data from CSV/XML file into Salesforce Please follow the given steps: **Step 1. The first step is to create a new Integration to import our XML file.** - On the Menu Bar, you see the Integration tab -> clicks on the tap Integration. Please refer the document to [create Integration](#) - Click On New button. ![](../images/2018/10/Integration.png)![](../images/2018/10/Book2-1.png) - Fill in the **Name** Field (Give a meaningful name that identifies your integration.) We give our Integration a name and a short description of the use case for this integration. - All other fields can remain as default... - Click on **Save button**  and we have created an Integration to upload  XML file ![](../images/2018/10/1-18.png) **Step 2.  The next step is to create the Interface for the Account Object**. To create new interface follow the given steps: - Go to your Integration page. - Click on Interface tab (near to detail tab). - Click On New Interface button. ![](../images/2018/10/Book2-3.png) We give our Interface a Name and change the Status to Deploy and choose in Source Name the proper SObject -> Account. All other fields can remain as default… Click on the ‘Save’ button and created our Account Interface. **Interface Fields Information:** - Name: It can be Account, Contact or Case.. etc to notify your Interfaces - Statue: Deployed (It can be used) - Sequence: Ranking number (1) - Adapter: It is the connector - Source Name: Salesforce Objects (Account, Contact or Case.. ect.) - Operation Type: There are 4 types: – **Upsert**: To update on existed data and insert new data that doesn't exist yet in Message Monitoring. – **Update**: Only update on data that is already existed in Message Monitoring. – **Insert**:  Add all data in the Message Monitoring. – **Delete**: Delete all data in Message Monitoring. - Type: There are 2 Types: – **Inbound**: Import data into Salesforce – **Outbound**: Export data outside Salesforce ![](../images/2018/10/Book-2.png) We click on 'Save' and created our Account Interface. ![](../images/2018/10/Book-3.png) We click on the 'Account Interface' link and see the Interface Details. It navigates to: ![](../images/2018/10/Book-4.png) **Step 3    How to do Mapping** Cross down to Source definition Section->Click choose file button to browse the file that wants to map and choose your XML file to upload ->choose file->Click Open button->and then click on 'Save' ![](../images/2018/10/xml1.png)![](../images/2018/10/xml1-1.png) - Browse the XML file for Istructure. - And save it. Your uploaded XML file structure looks like: ![](../images/2018/10/book_xml2.png) You see the Message that the XML file upload was successful and then click on the OK button. ![](../images/2018/10/import_xml_4.png)![](../images/2018/10/import_xml_4.png) In the reloaded Mapping area we see now our source structure with all fields. ![](../images/2018/10/import_xml_2.png)![](../images/2018/10/import_xml_3.png)![](../images/2018/10/import_xml_2.png)![](../images/2018/10/import_xml_3.png) Select the external Id field (Name). For object, it is required to have an External Id  field which is to be used for synchronization with the external system. This external id field must be unique in order to avoid duplicate records on each object. **Steps 4:  How to do Manual Load?** Now we have finished our interface setup and go back to our Integration Details Page and click on the 'Manual Load' link. On the Manual Load page, you will have choose the same file (1) and Upload (2) again. ![](../images/2018/10/xml-5.png)![](../images/2018/10/xml-5.png) - Select Data type XML - Browse XML file - Click on Upload Button ![](../images/2018/10/import_xml_7.png)![](../images/2018/10/import_xml_8.png)![](../images/2018/10/import_xml_7.png)![](../images/2018/10/import_xml_8.png) After you have selected the records click on 'Push' Button to upload the data into Salesforce and you get the message that the upload process started. We click on the 'Message Board' Button and come to the Message Board. ![](../images/2018/10/import_xml_9.png) **![](../images/2018/10/import_xml_9.png)Step 5    How to use Message Monitoring?** Storage usage will be found when you are on the Message Board page. And Filter below will show how to use or search different criteria, for example: ![](../images/2018/10/DataStorage.png)![](../images/2018/10/DataStorage.png) Below is the 'Filters'  area, you can search for different criteria e.g. Integration Name, Interface Name, Message Status or by Date. - Filters: - Integration Name: You can choose which Integration you prefer to see the result - Interface Name: You can choose which Interface you prefer to see the result - Message Status: - There are many types of Status, but there are 3 common using types: - **Green** Flag   =  The upload was successful and is **Completed** - **Red** Flag    = **Failed** - **Yellow** Flag  = **Pending** -Note:  You can select None if you prefer to see all types of message flags. Then click on Search. ![](../images/2018/10/import_xml_5.png)![](../images/2018/10/import_xml_5.png) - Messages Section You will be able to see the Total Number of Records as well. - Type: Inbound or Outbound - Target: is the target interface that is used to be integrated to -Statue: It shows which flag is green, red or yellow... etc. -Creation Date: It shows which date interface is created - Modification Date: It shows which date interface is Modified - **Button** - Select All:  The function of Select All button is to select all Message results -Deselect All: The function of Deselect All button is  to Deselect all Message results -Delete: The function of the delete button is to delete only selected Messages -Deleted All: The function of Delete All button is to delete all Message results -Cancel: cancel selected Messages that are a pending status -Cancel All: The function of canceling All button is to cancel all Pending Message results ![](../images/2018/10/import_xml_6.png) As you can see the status of uploaded record was green which means it was success or completed. In case you want to see your Account Detail In the Message area, clicking on ‘Related To‘ to jump there. ![](../images/2018/10/import_xml_10.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Control Board Title: 9. Adapters of the Agent Control Board (Old) Slug: features URL: https://help.skyvva.com/#article/features ================================================================================ # 9. Adapters of the Agent Control Board (Old) An adapter is a device for connecting pieces of equipment that cannot be connected directly. The adapter is also important; without it, you cannot transfer the data to the external system. It provides the interface between a computer and a network connection. There are many different types of adapters such as File Adapter, Database Adapter, FTP/SFTP Adapter, SAP-R/3 Adapter, and SAP-ERP Adapter. File Adapter and Database Adapter supported for Agent. However, SAP-R/3 and SAP-ERP Adapter are used to connect to SAP-R/3. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Control Board Title: 7. CDC Control Board Slug: cdc-control-board URL: https://help.skyvva.com/#article/cdc-control-board ================================================================================ # 7. CDC Control Board The document will explain how can we use Change Data Control (CDC) for handling data vicissitudes in Salesforce. We can customize the data changes of any sObject and sent out  The client. It fortifies an asynchronous mode to accumulate transmuted data which we call the change pointer and sent out to the client. The main difference to the streaming API of Salesforce is that data can be bulk as astronomically immense data. Furthermore, customers can liberatingly schedule when the data will be sent e.g. every 5 minutes, 30 minutes, etc... With this feature, the customer doesn't require to develop such an app to amass data change and sent out to the client. Just use SKYVVA CDC. **What is CDC Control Board?** CDC Control Board is a dashboard where we can monitor Change Pointer, Interfaces and Scheduler. Each tab holds different functionality. Change Pointer is a table that stores change pointer records. So we can facilely monitor them on Change Pointer table in CDC Control Board rather than on the Integration Admin tab. This withal applies for Interfaces and Schedulers tab. ## What is the CDC Control Board? CDC Control board is the dashboard where you can monitor Change Pointer, Interfaces, Interface Group, Queues, Scheduler, and Alert. Each tab holds different functionality. CDC Control Board exists in the Custom Link section on the integration detail page. ![](../images/2018/11/Screen-Shot-2019-11-14-at-9.41.52-PM-scaled.png) ## CDC Tabs When you open the CDC Control board you will find 6 tabs available which are Change Pointer, Interfaces, Interface Group, Queues, Scheduler and Alert. Each tab has different functions and displays things relatable with CDC. The following will explain more detail about each tab: ![](../images/2018/11/2019-11-15_14-20-07.png) ## Change Pointer Change Pointer is a table that stores change pointer records. The records are created by the CDC Processing, Process Builder, and CP Query Editor. The Change Pointer records will store here until you set the scheduler (CDT) to transfer them to the external system. Likewise, you can select all the records and send them manually by using the "Send" button. Change Pointer tab display filter that you can search for CP records base on the criteria you set. To monitor Change Pointer, just simply: - Go to Change Pointer tab - Filter the Integration Name, Interface Name and the status of the record you want to display - Click on the “Search'' button.  The result will display according to the status you set ![](../images/2018/11/2019-11-15_14-16-19.png) The following tables describe detail about Filters and buttons: ## Filters
Filters Description
Interface Name Outbound Interface on which CDC is configured.
Status Two types of status: New and
Max Number of Record Filter on the number of records.
Application Id Application Id is the sObject Id.
Date Filter on created or modified date.
Sort by & Order by Sort by creation date. Filter on ascending or descending.
## Buttons
Buttons Description
CP Query Editor To create change pointer records.
Clear Application Ids All application IDs will be cleared after you click this button.
Search Displays the change pointer records when clicked.
**Interfaces** The Interface tab displays only interfaces which has the flag "Use Skyvva Outbound Schedule" set. This tab displays the interfaces that store in an Integration. You can easily check or monitor them. If you land on CDC Control board, just simply click on interface tab then you will see all the interfaces. However, this tab is not editable like the Interface tab in the Integration detail page. ![](../images/2018/11/2019-11-15_16-39-49.png) **Interface Group** An interface group is a unit to the group where logical interfaces come together. For example, you can group interfaces that are cognate to each other e.g. Account and Contact to one interface group. There is two kinds of interface group: =>Business related logical group =>Technical group This tab is used to display Interface Group. ![](../images/2018/11/2019-11-18_11-40-34.png) We can apply this filter to probe data referring to a concrete interface group. **Queues** This tab displays the CDC Queues and you can search queues by different filters like Interface Group, Interface Name, and Status. Queue inherit the priority from their interface group and thus a Queue will be a Prio-High, Prio-Medium or Prio-Low Queue. ![](../images/2018/11/2019-11-18_13-49-56.png) ## Queue Status: ### Status Worker This status is a temporary status set by the scheduler. Customarily most of the status is set by the worker because the worker is the one who does the job of processing the data package/queue passed from the scheduler. This status is a helpful  token that the scheduler has passed the data package/queue to the worker. When the worker starts to process the data package/queue it will transmute the status from “Worker” to “Running”. ### Status Running This status is set by the worker. When a data package/queue is passed from the scheduler to the worker the status of this queue is “Worker”. Then the worker transmutes the status from “Worker” to “Running”. The following change from status “Running” can be transpired. If the queue is processed prosperously then the status will set to “Ready”. This is valid for both queue type e.g. for EO- and EOIO-Queue. If an error occurred for whatever reason then the status is set to “Failed” for an EO-Queue and to “Hold” for an EOIO-Queue. ### Status Failed This status is set when processing a data package/queue got failed. This status is only utilized for the EO-Queue. For the EOIO-Queue the status can be used is “Hold” and not failed. If the processing of the EO-Queue is not ceased plenarily this status reflect an ephemeral status and can be set for example to “Ready” when next time the processing is prosperous. Processing an EO-Queue is not blocked if error encountered for EOIO-Queue. Because the nature of EO-Queue is overtaken of data which can be transpired and that we already understood when defining interface group/queue with the type EO. ### Status Hold This status is set when processing a data package/queue got failed. This status is only utilized for the EOIO-Queue. For the EO-Queue the status can be used is “Failed” not hold. If the status is set to “Hold” then the processing of this queue is ceased because we can create an overtaken of data. There is a reprocess mechanism of the affixment by the affixment reprocess scheduler. Refer to chapter “10 Variant of scheduler” for understanding the variant of the scheduler. For some error, the reprocess can resolve the error and ergo will reset the status of the queue to “Ready”. Then the blocking of the queue will be relinquished. In some circumstances, because the error cannot be resolved automatically we will require the administrator to resolve the error situation and reset the queue status manually. Stop by Admin This status results from an admin action. An admin may want to stop the queue because of maintenance work. Another reason could be that we don’t opt that the queue X should be processed and ergo we intentionally stop this queue. This is for example because we opt to have more resources for processing other queues than queue X. **Scheduler** There are some schedulers available in the Scheduler tab which are Change Data Detection (CDD) for Integration, Change Data Transfer (CDT) for Integration and Change Data Transfer SKYWWA DefaultIG Outbound for Interface Group. You can set the time and start the schedule or refresh it. Note: If you manually create more Interface Group then they will display in the Scheduler tab. ![](../images/2018/11/2019-11-18_13-51-37.png) **Alert** This alert tab is used for monitoring the CDC table. If the threshold from the alert tab is smaller than the CDC table value, a notify email will be sent to the assigned alert channels. We have a different type of alerting rules on the integration & interface level - Send Email SFDC User - CreateTask for User - Send Email External Mails - Chatter group Name ![](../images/2018/11/2019-11-18_13-52-49.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Overview of existing Skyvva adapters Title: 27.1 How to use JDBC adapter Slug: how-to-use-jdbc-adapter URL: https://help.skyvva.com/#article/how-to-use-jdbc-adapter ================================================================================ # 27.1 How to use JDBC adapter This tutorial explains what JDBC adapter is and why do we need it. It describes how to create and use them. ### 1 What is JDBC adapter? JDBC Adapter is used as a connector to transfer data from Database to Salesforce and from Salesforce to Database. Agent supports five-database type include Oracle, SQLServer, MySQL, MsAcess and PostgreSQL. ### 2 Prerequisite Before creating adapter, you have to have Integration and interface and these two things must create in Salesforce. To create, edit, and delete you need to do in Salesforce not Agent. Please perform both integration and interface development in Salesforce first. Then run AgentUI and create adapter there. **2.1 Creating of JDBC adapter** The following sample is about SQLServer configuration. Run Agent UI > Integration Wizard > Choose Integration > Choose existing interface. 1. Adapter Section: Choose Adapter Type (JDBC) > Name Adapter 2. Adapter Properties: - Database type: Choose SQLServer. The type of database to which the adapter connects. Select between SQLServer and other. - Username: sa - Password: ******* (The default password to use when making the connection to the database). - Hostname: 192.168.1.141 (Ip address) - Port: 1433 (default) - Database Name: - Server Instance: (Local) 3. Click “Test Source Connection” to test the connection to the specified folder and file. 4. Click Save. ![](../images/2018/10/jdbc1.png) Note: For Oracle, MySQL, MsAcess and PostgreSQL database, you can just do the same as SQLServer. However, just you need to change the database types, adapter and its properties accordingly. ### 3. To test Integration There are three ways to test yours integrate. **3.1 Button Test Integration** When you click test integrate the 50 records among many data will process. The maximum is 50. By clicking this button you will know if your configure is correct or not. This button is located in Integration Setup Wizard-Integration Detail. ![](../images/2018/10/jdbc2.png) **3.3 Schedule** Click Integration Scheduling>Property File Selection>Integration Name>Interface Name>Integration Mode>On>Run at/Run every>Save **4 To check result** Go to SF > Message Monitoring Board ![](../images/2018/10/MessageBoard.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use mapping? Title: 2. How to use formulas in mapping? Slug: 2-how-to-use-formulas-in-mapping URL: https://help.skyvva.com/#article/2-how-to-use-formulas-in-mapping ================================================================================ # 2. How to use formulas in mapping? **Learning Objective:-** **Introduction:- ** This tutorial explains what formula is and why do we need it. It also describes the generating of the IStructure which is correlating with mapping. **What is the formula?** The Formula is a complex mapping rule – for example, a combination of source fields or a combination of functions and source fields mapped to one sObject field. we can do formula mapping using different functions. **Pre-requisite:-** Before using a formula in mapping, you must have an interface. To create, delete and edit interface, you need to do in Salesforce. This document is skipping the part where to create Integration and Interface. If you want to know how to create them, please look for the document (SKYVVA Integration/ Interface). **The creation of IStructure:-** **There are 5 ways to generate IStructure:** - Generate from sObject in field - Manually created - Upload from File - Generate from Message Type - Generate from SOQL Query (Outbound) **Description**: **1**. Generate from sObject in the field: The Structure is generated from Source/Target of Salesforce object. In case you don’t have your own Structure, we create this type of Istructure to make things easier for you. **2**. Manually created: You create IStructure field one by one by yourself. **3**. Upload from File: You have your own source (Structure) and upload it to Salesforce. The source is a file: CSV and XML. **4**. Generate from Message Type: Upload IStructure in Repository then create Message type from it. **5**. Generate from SOQL Query: To filter for fields of Salesforce object. Note: There are 4 ways to generate IStructure for Inbound and 5 ways for Outbound Interface. **Inbound Mapping:-** For the inbound interface, the Mapping screen is like the screenshot below. The screen divided into two which are Source and Target. On the Source side, the structure of the field is from external source weather the target side contains the structure of the field from the Salesforce object. **Outbound Mapping:-** As you can see from the screen below, this is an outbound interface. The screen divided into two as an inbound interface, however, the Source side here is containing the structure of the fields of Salesforce sObject and the Target side contains the fields of an external source. ![](../images/2019/01/Outbound_interface1.png) **Using a formula in mapping:-** This Istructure is generated from upload File. This part is explained about mapping in Salesforce using formula. There are lots of different formula you can choose to do in mapping, however, there is two formula which will be explained here in this document. These formulas are VLOOKUP and IF. The following examples will demonstrate to you how to use each formula in mapping ![](../images/2019/01/uploadFile.png) Mapping In Account Interface: ![](../images/2019/01/Account-Mapping.png) Mapping In Contact Interface: ![](../images/2019/01/Contact-Mapping.png) **VLOOKUP Formula:-** VLOOKUP is one of SKYVVA formula function which is better than the function of Salesforce that can retrieve the value from both standard and custom objects, different fields, e.g. Id and Name, etc. with many conditions. To add any formula in mapping, you have to check on the Formula box at the right as in the picture below and choose any kind of function. Here is the syntax of VLOOKUP: “VLOOKUP(Standard/CustomObjectName,FieldToRetrieve,FieldCondition1,Condition1,Fiel dCondition2,Condition2,...)” The popup window below will show when you check the flag and click on the line. - Choose function = VLOOKUP then click Insert Select Function button - Enter the values - Clicks on Test Formula to see output if it is true or failed than Save. ![](../images/2019/01/VLOOKUP.png) Note: If the output is failed, it means that your formula is incorrect. In conclusion, after you map all fields, do the formula and choose the External ID, please Save. Just in case you forget to save, all your Data Mapping will be lost. **IF Formula:-** IF is also one of formula to use in mapping. IF function is using to test for or evaluate certain conditions, and then react differently depending on whether the test was TRUE or FALSE. The IF function can perform a logical test and return one value for a TRUE result, and another for a FALSE result. You can use it to test for specific conditions or more than one. Here is the syntax: **IF(logical_test, value_if_true, value_if_false)** This section will only focus on how to use formula, so the steps will show at Data Mapping Editor where you have to check the flag on Formula box and click the line in order to get the popup window. - Choose function = IF then click Insert Select Function button - Enter the values - Clicks on Test Formula to see output if it is true or failed than Save. ![](../images/2019/01/If.png) **Note:- ** - ** If the output is failed, it means that your formula is incorrect.** - **In conclusion, after the mapping, please Save it. Otherwise, all your Data Mapping will be lost.** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use interface? Title: 1. What is hierarchical interface? Slug: 1-what-is-hierarchical-interface URL: https://help.skyvva.com/#article/1-what-is-hierarchical-interface ================================================================================ # 1. What is hierarchical interface? **What Is Hierarchical Interfaces?** - To arrange interfaces in order means hierarchical interface. It is structure in which interfaces are ranked according to levels of importance. - In hierarchical Interfaces, one interface is a  parent’s of other interface. It means that child interface inherited External ID from its parent's interface. For example, Account interface is parent’s contact interface because of Contact inherited External ID from Account. - Also One parent interface can have many child account but child interface has only single parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use interface? Title: 2. How to create hierarchical interface using VLOOKUP Slug: 2-how-to-create-hierarchical-interface-using-vlookup URL: https://help.skyvva.com/#article/2-how-to-create-hierarchical-interface-using-vlookup ================================================================================ # 2. How to create hierarchical interface using VLOOKUP **Learning Objective:-** This unit describes:- - Describe what is the hierarchical interface. - Comfortably use a hierarchical interface to process hierarchical data. #### Introduction To create a hierarchical interface using the VLOOKUP formula, we need to arrange the interface in a specific order. One interface is the parent interface and another is its child where the child interface inherited External ID from its parent's interface. We use the VLOOKUP formula which will search an object for a record where the specified field matches the specified lookup value. If a match is found, return another specified value. #### What is a hierarchical interface? - To arrange interfaces in order means a hierarchical interface. It is a structure in which interfaces are ranked according to levels of importance. - In hierarchical Interfaces, one interface is a  parent’s of another interface. It means that the child interface inherited External ID from its parent's interface. For example, the Account interface is the parent’s contact interface because of Contact inherited External ID from Account. - Also, One parent interface can have many child accounts but the child interface has only a single parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts. #### How to create Hierarchical Interfaces? **Follow the given steps to create a hierarchical interface using VLOOK UP.** [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We have to create a message type for Istructure. We can easily get a hierarchical Istructure using message type. Also, It is reusable in another interface.[/su_box] **Step 1:** Open the metadata provider, Click on the New button. ![](../images/2018/10/metadata4.png) - Enter a "Name" and save it. ![](../images/2019/01/14.2.png) **Step2**: Create Istructure Repository in created metadata. The purpose of Istructure is An Interface for a structure that contains the metadata of a structure. - We have click on the related tab then click on the new button to create Istrutcure repository. ![](../images/2018/10/metadata3.png) - Fill all the required fields of Istructure repository. ![](../images/2019/01/14.3.png) **Step 3:  **We have to create a message type. - Open Istructure Repository detailed page. - Click on the Upload File button - Choose the file and Save. ![](../images/2019/04/img7.png) - Click on the related tab to check the created message type. **Step4**: Create Integration. **Step5**: Create Account Interface where we need to add: - Metadata - IstructureRepository - Message Type ![](../images/2019/01/14.4.png) - Click on "Open Mapping" on the interface page. ![](../images/2019/01/14.1-1.png) **Create VLOOK Up Formula:** To open the expression formula window we have two options: - Drag and drop Function field from source to target(to the field on which we want to apply formula) - Select checkbox to any field and double click on the same row. For Example: Formula: VLOOKUP(account,Id,AccountNumber,Id) The Expression means we find Account that has External id on Target Account name is AccountNumber and mapping on Source AccountNumber is Id. Here is the syntax of VLOOKUP: ***“VLOOKUP(Standard/CustomObjectName,FieldToRetrieve,FieldCondition1,Condition1,FieldCondition2,Condition2,...)”*** The popup window will show a window where to add Formula and Expression. - Choose function = VLOOKUP then click Insert Select Function button - Enter the values - Clicks on Test Formula to see output if it is true or failed than Save. ![](../images/2018/10/6.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If the output is failed, it means that your formula is incorrect. In conclusion, after you map all fields, do the formula and choose the External ID, please save. Just in case you forget to save, all your Data Mapping will be lost.[/su_box] - Manually upload data using a manual load. Do configuration as shown below and upload the file. ![](../images/2019/01/14.5.png) - Select all and Push the file as shown below:- ![](../images/2019/01/14.6.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Remove Export field if we get error that the file we uploaded is different to the file in the mapping. [/su_box] - Check the result on message monitoring. ![](../images/2019/01/14.7.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use interface? Title: 3. How to create hierarchical interface using Foreign Key? Slug: how-to-create-hierarchical-interface-using-foreign-key URL: https://help.skyvva.com/#article/how-to-create-hierarchical-interface-using-foreign-key ================================================================================ # 3. How to create hierarchical interface using Foreign Key? **Learning Objectives** After completing this unit, you’ll be able to: - Describe what Custom field  is . - Also Can describe foreign key, Tree mapping - Comfortably use how to link parent interface to its child interface using foreign key and tree mapping. #### Introduction We can link two different object with each other using foreign key or tree mapping. #### What Are Hierarchical Interfaces? - To arrange interfaces in order means hierarchical interface. It is structure in which interfaces are ranked according to levels of importance. - In hierarchical Interfaces, one interface is a  parent’s of another interface. It means that child interface inherited External ID from its parent's interface. For example, Account interface is parent’s contact interface because of Contact inherited External ID from Account. - Also One parent interface can have many child account but child interface has only single parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts. #### What is the foreign key? A FOREIGN KEY is a field (custom fields) in one Interface that refers to the PRIMARY KEY . The Interface containing the foreign key is called the child Interface, and the Interface containing the candidate key is called the parent Interface. #### How to create a Foreign key? This is also called an object field in the account object. Follow the given steps to create the object field: - Go to Set up->Object Manager->Account-> Fields & Relationships->Click New Button. ![](../images/2019/01/14.1.jpg) - Choose the field type: Please tick Text data type and click Next - Enter the details: Please Field Label: AccountId->Fill Length: 50->Field Name gets Auto->tick External ID->Click Save. - Establish field-level Security: Please tick visible and click the next button. - Add to page layouts: Click only Save button. here we get the object field on the Target Account Salesforce object. #### we can  create a Hierarchical interface in two ways: - **Manually creation of hierarchical interfaces:** - We define manually two interfaces e.g. Account (parent) and Contact (child) and do mapping manually. Here we need to create the chain definition in the parent interface manually. Also in the child interface, we need to create the foreign key manually. **2. Tree Mapping**: - By using the "Tree Mapping" capability of Skyvva tool and the parent and child interface are generated automatically. Also, the chained interface for the parent interface is generated, and also the foreign key for the child interface is generated automatically. #### Create hierarchical Interface using foreign key: #### Objective: To create a parent-child relation between the account interface and contact interface using the foreign key. #### Pre-requisite: - We have to create  Integration -> Go to integration tab -> fill name field -> Save it. - We need two inbound interfaces. I,e Account, contact. #### Follow the given steps : - Account Interface Mapping:  Go to Account Interface ->Cross down to Source definition Section->Click choose file button to browse the file that wants to mapping->choose file->Click Open button->Click button Save. ![](../images/2019/01/FKey_08.png) Please drag source field to Target field->look at Data Mapping->Tick Ext ID->Click Save button. ![](../images/2019/01/FKey_09.png) - Create IChain: Go to related tab -> Scroll down page to IChainedInterface -> Click New IChained Interface ![](../images/2019/01/FKey_016.png) ![](../images/2019/01/FKey_017.png) - Contact interface Mapping: Go to interface Contact->Cross down to Source definition Section->Click choose file button to browse file that want to mapping->choose file->Click Open button->Click button Save. ![](../images/2019/01/FKey_10.png) Please drag source field to Target field->look at Data Mapping->Tick Ext ID->Click Save button. ![](../images/2019/01/FKey_012.png) - D**efine foreign key on** the contact interface which link to account object. lookup field link to account object. We are searching salesforce id by external account Id which is the primary key of external sys. - Please go to Contact Interface -> Click on Related -> Cross down on Foreign Key section->Click New Foreign Key Button. ![](../images/2019/01/FKey_013.png) - Choose Lookup Field Name is AccountId in Combo box->Chose External Id Field is AccountId__c in Combo box->Click Save button. ![](../images/2019/01/FKey_014.png) Now you get a Foreign key. ![](../images/2019/01/FKey_015.png) - **Load Account data CSV using Manual Load:** Go to integration->Details->Manual Laod->Chose Inbound Interface (Active) is Account in Combo box->Choose Data Type is CSV->Click Choose File Button and Browse to choose file->Click Open Button->Click Upload Button ![](../images/2019/01/FKey_018.png) ![](../images/2019/01/FKey_019.png) Cross down Total Records Found Section in Manual Load level-> Tick Records that want to load to salesforce->Click Push Button->Click Message Board to check monitory Message ![](../images/2019/01/FKey_020.png) Choose Interface Name to check message depend on Name and Click Search button to show message. ![](../images/2019/01/FKey_021.png) Finally, you can get Account has relationship with contact like screen shot below. Account Name is Test01 has five contact such as Ra1 Dr1....... ![](../images/2019/01/fk1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use batch Processing? Title: 1. How to use batch processing for inbound interfaces? Slug: 1-how-to-use-batch-processing-for-inbound-interfaces URL: https://help.skyvva.com/#article/1-how-to-use-batch-processing-for-inbound-interfaces ================================================================================ # 1. How to use batch processing for inbound interfaces? ## Learning Objectives After completing this unit, you’ll be able to: - Describe what the batch processing feature is. - Comfortably use the batch processing feature. #### Introduction A job runs to process batches which use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. #### What is batch processing? Batch Processing is used for running a batch job. It has more capability than synchronous and we can check job monitoring. The job must contain more than 200 and less than 5000 records, o we can utilize it with batch processing. It can store many records in one batch, and we can set time interval in batch processing scheduler of Skyvva to run anytime that you optate. Batch Processing has a field called  “Use Auto-Switch Mode”. This is incipient feature in Skyvva, It runs manually as well as with batch and bulk. The agent automatically get switched to Skyvva API when bulk and batch mode is used. It is predicated on a number of records in IntegrateMaxSize, IntegrateBatchMaxSize. The default of IntegrateMaxSize is 200 records and IntegrateBatchMaxSize is 5000 records, but we can transmute the value that is optate to run it. **IntegrateMaxSize**: A maximum number of records that the Skyvva integration agent can integrate utilizing methodsintegrate () is the default value of 200. If the number of records to be integrated is more immensely colossal than the value, the agent will switch the API mode automatically. ** IntegrateBatchMaxSize**: A maximum number of the record that Skyvva integration agent can integrate utilizing method integrateBatch() is the default value of 5000. If a number of records to be integrated is more astronomically immense than this value, the agent will switch to bulk API method automatically. **Auto-switch mode:** Auto-switch mode is a data processing mode provided by Skyvva. When the auto-switch mode flag is culled, It describes that Agent automatically switched to SKYVVA API which is based on the number of records and IntegrateMaxSize, IntegrateBatchMaxSize. And when the flag is unselected it signifies that data is integrated with normal mode (no batch or bulk) no matter what is the size of records. #### Pre-requisite - We should create integration. Please this tutorial to create integration->  [What is an integration and how to create it?](#article/what-is-an-integration-and-how-to-create-it) - Next step is to create the interface. Please this tutorial to create interface-> [What is an interface and how to create it?](#article/1-what-is-an-interface-and-how-to-create-it) - We should do mapping using SKYVVA graphical tool. #### How to create batch using “Use Auto-Switch Mode”? Auto-switch mode is a data processing mode. To check this mode on, we have to open our created interface. Follow the given steps to set a value on IntegrateMaxSize, IntegrateBatchMaxSize. - We have to click on the Edit button. - Go to Information section->Fill 200 on Integrate Batch Max Size->Fill 50 on Integrate Max Size->Click Save Button - Inbound section-> tick Use Auto-Switch Mode.![](../images/2019/01/bulk-control.png) Note: When you fill Integrate Batch max Size and Integrate Max Size as screen above, it means that after you click on 'Use Auto Switch Mode' checkbox, it will run manually less than 51 records and a batch between 51 to 200 records. #### How to load CSV file using an agent. **Agent** Many networks and server monitoring solutions use “Agent” to get values from the machines they are monitoring. Agents are programs that run on the remote machines and communicate with the main monitoring system. Some merchant tries to hide the fact that they use Agents. They will try to deliver things like they “deploy” to remote systems or use other words, but it all compress to installing custom software on the remote machines. **Upload data ** - Click on  Agent UI to run->Click Integration Wizard. ![](../images/2019/01/agent.png) - Select Properties that log to salesforce. ![](../images/2019/01/Properties.png) - Chose Integration Name and Create Adapter because it doesn’t have adapter yet->Choose adapter type is File->Fill adapter name>Fill Folder location->Fill File Name->Click Save button->Select Interface->Click Process button. ![](../images/2019/01/create_Adapter.png) - click on Process Button, it will show message. The message is Process completed. Now you can check result on salesforce. ![](../images/2019/01/Process.png) ![](../images/2019/01/batchctrlBoard.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Bulk Control Board Title: 16.1 How to use bulk processing for inbound interfaces? Slug: how-to-use-bulk-processing-for-inbound-interfaces URL: https://help.skyvva.com/#article/how-to-use-bulk-processing-for-inbound-interfaces ================================================================================ # 16.1 How to use bulk processing for inbound interfaces? **Learning Objectives:-** This unit describes:- - How to create bulk processing? #### Introduction:- This unit describes the use of API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. #### What is bulk processing? SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have much data, using Bulk Interface Processing is necessary (over 5000 records). #### How to create bulk processing? Before you can use bulk processing, you have to create an integration, define an inbound interface and mapping like we normally do. Please refer to the previous tutorials that explain how to create integration and interface and how to develop mapping using the SKYVVA mapping tool. Please click on the Account Interface. As shown in the screenshot below. ![](../images/2019/01/bulk1-1.png) #### Inbound Processing:- Inbound Processing tabs contain 5 different sections which are Filter, Bulk Interface Scheduler, Bulk Data Inbox, Bulk Data Processing, and Bulk Data Monitor. Each section plays different roles in bulk processing.  #### Load CSV file using Agent:- **Upload data:- ** - Click on Agent UI to run->Click Integration Wizard. ![](../images/2019/01/bulk2.png) - Select Properties that log to salesforce ![](../images/2019/01/bulk3.png) - Choose Integration Name and Create Adapter because it doesn’t have an adapter yet - Choose the adapter type "File". - Fill adapter "Name". - Fill the Folder location. - Fill File Name. - Click on the "Test source connection". - Click on the "Test query". - Click the "Save" button. - Select the Interface. - Click the "Process" button. ![](../images/2019/01/bulk4.png) - Click on Process Button, it will show the message. The message is "Process completed". Now you can check result on salesforce. ![](../images/2019/01/bulk6.png) - Check the result on message monitoring:- ![](../images/2019/01/bulk7.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Bulk Control Board Title: 16.2 What is the difference between the bulk mode supported in Skyvva? Slug: what-is-the-difference-between-the-bulk-mode-supported-in-skyvva URL: https://help.skyvva.com/#article/what-is-the-difference-between-the-bulk-mode-supported-in-skyvva ================================================================================ # 16.2 What is the difference between the bulk mode supported in Skyvva? **Learning Objectives:-** **This unit describes:-** - Difference between the bulk mode supported in Skyvva? #### Introduction:- This tutorial explains the difference between Bulk modes supported in SKYVVA. It introduces you to when and why these modes will be used. It also describes the configuration of each mode. #### What is bulk mode supported in SKYVVA? Bulk Processing uses for running attachment as batch too. It has more ability than synchronous, batch and running with huge records at high speed. The Records have more than 5000, so you use them with bulk processing. It can contain many records in an attachment, and you can set a time interval in bulk processing scheduler of SKYVVA or Agent Scheduler to run anytime that you want. #### Pre-requisite:- Before configuring Bulk Interface Processing, you have to know about the parameters: - **BULK Mode**: Check this flag if you want to run interface in a bulk mode using Salesforce BULK API. - **Bulk Version**: SKYVVA support SFDC pure bulk mode in version 2.0 then we have our own SKYVVA bulk mode. This uses Skyvva workflow and mapping and thus it is more powerful but slower than pure bulk API technique from salesforce. - **Bulk Processing Mode**: These fields indicate two modes which are support with bulk version 1.0 and bulk version 2.0 only parallel mode is supported. So the value depends here on the selection of field bulk version. For example, When we want to use "serial" we should select bulk 1.0. - **There are two modes which are**: **1. Parallel**: When you select this processing mode, it will run parallel. **2.** **Serial**: When you select this mode, it will not run at the same time. - **Bulk Package Size:** This parameter determines how many records are split into Bulk data size. If your Message contains 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be kept. - **Bulk Sch Frequency**: This is the schedule time-frequency for bulk scheduler on interface. - **Bulk Integrate Time Interval (minute)**: The interval (minutes) used to integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. #### Bulk Modes:- There are two options of bulk mode, which is including SKYVVA bulk and SFDC bulk. The following section will be explained more detail about these two modes. - SKYVVA Bulk - SFDC Bulk #### SKYVVA Bulk:- SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use the SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing modes, which are Parallel and Serial. The default value is Serial. #### The configuration of SKYVVA Bulk:- - To be able to use SKYVVA bulk mode you have to enter Interface page detail and scroll down to the Bulk Setting section then checkbox on BULK Mode along with choosing Bulk Version. ![](../images/2019/01/16.2.png) - When you check this flag, it means you activate the bulk processing and your data will be integrated from Agent. #### To integrate from Agent:- This part will show the example by integrate the data from Agent. To integrate from Agent, you have to create an adapter. To create an adapter in Agent please check this link (How to create an adapter in Agent). #### To set schedule:- When the creating adapter is done, you have to set the scheduler in order to integrate the bulk data. To set scheduler, you can: Click Integration Scheduling Property File Selection>Integration Name>Interface Name>Integration Mode>On>Run at/Run every>Save ![](../images/2019/01/bulk10.png) #### To monitor in Bulk Control Board and Message Monitoring Board:- As you did integrate, your data you might want to check or monitor if all your data are successfully integrated. To monitor bulk data, please log in to Salesforce and enter Bulk Control Board. If you want to know more and how to use Bulk Control Board please kindly look for this documentation (How to use Bulk Control Board). ![](../images/2019/01/bulk11.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Only Fail and Pending Messages are shown in the Message Monitoring Board.[/su_box] #### SFDC Bulk:- We support SFDC pure bulk mode in version 2.0 that is very fast but cannot use the SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk requires the data has to be mapped already on the sender side and doing the additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. #### The configuration of SFDC Bulk:- To be able to use SKYVVA bulk mode you have to enter Interface page detail and scroll down to Streaming and Bulk API Configuration section then checkbox on BULK Mode along with choosing Bulk Version. ![](../images/2019/01/bulk12-1.png) When you check this flag, it means you activate the bulk processing and your data will be integrated from Agent. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]When you do a mapping, you have to use the requirement field as external Id otherwise, this SFDC Bulk won’t work.[/su_box] #### To integrate from Agent:- This part will show the example by integrate the data from Agent. To integrate from Agent, you have to create an adapter. To create an adapter in Agent please check this link (How to create an adapter in Agent). #### To set schedule:- This step is similar to the procedure of SKYVVA Bulk. #### To monitor in Monitor Bulk Data Load Jobs and Message Monitoring Board:- When the integration is done, you have to check the bulk data in Monitor Bulk Data Load Jobs. To enter Monitor Bulk Data Load Job: - Click Setup >Jobs> Monitor Bulk Data Load Jobs ![](../images/2019/01/bulk13.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For the SFDC Bulk version, Completed, Fail, and Pending message are all shown in the Message Monitoring Board.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Bulk Control Board Title: 16.3 SKYVVA bulk interface processing Slug: skyvva-bulk-interface-processing URL: https://help.skyvva.com/#article/skyvva-bulk-interface-processing ================================================================================ # 16.3 SKYVVA bulk interface processing **Learning Objectives:-** #### This unit describes:- - What SKYVVA Bulk Interface Processing. - why do we need it? **What is SKYVVA Bulk Interface Processing?** SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have many data, using Bulk Interface Processing is necessary (over 5000 records). **Pre-requisite:-** Before configuring Bulk Interface Processing, you have to know about the parameters: - **BULK Mode:** Check this flag if you want to run interface in a bulk mode using Salesforce BULK API. - **Bulk Package Size:** This parameter determines how many records are split into Bulk data size. If your Message contains 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - **Bulk Log Keep Size:** The number of bulk execute log to be kept. - **Bulk Sch Frequency:** This is the schedule time-frequency for bulk scheduler on the interface. - **Bulk Integrate Time Interval (minute)**: The interval (minutes) used to integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. **The configuration of Bulk Interface Processing:-** This section will be explained by the configuration of Bulk Interface Processing. Assuming you are already created Integration and interface. To understand the process, please follow the steps given below: - Enter the Interface detail page. - Scroll down the page to the Streaming and Bulk API Configuration section and configure the parameters as given in the next point. - Check the flag on BULK Mode. - Set Bulk Integrate Time Interval as you wish. ![](../images/2019/01/bulk14.png) When you check this flag, it means you activate the bulk processing and your data will be integrated from Agent. **Note:** After you are done configuring the bulk processing, you can do mapping in Salesforce. You have to remember that creating, editing and deleting interface has to do in Salesforce. To create interface please check this document (How to create interface). #### To integrate from Agent or another system:- This document will show the example by integrate the data from Agent. To integrate from Agent, you have to create an adapter. **The creating of the adapter:-** The following steps will show you how to create an adapter in order to connect to Salesforce:- Run AgentUI => Integration Wizard Choose the existing integration which you had created in Salesforce then select on the interface. ![](../images/2018/10/Agent-Interface.png) - Look for Adapter section, choose adapter type and name the adapter - Input the folder and file name then test the Source connection ![](../images/2018/10/adapter.png) **To set scheduler:-** When the creating adapter is done, you have to set the scheduler in order to integrate the bulk data. To set scheduler, please follow the given steps: - Click Integration Scheduling - Select Property File Selection - Select Integration Name - Integration Mode>On>Run at/Run every - Save it.    ![](../images/2018/10/schedular-setting.png) **To monitor in Bulk Control Board:-** As you did integrate, the data you might want to check or monitor if all your data are successfully integrated. To monitor bulk data, please log in to Salesforce and enter Bulk Control Board. If you want to know more and how to use Bulk Control Board please kindly look for this documentation (How to use Bulk Control Board). There are three orders to monitor bulk processing: - Bulk Data Inbox - Bulk Data Processing - Bulk Monitor **Monitor in Bulk Data Inbox:-** When data pushed from the client using Bulk API, they will appear in this section. As you can see below, there are 5000 records are integrated from Agent. There are five attachments that you can do manual reprocessing by checkbox and click on “Process Bulk Attachment” or you can set the time and then start the scheduler in Scheduler Tab. ![](../images/2019/01/bulk15.png) **Set the scheduler:-** This section will allow you to set the schedule and start it. ![](../images/2019/01/bulk16.png) **Monitor in Bulk Data Processing:-** Bulk Data Processing is using to store data that are processing. These data will remove after it did to the Bulk Monitor section. Whenever all the attachments that store has faced some problems like crashing you can use the delete button to eliminate them. However, if you want to stop these attachments processing you need to go to Apex's job to abort them. Otherwise, the attachment will keep on processing. You can do reprocessing by checkbox and click on the “Re-Initialload” button. **Monitor in Bulk Data Monitor:-** At the same time, all the attachments will also move to “Bulk monitor“. In this section, you can monitor the total records of attachments, total batch and batches that had processed. Likewise, you can also know if the attachment is completed, failed or pending. ![](../images/2019/01/bulk17.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use batch Processing? Title: 2. How to speed up batch processing? Slug: 2-how-to-speed-up-batch-processing URL: https://help.skyvva.com/#article/2-how-to-speed-up-batch-processing ================================================================================ # 2. How to speed up batch processing? **Learning Objectives :-** This unit describes:- - How to speed up batch processing - How to use “Don’t Persist Message” and “Use Optimize Mode” . #### Introduction This tutorial explains the configuring of speed up batch processing by check both  “Don’t Persist Message” and “Use Optimize Mode”. #### Why do we need to speed up batch processing? Currently, the process of attachments in Batch processing take a lot of time to DeSerialize attachment to create message. In order to improve the performance, SKYVVA had decided to create a new mode to enhance. This mode is “Use Optimized Batch Mode”. However, your processing will be faster if your checkbox both “Use Optimized Batch Mode” and “Don’t Persist Message” They reduce 50% of time for batch processing. #### How to do speed up batch processing To speed up the batch processing, you have to: - Check both “Don’t Persist Message” and “Use Optimize Mode” - Enter Batch Control Board and click on Scheduler tab to set the schedule to run the Batch Processing.![](../images/2019/01/batch-control-6-e1555330876549.png) - Start the schedule ![](../images/2019/01/batch-control-5-e1555330414371.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]To be faster please input the number for package size, which is located in Interface group. The higher the faster.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use CDC Processing? Title: 1. What is CDC and how to configure it? Slug: what-is-cdc-and-how-to-configure-it URL: https://help.skyvva.com/#article/what-is-cdc-and-how-to-configure-it ================================================================================ # 1. What is CDC and how to configure it? **Learning Objectives :-** After completing this unit, you’ll be able to: - Explain CDC feature. - Comfortably use CDC for outbound processing. #### Introduction This tutorial will exhibit how can we utilize Change Data Control (CDC) for handling data change in Salesforce. We can customize the data changes of any sObject and sent out to the client. It fortifies an asynchronous mode to accumulate transmuted data which we call the change pointer and sent out to the client. The main difference to the streaming API of Salesforce is that data can be bulk as extremely large data. Furthermore customer can liberatingly schedule when the data will be sent e.g. every 5 minutes, 30 minutes etc... With this feature customer don't require to develop such an app to amass data change and sent out to the client. Just use SKYVVA CDC. #### What is Change Data Control (CDC)? With CDC we provide an ability to record all data changes you create on any business object. It will be automatically push to your external system at any time you scheduled. In comparison to the streaming API, you can overcome the limit of sending changes record by record. Here we can bulk and collect changes to be callout in packages meaning that you leverage the best usage of your Salesforce resources. Don't disturb your online business user while operation hours. Use CDC Scheduler to schedule data changes to be send out at a time. CDC is made up of two components, the CDD and the CDT. CDC is stand for Change Data Detection and CDT is stand for Change Data Transfer. These two components has different functionality. CDD is a scheduler which is running to call batch Apex in order to collect data change and save all those data into Change Pointer Object. CDT is another scheduler which is running to collect the records from the Change Pointer Object and sent to the external System such as SAP … etc. The Schedule will executes callout as parallel of future, queueable, batch based on priority, integration resource and interface group type (EO/EOIO). ![](../images/2018/10/2019-11-13_11-29-20.png)![](../images/2018/10/2019-11-13_11-33-24.png) Terms you should know: - **Use SKYVVVA Outbound Scheduler: **This flag use for CDC Processing. When you check this flag, it’s mean that you activate the CDC. It activates both CDD and CDT. - **CDC Mode Only: **This field is used for separating the process of CDD and CDT follow flag Use SKYVVA Outbound Scheduler. Select CDD to run only CDD for interface or select CDT to run only CDT. Select None to run both CDD and CDT at the same time. - **Interface Control Runtimes: **Interface Control Runtime could be used for another purpose. for CDD, it is used where the user can set LastRun DateTime that CDD finds the record change which is record’s LastModifiedDate>that date. #### Configuration CDC is used for outbound processing only. It is done by: - Using Adapter - Using Agent **1. Adapter** An outbound interface can be processed with the different adapters to configure CDC. For example, we use SFDC2SAPPI adapter, Rest Adapter, Soap adapter. Follow the given step to process the outbound interface using the adapter. We are using **SFDC2SAPPI** adapter as an example, you can follow the given steps:. Follow the given step to process outbound interface using adapter: **Step1: Create Adapter** We are using **SFDC2SAPPI** adapter. To create SFDC2SAPPI adapter follow the given steps: - Go to Adapter tab. - Click on New Button. - Fill the username, endpoint and password ![](../images/2019/01/Untitled2-1.png) **Step2: Create Remote Sites** - From Setup, enter Remote Site Settings in the Quick Find box, then select Remote Site Settings. - Click New Remote Site. - Enter a descriptive term for the Remote Site Name. - Enter the URL for the remote site. - Optionally, enter a description of the site. - Click Save. ![](../images/2019/01/cdc4.png) **Note: Remote Site URL**: **Paste the same link **as in the** Property Value **that you have just created a moment ago. ![](../images/2019/01/cdc5.png) **Step3: Create Interface** - Create Integration. - Create Outbound Interface                                                                                                                                                  -Adapter:SFDC2SAPPI - We have to configure CDC For an Interface**.****   ** - In order to configure CDC for an Interface We have to open and edit Interface. - Check  “Use Skyvva Outbound Scheduler” checkbox. - Go to Interface and  Click on Related tab -> scroll down the page to **Interface Control Runtimes** - Specify the parameters: ![](../images/2019/01/cdc1.png) **LastRun** is the date from where we define the changed data to be collected. **[su_box title="Note" box_color="#2a8af0" title_color="#000000"] “**Use Skyvva Outbound Scheduler”: When  this flag is checked it means  CDC is activated . This flag is used to activate both CDC and CDD.**[/su_box]** **Step4: Scheduled CDD** - Open Integration Details Tab - Go to custom Link section and click on CDC Control board - Go to Scheduler tab. - Start the scheduler on an outbound section and set the time as you prefer. ![](../images/2018/10/2019-11-13_14-35-21.png) **Step5: Monitoring CDD** - Enter Integration Details Tab - CDC Control board Tab and apply filter on: ->Integration name -> Interface Name -> Status -> Search ![](../images/2018/10/2019-11-13_15-31-42.png) **Step 6: Schedule CDT** - Go Integration Details Tab - Go to Scheduler Tab - Start the Schedule and set the minute as you wish **![](../images/2018/10/2019-11-13_14-51-03.png)Step7:**M**onitor CDT:** - Clicks on **Setup -> Jobs -> Apex Jobs** - Enter Apex Jobs Monitoring to see CDT workers: - Future/Queueable process - Worker (Batch) Process ![](../images/2018/10/2019-11-13_15-37-50.png) **Step8: Check result on message monitoring Board** - Go to Integration - Click on Messages ![](../images/2018/10/2019-11-13_15-43-56.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use message type? Title: 1. How to use message type? Slug: 1-how-to-use-message-type URL: https://help.skyvva.com/#article/1-how-to-use-message-type ================================================================================ # 1. How to use message type? **Message Type:** In Applications that use Service Broker communicate by sending messages to each other as part of a conversation. The participants in a conversation must agree on the name and content of each message. A message type object defines a name for a message type and defines the type of data that the message contains. Message types persist in the database where the message type is created. You create an identical message type in each database that participates in a conversation. Each message type specifies the validation that SQL Server performs for messages of that type. SQL Server can validate that the message contains valid XML, that the message contains XML that conforms to a particular schema, or that the message contains no data at all. For arbitrary or binary data, the message type can specify that SQL Server does not validate the content of the message. Validation is performed when the destination service receives the message. If the content of the message does not match the validation specified, Service Broker returns an error message to the service that sent the message. **1.  Use Message type to model interface data structure** Let us introduce a  concept “Message type“ Spring 18 .Until today user create field and data structure for  interface manually as Istructure inside the interface. Other possibility is to upload from a csv or xml file to create the interface data structure. This concept is not global enough and thus not reusable. With message type user can create message type for example by importing a WSDL from an external system. User can create message type which link to other message type to create a hierarchy of message type. After user created the message type simply use it as interface data type. The advantage using message type is that you can reuse that message type again and again for other interface. With the old concept you can only create structure which bound only to a local interface. Message type need to be store in a catalogue. Such a catalogue is the repository concept. A repository contain different message type like a library contain different functions. In other to logically group similar repository from a system let says Google, Amazon or SAP we provide the concept of the Meta Data Provider. The Meta Data Provider denote a system or a vendor. For example you want to create messages type to connect to SAP. So user need first to create the Meta data provider with the name “SAP”. Now you can create different repository below this name. This is like building a logical category. **1.1    Manually created message type** **Go to MetaData Providers Tab** - Click on New - Create MetaData Providers ![](../images/2019/01/image_2022_02_04T09_01_45_110Z.png) **Now click on MetaData ** - Create IStructure Repository ![](../images/2019/01/image_2022_02_04T10_56_25_808Z.png) - Save - Create New Message Type ![](../images/2019/01/image_2022_02_04T10_59_21_452Z.png) - Create Message Type Name & Select Plain structure from **Type** Picklist - **Root-MSG-Test**** **message type Name - Save User Just Create **Root_MSG-Test** Message type - Click on Related List ![](../images/2019/01/image_2022_02_04T11_16_19_560Z.png) - User just create Message Type - Click on Related List **Go to IStructure Repository Details page** ![](../images/2019/01/image_2022_02_04T13_54_05_964Z.png) Message type need to be store in a catalog. Such a catalog is the repository concept. A repository contain different message type like a library contain different functions. This message is used in the interface as interface type. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use message type? Title: 2. How to create free defined message type? Slug: 2-how-to-create-free-defined-message-type URL: https://help.skyvva.com/#article/2-how-to-create-free-defined-message-type ================================================================================ # 2. How to create free defined message type? This tutorial explains what message type is and how to generate them. It also describes the configuring and how to use. ## 1. What is message type? Free define message type is a type and structure definition which is store in Repository. The message type can be resided in a WSDL, in SAP IDoc, SAP Bapi, etc... It can be stored in a file in csv, xml or other format. ## 2. The creating of Message Type There are four ways to create Message Type: 1.    Upload Istructure 2.    Upload WSDL 3.    Upload sObject 4.    Manually create Message Type (Free define message type) However, this tutorial will mainly explain the detail about free define message type. ## 2.1 How to create free define message type For this section you can either create interface before or after the creating of message type. However, as an example, this tutorial will be focus on creating message type and also portraying each steps as following: - Enter Salesforce and select on Integration Admin Tab - Click on MetaData Provider tab then select on existed MetaData Provider or create a new one (If you haven’t create yet) ![](../images/2019/01/freesnippingtool.com_capture_20211215022018.png) - After select on MetaData Provider you will land on it detail, what you have to do next is to create IStructure Repository. #### 2.1.1 Creating IStructure Repository To create IStructure Repository you have two options: 1.    You can create it in MetaData Provider detail page by clicking on New IStructure Repository button. 2.    You can create it in IStructure Repository Tab which is locate in Integration Admin Tab. **Create IStructure Repository in MetaData Provider Detail page**: - Click on **Related** tab on metadata provider page. - Click On **New** button. ![](../images/2019/01/NewIstructureRepobutton2.png) - Fill in the information as below: - Name the IStructure Repository: IStructure Repository_shweta - Choose MetaData Provider: MetaData Provider_shweta - Choose type: Repository - Save it. ![](../images/2019/01/NewIstrureRepoPage3.png) You can see the created IStructure Repository. ![](../images/2019/01/IstructureRepo4.png) **Create IStructue Repository in IStructure Repository Tab:** - Select IStructure Repository tab and click on New IStructure Repository button ![](../images/2019/01/freesnippingtool.com_capture_20211215022314.png) Note: The next process is similia with the first one #### 2.1.2 Creating IStructure To create IStructure is the next step after you had created IStructure Repository. Just enter IStructue Repository and scroll down to IStructue section, which locate at the bottom of detail page. This section allow you to create the fields you want to use in message types field entries. - Click the New IStructure button and name it. ![](../images/2019/01/NewIstructure6-1.png) ![](../images/2019/01/IstructureName7.png) #### 2.1.3 Creating Message Type This step is to portray how to create Message Type. Just click on Message Type button, which is located among other buttons in detail page. - Click Message Type button then fill in the information: 1.    Message Type Name: Structure 2.    Type: Plain structure 3.    IStructure Repository: IStructureRepository_shweta ![](../images/2019/01/MessageType8.png) - Enter Message Type, which you had created. Then scroll down to the bottom of the page and you will see Msg Type Field Entries. You can create either a New MsgType Field Entry or Select Field from the Repository. The following step is showing how to select Field from Repository. - Create Message Type field entry. ![](../images/2019/01/MessageTypeField9.png) - Click On **New** Button. ![](../images/2019/01/MessageTypeFieldEntrypng10.png) #### 2.1.4 Creating Interface For this part, it is up to you to decide when you want to create an interface. However, the example will be showing the creation of interface which is happened to be the final step. - Just select on the New Interface button which located in the Message Type Detail page. ![](../images/2019/01/NewInterface11.png) - Fill in the information as below ![](../images/2019/01/CreateInterfaceMsgTyp12.png) - After you done saving the interface you will land on Interface detail page. You can scroll down to Mapping section to check the structure of message type which you had created. ![](../images/2019/01/MappingIstructure13.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Overview of existing Skyvva adapters Title: 27.2 How to use file and ftp/sftp adapter? Slug: 27-2-how-to-use-file-and-ftp-sft-adapter URL: https://help.skyvva.com/#article/27-2-how-to-use-file-and-ftp-sft-adapter ================================================================================ # 27.2 How to use file and ftp/sftp adapter? This tutorial explains what file, ftp/sftp adapter are, and why do we need them. It describes how to create and use them. ### 1 What is File adapter? File adapter is used to integrate data from file to SFDC and from Salesforce to file. The file type that our Agent support is CSV, XML and Excel that can be integrated with their content. You can integrate file attachment into attachment object. ### 2 What is FTP/SFTP adapter? FTP Adapter use as a connector to transfer data from FTP server to Salesforce and from Salesforce to FTP server. ### 3 Prerequisite Before creating adapter, you have to have Integration and interface and these two things must create in Salesforce. To create, edit, and delete you need to do in Salesforce not Agent. Please perform both integration and interface development in Salesforce first. Then run AgentUI and create adapter there. ### 4 The creating of Adapter This document will be explain about two adapter: - File Adapter (CSV, Excel, XML) - FTP/SFTP Adapter **4.1 File adapter** This document is focus only on the creation of adapter, so some steps before it would be skip eg. Creating Integration and Interface. To create File Adapter, there are some steps must be follow: Run Agent UI > Integration Wizard > Choose Integration > Choose existing interface. 1. Adapter Section: Choose Adapter Type (File) > Name Adapter 2. Adapter Properties: - File type: Choose CSV - File Upload Mode: Choose CONTENT or FILE - Folder: Choose the folder (path to get the file/ files) - File Name: Choose file name (a file name for agent to query data from. If this field is empty, it mean you to select all files in the selected folder. - After Processing: Choose what you want to do with your file • Keep File: The file will keep in the folder. • Lock File: The file will lock. • Delete File: The file will delete. • Backup File: The file will back up in the other folder. - Backup Folder: The folder to keep the processed file. If you choose to back up your file, you have to input your folder name here. 3. Click “Test Source Connection” to test the connection to the specified folder and file. 4. Click Save. ![](../images/2018/10/File-adapter.png) Note: For Excel and XML File, you can just do the same as CSV File. However, just you need to change the file types, adapter and its properties accordingly. **5 FTP/SFTP Adapter** This document is focus only on the creation of adapter, so some steps before it would be skip eg. Creating Integration and Interface. To create FTP Adapter, there are some steps must be followed: Run Agent UI > Integration Wizard > Choose Integration > Choose existing interface. - Adapter Section: Choose Adapter Type (FTP) > Name Adapter - Adapter Properties: - Authentication: Username_Password - URL: the URL to your FTP server – here we use http://www.bplaced.net/ but it can be any link from your side - Username: kktest (Username to log in to FTP server) - Password: ******* (The default password to use when making the connection to the FTP Server) - FTP File Type: Choose CSV or other - Folder: /KOLINA (path to get the file/ files) - FTP Type: Choose FTP - Port: 21(Default) - File Name: (Optional) a filel name for agent to query data from - After Processing: Choose what you want to do with your file -Keep File: The file will keep in the folder.- Lock File: The file will lock- Delete File: The file will delete.- Backup File: The file will backup in the other folder. - Backup Folder: The folder to keep the processed file. If you choose to backup your file, you have to input your folder name here 3. Click “Test Source Connection” to test the connection to the specified folder and file. 4. Click Save. ![](../images/2018/10/FTP-adapter.png) Note: For SFTP configuration, please kindly look for document (SFTP Configuration). **6 To test Integration** There are three ways to test yours integrate. **6.1 Button Test Integration** When you click test integrate the 50 records among many data will process. The maximun is 50. By clicking this button you will know if your configure is correct or not. This button is located in Integration Setup Wizard-Integration Detail. ![](../images/2018/10/testIntegrate.png) **6.2 Button Process** The Process button is also located in Integration Setup Wizard-Integration Datail. When you click this button all your data will be processed. This is manually processing. ![](../images/2018/10/Process.png) **6.3 Schedule** Click Integration Scheduling>Property File Selection>Integration Name>Interface Name>Integration Mode>On>Run at/Run every>Save **7  To check result** Go to SF > Message Monitoring Board ![](../images/2018/10/MessageBoard.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Overview of existing Skyvva adapters Title: 27.3 How to use eMail adapter? Slug: 27-3-how-to-use-email-adapter URL: https://help.skyvva.com/#article/27-3-how-to-use-email-adapter ================================================================================ # 27.3 How to use eMail adapter? This tutorial explains what email adapter is and how to configure it. It also describe the process of setting the email service on Salesforce. What is email adapter? Email adapter is support-sending email to Salesforce using an attachment (source file) to carry the business data. The functionality is to pass parameters to the email subject and body. You can pass business data with the subject and body. As soon as the Email arrives, the data import is initiated automatically. #### 1. Create Email Services **The configuration of email service on Salesforce** This section will be explained the process of configuring the Email-Service on Salesforce. You can follow the steps given below: - Log in to Salesforce and go to Setup then, c*lick on Setup -> search in box **‘Email Services’ -> **click** ‘New Email Service’*** ![](../images/2019/01/the-first.png) - ***Create the ‘Email Service’*** - There are some field you must know on Email Service Information Page: - Email Service Name: E.g. Email_adapter - Apex Class: search for “IAdapterEmailDataLoader” - Accept Attachments: All - Check icon ‘Active’ - On Failure Response Setting: Click on Dropbox field and configure how Salesforce response when an attempt to access this email service falls for the reason show below. - Click on “Save and New Email Address” ***Note:*** If you did not Check icon 'Active'  the Email Service is created deactivated in this case you can of the active manually. ![](../images/2019/01/the-second.png) - ***Continua to create the ‘Email Service Address’*** ***Note:*** *When creating an **'Email Service Address,'** if you input an email address in the **'Accept Email From'** box, you will be able to send records only for those specific emails into Salesforce.* ![](../images/2019/01/the-thirrt.png) - On the other hand, you can create the 'Email Service' without putting the email address in the 'Accept Email From' box as well. ***Note:*** *If we do not input the email address into **'Accept Email From' box,** you will be able to send records for multiple emails into Salesforce.* ![](../images/2019/01/12-28-2023-11-30-45-AM.png) - After click button 'Save' ![](../images/2019/01/fore.png) #### 2. Create an Inbound Email Adapter Click on Adapter tab:- - Fill: Name, Choose: 'EMAIL', Status: 'Active', Direction: 'Inbound' - Select File type as CSV and separator comma(,) ![](../images/2019/01/12-28-2023-2-09-16-PM.png) #### 3. Create the Integration. #### 4. Create Inbound Interface link with adapter. ***Note:*** The Interface API v2 supports file types such as CSV and XML, while the Interface API v3 supports file types including CSV, XML, and JSON. ![](../images/2019/01/12-28-2023-10-52-49-AM.png) - On the Integration, after creating Inbound interface and link with Email adapter. ![](../images/2019/01/12-28-2023-11-03-35-AM.png) #### 5. Subject Line of your Email Accept the email address from salesforce.com by email. The subject line of the email should read as follows:** integration=IntegrationName;Interface=Name_of_Interface** ***Note:*** *Provide the IntegrationName and the name of the Interfaces.* - Attach the file of record that you want to import and send the email. ![](../images/2019/01/12-28-2023-11-11-47-AM.png) - After successful sending, it will create a message in the message monitor. ![](../images/2019/01/12-28-2023-1-56-15-PM.png) 1. E-mail address generated by Salesforce (see page 1). 2. integration=your_IntegrationName;Interface=Name_of_Interface. 3. Record that you want to import (must be the same in structure implements our interface). - In addition, send the email. ***Note:*** Be sure to test the mapping of your integration first (manual upload). If this works, then get to work with the mail import ================================================================================ Book: Tutorials Section: Tutorials Subsection: Overview of existing Skyvva adapters Title: 27.4 How to use HTTP adapter? Slug: 27-4-how-to-use-http-adapter URL: https://help.skyvva.com/#article/27-4-how-to-use-http-adapter ================================================================================ # 27.4 How to use HTTP adapter? This tutorial explains how to create HTTP adapter and how to use it. It also describes the configuring of it. ### 1 What is HTTP Adapter? HTTP adapter is used by external systems to connect to the integration engine using HTTP interface. You can push the data to the integration broker for a specific interface. ### 2 Creating HTTP Adapter To create HTTP Adapter, you need to follow the steps below: **1. CSV HTTP Adapter:** - Enter Salesforce and click on Adapter Tab - Click on New Adapter button ![](../images/2019/01/image_2023_04_21T08_11_33_717Z.png) - Choose Type as HTTP ![](../images/2019/01/image_2023_04_21T08_19_39_069Z.png) For properties requirement : - URL: the location of the file - Filename : the name of the field - Filetype : CSV - Separator : , or ; ================================================================================ Book: Tutorials Section: Tutorials Subsection: Overview of existing Skyvva adapters Title: 27.5 How to create SOAP interface using the SOAP adapter? Slug: 27-5-how-to-create-soap-interface-using-the-soap-adapter URL: https://help.skyvva.com/#article/27-5-how-to-create-soap-interface-using-the-soap-adapter ================================================================================ # 27.5 How to create SOAP interface using the SOAP adapter? Learning Objective: After completing this unit, you’ll be able to: - Describe what SoapAdapter is. - Comfortably use SoapAdapter. #### Introduction SOAP is the Simple Object Access Protocol, a messaging standard defined by the World Wide Web Consortium and its member editors. SOAP uses an XML data format to declare its request and response messages. In SKyvva, we have a SOAP Adapter used for data processing of both directions, like Inbound and outbound.  We use SOAP Adapter to Integrate data between Salesforce to systems that have SOAP API. As we knew that SOAP has Request, Response, and Fault Response, there is control by API Structure and different objectives and structures. **SOAP Service ** - Request - Response - Fault Response **Soap request-> Outbound interface** As we have Four elements in Request: - SOAP Header - URL Query Parameter - HTTP Header - SOAP Body **Soap response-> Inbound interface** There are three elements under Response: - Envelope 1.1 Header 1.2 Body **Fault Response -> Inbound interface** There are two elements under Fault Response: - Envelope 1.1 Body ![](../images/2020/03/Untitled10-3.png) **SOAP Template using in SKYvva.** We have SOAP Service that types WSDL Service with three children: Request, Response, and Fault Response. For those children, they have different types like Request is WSDL Request Type, Response is WSDL Response, and Fault Response is WSDL Fault Type. ![](../images/2020/03/24-03-2021-10-06-16.png) In **Request Message Type** is Type **WSDL** **Request**, and It has several elements like First is **SOAP Header** have type **WSDL Header** that contains Sessionheader, and in Session header, it has SessionID. About Session Header and SessionID, we can put type **plaint Structure or none**. Seconds is **URL Query Parameter** has type **WSDL Query Parameter. **The third is **HTTP Header** that has the type** HTTP Header. **The fourth is **SOAP Body **that has type** WSDL Body **that contains** Business data **which type is **Plaint Structure or none. **See the picture below.  ![](../images/2020/03/2.png) In **Response Message Type** is the **WSDL Response type**. It has one element that is **the Envelope message type** has a Type **WSDL Envelope**. In Envelop has Header, type **WSDL Header** and **Body** has **WSDL Body** containing Business data Message Type with **Plain structure** type or none. See the picture below.  ![](../images/2020/03/3.png) In **Fault Response** Message Type is **Type WSDL Fault** and it contains two elements such as **Envelope** has Type **WSDL Envelope**. In Envelop Message Type has **Body** that is **WSDL Body type** and under the Body is **Business Message Type** that is a **plain structure or none type**.  see the picture below. ![](../images/2020/03/4.png) ### Setup: #### Step1: Create an Adapter - First Insert Adapter Record By giving prefer Name and select Type = SOAP - Now Insert Properties:   If Need Authorization - Endpoint: “” , Insert Endpoint URL where Request will direct - Username: “”, Your Endservice UserName - Password: “”, Your Endservice Password - Authentication: “BASIC” Example: - Type: **SOAP** - Direction: Outbound - Endpoint :  Endpoint of System + /xml Example: https://a1a4577316cc.ngrok.io/xml - Authentication : Basic - Operation : Post - Username: e … admin - Password : e … 12345 - Resquest Format: application/xml - Response Format: application/xml We can handle if the business has **URL Query Parameter** and **HTTP Header** URL Query Parameter : ?pCity={!City}&pCountry={!Country} HTTP Header : Content-Type:Application/xml|{!LastName}:{!FirstName} ![](../images/2020/03/10.png)![](../images/2020/03/11.png) #### Step2: Create Metadata **Now, Insert the METADATA record By giving prefer details.** In Skyvva, when we create metadata, the Name field is only a mandatory field. On MetaData the Name cannot be duplicated. ![](../images/2019/07/Untitled1.png) #### Step3: Create Istructure repository ![](../images/2019/07/Untitled2.png) #### Step4: Create Message Type For the Message Type, you have to use our defined Structure Defined Structure. -Here is SOAP template created by Message Type for build xml payload: **Message Type Name** **TYPE** MessageType: Google SOAP Service WSDL Service MessageType: **Request** WSDL Request MessageType : URL Query Parameter WSDL URL Query Parameter MessageType : SOAP Header WSDL Header MessageType : HTTP Header HTTP Header MessageType: SOAP Body  WSDL Body MessageType :** Response** WSDL Response MessageType : Envelope WSDL Envelope MessageType : SOAP Header WSDL Header MessageType : SOAP Body WSDL Body MessageType : **Fault** WSDL Fault MessageType : Envelope WSDL Envelope MessageType : SOAP Body WSDL Body Here's a sample SOAP Message Type we can use by using the Import Metadata provider function. [SOAPVersion2_skyvvasolutions__MetaDataProvider__c (21)](../images/2020/03/SOAPVersion2_skyvvasolutions__MetaDataProvider__c-21.txt) Step2: Create message type for SOAP template **Manual  create message type for SOAP template** - **To create Metadata Provider.** - To Create ** Istructure Repository.** - Go to Istructure **Repository and click on "New message Type" button.** ![](../images/2020/03/SoapmsgType2.png) ![](../images/2020/03/SoapmsgType4.png) Once we Save this Message type is created. ![](../images/2020/03/SoapmsgType5.png) Now create all child message types. Create IStructure for it and Message field Entry in each message type. #### Step5. Create Integration. Refer  tutorial (How to create integration.) - Link adapter we created earlier - Max Number of Retry (This means a number of times should we retry if the request fails the first time). ![](../images/2019/07/Untitled5-1.png) **Step6. Create Interface (Inbound/Outbound). Refer tutorial to create Interface**. ([How to create Interface?](#article/1-what-is-an-interface-and-how-to-create-it)) **Create outbound Interface for request** Must fill this fields of Outbound Interface : 1.     Outbound Adapter: Select we created earlier 2.     Metadata Provider: Select we created earlier 3.     IStructure Repository: Select created iStructure Repo. 4.     MessageTypes: Select MessageType (Selected MsgType TYPE should always be WSDL REQUEST) 5.     Source/Target Name:  Select Any Object 6.     Query: Query needs to be inserted and the query should always include all fields we have mapped or going to map. 7.     Map Fields ![](../images/2020/03/5-1.png) Do mapping for Request. Here's Example. ![](../images/2020/03/8.png) #### Create an inbound Interface for response We must fill these fields: - Inbound Adapter: Select we created earlier - Metadata Provider: Select we created earlier - IStructure Repository: Select created IStructure Repo. - MessageTypes: Select MessageType (Selected MsgType TYPE should always be SOAP RESPONSE) - Source/Target Name:  Select Any Object. ![](../images/2019/07/Untitled7.png) Do mapping for a response Interface. Here's an example of mapping ![](../images/2020/03/9.png) We have to link this inbound interface with our outbound interface which is a responsive interface. #### How to link request and response Interface? Follow the given step to link the request and response interface. - Go to an outbound interface. Scroll down the page until the outbound setup section. - Edit the response interface field and select the inbound interface id. - Save the changes. ![](../images/2020/03/6.png) Now go to our inbound interface -> scroll down the page to mapping section and map the fields with Skyvva mapping tool. - To get a response from endpoint you should have data at endpoint (Soap API which you called) For example if you have data like: - Now callout the data with a developer console. - Go to developer console and enter this code to Execute Anonymous window. - Go to the developer console and enter this code to Execute Anonymous window. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011x00001FPNWBAA5'}; //ID of sObject Listresult=skyvvasolutions.Iservices.invokeCalloutV3('SOAP-Integration','Request',ids,'SYNC',c); Here In ids, We have to insert Record id of Target Object and  first parameter in the method should pass Integration Name and second will be the interface name as we have here Integration Name = 'SOAP INTEGRATION' Interface Name = 'SOAP_RESPONSE' Here's Example ![](../images/2020/03/7.png) - Execute the callout and check the result on message monitoring. - Go to Integration detail page -> click on Messages ![](../images/2019/01/soapr_9.png) ![](../images/2019/01/SaopR_8.png) Follow this link [#article/97-enhancement-handling-fault-message-with-v3](#article/97-enhancement-handling-fault-message-with-v3) to learn more about Fault SOAP. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Overview of existing Skyvva adapters Title: 27.6 How to create REST interface using REST adapter? Slug: 27-6-how-to-create-rest-interface-using-rest-adapter URL: https://help.skyvva.com/#article/27-6-how-to-create-rest-interface-using-rest-adapter ================================================================================ # 27.6 How to create REST interface using REST adapter? The Representational State Transfer (REST) adapter enables you to exchange messages between remote clients or web service servers and the Integration Server. It supports dynamic URLs, REST API polling, multiple operations per channel as well as XML and JSON data formats. Rest adapter is used for data processing of both direction. I,e Inbound and outbound. **REST request-> Outbound interface** **Rest response-> Inbound interface** ![](../images/2020/03/Untitled9-2.png) #### What is REST request? REST requires that a client make a request to the server in order to retrieve or modify data on the server. A request generally consists of: an HTTP verb, which defines what kind of operation to perform. a header, which allows the client to pass along information about the request. **Request Structure:** ``` { "Google REST Service":{ "Request":{ "URL":{ "PATH Param":{ //Flate Strture.. }, "Query Param":{ //Flate Strture.. } }, "Header":{ //Flate Strture.. }, "Body":{ //Custom Buisness Messagetype } } } } ``` #### What is Rest response? When an JSON String is sent to a REST service, you must set Content-Type HTTP header to be "application/JSON". The REST service converts the XML input data to the JSON format that is accepted by REST services. Response Structure: ``` { //Custom Buisness Message Type like Account,Contact,Asset,Opportunity,Case } ``` Resource Methods: Other important thing associated with REST is resource methods to be used to perform the desired transition. A large number of people wrongly relate resource methods to HTTP GET/PUT/POST/DELETE methods. **Authentication Section:** Here we make authentication three-way like 1) Basic Authentication 2) Certificate Authentication 3) OAuth2.0 Authentication 1) If the authentication type is **Basic** then the following properties required. Authentication Type: Basic, API Service Endpoint URL, Operation:GET|POST|PUT|UPDATE|DELETE, Request Format, Response Format, username, password, REST URL Path Parameter(optional) 2)If the authentication type is **Certificate** then the following properties required. Authentication Type: Certificate, API Service Endpoint URL, Operation:GET|POST|PUT|UPDATE|DELETE, Request Format, Response Format, clientCertName, clientCertPasswd, REST URL Path Parameter(optional) 3)If the authentication type is **Oauth2.0** then the following properties required. Authentication Type: Oauth2.0, API Service Endpoint URL, Token Endpoint URL, Operation:GET|POST|PUT|UPDATE|DELETE, Request Format, Response Format, REST URL Path Parameter(optional) **OAuth 20 Flow:** Username-Password Credential //Below properties required for access service OAuth 20 client-id OAuth 20 client-secret OAuth 20 access-token **OAuth 20 Flow:** Client Credential //Below properties required for access service OAuth 20 client-id OAuth 20 client-secret OAuth 20 access-token OAuth 20 refresh-token **OAuth 20 Flow:** OAuth 20 refresh-token //Below properties required for access service OAuth 20 client-id OAuth 20 client-secret OAuth 20 access-token OAuth 20 refresh-token **Message Type Template:** Rest Adapter Template ``` ** Rest Adapter Template** "Rest Service":{ "Request":{ "URL":{ "PATH Parameter":{ //flat Structure }, "QUERY Parameter":{ //flat Structure } }, "Header":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } } } } ``` #### #### SetUp: **Step1**: **Create Adapter** - First Insert Adapter Record By giving prefer Name and select Type = REST - Now Insert Properties If Need Authorization. - REST API Service Endpoint URL : “” , Insert Endpoint URL where Request will direct - Username : “”, Your Endservice UserName - Password : “”, Your Endservice Password - Authentication : “BASIC” - REST Operation : “POST” ![](../images/2020/03/Untitled10.png) **Step2:** Create message type for REST template **Manual  create message type for REST template (google drive api)****Manual  create message type for REST template (google drive api)** ![](../images/2020/03/Untitled1.png) **Step 3**: Create interface request(outbound) and interface response (inbound) , link interface inbound to outbound :**Configuration on Interface using for google ** ![](../images/2020/03/Untitled3.png) **How to Link response Interface:** Scroll the page to the Inbound/Outbound set up section. And select the response interface. ![](../images/2020/03/Untitled4.png) **Link rest Adapter to Request interface** ![](../images/2020/03/Untitled5.png) **Mapping** ![](../images/2020/03/Untitled6.png) - InvokeCallout3() ![](../images/2020/03/Untitled12.png) skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011X00000TdIAXQA3','0011X00000TdIAYQA3','0011X00000TdIAZQA3'}; skyvvasolutions.Iservices.invokeCalloutV3('TEST-INTEGRATION','GoogleDrive_CreateFile_Request_POST_SK',ids,'SYNC',c); ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use message reprocessing? Title: 10.2 What is "Don't Persist Message" and how to use it? Slug: 11-2-what-is-dont-persist-message-and-how-to-use-it URL: https://help.skyvva.com/#article/11-2-what-is-dont-persist-message-and-how-to-use-it ================================================================================ # 10.2 What is "Don't Persist Message" and how to use it? **Learning Objective:-** **This unit describes:-** - Describe what is Don't Persist Message? - Comfortably use this feature. #### Introduction:- This tutorial explains how to use Don’t Persist Message. It also describes the configuration. #### What is Don't Persist Message? “Don’t Persist Message” is a flag that set to not persist the message into the database. The default value is “uncheck” meaning that the message will be persisted by default. You can use Don’t Persist Message for both Inbound and Outbound interfaces. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Only the successful messages are deleting but not the failed and pending messages.[/su_box] #### Pre-requisite:- - We have to create integration.  Please refer tutorial to create Integration. ->[#article/what-is-an-integration-and-how-to-create-it](#article/what-is-an-integration-and-how-to-create-it) - We have to create Interfaces. Please refer tutorial to create Interface. -> [#article/1-what-is-an-interface-and-how-to-create-it](#article/1-what-is-an-interface-and-how-to-create-it) #### The configuration:- To configure "Don't Persist Message" service, please follow the given steps: **Step 1:- **Enter the interface detail page and check “Don’t Persist Message”  flag to activate the service. ![](../images/2019/01/Batchp2.png) **Step 2:- **Integrate the data After you are done configuring, you can integrate the data into Salesforce. As an example, this document will be portraying the sample of integration through Agent. Log in to Agent enter Integration Scheduling then set the schedule to run. ![](../images/2019/01/DP1-1.png) **Step 3:- **The monitoring results in the Message Monitoring Board #### Please log in to Salesforce and enter the Message Monitoring Board:- ![](../images/2019/01/DP2.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use CDC Processing? Title: 2. How to create change record using Process Builder? Slug: 18-2-how-to-create-change-record-using-process-builder URL: https://help.skyvva.com/#article/18-2-how-to-create-change-record-using-process-builder ================================================================================ # 2. How to create change record using Process Builder? **Learning Objectives :-** After completing this unit, you’ll be able to: - Explain Process Builder feature. - Comfortably use Process Builder feature. #### Introduction Process builder is a puissant implement we can use to automate business processes. It has a simple interface that sanctions us to point and click to cull objects and fields while establishing immediate and time-predicated actions. We utilize process builder to engender change pointer. It avail you facilely automate your business processes by providing a powerful and user friendly visual representation of your process. The Process Builder’s simple and powerful design sanctions us to build customize the automated process. #### What is process builder? Process Builder is a Salesforce’s point-and-click implement that we facilely automate if/then business processes and observe a graphical representation of our process. Every process consists of : - a trigger, - at least one criteria node, - at least one action. We can configure immediate actions or schedule actions to be executed at a concrete time. To keep things simple, this unit fixates on the most mundane process type: Record Change, which means the process, will commence when the records are engendered or edited. **Actions Available In Process Builder for outbound processing:** **Trigger Apex code**: You can use Salesforce process builder to invoke Apex code you have written within Salesforce. Apex can be anything from custom logic to save a record to complex business processes. **Create a record**: This will allow you to create new records and set certain field values for the new record. **Update records:** Update one or more records that are related to the record that started the process. You can update the record with manually entered values or by using the values from related records. We can update records of parent or child Here we will going to use Create Change pointer I,e CP record for outbound processing. #### Pre-requisite: - Create Integration. - Create Outbound Interface - To be able to execute callout, you have enter interface page detail and scroll down to Runtime Configuration- Outbound section then check flag “Use Skyvva Outbound Scheduler”. *![](../images/2018/10/2019-11-13_11-33-24.png) - **Interface Control Runtimes: **Interface Control Runtime could be used for another purpose. for CDD, it is used where the user can set LastRun DateTime that CDD finds the record change which is record’s LastModifiedDate>that date. **[su_box title="Note" box_color="#2a8af0" title_color="#000000"] ** - If you want to execute callout, the flag could be blank. - If you want to create CP Record, the flag is required. **[/su_box]        ** 4. The interface could be set creating change pointer by process builder or trigger. You have to select SKYVVA API. ![](../images/2019/01/PB-2.png) **Create Change pointer mode:** You can create change pointer using: - The **CDD job** - **Process Builder** #### Why process builder? Process builder is more flexible in comparison to workflow. In workflow rule can’t update child record where as in process builder we can **CDD Job** - CDC is made up of two components, the CDD and the CDT. CDC is stand for Change Data Detection and CDT is stand for Change Data Transfer. - These two components has different functionality. CDD is a scheduler which is running to call batch Apex in order to collect data change and save all those data into Change Pointer Object. - To create change pointer, Scheduled CDD.(Integration Admin Tap -> Scheduler Tap. Then start the scheduler on an outbound section and set the time as you prefer.) - To monitor CDD, Go to Integration Admin Tap -> CDC Tap -> Integration name -> Interface Name -> Status -> Search #### Process Builder Here We will going to create process with process builder in order to get Change pointer records. Scheduler CDD will skip this interface if value is specified. To create process using process builder follow the given steps: Setup =>Create =>Build=>Process builder=>New* - From Setup, enter Process Builder in the Quick Find Box, click Process Builder - Then click New button. ![](../images/2019/01/PB-3.png) - Enter process Name. - Enter a description of the process. - Finally, choose process type - Click on save ![](../images/2020/01/screencapture-test-skyvva-dev-ed-lightning-force-lightning-setup-ProcessAutomation-home-2020-01-28-16_11_40-20.png) - Choose object name on which you want to perform the task. - Choose start process type. ![](../images/2019/01/PB-6.png) - Add the Criteria to define it for Action Group: Set condition field. Choose condition type. 1. Enter criteria name. 2. Choose Criteria condition to formula evaluate to true 3. Set condition field and Choose condition type. Build Formula by insert the Function and Field    4. click  on Save . ![](../images/2019/01/PB-7.png) - Add the actions to execute when the criteria are met by: 1. Select the Action Type: Apex 2. Select the Action Name: Create CP Record 3. Select Apex Class: SKYVVA Callout/Create CP. When you section it, some of dropdown list will appear for you to choose. Then click Add Row to add 2 more. ![](../images/2019/01/PB-8.png) ![](../images/2019/01/PB-9.png) To be able to execute process builder, just click on Activate button. ![](../images/2019/01/PB-10.png) #### To monitor change pointer records You can check the change pointer records in CDC Control Board. ![](../images/2019/01/process1.png)![](../images/2019/01/process2-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. How to import hierarchical xml using Agent ? Slug: how-to-import-hierarchical-xml-using-agent URL: https://help.skyvva.com/#article/how-to-import-hierarchical-xml-using-agent ================================================================================ # 2. How to import hierarchical xml using Agent ? Import hierarchical xml (Account, Contact & Case) H**ierarchical Interface** - To arrange interfaces in order means hierarchical interface. It is structure in which interfaces are ranked according to levels of important. - In hierarchical Interfaces, one interface is a  parent’s of other interface. It means that child interface inherited External ID from its parent's interface. For example, Account interface is parent’s contact interface because of Contact inherited External ID from Account. - Also One parent interface can have many child account but child interface has only single parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts. **Follow the given steps to Import hierarchical xml** - **Create hierarchical relationship between account and contact interfaces.** - Go to Salesforce organization - Click on ‘Integration Tab’ - Create Integration - Save. ![](../images/2019/01/import-hierarchical-xml.png) Go to Interface tab - Create three Inbound Interfaces - Account_Inbound - Contact_Inbound - Case_Inbound ![](../images/2019/01/xml-2.png) Create Account Interface: ![](../images/2019/01/xml-3.png) Create Contact Interface: ![](../images/2019/01/xml-4.png) - All Interfaces are created successfully . ![](../images/2019/01/xml-5.png) - Click on Account_Inbound Interface - Scroll down the page to Source Definition section - Browse XML file to generate Istructure. - Save it. ![](../images/2019/01/xml-6.png) - Do mapping in account interface: ![](../images/2019/01/xml-18.png) - Scroll down to IChained interfaces Section of Account_Inbound - Now create IChained interface on Account_ Inbound ![](../images/2019/01/xml-7.png) ![](../images/2019/01/xml-8.png) - Now click on Contact_Inbound Interface - Scroll down to Mapping section - Do mapping ![](../images/2019/01/xml-20.png) - Check Target ‘LastName’ as Ext Id - Create foreign key on Contact Interface: - Click on New Foreign Key button - Select the Lookup Field as AccountId. - Select External_Id field - Save it. ![](../images/2019/01/xml-21.png) Note: You can Create hierarchical interface using VLOOKUP and Foreign key. If you have a master/detail or lookup field between parent and child then you should go for foreign key to link them together. **2. Process xml file with agent.** - Go to Agent Integration Setup Wizard - Select Account_Inbound interface - Click Edit Interface button ![](../images/2019/01/xml-10.png) - Now click Test Query button - Save it. ![](../images/2019/01/xml-9.png) - Now we integrate Data from Agent to Salesforce - Select Account_Inbound Interface - Press process button ![](../images/2019/01/xml-11.png) **3. Check imported data on message monitoring.** - Go back to your Org. - Account_Inbound interface Message Board - Click on search button ![](../images/2019/01/xml-16.png)![](../images/2019/01/xml-17.png) - To check hierarchical relationship click on related link. ![](../images/2019/01/xml-15.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 3. How to import hierarchical xml using manual load? Slug: how-to-import-hierarchical-xml-using-manual-load URL: https://help.skyvva.com/#article/how-to-import-hierarchical-xml-using-manual-load ================================================================================ # 3. How to import hierarchical xml using manual load? SKYVVA's Data loader is a SKYVVA's tool that user can upload file csv, xml to SFDC like manual load or mass manual load tools.To import hierarchical xml data User have to create hierarchical interfaces. ### What is Hierarchical Interface? - To arrange interfaces in order means hierarchical interface. It is structure in which interfaces are ranked according to levels of important. - In hierarchical Interfaces, one interface is a  parent’s of other interface. It means that child interface inherited External ID from its parent's interface. For example, Account interface is parent’s contact interface because of Contact inherited External ID from Account. - Also One parent interface can have many child account but child interface has only single parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts. **Follow the given steps to Import hierarchical xml** ** 1. Create hierarchical relationship between account and contact interfaces.** - Login with your Salesforce organization. - Select ‘Integration Tab’ and Create Integration. Enter valid name to name field to create integration which can able to recognize your integration. - Click on Save button. ![](../images/2019/01/xml-1.png) **Select Interface tab** - You have to create two Inbound Interfaces as: - Account_Inbound: Enter Valid Name of your interface -> Select source from existing list->Select status as deployed-> Select type as Inbound interface -> and Operation type as upsert - Contact_Inbound: Enter Valid Name of your interface -> Select source from existing list->Select status as deployed-> Select type as Inbound interface -> and Operation type as upsert ![](../images/2019/01/xml-2.png) Create Account Interface: ![](../images/2019/01/xml-3.png) Create Contact Interface: ![](../images/2019/01/xml-4.png) - All Interfaces are created successfully . ![](../images/2019/01/xml-5.png) - Click on Account_Inbound Interface - Scroll down the page to Source Definition section - Browse XML file to generate IStructure. - Save. ![](../images/2019/01/xml-6-1.png) - Do mapping in account interface: ![](../images/2019/01/xml-18.png) - Scroll down to IChained interfaces Section of Account_Inbound - Now create IChained interface on Account_ Inbound ![](../images/2019/01/xml-7-1.png) ![](../images/2019/01/xml-8.png) - Now click on Contact_Inbound Interface - Scroll down to Mapping section - Go to  mapping ![](../images/2019/01/xml-20.png) - Check Target ‘LastName’ as Ext Id - Create foreign key on Contact Interface: - Click on New Foreign Key button - Select the Lookup Field as AccountId. - Select External_Id field - Save ![](../images/2019/01/xml-21-1.png) Note: User can Create hierarchical interface using VLOOKUP and Foreign key. If you have a master/detail or lookup field between parent and child then you should go for foreign key to link them together. ## 2. Load data to salesforce using manual load: To upload data manually you have to use our manual load feature. When you have limited data you can upload it using manual load. - Select detail tab from your integration and select Manual load option. ![](../images/2019/01/manual_load.png) - When you click on manual load option it should navigate to : ![](../images/2019/01/manual_load1-1.png)![](../images/2019/01/manual_load4.png)![](../images/2019/01/manual_load5.png) ## 3. Check imported data on message monitoring. - Go back to your Org. - Account_Inbound interface Message Board - Click on search button ![](../images/2019/01/xml-16.png)![](../images/2019/01/test1.png) You can check linked account and contact as: ![](../images/2019/01/test3.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use interface? Title: 4. How to upload account, contact and asset data in a CSV file in a step according to Salesforce? Slug: how-to-upload-account-contact-and-asset-data-in-a-csv-file-in-a-step-according-to-salesforce URL: https://help.skyvva.com/#article/how-to-upload-account-contact-and-asset-data-in-a-csv-file-in-a-step-according-to-salesforce ================================================================================ # 4. How to upload account, contact and asset data in a CSV file in a step according to Salesforce? ![](../images/2018/10/Book-1.jpg) SKYVVA´s Free Dataloader is part of the SKYVVA´s Integration Cloud App and is a native force.com App. As a true Cloud Service - data can be uploaded over the Web without the need to install any software or hardware. SKYVVA´s Free Dataloader is perfectly suited for business analyst and administrator to manage the import of critical business information such as accounts, contacts, assets products, leads or orders in a timely manner without being reliant on limited IT resources. Based on an intuitive (Salesforce Look & Feel) Web interface - SKYVVA´s Free Dataloader is very easy to configure (No Coding) and maintain. The Free Dataloader is installed as a tab 'Integration' directly in the Salesforce menu bar. Fields are mapped by a visual editor, data are transformed using a formula editor. All operations are executed in the familiar Salesforce Look & Feel. Business analysts or administrator get alerted about failure in the service and are enabled to resolute data transforming or process logic without IT help via a message board. **Complex Use Case:** User wants to Import Account, Contact and Asset data at the same time into Salesforce Account, Contact and Asset object. #### Solution: We use our IChained Interface functionality. Since Account Object is parent and Contact and Asset is child and data of Account, Contact and Asset are sent at the same time. In this use case we need to create an integration and three interfaces -Account, Contact and Asset - with different data mappings and use two Chained Interfaces to bind between Account Interface, Contact Interface and Asset Interface. Where Account is the parent interface and Contact and Asset are the child interfaces. #### Configuration of SKYVVA Data Loader for parent-child interfaces Here our manual load function is used in conjunction with IChained Interface. Please follow the given steps to upload account, contact and asset data in a CSV file in a step according to Salesforce. #### Step 1. The first step is to create a new Integration to import our csv file./ - On the Menu Bar, you see the Integration tab -> clicks on the tap Integration. - Click On New button. ![](../images/2019/01/Book2-1.png) - Fill in the Name Field (Give a meaningful name that identify your integration.) We give our Integration a name and a short description of the use case for this integration. - All other fields can remain as default… - Click on Save button  and we have created an Integration to upload our csv file. ![](../images/2019/01/Book2-2.png) #### Step 2.  The next step is to create the Interface for the Account Object. To upload account, contact and asset data in a CSV file according to Salesforce we have to create three-level hierarchical interfaces. We can create it using vlookup but this case is not fast and good enough because when an object has master/detail relationship or has parent/child relationship which can be identified by an external Id then it is not good to use vlookup but better to use the built-in foreign key and chain interface concept. Each vlookup consume 1 soql query and in one transaction you have only 100 free. Therefore it is not good technique. And foreign key technique consumes no query limit. Here we are using ** Skyvva tree mapping** concept to create three-level hierarchical interfaces.  Skyvva tree mapping feature is built to reduce the complexity of manual work. When we use tree mapping, It automatically generated all set: - chained interface - Foreign Key - Mapping the fieldId to special field SKYVVA__PARENTID In this, we have to create only one interface which is parent interface i,e Account. Child interface created automatically Contact Interface and Asset Interface. follow the given steps to create the Account interface: - Go to your Integration page. - Click on Interface tab (near to detail tab). - Click On New Interface button. ![](../images/2019/01/Book2-3.png) #### Create Account Interface: We give our Interface a Name as **Account** and change the Status to Deploy and choose in Source Name the proper SObject -> Account All other fields can remain as default… ![](../images/2019/01/Book2-4.png) We click on ‘Save’ and created our Account Interface. ![](../images/2019/01/Book2-5-1.png) The page is navigate to: ![](../images/2019/01/book_xml4.png) We start with the account interface and click on the account interface link… ![](../images/2019/01/book_xml5.png) ![](../images/2019/01/book_xml6.png) Cross down to Source definition Section->Click choose file button to browse file that want to mapping->choose file->Click Open button->Click button Save. ![](../images/2019/01/Book2-7-1.png) Your uploaded CSV file structure looks like: ![](../images/2019/01/Book2-10.png) You see the Message that the csv file upload was successful and then click on OK button. ![](../images/2019/01/Book2-11.png) In the reloaded Mapping area we see now our source structure with all fields. ![](../images/2019/01/Book2-12-1.png) We choose the SObject Account and start with the data mapping. This simply goes with drag and drop and we start with the AccountNumber field. ![](../images/2019/01/Book2-13-1.png) Note: for each object, it is required to have an External Id (1) field which is to be used for synchronization with external system. This external id field must be unique in order to avoid duplicate records on each object. Continue with same mapping section, Source Object is Account  and  scroll down the target object section till contact object ->start with the data mapping. This simply goes with drag and drop and we start with the Email field. ![](../images/2019/01/Book2-14-1.png) Continue with same mapping section, Source Object is Account  and  scroll down the target object section till Asset object ->start with the data mapping. This simply goes with drag and drop and we start with the Email field. ![](../images/2019/01/Book2-15-1.png) Mapping is looks like: ![](../images/2019/01/Book2-19.png)![](../images/2019/01/Book2-20.png) - Mapping with all field that include Account, Contact and asset with sObject tree and then create foreign key account with Contact and Account with Asset. - We need to double click on the mapping line with the node-2-node mapping e.g. the line with the '#' sign. Create foreign key for Account&contact: ![](../images/2019/01/Book2-22.png) It should navigate to: ![](../images/2019/01/Book2-23-1.png) Create Foreign key for Account&Asset: ![](../images/2019/01/Book2-24.png) It should navigate to: ![](../images/2019/01/Book2-25.png) Finally, We Save our data mapping and confirm the message. ![](../images/2019/01/Book2-26.png) - As we used our tree mapping concept then Ichained Interface  is automatically created in account interface(parent interface). - We should select Related tab of parent interface to check our  Ichained Interface. And scroll down the page till IChained Interface section. ![](../images/2019/01/Book2-27.png) To check the child interface click on Account_contact interface ID. It should navigate to: ![](../images/2019/01/Book2-28.png) We can check our foreign key. Select related option of contact Interface and scroll down the page till foreign key section. ![](../images/2019/01/Book2-29.png) To check the child interface(Asset) click on Account_Asset interface ID. It should navigate to: ![](../images/2019/01/Book2-30.png) We can check our foreign key. Select related option of AssetInterface and scroll down the page till foreign key section. ![](../images/2019/01/Book2-31.png) Now we are ready to upload our csv file. **Step 3: Upload CSV data using Manual Load** We go to our Integration Detail page and click on the Manual Load link. ![](../images/2019/01/Book2-32.png) On the Manual Load page we choose our CSV Separator (1) and click on Search (2) and choose your proper csv file and then open it and then click on the Upload (3) Button. ![](../images/2019/01/Book2-33.png) In the Data area we see the structure of our csv file and in the Total Records Found area you can choose now which data you want to upload. ![](../images/2019/01/Book2-35.png) You can select either 'Select All' (1) or choose different records on the left side (1). Then we click on the Push (2) Button to upload the data into Salesforce and you get message that the process has started. Click on the Message Board (3) Button and you come to the Message Board Overview. ![](../images/2019/01/Book2-36.png) In the Message Board you can see on the Storage Usage area a short overview about your storage usage. ![](../images/2019/01/Book2-37.png) In the Filters (2) area you can search for different criteria e.g. Integrations, Interfaces, Message Status or Date. Click on search button. ![](../images/2019/01/Book2-38.png) In the Message area you can see the messages and see if it got posted. ![](../images/2019/01/Book2-39.png) Double click on Comment to see it. ![](../images/2019/01/Book2-40.png) As example you can jump into the detail of a message.Click on a Message Name link and you see the Message Details.You see the different Account field names (Name) and its content (Value). ![](../images/2019/01/Book2-41.png) Besides you can jump directly to a Related Account. Click on one of the Related To Link. ![](../images/2019/01/Book2-43.png) and verify the uploaded Account Data in the Account Detail ![](../images/2019/01/Book2-44.png) Now we have finished our Integration to import Account, Contact and Asset Data into Salesforce with a csv-file at the same time. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use interface? Title: 5. How to import hierarchical xml file? Slug: 13-4-how-to-upload-account-contact-and-asset-data-in-a-xml-file-in-a-step-according-to-salesforce URL: https://help.skyvva.com/#article/13-4-how-to-upload-account-contact-and-asset-data-in-a-xml-file-in-a-step-according-to-salesforce ================================================================================ # 5. How to import hierarchical xml file? ![](../images/2018/10/Book-1.jpg) SKYVVA´s Free Dataloader is part of the SKYVVA´s Integration Cloud App and is a native force.com App. As a true Cloud Service - data can be uploaded over the Web without the need to install any software or hardware. SKYVVA´s Free Dataloader is perfectly suited for business analyst and administrator to manage the import of critical business information such as accounts, contacts, assets products, leads or orders in a timely manner without being reliant on limited IT resources. Based on an intuitive (Salesforce Look & Feel) Web interface - SKYVVA´s Free Dataloader is very easy to configure (No Coding) and maintain. The Free Dataloader is installed as a tab 'Integration' directly in the Salesforce menu bar. Fields are mapped by a visual editor, data are transformed using a formula editor. All operations are executed in the familiar Salesforce Look & Feel. Business analysts or administrator get alerted about failure in the service and are enabled to resolute data transforming or process logic without IT help via a message board. **Complex Use Case:** User wants to Import Account, Contact and Asset data at the same time into Salesforce Account, Contact and Asset object. **Solution:** We use our IChained Interface functionality. Since Account Object is parent and Contact and Asset is child and data of Account, Contact and Asset are sent at the same time. In this use case we need to create a integration and three interfaces -Account, Contact and Asset - with different data mappings and use two Chained Interfaces to bind between Account Interface, Contact Interface and Asset Interface. Where Account is the parent interface and Contact and Asset are the child interfaces. Here is how it works and let´s get started. #### Pre-requisite: We have to create message type to get hierarchical Istructure in mapping tool. follow the given steps: [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We have to create message type for Istructure. We can easily get hierarchical Istructure using message type. Also It is reusable in another interface.  [/su_box] To learn detail about message type feature we can follow this tutorial ->  [How to create message type with different file format?](#article/tutorial-v2-41-lightning) **Step 1:** We have to click on metadata provider tab and click on New button. In Skyvva, when we create metadata, Name filed is only mandatory field. On MetaData the Name cannot be duplicate. ![](../images/2019/01/Untitled4.png) **Step2**: Create Istructure Repository in created metadata. The purpose of Istructure is An Interface for a structure that contains the metadata of a structure. -  We have click on related tab then click on new button to create Istrutcure repository. -  We have to open our created Istructure repository. ![](../images/2019/01/Untitled6.png) **Step 3:  **We have to create message type. -  click on upload file button. Pop up window should open. -  Select file format which you want to upload. Here we used xml file to create message type. ![](../images/2019/01/msg_type.png) #### Configuration of SKYVVA Data Loader for parent-child interfaces Here our manual load function is used in conjunction with IChained Interface. Please follow the given steps to upload account, contact and asset data in an XML file in a step according to Salesforce. **Step 1. The first step is to create a new Integration to import our xml file.** - On the Menu Bar, you see the Integration tab -> clicks on the tap Integration. - Click On New button. ![](../images/2019/01/Book2-1.png) - Fill in the Name Field (Give a meaningful name that identify your integration.) We give our Integration a name and a short description of the use case for this integration. - All other fields can remain as default… - Click on Save button  and we have created an Integration to upload our xml file. ![](../images/2019/01/integration.png) **Step 2.  The next step is to create the Interface for the Account Object.** To upload account, contact and asset data in an XML file according to Salesforce we have to create three-level hierarchical interfaces. We can create it using vlookup but this case is not fast and good enough because when an object has master/detail relationship or has parent/child relationship which can be identified by an external Id then it is not good to use vlookup but better to use the built-in foreign key and chain interface concept. Each vlookup consume 1 soql query and in one transaction you have only 100 free. Therefore it is not good technique. And foreign key technique consumes no query limit. Here we are using ** Skyvva tree mapping** concept to create three-level hierarchical interfaces.  Skyvva tree mapping feature is built to reduce the complexity of manual work. When we use tree mapping, It automatically generated all set: - chained interface - Foreign Key - Mapping the fieldId to special field SKYVVA__PARENTID In this, we have to create only one interface which is parent interface I,e Account. Child interface created automatically Contact Interface and Asset Interface. follow the given steps to create the Account interface: - Go to your Integration page. - Click on Interface tab (near to detail tab). - Click On New Interface button. ![](../images/2019/01/Book2-3.png) **Create Account Interface:** We give our Interface a Name as **Account** and change the Status to Deploy and choose in Source Name the proper SObject -> Account All other fields can remain as default… ![](../images/2019/01/interface-3.png) We click on ‘Save’ and created our Account Interface. The page is navigate to: ![](../images/2019/01/interface-img.png) We start with the account interface and click on the account interface link. ![](../images/2019/01/interace_img_1.png) In the reloaded Mapping area we see now our source structure with all fields. ![](../images/2019/01/Istructure.png) We choose the Source Object and target Object as Account and start with the data mapping. This simply goes with drag and drop and we start with the AccountNumber field. First we need to map parent node with each other. i,e  sobject ![](../images/2019/01/mapping.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] for each object, it is required to have an External Id (1) field which is to be used for synchronization with the external system. This external id field must be unique in order to avoid duplicate records on each object.[/su_box] Continue with same mapping section, Source Object is Account and scroll down the target object section till contact object ->start with the data mapping. This simply goes with drag and drop and we start with the Email field. And same mapping section, Source Object is Account and scroll down the target object section till Asset object ->start with the data mapping. This simply goes with drag and drop and we start with the Email field. ![](../images/2019/01/mapping3.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Here we don't need to create Foriegn key to link object. It has been created automatically in tree mapping  [/su_box] Finally, We Save our data mapping and confirm the message. ![](../images/2019/01/mapping4.png) - As we used our tree mapping concept then Ichained Interface is automatically created in account interface(parent interface). - We should select Related tab of parent interface to check our  Ichained Interface. And scroll down the page till IChained Interface section ![](../images/2019/01/IChainedInterface.png) To check the child interface click on Account_contact interface ID. It should navigate to: ![](../images/2019/01/contact_interface.png) We can check our foreign key. Select the related option of contact Interface and scroll down the page till foreign key section. ![](../images/2019/01/foreign-key6.png) To check the child interface(Asset) click on Account_Asset interface ID. It should navigate to: ![](../images/2019/01/asset-Interface.png) Now we are ready to upload our xml file. **Step 3: Upload XML data using Manual Load** We go to our Integration Detail page and click on the Manual Load link. ![](../images/2019/01/manual_load-1.png) On the Manual Load page we choose our active inbound Interface (1) And choose data type as XML (2) and choose your proper xml file and then open it and then click on the Upload (3) Button. ![](../images/2019/01/upload-datsa.png) In the Data area we see the structure of our xml file and in the Total Records Found area you can choose now which data you want to upload ![](../images/2019/01/data.png) click on the Push (2) Button to upload the data into Salesforce and you get message that the process has started. Click on the Message Board (3) Button In the Message Board you can see on the Storage Usage area a short overview about your storage usage. ![](../images/2019/01/Book2-37.png) In the Filters (2) area you can search for different criteria e.g. Integrations, Interfaces, Message Status or Date. Click on search button. ![](../images/2019/01/msg_board.png) In the Message area you can see the messages and see if it got posted. ![](../images/2019/01/test-1.png) As example you can jump into the detail of a message. Click on a Message Name link and you see the Message Details. You see the different Account field names (Name) and its content (Value). ![](../images/2019/01/msg_monitoring2.png) Besides you can jump directly to a Related Account. Click on one of the Related To Link.and verify the uploaded Account Data in the Account Detail ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is the Auto-Switch mode and when to use it? Title: 1. What is the Auto-Switch mode and when to use it? Slug: what-is-the-auto-switch-mode-and-when-to-use-it URL: https://help.skyvva.com/#article/what-is-the-auto-switch-mode-and-when-to-use-it ================================================================================ # 1. What is the Auto-Switch mode and when to use it? ## Learning Objectives After completing this unit, you’ll be able to: - Describe what Auto-switch mode is. - How and when to use Auto-switch mode. #### Introduction SKYVVA providing different data processing modes like immediately processing, Batch processing, Bulk processing modes. where Auto-Switch mode is a combination of all three modes. When data processing is in the auto-switch mode it means processing is based on the number of records and IntegrateMaxSize, IntegrateBatchMaxSize. #### What is Auto-Switch mode? Auto-switch mode is a data processing mode provided by Skyvva. When the auto-switch mode flag checked, It means that Agent automatic switch SKYVVA API based on the number of record and IntegrateMaxSize, IntegrateBatchMaxSize. And when the flag is unchecked it means that data is integrated into normal mode (no batch or bulk) no matter what is the size of records. Before configuring Auto-Switch Mode, you have to know about the parameters: - **Integrate Max Size**: Maximum number of records that SKYVVA Integration Agent can integrate using method integrate. The default value is 200. If the number of records to be integrated is bigger than this value, Agent will switch the API method automatically. - **Integrate Batch Max Size**: Maximum number of records that SKYVVA Integration using method integrate Batch. The default value is 5000. If the number of records to be integrated is bigger than this value, Agent will switch to use the Bulk API method automatically. If the number of records (Data) <= Integrate Max Size, Interface will run in **Normal Mode.** If the number of records (Data) > Integrate Max Size and the number of records (Data) <= Integrate Batch Max Size, Interface will run in **Batch Mode.** If the number of records (Data) > Integrate Batch Max Size, Interface will run in **BULK Mode.** #### Pre-requisite - We have to create [Integration](#). - Creating integration next step is to create [Interface](#). #### Configuration: How to use Auto-Switch mode? We click on the 'Account Interface' link and see the Interface Details and scroll down to Runtime Configuration-Inbound section then checkbox on Use Auto-Switch Mode. ![](../images/2019/02/auto1.png) **How to integrate from other systems?** Assuming you already have created interface since this part will be the focus on integrating from Agent as an example. To integrate from Agent, please run Agent-UI and more steps as following: - After running the Agent-UI, the Integration Control Board will popup then you have to click on Integration Wizard. - Select your agent the Property File. - We have to select the existing integration and interface on which we have to process data. - After selecting the interface you will be land on Interface Source Definition a place where you can configure the adapter. To create an adapter please click on this link ([How to create adapter in Agent](#)). After creating the adapter, you can test the Query to see the data and then save it. **How to monitor the result?** As we know, the number of records will define how SKYVVA Integration can integrate. You can monitor the result depend on the value of the record you define. - Check the result in the Message Monitoring Board if the records are less than Integrate Max Size. ![](../images/2019/02/Untitled2.png) - Check the result in the Batch Control Board if the records are greater than Integrate Max Size. ![](../images/2019/02/Untitled3.png) - Check the result in Bulk Control Board if the records are greater than Integrate Batch Max Size. ![](../images/2019/02/Untitled4.png) **How to monitor in Message Monitoring Board?** Login to Salesforce and enter Integration => Message Monitoring Board tab => Select Interface Name => click search button ![](../images/2019/02/Untitled5.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to build real-time outbound interface? Title: 1. How to build real-time outbound interface? Slug: how-to-build-real-time-outbound-interface URL: https://help.skyvva.com/#article/how-to-build-real-time-outbound-interface ================================================================================ # 1. How to build real-time outbound interface? **Learning Objectives:-** **After completing this unit, you’ll be able to:-** - Describe what real-time outbound Interface is? - How to build a real-time outbound interface? #### Introduction:- This concept is about outbound interface processing. The real-time outbound interface can be done in different ways i.e Using a button, Using trigger, Using the process builder. #### What is real-time outbound processing? For outbound processing, we have two categories:- - **Synchronous:-** Apex code wait for the response of the HTTP callout. - **Asynchronous:-** Apex code doesn't wait for the response of the HTTP callout. It can have a response which is an asynchronous response. This response can come at any time. Synchronous interface mostly has a response which means that we will create a response interface to handle the response. An asynchronous interface mostly doesn't have a response. But this is not true for all cases. We could have an asynchronous interface which has a response interface. In this case, the apex code doesn't wait and get blocked. The response will come back at a later time. In this case, we have an asynchronous scenario with an asynchronous response. But for the synchronous interface, we should always expect to have a response and the apex code is waiting as long as it will take time until the response is coming back. If the response doesn't come back at the allowed time e.g. 120 sec. then we will get a governor limit exception time out. - **The steps in the asynchronous processing are as follows:-** - Execute the SOQL statement from the interface to read the business data. - Create the message (outbound message) with status "Pending". - Do request mapping. - Convert to XML, JSON and send it out h an adapter. - Check the result of the HTTP callout and update the status of the outbound message. - **For synchronous processing, the steps are as follows:-** - Execute the SOQL statement from the interface to read the business data - Create the request message (outbound message) with status "Pending" - Do request mapping - Convert to XML, JSON and send it out through an adapter e.g. make an HTTP callout. - Wait for the response. When the response comes then parse the response and call the inbound processing to execute the response interface For the asynchronous scenario, we need the outbound message to reprocess it again. For synchronous scenario, we normally and mostly do not need the outbound message to reprocess. If the call for example to Google web service fails the user will issue the call again. This is true when the end-user carries the action. But what is when the action is not carried by the user but for example from a trigger or process builder process? In this case, a background process is the trigger of the action and if something going failed there is no user to repeat the action again. Therefore, in this case, we need an outbound message so that the reprocessing job or the user can reprocess the call again. Technically we can handover the interface processing to the future, queueable or batch apex. #### How to build a real-time outbound interface? The real-time outbound interface we can do in a different way:- **1. InvokeCallout2() ** - **Using a button** on, for example, a sObject **Account** and put the code to do the callout with invokeCallout2(). - **Using a trigger**. In this case, it fires when a record is changed. - **Using the process builder**. This is quite the same as the trigger. The difference here is that you have a graphical design tool to define the condition when a record should be sent. #### How to create real-time outbound Interface using Button:- This feature uses our** invokeCallout2()** method. This method support   **SAP, SAP-PI, SAP-R/3, ****SFDC2SAPPI, SOAP, REST **adapter types. The response could be a text of JSON, XML, List> based on given flag parameters in CallOutControl and Apex of each adapter handle setting when execute callout.  InvokeCallout2() method support different mode: 1. SYNC 2. FUTURE 3. BATCH 4. AUTO We get a real-time response in SYNC mode only. **Input Parameters:** - Integration name:  Integration Name - Interface name:  Interface name - ids:  Collection of sObject id - Mode:  SYNC, FUTURE, BATCH, AUTO **CallOutControl** **Flag** **CalloutResponse (Attributes)** **SAP** **SAP-PI** **SAP-R/3** **SFDC2SAPPI** **SOAP** **REST** *returnJSONComplete* true *String payloadJSON* no no no no yes yes *returnXml* true *String payloadXML* no no no yes yes yes *returnListRecord* true *List> records* yes yes yes yes yes yes *returnIMessages* true no no no no no no *actionDoIntegrate* false Does not process interface invoke call In/Out *actionDoMapping* true Does nothing with this flag *isCreateMessage* false Does not upsert message only in mode SYNC, Otherwise message will upsert. *isBypassDML* true Does not upsert messages, interface, log file **Pre-Requisite:-** - Create Integration. - Create Adapter. Step 1:- Create Outbound Interface:- ![](../images/2019/02/image_2022_02_08T07_06_58_885Z.png) - Select Outbound adapter as shown in the picture below ![](../images/2019/02/image_2022_02_08T07_11_09_729Z.png) - Add SOQL statement. ![](../images/2019/02/img1.png) We have to select fields on which we have to build the query. For example, here we have selected three fields  AccountNumber, BillingCity, and Name. And mapping data. Click on the outbound  interface to show detail and do mapping data as shown below: ![](../images/2019/02/image_2022_02_08T07_16_40_753Z.png) **Step 2:- Execute Apex code in the developer console:-** - Navigate to the developer console. - Click on debug. - Open Anonymous window. - Enter Code. "The code and the picture is shown below" ![](../images/2019/02/image_2022_02_08T07_19_03_199Z.png) [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.isBypassDML=false; ListmyList = new List(); myList.add('0011X00000wcxEAQAY'); skyvvasolutions.IServices.invokeCallout2('Test-RealTimeIntegration','Test-RealTimeInterface',myList,'SYNC', c);[/aux_code] [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Invokecallout2 two lines with different account id in once execute it will show one message is fail and one more message is completed. And if we execute invokecallout2 two line with the same account id in one execute it will show only one message is fail because it is duplicate. [/su_box] #### Check it on message monitoring:- #### #### 2. InvokeCallout3 - **Using a button** on, for example, a sObject **Contact** and put the code to do the callout with invokeCallout3(). - **Using a trigger**. In this case, it fires when a record is changed. - **Using the process builder**. This is quite the same as the trigger. The difference here is that you have a graphical design tool to define the condition when a record should be sent. **SKYVVA** API Service can use the V3 integrate outbound callout, such as the REST API, allow you to interact with **SKYVVA** instance data using web service requests. **SKYVVA** supports outbound web services using REST and SOAP. The REST style emphasizes that interactions between clients and services are enhanced by having a limited number of operations. Each operation (**GET, POST, PUT & DELETE**) has a specific meaning, **REST** avoids ambiguity. 1. SYNC 2. FUTURE 3. BATCH 4. AUTO We get a real-time response in SYNC mode only. **Input Parameters:** - Integration name:  Integration Name - Interface name:  Interface name - ids:  Collection of sObject id - Mode:  SYNC, FUTURE, BATCH, AUTO **Pre-Requisite:-** - Create Integration. - Create Adapter. Step 1:- Create Outbound Interface:- ![](../images/2019/02/image_2022_02_15T11_36_34_624Z.png) - Select Outbound adapter as shown in picture below ![](../images/2019/02/image_2022_02_15T11_39_32_657Z.png) - Add SOQL statement. ![](../images/2019/02/image_2022_02_15T11_43_56_331Z.png) We have to select fields on which we have to build the query. For example, here we have selected two fields FirstName, LastName, from Contact. And mapping data. Click on the outbound  interface to show detail and do mapping data as shown below: ![](../images/2019/02/image_2022_02_15T11_52_22_348Z.png) **Step 2:- Execute Apex code in the developer console:-** - Navigate to the developer console. - Click on debug. - Open Anonymous window. - Enter Code. “The code and the picture is shown below” ![](../images/2019/02/image_2022_02_15T12_03_20_954Z.png) [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0031X00000n8EIlQAM'}; //Id List result = skyvvasolutions.Iservices.invokeCalloutV3('Test Integration','TestInterface-InvokeCalloutV3',ids,'AUTO',c); [/aux_code] [su_box title="Note" box_color="#2a8af0" title_color="#000000"]InvokeCalloutV3 integrate API service is based on process hierarchical message in our tool SKYVVA, it also shows the monitoring and a tree hold in the hierarchical message.. [/su_box] #### Check it on message monitoring:- ![](../images/2019/02/image_2022_02_15T12_41_42_554Z.png) #### How to create real-time outbound Interface using Trigger In integration admin, there is a new tab called "SKYVVA Trigger" which allows the user to configure in a graphical user interface the following settings: - Select box "Triggering Method": Button, APEX Trigger - Select box "Mode": Immediate, Batch - SFDC object: List of all Objects in the Org - Interface to trigger: List of all Interfaces in the Org SKYVVA Trigger tab uses to generate script trigger automatic for Button and Apex Trigger. Go to “Integration Admin” tab > click on the tab “SKYVVA Trigger” ![](../images/2019/02/img4.png) It can generate two kinds of the script:- - **Generate Script Trigger Button** - **Generate Script Trigger Apex** **   1. Generate Script Trigger Button** - Select the Trigger Type “BUTTON” - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode: Sync,Future,Batch - Click button “Generate Script” - Now you will see the script trigger button in the box and can copy to use it **2. Generate Script Trigger Apex** - Select Trigger Type “APEX TRIGGER” - Tick Trigger Event (can tick more than one) - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode : None,Auto,Future,Batch - Click button “Generate Script” - Now you will see the script apex trigger in the box and can copy to use it - In the script, change to your own name to your own name ![](../images/2019/02/image_2022_02_08T07_40_01_047Z.png) At the last select with Trigger Mode, button “Generate Script” will visible. #### How to create real-time outbound Interface using Process builder Process Builder is a Salesforce’s point-and-click tool that lets you easily automate if/then business processes and see a graphical representation of your process as you build. Every process consists of a trigger, at least one criteria node, and at least one action. You can configure immediate actions or schedule actions to be executed at a specific time. To keep things simple, this unit focuses on the most common process type: Record Change, which means the process, will start when the records are created or edited. - **Create a process builder to create CP Record** ![](../images/2018/11/2-18.png) ![](../images/2018/11/3-16.png) ![](../images/2018/11/4-13.png) Select SKYVVA apex API ![](../images/2018/11/5-11.png) Add input definition Setting apex variable values: integrationName: integration name Interface name: interface name: isCreateCPRecord: True (*False, if the value is not specified*) recordIds: salesforce sObject.Id (i.e Account.Id) ![](../images/2018/11/6-10.png) ![](../images/2018/11/7-5.png) You can test modification account from the screen and Save. I have executed mass update 10 account in developer console then got 10 CP records ![](../images/2018/11/8-6.png) - **Process Builder executes callout.** ![](../images/2018/11/9-5.png) You can edit the account on screen the save, then check the message on message-monitoring. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to import hierarchical data using xml and csv file? Title: 1. How to import hierarchical data using xml and csv file? Slug: how-to-import-hierarchical-data-using-xml-and-csv-file URL: https://help.skyvva.com/#article/how-to-import-hierarchical-data-using-xml-and-csv-file ================================================================================ # 1. How to import hierarchical data using xml and csv file? Learning Objectives After completing this unit, you’ll be able to: - Describe data import feature. - Comfortably use How to import hierarchical data with xml and csv format. **Introduction** Skyvva Added this feature to import data,  to support xml file with element syntax, support json file, support csv file which contain hierarchical data . It is used with inbound interface which is a normal or ichained interface. In case of ichained interface we have hierarchical data. ## What Is this feature? This feature is built to import data(chained interface),  to support xml file with element syntax(The xml file contain flat or hiearchical data), support json file (The json file contain flat or hiearchical data), support csv file which contain hierarchical data (The format is described in task ). With integrate3 we provide the possibility to use a custom class to code the entire business logic using the message payload. Integrate3 will pass all messages to the custom class and the customer class will post the message for example insert or update. The custom class can also do other specific logic based on the requirement. With custom class, we can build complex processing and even provide the transactional handling e.g. rollback to a save point. Note that when we use custom class it will do all the logic of the whole processing block e.g. workflow, mapping and operation like upsert. With custom class, we do the whole logic for all steps. **Here we need to create apex calss.** **Apex class:** A apex class is similar to java class. It is template or blueprint from which objects are created. In Apex, you can define top-level classes (also called outer classes) as well as inner classes, that is, a class defined within another class. **Why we use apex class here?** For some custom requirement, client needs to change some data from inbound interface or client needs to add some condition before inserting data apex formula is used. For example, if we have to calculate some field before sending data to outbound interface, but just more complex formula can be done through apex class. It is used when any of the functions does not support the logic which needs to be in formula. e.g. one customer have  requirement where I used this. they had one field called timestamp provider.  They need check that if timestamp which is coming from outside salesforce to salesforce is older than current timestamp or not. In this case we cannot access existing data in salesforce through formula. here we need some custom formula which can be build apex formula. ## How to create apex class? To built apex class please follow the given steps: **Step1**: We have to go to set up in our salesforce organisation. Click on set up option. ![](../images/2019/04/import1.png) **Step 2:** Search apex class in quick search box and click on new button to create new apex class. ![](../images/2019/04/import2.png) **Step 3:** New button should navigate to new page. Enter the following code there: global class ABC_Test_Integration3 extends skyvvasolutions.AbstractHierarchyProcess { public override  void doProcess(Map> intf2Messages,Map allMessage,Map> treeInterface,Id pInterface){ system.debug('>>>>>>>>>>>>> '+intf2Messages); } } . ![](../images/2019/04/import3.png) And click on save button to save the apex class. ![](../images/2019/04/import4.png) **Pre-requisite :** - We have to create apex class. - We have to create hierarchical Message type: ![](../images/2019/04/import5.png) 3. We have to create Integration. 4. We have to create three interfaces. - Account (parent) Interface using hierarchical message type. - Contact Interface: child of account interface. - Asset Interface: child of contact interface. ![](../images/2019/04/import6.png) Note : While create hierarchical Interface using hierarchical message type, message type name should be same as our object name. In integration3, here we no need to do mapping manually. **How to process message type based Interface?** To process the message type based interface we have to follow the given steps: **Step1:  **We have to configure Ichain interface Configuration of Ichained Interface in account and contact object. ![](../images/2019/04/import7.png) Configuration of Ichained Interface in contact and Asset objects. ![](../images/2019/04/import8.png) **Step2:** Configure in 2 fields in the parent interface is Account -Custom Processing = True -Custom Processing Class = enter the name of a custom class e.g: (ABC_Test_Integration3) ![](../images/2019/04/import9.png) **Step3**: Navigate to Integration => Manual Load => select parent interface (Account) => select Data Type = XML HIERARCHY => Choose hierarchical data xml and upload. ![](../images/2019/04/import10.png) Here is example hierarchical data payload. ![](../images/2019/04/import11.png) We can not select data to push. We have to push all the uploaded data. Click on the Message Board button to view all messages after processed. ![](../images/2019/04/import12.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 4. Restore hierarchical data using xml and csv file Slug: 16-3-import-hierarchical-data-using-xml-and-csv-file URL: https://help.skyvva.com/#article/16-3-import-hierarchical-data-using-xml-and-csv-file ================================================================================ # 4. Restore hierarchical data using xml and csv file #### Introduction Skyvva Added this feature to import data to support XML file with element syntax, support JSON file, support CSV file which contains hierarchical data. It is used with an inbound interface which is a normal or ichained interface. In the case of ichained interface, we have hierarchical data. #### What Is this feature? This feature is built to import data(chained interface),  to support XML file with element syntax(The XML file contains flat or hierarchical data), support JSON file (The JSON file contains flat or hierarchical data), support CSV file which contains hierarchical data (The format is described in the task ). With integrate3 we provide the possibility to use a custom class to code the entire business logic using the message payload. Integrate3 will pass all messages to the custom class and the customer class will post the message for example insert or update. The custom class can also do other specific logic based on the requirement. With custom class, we can build complex processing and even provide the transactional handling e.g. rollback to a save point. Note that when we use custom class it will do all the logic of the whole processing block e.g. workflow, mapping, and operation like upsert. With custom class, we do the whole logic for all steps. #### Here we need to create an apex class. **Apex class:** An apex class is similar to java class. It is a template or blueprint from which objects are created. In Apex, you can define top-level classes (also called outer classes) as well as inner classes, that is, a class defined within another class. #### Why we use apex class here? For some custom requirements, the client needs to change some data from the inbound interface or the client needs to add some condition before inserting the data apex formula is used. For example, if we have to calculate some field before sending data to the outbound interface, but just a more complex formula can be done through the apex class. It is used when any of the functions do not support the logic which needs to be in the formula. e.g. one customer has a requirement where I used this. they had one field called timestamp provider.  They need to check that if timestamp which is coming from outside salesforce to salesforce is older than the current timestamp or not. In this case, we cannot access existing data in salesforce through the formula. here we need some custom formula that can be build apex formula. #### How to create an apex class? To built apex class please follow the given steps: **Step1**: We have to go to set up in our salesforce organization. Click on the setup option. ![](../images/2019/04/import1.png) **Step 2:** Search apex class in the quick search box and click on the new button to create a new apex class. ![](../images/2019/04/import2.png) **Step 3:** New button should navigate to new page. Enter the following code there: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] global class ABC_Test_Integration3 extends skyvvasolutions.AbstractHierarchyProcess { public override  void doProcess(Map> intf2Messages,Map allMessage,Map> treeInterface,Id pInterface){ system.debug('>>>>>>>>>>>>> '+intf2Messages); } } [/aux_code] ![](../images/2019/04/import3.png) And click on the save button to save the apex class. ![](../images/2019/04/import4.png) **Pre-requisite :** - We have to create an apex class. - We have to create hierarchical Message type: ![](../images/2019/04/import5.png) 3. We have to create Integration. 4. We have to create three interfaces. - Account (parent) Interface using hierarchical message type. - Contact Interface: child of account interface. - Asset Interface: child of the contact interface. ![](../images/2019/04/import6.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]While creating a hierarchical Interface using a hierarchical message type, the message type name should be the same as our object name.[/su_box]  In integration3 here, no need to do mapping manually. #### How to process message type based Interface? To process the message type-based interface we have to follow the given steps: **Step1:  **We have to configure Ichain interface Configuration of Ichained Interface in account and contact object. ![](../images/2019/04/import7.png) Configuration of Ichained Interface in contact and Asset objects. ![](../images/2019/04/import8.png) **Step2:** Configure in 2 fields in the parent interface is Account -Custom Processing = True -Custom Processing Class = enter the name of a custom class e.g: (ABC_Test_Integration3) ![](../images/2019/04/import9.png) **Step3**: Navigate to Integration => Manual Load => select parent interface (Account) => select Data Type = XML HIERARCHY => Choose hierarchical data xml and upload. ![](../images/2019/04/import10.png) Here is an example hierarchical data payload. ![](../images/2019/04/import11.png) We can not select data to push. We have to push all the uploaded data. Click on the Message Board button to view all messages after processed. ![](../images/2019/04/import12.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Bulk Control Board Title: 16.4 How to use real SFDC bulk mode for SAP PI Slug: how-to-use-real-sfdc-bulk-mode-for-sap-pi URL: https://help.skyvva.com/#article/how-to-use-real-sfdc-bulk-mode-for-sap-pi ================================================================================ # 16.4 How to use real SFDC bulk mode for SAP PI **Learning Objectives:-** **This unit describes:-** - Describe the data import feature. - Comfortably use How to import hierarchical data with XML and CSV format **Introduction:-** SKYVVA provides different processing modes and uses API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. **What is Bulk?** SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have a huge amount of data I,e data >= 5000records, then we should use bulk processing to process the interface. - When we check the flag Bulk Mode=True the checkbox of Don't Persist Message will change to true automatically - All data called with Bulk Mode=true and Bulk Version= SFDC Bulk API 2.0 - SFDC Bulk API 1.0 these data will push directly into the Salesforce database. **We should know some terms:-** - **BULK Mode**: We have to set this flag to run our interface in bulk mode using salesforce bulk API. - **SKYVVA Bulk**: SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use the SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode (SKYVVA Bulk 1.0) with both Bulk-processing modes, which is Parallel and Serial. The default value is Serial. - **SFDC Bulk: **We support SFDC pure bulk mode in version 2.0 that is very fast but cannot use the SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk requires the data has to be mapped already on the sender side and doing the additional mapping to enrich the business logic is not possible using SKYVVA mapping.  Version 2.0, you can only use with Serial mode processing. - **Bulk Version**: SKYVVA support SFDC pure bulk mode in version 2.0 then we have our own SKYVVA bulk mode. This uses Skyvva workflow and mapping and thus it is more powerful but slower than pure bulk API technique from salesforce. - **Bulk Processing Mode**: These fields indicate two modes which are support with bulk version 1.0 and bulk version 2.0 only parallel mode is supported. So the value depends here on the selection of field bulk version. For example, When we want to use "serial" we should select bulk 1.0. - **Parallel**: When you select this processing mode, it will run parallel. - **Serial**: When you select this mode, it will not run at the same time. - **Bulk Package Size**: This parameter determines how many records are split into Bulk data size. If your Message contains 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be kept. - **Bulk Sch Frequency:** This is the schedule time-frequency for bulk scheduler on interface. - **Bulk Integrate Time Interval (minute**): The interval (minutes) used for integrating bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. **Pre-requisite:-** **Step1: **We have to create an integration. Please refer to our tutorial to create [integration](#article/what-is-an-integration-and-how-to-create-it). ![](../images/2019/04/sfdc.png) **Step2: **We have to create an interface. ## **How to use ** "R**eal SFDC bulk mode for SAP PI?"** To generate a WSDL file for some Interfaces, we have to follow the given steps:- **Step 3:**  We have to go to our created interface detail page. We can post data from SAP or Skyvva Agent into Skyvva/Salesforce with bulk mode: **Bulk Version:** -SKYVVA Bulk 1.0 -SFDC Bulk API 1.0 -SFDC Bulk API 2.0 We can use the bulk version = None or SKYVVA Bulk 1.0 the data will be posted into the bulk control board. ![](../images/2019/04/SFDCbulktoSAPPI2.png) **Step 2:**  We can see the result on the bulk control board after post data with Agent. ![](../images/2019/04/SFDCbulktoSAPPI3-1024x353.png) We can use the bulk version = SFDC Bulk API 1.0 the data will be posted into Salesforce database directly the SFDC **Bulk API 1.0 is processed base on Bulk Processing Mode = Parallel and Serial. Default value is parallel.** ![](../images/2019/04/SFDCbulktoSAPP4.png) With this case when user posts data from Agent successfully the user can see of transaction data processing in Bulk Data Load Jobs Note: SFDC Bulk API 1.0 process data with sObject Job Type= Bulk V1, For Data and Message object process with Job Type=Bulk V2 please see screenshot below ![](../images/2019/04/SFDCbulktoSAPPI5.png) We can use bulk version = SFDC Bulk API 2.0 the data will be posted into Salesforce database directly the SFDC Bulk API 2.0 works with Bulk Processing Mode = Parallel only (no work with Serial) Please see the screen below after posted data from Agent ![](../images/2019/04/SFDCbulktoSAPPI6.png) **Message Monitoring** All data call from Agent or other systems to the salesforce via SFDC Bulk API 1.0 and SFDC Bulk API 2.0 Always create the messages Pending, Failed, Completed,…….. **Don’t Create Message Completed** Because of the SFDC Bulk API feature can work with big data so we check the flag Don’t Created Message Completed = true mean that not allow all completed messages or Idatacreate into database ![](../images/2019/04/SFDCbulktoSAPPI7.png) Note: **Operation Upsert** - We need only one external id field for operation upsert - External Mapping: external ID get from the interface - Not External Mapping: external ID get from skyvva mapping ![](../images/2019/04/SFDCbulktoSAPPI8.png) **Process:-** Store batch data in agent folder, root folder = interfaced ID ![](../images/2019/04/SFDCbulktoSAPPI9.png) The batch will auto-delete when the job is completed. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use message reprocessing? Title: 10.3 How to use message reprocessing per integration Slug: 11-3-how-to-use-message-reprocessing-per-integration URL: https://help.skyvva.com/#article/11-3-how-to-use-message-reprocessing-per-integration ================================================================================ # 10.3 How to use message reprocessing per integration **Learning Objectives:-** **This unit describes:-** - Describe what is message reprocessing per integration? - Comfortably use message reprocessing per integration. #### Introduction:- Message reprocessing job reprocesses all messages from all integration. We can exclude or include an integration to be reprocessed or not. With the flag "Automatic Reprocessing" on the integration detail, we can include (checked) or exclude (unchecked) the integration from the reprocessing. Message reprocessing is the process to be used for reprocessing failed and pending message from the previous integration. It might be failed if the user does not edit or edit wrong business logic in **IMessage Data**. There are two cases for MessageReprocess job to correct the message records. The different cases we support are: **– Pending Message** **– Failed Message **** ** #### Pending Messages:- Pending messages are showing in yellow color. The message is Pending because of a lot of reasons. They have been shown in Comment. It is one of many reasons that causes Pending, for example, "This message has not met a condition of all workflows". #### Failed Messages:- Failed messages are showing in red color. The message is Failed because of a lot of reasons, they have been shown in the Comment. This is one of many reasons, such as it missed some fields and incompleted. For example, it is “After evaluating the data source (accountname), no data passed for the mapped external id field (Name) and After evaluating the data source (accountname), no data passed for the mapped external id field (Name).“ #### Purpose:- With this scheduler, we have great flexibility to run different interface groups at different times. With the new scheduler to schedule similar like the Agent, we can also scheduler at different days and not only for every minute like we have today. The priority handling would be inside each group and not over different interface groups. We still use the SKYVVA default group where all interface for each integration is kept. If we don't have an additional interface group the integration scheduler would work on the default group. We should separate between inbound and outbound reprocessing scheduler because for outbound the reprocessing is different than for inbound messages. For the outbound message, we have a callout which for example don't need the scope size and needs to run immediately one by one. #### Pre-requisite:- **Step1: **We have to create one integration. Please refer our tutorial to create integration() ![](../images/2019/04/msgre-process1.png) **Step2: **We have to create ten interfaces in one integration. In which six interfaces are inbound interfaces and the remaining four interfaces are an outbound interface. ![](../images/2019/04/msgre-process2.png) **Step3: **To reprocess all the interface automatically, we have to check the Automatic Reprocessing flag at the integration level. ![](../images/2019/04/SFDCbulktoSAPP4.png) #### How to reprocess messages per Integration? We can reprocess messages as: - MessageReprocessPerIntegration scheduler with every min Time Interval - MessageReprocessPerIntegration scheduler with Run At (IntegrationOnDemand) - MessageReprocessPerIntegration scheduler with Run At Every Hour (IntegrationOnDemand) **Case 1**: **MessageReprocessPerIntegration scheduler with every min Time Interval:** Testing MessageReprocessPerIntegration scheduler with every min Time Interval (IntegrationOnDemand) with using Automatic Reprocessing flag. We have to follow the given step to reprocess messages per integration. **Step4**:  Go to scheduler tab and Set scheduler 2 min in MessageReprocessPerIntegration. ![](../images/2019/04/msgre-process4.png) **Case 2: MessageReprocessPerIntegration scheduler with Run At (IntegrationOnDemand)** Testing MessageReprocessPerIntegration scheduler with Run At (IntegrationOnDemand) with using Automatic Reprocessing flag. --**Set time Run At 5:00 PM** ![](../images/2019/04/msgre-process5.png) **Case 3: MessageReprocessPerIntegration scheduler with Run At Every Hour (IntegrationOnDemand)** Testing MessageReprocessPerIntegration scheduler with Run At Every Hour (IntegrationOnDemand) with using Automatic Reprocessing flag. **--Set time Run At Every Hour = 6->8:00 AM** ![](../images/2019/04/msgre-process6.png) It will run at 6-8:00 AM every day and running all Interfaces stays in this integration. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use message type? Title: 3. How to process message type based Interface? Slug: 22-4-how-to-process-message-type-based-interface URL: https://help.skyvva.com/#article/22-4-how-to-process-message-type-based-interface ================================================================================ # 3. How to process message type based Interface? ## Learning Objectives After completing this unit, you’ll be able to: - Describe what is message type based Interface. - Comfortably use How to process message type based Interface #### Introduction SKYvva functionality for outbound interface processing. Our old interface processing is based on the sObject which we use as the message type. We put in the field "Source/Target Name" the sObject. From the structure of the sObject, we generate the structure and provide them for doing the mapping. Now we will go to use our new logic. we start to use the message type which can be different from a sObject. #### What Is Interface processing? **Interface**: Interface is the second main object in SKYVVA after the integration. The interface describes the structure of data to exchange between Salesforce and other applications. **Interface processing** is a job that is processed to exchange data with all connected systems.  The property of the interface defines the processing mode. #### Purpose: Interface processing is required for exchanging data with connected systems. #### Pre-requisite : - Create a Message type: - We have to create an adapter - We have to create Integration. - We have to creation Interface. #### How to process message type based Interface? To process the message type-based interface we have to follow the given steps: **Step1**:  We have to Create a Message type. There is some pre-requisite to creating a message type. - Create a metadata provider. - Create IStructure repository in metadata provider - We can manually create a message type or we also can use the upload file feature to create message type. **Step2**: We have to create an adapter.  We are going to create three adapters as below - XML adapter - Rest Adapter - SAP-R/3 Adapter **Step3**:  We have to create Integration. **Step4**:  We have to create an outbound interface. - Select Sobject for a query statement - Select message type existing for interface **Step 5**: We can export data payload as hierarchy base on message type by use adapter type: - #### 5.1  Export data interface the result as an XML file - Choose XML adapter type for interface(while creating interface) - Do mapping on Sobject field with a message type field![](../images/2019/04/img1-1.png) - Now we have to navigate to integration and click the Export Data button on the integration detail page. ![](../images/2019/04/img2.png) - Select an interface and click Start Export button ![](../images/2019/04/img3.png) - It will take some time to process. After completing the process you will get exported data. **Here is the result data payload exported** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] *       ***** *          *pp CoCa USA CoCa 0010I000026rEG6QAM *       *   ** john@test.com John Sep ** Land 2.00 23456 **** **            ** **         ** [/aux_code] #### 5.2 Callout data from Skyvva/Salesforce-based message type to SAP by using Rest Adapter - Select message type existing for interface - Choose Rest Adapter type for interface - Do mapping on Sobject field with the message type field ![](../images/2019/04/img4.png) - Navigate to Developer Consult => Debug => Open Execute Anonymous Widow and write Script Here form script to execute **IServices.invokeCallout('InterfaceID', new String[]{'AccountID'}, 'SYNC');** Here is the result data payload as Json string after executed [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "AccounTests": [ { "ContactTests": [ { "LastName": "TO", "FirstName": "Rin", "EMAIL": "rinto@gmail.com" }, { "AssetTests": [ { "SerialNumber": "1234567", "Quantity": "2.00", "Asset_Name": "Land" } ], "LastName": "Ton", "FirstName": "Jonh", "EMAIL": "jonh@gmail.com" } ], "Name": "CocaCola", "Id": "0011v00001x8jbpAAA", "Description": "Hello world", "AccountNumber": "0001" } ] } [/aux_code] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use message type? Title: 4. How to create Trigger on MsgTypeRel? Slug: how-to-create-trigger-on-msgtyperel URL: https://help.skyvva.com/#article/how-to-create-trigger-on-msgtyperel ================================================================================ # 4. How to create Trigger on MsgTypeRel? ## Learning Objectives After completing this unit, you’ll be able to: - Describe what MsgTypeRel is . - Comfortably use How to create Trigger on MsgTypeRel? #### Introduction Skyvva provide message type feature to create Istructure repository using differnt file format. The purpose of Message Type Relationship concept is  that we can use a message type in our repository from other repository if it has defined there. So we don’t need to create it again because it would be redundant if you create it again. #### What is Message Type Relationship? Message Type Relationship is nothing but a junction table to Model the reuse case of message type. This a reuse of the same message type so that you don’t create it again and again. #### Configuration of Message Type Relationship 1.    Link one(A) Message Type with another Message Type(B). 2.    Link one(C) Message Type with same  Message Type(C). 3.    Link second (B) Message Type with previous  Message Type(A). #### Link one(A) Message Type with another Message Type(B). When we link one(A) Message Type with another Message Type(B) then new message type relation should create. Follow the Steps to Link one (A) Message Type with another Message Type(B). - We have to create metadata provider. - Create Istructure Repository - Create MessageType A and B - Go to MessageType A detail -> Click on New MsgTypeRel -> Search on Message Type Referenced = "A"-> Click on Save button ## Link one(C) Message Type with same  Message Type(C). When we Link one(C) Message Type with same  Message Type(C) then It will show alert error message" Duplicated Message Type relationship" Follow the steps to one(C) Message Type with same  Message Type(C). - Create MessageType C - Go to Message Type C Detail -> Click on New MsgTypeRel -> Search on Message Type Referenced ="C" -> Click on Save button ## Link second (B) Message Type with previous  Message Type(A). When we Link second (B) Message Type with previous  Message Type(A) then it will show alert error message "This Message Type Relationship is already existed". Follow the steps to Link second (B) Message Type with previous  Message Type(A). - Go to MessageType A Detail -> MsgTypeRels(Message Type Referenced) - Click on New MsgTypeRel -> Search on Message Type Reference= "B" -> Click on Save button ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use message type? Title: 5. How to create message type from different file format as xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x? Slug: 5-how-to-create-message-type-from-different-file-format-as-xsd-json-schema-wsdl-1-1-2-0-swagger-2-0-and-openapi-3-x URL: https://help.skyvva.com/#article/5-how-to-create-message-type-from-different-file-format-as-xsd-json-schema-wsdl-1-1-2-0-swagger-2-0-and-openapi-3-x ================================================================================ # 5. How to create message type from different file format as xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x? ## Learning Objectives After completing this unit, you’ll be able to: - Describe what MsgType is . - Comfortably create message type from different file format as xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x #### Introduction Skyvva support different file formats(xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x) to create message type.  Upload button  automatically create a hierarchical structure like msgtype Istructure  from hierarchical file. #### What is message type? Message Type: Skyvva provide message type feature to create Istructure repository using different file format.  We  introducing the new concept of using message type as interface data type. So basically there are two way to put field mapping in interface is: 1. Use sobject: we use the sobject fields as source field in interface 2. Message type: we use costume fields created in message type as source field. Import  file feature is used to create message type and ISTructure. Skyvva support different format to create message type: **xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x** - MetaData Name is unique. - IStructure Repo name is also unique in the SAME level - MessageType Name is also unique in the SAME level - The combination of IStructure Name and type must be unique. - Previously, when we import the file we didn‘t apply this rules so we create duplicate but now we apply these rules. The result is we have less duplicate record which use less storage. #### Pre-requisite #### 1. Metadata: **What is Metadata Provider?** **   ** Metadata Provider tell the data processing layer of libmd which metadata fields (types) they can extract. When requested, Metadata read as many of the metadata fields listed by the client as possible from the specified media item. In Skyvva, when we create metadata, Name filed is only mandory field. On MetaData the Name cannot be duplicate. **How to create Metadata Provider?** Step 1: We have to click on metadata provider tab and click on New button. ![](../images/2019/04/Untitled1.png) Step 2: Create metadata provider. ![](../images/2019/04/Untitled2-e1555412772382.png) #### 2. Istructure Repository: **What is Istructure Repository?** The term Repository is  in fact to store data and structure of a message. The purpose of Istructure is An Interface for a structure that contains the metadata of a structure. Istructure repository fields: **Fields** **Description** Repository ID External Id which is coming from SAP Type Type to distinguish between different type to be able to built hierarchy structure. Update Interfaces Structures Update related Interfaces when Istructure is updated Parent Set this field to Indicate which repository Is the parent of the record.This record Itself Is a repository. Level Hierarchy level to organise the repository.We can built hierarchical structure of repository. hasChild Set this flag If the repository Is a folder which contain other repository in a hierarchical structure. External Id This field is for storing the external id of the object  to be use for update the record. Path This filed store the path of the record from the root record until the current record name. **How to create Istructure repository?** Step 1: Create Istructure Repository in created metadata. We have click on related tab then click on new button to create Istrutcure repository. ![](../images/2019/04/Untitled3-e1555413318399.png) New button should navigate to: ![](../images/2019/04/Untitled4.png) We have to open our created Istructure repository. ![](../images/2019/04/Untitled5.png) **It should navigate to:** ![](../images/2019/04/Untitled6.png) **Step 3:  We have to click on upload file button. Pop up window should open.** ![](../images/2019/04/msg_type2.png) **Select file format which you want to upload.** ![](../images/2019/04/msg_type3.png) **How to create message type for different file format?** #### 3. Message Type: **XSD:** This feature help to create a prototype where we can import a XSD and show in a tree view. This xsd is need as the interface type later when we define an interface. **Step 1:** Go to you created msg type -> click on upload button -> Choose file type as xsd -> and upload the xsd file ![](../images/2019/04/msg_type4.png) **Step2**: Save the uploaded  file to create message type. ![](../images/2019/04/msg_type5.png) **Step3:** We can use this message type with inbound and outbound interface. We should create integration before going to interface. **Step 4:Create Interface** **4.1 Inbound Interface** When the message type use as type of an inbound interface it should be at the left side of the mapping e.g. the source data structure. In this case the right side e.g. the target side is the Salesforce sObjects. We map the external data structure into the sObjects of Salesforce. Then we post the data into the sObjects e.g. into the Salesforce application. Go to integration -> create new inbound interface. where we need to select our metadata, Istructure Repository and Message Type ![](../images/2019/04/msg_type8.png) Scroll down the page to mapping section: ![](../images/2019/04/msg_type6.png) **4.2 Outbound Interface** When use with outbound interface message type is at the right side e.g. the target data structure. In this case the left side e.g. the source side is the Salesforce sObjects. We map from salesforce sObject to the external data structure which is represent by the xsd. Go to integration -> create new outbound interface. where we need to select our metadata, Istructure Repository and Message Type ![](../images/2019/04/msg_type9.png) Go to mapping section of your outbound interface. ![](../images/2019/04/msg_type10.png) **JSON Schema:** This feature help to create a prototype where we can import a json schema and show in a tree view. This json schema is need as the interface type later when we define an interface. **Step 1:** Go to you created msg type -> click on upload button -> Choose file type as JSON Schema-> and upload the Schema file ![](../images/2019/04/msg_type11.png) **Step2:** Save the uploaded json schema file. ![](../images/2019/04/msg_type12.png) **Step3:** We can use this message type with inbound and outbound interface. We should create integration before going to interface. **Step4: Create Interface** 4.1 Inbound Interface Go to integration -> create new outbound interface. where we need to select our metadata, Istructure Repository and Message Type ![](../images/2019/04/msg_type13.png) Go to mapping section of your outbound interface. ![](../images/2019/04/msg_type15.png) **4.2 Outbound Interface** When use with outbound interface message type is at the right side e.g. the target data structure. In this case the left side e.g. the source side is the Salesforce sObjects. We map from salesforce sObject to the external data structure which is represent by the xsd. Go to integration -> create new outbound interface. where we need to select our metadata, Istructure Repository and Message Type ![](../images/2019/04/msg_type14.png) Go to mapping section of your outbound interface. ![](../images/2019/04/msg_type16.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Delete Messages with Bulk API Title: 1. How to Delete Messages with Bulk API Slug: how-to-delete-messages-with-bulk-api URL: https://help.skyvva.com/#article/how-to-delete-messages-with-bulk-api ================================================================================ # 1. How to Delete Messages with Bulk API ### Introduction We use the Bulk API in purpose to delete too many messages from the message board without storing them in the Recycle Bin. ![](../images/2019/04/2019-05-02_11-47-37.png) ### How to delete Message with Bulk API #### Step 1: - Go to click **Setup =>  Permission Sets **click button **New **to create permission sets, please see an example on screenshot below: ![](../images/2019/04/2019-05-02_14-11-25.png) The result after click button **Save **we get new a permission set ![](../images/2019/04/2019-05-02_15-04-01.png) Click on **System Permissions **link and then click button **Edit **to checkbox **Bulk API Hard Delete **to query messages for deletion then click button **Save.** ![](../images/2019/04/2019-05-03_10-26-30.png) #### Step 2: Go to click **Setup =>  User **select on **Username** ![](../images/2019/04/2019-05-03_10-40-51.png) Click button **Edit Assignments **to assign permission sets ![](../images/2019/04/2019-05-03_10-43-58.png) Select **permission sets** then add into Enabled Permission Sets and then click button **Save **to finish. ![](../images/2019/04/2019-05-03_10-46-08.png) #### Step 3 Create **Remote Site **Go to click** Setup => Security Controls => Remote Site Settings **click on the button **New Remote Site** then enters the name for remote site and input URL for the remote site. Note URL of Remote Site take from the web address of this salesforce ![](../images/2019/04/2019-05-03_10-56-30.png) The result after click button **Save** ![](../images/2019/04/2019-05-03_10-58-07.png) **Note**: User must to create one more **Remote Site **for this Organization by URL = **https://login.salesforce.com**  to protect when an Access Token is required to access a protected resource, a client may use a Refresh Token to get a new Access Token issued by the Authentication Server. #### Step 4: Go to **Integration Admin **tab click **Reports & Links **tab then click on **Enable Bulk Delete Rest **link, Checkbox to enable bulk delete** **means that all messages will delete by bulk API mode. ![](../images/2019/04/2019-05-03_11-08-37.png) #### Step 5: Go to** Integration Detail **and click on button **Details **then check the flag **Delete Messages **all messages will be deleted after DoMaintenance scheduler job finished. ![](../images/2019/04/2019-05-03_11-29-15.png) **Note:** - If check the flag **Delete Messages = “True” **all green messages will be deleted immediately after records processing. - If check the flag **Delete Messages = “True” **and **Enable Bulk Delete Rest= “False” **means that the DoMaintenance scheduler will delete existing messages with Batch mode. - If check the flag **Delete Messages = “True” **and **Enable Bulk Delete Rest= “True” **means that the DoMaintenance scheduler will delete existing messages with Bulk mode. #### Step 6: Set time DoMaintenance scheduler processing, go to **Integration overview** click on **Scheduler **tab and then click on **Start **link for DoMaintenance scheduler ![](../images/2019/04/2019-05-03_11-33-11.png) After DoMaintenance scheduler job finishes the all messages will be deleted from **Message Board** for this integration. User can see this processing the status *Completed or Failed *in the **Apex Jobs **go to click **setup => **section **Monitor => Jobs => Apex Jobs** Go to the message board and search again for messages to make sure that all messages in this integration have been deleted or not. ** ** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use interface? Title: 6. How to use tree mapping concept to create hierarchical interfaces? Slug: 13-3-how-to-use-tree-mapping-concept-to-create-hierarchical-interfaces URL: https://help.skyvva.com/#article/13-3-how-to-use-tree-mapping-concept-to-create-hierarchical-interfaces ================================================================================ # 6. How to use tree mapping concept to create hierarchical interfaces? **Learning Objectives** After completing this unit, you’ll be able to: - Describe what Custom field  is . - Also Can describe foreign key, Tree mapping - Comfortably use how to link parent interface to its child interface using foreign key and tree mapping. **Introduction** We can link two different objects with each other using the foreign key or tree mapping. **What Are Hierarchical Interfaces?** - To arrange interfaces in order means hierarchical interface. It is structure in which interfaces are ranked according to levels of importance. - In hierarchical Interfaces, one interface is a  parent’s of other interface. It means that child interface inherited External ID from its parent's interface. For example, Account interface is parent’s contact interface because of Contact inherited External ID from Account. - Also One parent interface can have many child account but child interface has only single parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts. **What is the foreign key?** A FOREIGN KEY is a field (custom fields) in one Interface that refers to the PRIMARY KEY . The Interface containing the foreign key is called the child Interface, and the Interface containing the candidate key is called the parent Interface. **How to create Foreign key?** This is also called as object field in account object. Follow the given steps to create object field: - Go to Set up->Object Manager->Account-> Fields & Relationships->Click New Button. ![](../images/2019/01/FKey_01.png) - Choose the field type: Please tick Text data type and click Next ![](../images/2019/01/FKey_02.png) - Enter the details: Please Field Label: AccountId->Fill Length: 50->Field Name gets Auto->tick External ID->Click Save. ![](../images/2019/01/FKey_03.png) - Establish field-level Security: Please tick visible and click next button. ![](../images/2019/01/FKey_04.png)![](../images/2019/01/FKey_05.png) - Add to page layouts: Click only Save button. ![](../images/2019/01/FKey_06.png) here we get object field on Target Account Salesforce object. ### Create hierarchical Interface using Tree Mapping : **What is Skyvva tree mapping?** - Enhancement of Skyvva mapping tool to hierarchical tree view and map data of parent/child in one shut. - A Skyvva tree mapping  is a visual method for displaying hierarchical data related to  parent interface and child interface. - Skyvva tree mapping feature is built to reduce the complexity of manual work. - When we use tree mapping, It automatically generated all setting e.g. - chained interface - Foreign Key - Mapping the fidle Id to special field SKYVVA__PARENTID Objective: Create parent child relationship using tree mapping **Pre-requisite:** - Create  Integration -> Go to integration tab -> fill name field -> Save it. - Create one inbound  interface. I,e Account.(Create account interface only, child interface will be automatically created in it ) **How to create Hierarchical Interfaces?** **Follow the given steps to create hierarchical interface using VLOOK UP.** Note: We have to create message type for Istructure. We can easily get hierarchical Istructure using message type. Also It is reusable in another interface. To learn detail about message type feature we can follow this tutorial ->  [How to create message type with different file format?](#article/tutorial-v2-41-lightning) **Step 1:** We have to click on metadata provider tab and click on New button. In Skyvva, when we create metadata, Name filed is only mandatory field. On MetaData the Name cannot be duplicate. ![](../images/2019/01/Untitled4.png) **Step2**: Create Istructure Repository in created metadata. The purpose of Istructure is An Interface for a structure that contains the metadata of a structure. -  We have click on related tab then click on new button to create Istrutcure repository. -  We have to open our created Istructure repository. ![](../images/2019/01/Untitled6.png) **Step 3:  **We have to create message type. -  click on upload file button. Pop up window should open. -  Select file format which you want to upload. Here we used xml file to create message type. ![](../images/2019/01/Untitled7.png) **Step4**: Create Integration. (click on  Integration tab then fill in the Name Field and Save.) ![](../images/2019/04/Untitled01.png) **Step5**: Create Account Interface where: - Metadata: Test_metadata - IstructureRepository: Test_Istructurerepo - Message Type: Account ![](../images/2019/04/Untitled02.png) - Open the interface it should navigate to: ![](../images/2019/04/Untitled03.png) - Go to mapping section -> map all account related Istructure with target account. ![](../images/2019/04/Untitled04.png) - Scroll down the target object to contact -> map the Contact related Istructure ![](../images/2019/04/Untitled05.png) Mapping: - Select external Id for parent interface -> Name - Select external Id for child Interface -> LastName** ** - Mapping with all field that include Account and Contact with sObject tree and then create foreign key account with Contact. **Note:**  We should create foreign key If there are multiple  foreign keys (custom field) in your org. The user need to choose one key because the system doesn't know which one you want to use as the reference or the key to search for the Account SF Id. - Click on the row where account and contact link (#). It should navigate to following window: ![](../images/2019/04/Untitled06.png) - Click on Ok button. Here your foreign key is created in child interface I,e contact interface. - Now save this. (If you doesn't save it, you will lost your all mapping and foreign key creation on contact interface) -  We can check that Ichained Interface  is automatically created in account interface(parent interface). - Go to Related tab - Scroll page to IChained Interface. ![](../images/2019/04/Untitled08.png) ![](../images/2019/04/Untitled07.png) - Foreign key automatically created in child interface I,e contact interface. - To open contact interface click on Id as shown in picture. It should navigate to: (Note: Child interface is not display in integration). ![](../images/2019/04/Untitled09.png) Click on related tab -> scroll down page to foreign key section ![](../images/2019/04/Untitled10-1.png) **Step 6: manually load data ** - Go to integration detail - click on Manual load custom link - Select Data Type as XML_Hierarchy - Click Choose File Button and Browse to choose file->Click Open Button->Click Upload Button. ![](../images/2019/04/Untitled11-1.png) **Push Record on  message  Board:** Click on ‘Push’ Button to upload the data into Salesforce and you get the message that the upload process started. We click on the ‘Message Board’ Button  and come to the Message Board. ![](../images/2019/04/Untitled12-1.png) **Step7: Search On message board:-** Below in the ‘Filters’  area you can search for different criteria e.g. Integration Name, Interface Name, Message Status or by Date.  Filters: – Integration Name: You can choose which Integration you prefer to see the result – Interface Name: You can chose which Interface you prefer to see the result – Message Status: There are many types of Status, but there are 3 common using types: – Green Flag   =  The upload was successful and is Completed – Red Flag    = Failed – Yellow Flag  = Pending – Yellow Flag  = Pending Note:  You can select None if you prefer to see all types of message flags. Then click on Search. ![](../images/2019/04/screencapture-shwetatest-dev-ed-lightning-force-lightning-r-skyvvasolutions-Integration-c-a0V6F00001My3XEUAZ-view-2019-08-20-15_35_25.png) Finally, you can get Account has relationship with contact like screen shot below. Account Name is India123  link with contact Jenny John. ![](../images/2019/04/screencapture-shwetatest-dev-ed-lightning-force-lightning-r-Account-0016F00003ObKGKQA3-view-2019-08-20-15_38_03.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: What are queues and where is it used? Title: 2. How does CDT works with queuing and why do we need queuing? Slug: how-does-cdt-works-with-queuing-and-why-do-we-need-queuing URL: https://help.skyvva.com/#article/how-does-cdt-works-with-queuing-and-why-do-we-need-queuing ================================================================================ # 2. How does CDT works with queuing and why do we need queuing? This tutorial explains CDT working with queuing :- **What is CDC and its configuration -** CDC Control Board is a place where you can monitor Change Pointer, Interfaces and Scheduler. These taps added to make things easier for you and they have different functions. Change Pointer is a table that stores change pointer records. So you can easily monitor them on Change Pointer table in CDC Control Board rather than on the Integration Admin tab. This also applies to the Interfaces and Schedulers tab. To know about configuration Please refer the link given below:- [#article/how-to-use-cdc-control-board](#article/how-to-use-cdc-control-board) **How does CDT work with queuing?** The scheduler of CDD is running to collect the data and store it in Change Pointer. While CDT is running and will transfer all the data to the external system. The advantage of CDT queuing is that the admin can stop and start the queue. What we can achieve with our queue is the processing sequence between different interfaces in a group. We need queuing for the given following reasons:- - To keep the order of arriving data. - Prioritize the queue. - Parallel processing of queues - Stop / Start queue for administration purpose **   Steps to set and start the scheduler for CDT:-** - Enter the Integration detail page and click on the CDC Control board tab( As shown in the picture given below). ![](../images/2019/06/cdc.png) - Select the “Scheduler” tab in CDC Control Board and set the time for Interface Group:- A. Run scheduler for CDD  -(As shown in the picture given below). B. Run scheduler for CDT -(As shown in the picture given below). ![](../images/2019/06/cdt1.png) - Click on "Change Pointer" and then click on search tab:- (As shown in the picture given below) ![](../images/2019/06/cdt2.png) ![](../images/2019/06/cdt3.png) - Click on "Queues" and then click on the search tab:- (As shown in the picture given below):- ![](../images/2019/06/cdt4.png) ![](../images/2019/06/cdt5.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Overview of existing Skyvva adapters Title: 27.7 How to use Mule skyvva adapter? Slug: how-to-use-mule-skyvva-adapter URL: https://help.skyvva.com/#article/how-to-use-mule-skyvva-adapter ================================================================================ # 27.7 How to use Mule skyvva adapter? The Skyvva Connector helps accelerate integration to Salesforce product Skyvva with Mule 4. Using this connector you can directly call Integrate, Integrate Batch and Integrate Synchronous functionality of Skyvva. The same can be used to send multiple package of message to a HTTP listener which will collect all your message before sending to the next processor. It also can be used for subscribing Salesforce topic (streaming api). Prerequisite: - Anypoint Studio 7.3.2+ - JDK 1.8 - Mule Runtime 4.1.4+ You need to create a Mule project to use this connector. Once you created the project add the following dependency in your pom.xml     *               org.mule.extension              mule-skyvva-extension              1.3.1              mule-plugin        The connector internally connect with salesforce to fetch the ouath token details required for Skyvva application.The following operations are supported by this connector.  Use Mule pallet to search Skyvva connector.  ![](../images/2019/06/mule-pallet.png) Integrate, Integrate batch, Integrate synchornous  and Subscribe need same configuration as bellow:  Consumer Key:  Salesforce Consumer key  Consumer Secret: Salesforce Secret key  Username: Salesforce username  Password: Salesforce password  Base API URL: Salesforce base url for your application.  ![](../images/2019/06/skyvva-config.png) Use the Test Connection button to test the connection once you are done with your configuration. The meta data for your transformation for this connector will work once you click on the Test Connection and the result is success.   Once you done with these above steps then go to Skyvva Setting Tab to set the Skyvva Integration and Interface name for your configuration to use for your operation as bellow: You need to click on the refresh icon to load the data for each of the dropdown. Once you select the value from Integration dropdown then again click on the refresh icon of Interface dropdown to load that data.  ![](../images/2019/06/skyvva-config-tab-2.png) ![](../images/2019/06/skyvva-config-tab-2-1.png) - **Integrate:** It is used to call the Integrate method call of Skyvva application.When you use this operation you will find the bellow configuration in your mule Anypoint Studio.  ![](../images/2019/06/integrate-config.png) When you use a Transform Message before this connector then base on your integration and interface name you will find the respective meta data in the data sense as bellow: ![](../images/2019/06/integrate-before-transformer.png) ![](../images/2019/06/integrate-before-transformer-1.png) When you use a transform message after the skyvva connector then based on the response type from the integrate request you will find the meta data as bellow:  ![](../images/2019/06/integrate-after-transformer.png) The bellow is an example application to use Integrate method.          Use-case :   - Postman will send one message. - The message will be received by Mule HTTP listener. - Mule will convert the message to required format for **Integrate **operation. - **Skyvva**** Integrate** operation will be used to make REST call to salesforce. - The response will be formatted into json and return to postman. ![](../images/2019/06/integrate-flow.png) ![](../images/2019/06/integrate-postman-request.png) ![](../images/2019/06/integrate-postman-response.png) - **Integrate Batch** It is used to call the Integrate Batch method of Skyvva application. When you configure this operation you will able to find the data sense capability (meta data) as  it is for Integrate operation.   ![](../images/2019/06/integrate-batch-config.png) The bellow is an example application to use Integrate method.          Use-case :   - Postman will send five messages. - The messages will be received by Mule HTTP listener. - Mule will convert the messages to required format for **Integrate ****Batch **operation. - **Skyvva**** Integrate**** Batch** operation will be used to make REST call to salesforce. - The response will be formatted into json and return to postman. ![](../images/2019/06/integrate-batch-flow.png) ![](../images/2019/06/integrate-batch-request.png) ![](../images/2019/06/integrate-batch-response.png) - **Integrate Synchronous** It is used to call the Integrate Synchronous method of Skyvva application. When you configure this operation you will able to find the data sense capability (meta data) as  it is for Integrate operation.   ![](../images/2019/06/integrate-synchronous-config.png) The bellow is an example application to use Integrate method.          Use-case :   - Postman will send one message. - The message will be received by Mule HTTP listener. - Mule will convert the message to required format for **Integrate ****Synchronous **operation. - **Skyvva**** Integrate**** Synchronous** operation will be used to make REST call to salesforce. - The response will be formatted into json and return to postman. ![](../images/2019/06/integrate-synchronous-flow.png) ![](../images/2019/06/integrate-synchronous-request.png) ![](../images/2019/06/integrate-sysnchronous-response.png) - **Collector ** This operation works like a HTTP listener but the additionally it can gather multiple package of messages before sending to the next processor of mule. The number of message for a request decided by the header information provided with the request. It supports following header information along with the request:  ![](../images/2019/06/collector-header.png) ***Content-Type*** : It only supports application/json  ***TransactionId***** **: Unique value for one bulk of messages. (e.g We have 3 message to send then it should be same for all of that three messages).  ***CurrentPackage***** **: It should have the current package number of the message from a bulk messages. (It should be start in ascending order)  ***CompleteNumberOfPackage***: Total number of package contained in a bulk message.   Use-case :   - Postman will send three messages. - The message will be received by **Skyvva**** Collector** listener. - Connector will gather all three message and finally for package number 3, it will write those messages to a file. 1st Message : [{ "message": "1st message"}]  ![](../images/2019/06/collector-req-1.png) 2nd Message: [{ "message": "2nd message", "details" : {"status": "success"} }] ![](../images/2019/06/collector-req-2.png) 3rd Message: [{ "message": "Final message", "details" : {"status": "Completed"} }]  ![](../images/2019/06/collector-req-3.png) The output will be written to a file with bellow content.   [      {          "message": "1st message"      },      {          "message": "2nd message",          "details": {              "status": "success"          }      },      {          "message": "Final message",          "details": {              "status": "Completed"          }      }  ]    **Mule configuration for Collector operation:**   Create a HTTP Listener using Skyvva Collector   ![](../images/2019/06/collector-config.png) Create a flow using the above collector configuration  ![](../images/2019/06/collector-flow.png) Configure the path for which you want to configure the collector.  ![](../images/2019/06/collector-listner-path.png) - **Skyvva Subscribe Operation:**  This operation is used to subscribed skyvva related topic using salesforce streaming api.   ![](../images/2019/06/subscribe-config.png) User-case:  - Create flow to subscribe All_Account_Change topic. - On receive of new event ( which ll occur on change of Account object), send an email. ![](../images/2019/06/subscribe-flow.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use the Message Reprocessing scheduler per integration, per interface group and per interface? Title: 1. How to use the Message Reprocessing scheduler per integration, per interface group and per interface? Slug: how-to-use-the-message-processing-scheduler-per-integration-per-interface-group-and-per-interface URL: https://help.skyvva.com/#article/how-to-use-the-message-processing-scheduler-per-integration-per-interface-group-and-per-interface ================================================================================ # 1. How to use the Message Reprocessing scheduler per integration, per interface group and per interface? **Learning Objective:-** This unit Describes:- - What is Message Reprocessing? - How to use Message Reprocessing scheduler? ## 1. What is Message Reprocessing? Message reprocessing is the process to be used for reprocess failed and pending message from the previous integration. Its job is to reprocess all message from all integration. We can exclude or include an integration to be reprocess or not. There are two cases for **Message Reprocess job** to correct the message records. The two cases we support are: **– Pending Message** **– Failed Message ** ** ****1. Pending Messages:** Pending messages shows in yellow color. Message is Pending because of  lots of reasons. They have been shown in Comment. It is one of many reasons that causes Pending message, for example “This message is not met a condition of all workflows.“. **2.Failed Messages:** Failed messages shows in red color. Message is Failed because of a lot of reasons. They have been shown in the Comment. This is one of many reasons, such as it missed some fields and incompleted. For example,  “After evaluating the data source (accountname), no data passed for the mapped external id field (Name) . ## 2. How to use Message Reprocessing scheduler? - We have 3 Message Reprocessing scheduler. **1. Message Reprocess Per Integration scheduler.** **2. Message Reprocess Per Interface scheduler.** **3. Message Reprocess Per Interface Group scheduler**- This feature is created to run different interface group at different time. This scheduler can also schedule at different day. The priority handling would be inside each group and not over different interface group. - To reprocess all the interface automatically, we have to check the Automatic Reprocessing flag at integration level. (As shown in the picture below). ![](../images/2019/06/reprocess.png) - **Pre-requiste:-** 1. Create integration. ![](../images/2019/06/mr.png) 2. Create 2 inbound Interface. You can learn it from this link. ([#article/1-what-is-an-interface-and-how-to-create-it)](#article/1-what-is-an-interface-and-how-to-create-it) 3. Push data using manual load. 4. Check Records on message monitoring.(As shown in figure given below). ![](../images/2019/06/mr7.png) - As you can see in the picture shown above, the failed messages "After evaluating the data source (name), no data passed for the mapped external id field (Name)". - Then fill the data in the field and then run the message reprocess scheduler. 1.  Click on scheduler on integration level (As shown in picture given below). ![](../images/2019/06/mr2.png) - Run the Message Reprocess per integration scheduler. ![](../images/2019/06/mr5.png) - Run the Message Reprocess per Interface group scheduler. ![](../images/2019/06/mr6.png) ##### *Note:- When Message Reprocess per interface group scheduler was in running at that time we can't start "Message Reprocess per Interface scheduler". 2. Check Records on message monitoring after Reprocessing. ![](../images/2019/06/mr8.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to export the Metadata in different format as xsd, XSD (Response for V3 Inbound), json schema, WSDL 1.1, swagger 2.0/OpenAPI 2.0 and openApi 3? Title: 47. How to export the Metadata in different format as xsd, XSD (Response for V3 Inbound), json schema, WSDL 1.1, swagger 2.0/OpenAPI 2.0 and openApi 3? Slug: 47-how-to-export-the-metadata-in-different-format-as-xsd-xsd-response-for-v3-inbound-json-schema-wsdl-1-1-swagger-2-0-openapi-2-0-and-openapi-3 URL: https://help.skyvva.com/#article/47-how-to-export-the-metadata-in-different-format-as-xsd-xsd-response-for-v3-inbound-json-schema-wsdl-1-1-swagger-2-0-openapi-2-0-and-openapi-3 ================================================================================ # 47. How to export the Metadata in different format as xsd, XSD (Response for V3 Inbound), json schema, WSDL 1.1, swagger 2.0/OpenAPI 2.0 and openApi 3? #### Introduction After creating an interface in Skyvva, the functionality to generate message Type to get the structure of message in different formats such as WSDL 1.1, JSON Schema, XSD, XSD (Response for V3 Inbound), Swagger 2.0/OpenAPI 2.0, and OpenAPI 3.0 file format is available. This file you can use to import into the external system for further mapping. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to execute outbound Interface? Title: 2. How to push data from Salesforce by using a button, trigger, the process build process? Slug: how-to-push-data-from-salesforce-by-using-a-button-trigger-the-process-build-process URL: https://help.skyvva.com/#article/how-to-push-data-from-salesforce-by-using-a-button-trigger-the-process-build-process ================================================================================ # 2. How to push data from Salesforce by using a button, trigger, the process build process? Learning Objective: After completing this unit, you’ll be able to: - Describe which are the invoke outbound interface methods. - Comfortably use all the methods to push data from Salesforce by using a button, trigger, the process build process. #### Introduction To show the different technology which can be use to push data to the external client by using Skyvva. For example, different possibility  like: Using Trigger, Process Builder process, Flow, Apex class to send data out. The callout methods are using to send data from salesforce to external system (SFDC to SAP/SAP-PI) through interface outbound. The Service only sends one record/children per request to SAP. To invoke callout from apex trigger the method invokeCallout(interfaceId, ids, ‘AUTO’) is recommended. #### Why we use button, trigger, the process build process to push data from salesforce? - **Process Builder**: Here customer can use the Process Builder to catch the changes. When the change of a record is recognize an apex class is called and in this apex class we can invoke our API invokeCalloutXX(). - **Button** : When user push a button the change data should sent - **Trigger**: When a record is changed the change data should sent. - **Flow**: When a record changes or when a user clicks a button, use an Autolaunched flow. - **Quick Action**: which generates **SKYVVA** Trigger scripts where we have a trigger type “**Q****uick action”.** [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The lightning version does not support with custom button, So we need to implement our tool to generate a script of the lightning component to use with **Quick Action** instead of a button. [/su_box] #### Process Builder Process Builder is a Salesforce’s point-and-click tool that lets you easily automate if/then business processes and see a graphical representation of your process as you build. Every process consists of a trigger, at least one criteria node, and at least one action. You can configure immediate actions or schedule actions to be executed at a specific time. To keep things simple, this unit focuses on the most common process type: Record Change, which mean the process, will start when the records are created or edited. **The configuration** To be able to execute callout, you have enter interface page detail and scroll down to Runtime Configuration- Outbound section then check flag “Use Skyvva Outbound Scheduler”. ![](../images/2018/10/OutboundProcessing_1.png) [su_box title="Note" box_color="#FF0000" title_color="#000000"] - If you want to execute callout, the flag could be blank. - If you want to create CP Record, the flag is required.[/su_box] - The interface could be set creating change pointer by process builder or trigger. You have to select SKYVVA API. This is the pre-requisite to create process builder. ![](../images/2018/10/OutboundProcessing_2.png) This part is mainly explain the process of creating the process builder in order to create change pointer records. To build process builder, you can follow the steps below: - From Setup, enter Process Builder in the Quick Find Box, click Process Builder. When you are on process builder page, click on New button. ![](../images/2018/10/OutboundProcessing_3.png) - Fill in the name of the process ![](../images/2018/10/PB-4.png) - Add the Object and Specify when to start the Process. ![](../images/2018/10/PB-6.png) - Add the Criteria to define it for Action Group: 1. Name the Criteria 2. Choose Formula evaluate to true 3. Build Formula by insert the Function and Field then click Save . ![](../images/2018/10/PB-7.png) **Add the actions to execute when the criteria are met by:** 1. Select the Action Type: Apex 2. Select the Action Name: Create CP Record 3. Select Apex Class: **SKYVVA** Callout/Create CP. When you section it, some of dropdown list will appear for you to choose. Then click Add Row to add 2 more. To be able to execute process builder, just click on Activate button. ![](../images/2018/10/PB-10.png) **To monitor change pointer records:** You can check the change pointer records in CDC Control Board. ![](../images/2018/10/PB-11.png) #### Trigger When a record is changed the change data should sent. Whenever a record e.g. an account in Salesforce is changed this change are sent immediately to the client. This is the opposite way to the batch/async. variant. Follow the given steps: - Select Trigger Type “APEX TRIGGER” - Tick Trigger Event (can tick more than one) - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode : None, Auto, Future, Batch - Click button “Generate Script” - Now you will see the script apex trigger in the box and can copy to use it - In the script, change to your own name to your own name ![](../images/2019/06/trigger-1.png) #### Button - Select Trigger Type “BUTTON” - Select your Integration Name - Select your Interface Name (show only outbound interface) - Select SObject Name - Select Trigger Mode: Sync, Future, Batch - Click button “Generate Script” - Now you will see the script trigger button in the box and can copy to use it. ![](../images/2019/06/button-1.png) #### How to use Flow to call our invokeCallOutV3() API ? A flow is the part of Salesforce Flow that collects data and performs actions in your Salesforce org or an external system. Salesforce Flow provides two types of flows: screen flows and Autolaunched flows. To automate a business process that collects data from people, use a screen flow. To launch a flow internally when a record changes or when a user clicks a button, use an Autolaunched flow. **Case 1:  Flow executes SKYVVA apex to create change pointer** **Description**: Provide the possibility to invoke **SKYVVA** Api to create changed pointer or process outbound interface from  Flow (record triggered flow). **Create Change Pointer Record ** [su_box title="Note" box_color="#2a8af0" title_color="#000000"]User must have outbound interface and check flag *Use **SKYVVA Outbound Scheduler*** on that interface [/su_box] **Expectation: **When we update Billing City, Flow will be creating CP record that show on CDC Control Board - Click on Setup gear icon #### - Enter Flow in the Quick Find Box, and select Flow ![](../images/2021/10/image_2021_11_08T12_00_24_761Z.png) - Click New Flow button ![](../images/2021/10/image_2021_11_08T12_02_55_882Z.png) - Select *Record-Triggered Flow* -> Click Next ![](../images/2021/10/image_2021_11_08T12_04_51_485Z.png) - Choose object: **e.g.** Account ![](../images/2021/10/image_2021_11_08T12_06_33_659Z.png) - Drag *Action* into Flow - Action: Create Change Pointer - ID: - Integration Name: - Interface Name: - Click Done ![](../images/2021/10/image_2021_11_08T12_08_12_718Z.png) - Click Save ![](../images/2021/10/image_2021_11_08T12_10_20_002Z.png) - At the end click** Activate** button on the right side ![](../images/2021/10/image_2021_11_08T12_11_45_862Z.png) - Now we change Billing City value on Account object then Save ![](../images/2021/10/image_2021_11_08T12_13_08_092Z.png) - **Result: **After update Billing City Process Builder will be create CP record and show in CDC Control Board ![](../images/2021/10/image_2021_11_08T12_14_31_065Z.png) **Case 2: Flow executes skyvva apex to execute callout** Execute invoke callout old version by default. However, user can execute outbound V3 by specify the version number (3) by including the input value for **Expectation:  **When we update Billing City, Flow will be sent to external system. #### - At the end click** Activate** button on the right side ![](../images/2021/10/image_2021_11_08T12_21_15_102Z.png) - Now we change Billing City value on Account object then Save ![](../images/2021/10/image_2021_11_08T12_22_29_018Z.png) **Result:** After update Billing City Process Builder will be sent to external system ![](../images/2021/10/image_2021_11_08T12_24_12_079Z.png) Now user learn how to invoke **SKYVVA** Api to create changed pointer or process outbound interface from  Flow (record triggered flow). #### How to use Quick action ? The lightning version does not support with custom button, So we need to implement our tool to generate a script of the lightning component to use with quick action instead of a button. We have a tool Skyvva Trigger which generates **SKYVVA** Trigger scripts where we have a trigger type "**Q****uick action".** **Pre- Requisite:-** - Create Integration. - Create an Outbound Interface. **Follow steps as shown below:** - Fill fields in the interface as shown below - Enter Name - Status: Deployed - Operation Type: Upsert - Type: Outbound - Fill in Adapter - Click save button ![](../images/2020/08/QuickAction.png) - Enter to Integration Tab - Open SKYVVA Trigger Tab - Fill in Trigger Type - Integration Name - Interface Name - Select Object - Trigger Mode - Click on Generate Script ![](../images/2020/08/QuickAction1-1.png) - Go to Set Up - Developer Console - Click on File - Select New Lightning Component - Fill in Name - Tick on Lightning Quick Action - Click on Submit ![](../images/2020/08/QuickAction2-1.png) - Click on Component - Copy script form Script Generation Component and paste in Component ![](../images/2020/08/QuickAction3.png) - Click on Controller - Copy the script from Script Generate JS Controller and paste in Controller ![](../images/2020/08/QuickAction4.png) - Navigate to Set up - Object Manager - Account - Buttons, Links and Actions - New Action - Fill in Required fields - Save ![](../images/2020/08/QuickAction5.png) - Enter to Page Layouts - Account Layout - Mobile& Lightning Actions - Drag into Salesforce Mobile and Lightning Experience Actions ![](../images/2020/08/QuickAction6.png) - Enter to Account - It will show the Button we’ve created - Click on that Button ![](../images/2020/08/QuickAction7.png) - Go to Message Board - Click Search will show the records that we callout ![](../images/2020/08/QuickAction8-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use message type? Title: 1. What is the soap template message type? Slug: what-is-the-soap-template-message-type URL: https://help.skyvva.com/#article/what-is-the-soap-template-message-type ================================================================================ # 1. What is the soap template message type? Learning Objective: After completing this unit, you’ll be able to: - Describe SOAP Message Structure - Easily create soap template message type **Introduction** It is important for web applications to be able to communicate over the Internet. The best way to communicate between applications is over HTTP, because HTTP is supported by all Internet browsers and servers. SOAP was created to accomplish this. A SOAP message is an XML format containing the some specific elements I,e **Envelope, Header and Body.** Rest Template is used to create applications that consume REST Web Services. To   secure our data transmission system need specific formatted data. #### What is the rest template message type? We use a message type which we create according to the response structure of the REST response then the message name should be the root node. The processing should be based on the message node. To secure our data transmission system need specific formatted data. We have create message type.  The messaging contain message data and metadata i.e. information about message itself. In Skyvva we have specific soap template message type contains URL, body ``` ``` It is important for web applications to be able to communicate over the Internet. The best way to communicate between applications is over HTTP, because HTTP is supported by all Internet browsers and servers. SOAP was created to accomplish this. A SOAP message is an XML format containing the some specific elements I,e **Envelope, Header and Body.** **What is the soap template message type?** To secure our data transmission system need specific formatted data.  In Skyvva we have specific soap template message type contains URL, header body. We have different template for request and response. . As we have three element in Request: , - URL Query Parameter - SOAP Header - HTTP Header - SOAP Body As we have two element in Response - Envelope - SOAP Header - MessageType So , when we get response and we will get both header and body so based on mapping we will perform DML operation for the data we got in response. **Message Type Name** **TYPE** MessageType: Google SOAP Service WSDL Service MessageType: **Request** WSDL Request MessageType : URL Query Parameter WSDL URL Query Parameter MessageType : SOAP Header WSDL Header MessageType : HTTP Header HTTP Header MessageType: SOAP Body  WSDL Body MessageType :** Response** WSDL Response MessageType : Envelope WSDL Envelope MessageType : SOAP Header WSDL Header MessageType : SOAP Body WSDL Body MessageType : **Fault** WSDL Fault MessageType : Envelope WSDL Envelope MessageType : SOAP Body WSDL Body **soap template message type** A SOAP  request message is an XML format containing the some specific elements as: We have SOAP Service that types WSDL Service with three children: Request, Response, and Fault Response. For those children, they have different types like Request is WSDL Request Type, Response is WSDL Response, and Fault Response is WSDL Fault Type. ![](../images/2020/03/24-03-2021-10-06-16.png) In **Request Message Type** is Type **WSDL** **Request**, and It has several elements like First is **SOAP Header** have type **WSDL Header** that contains Sessionheader, and in Session header, it has SessionID. About Session Header and SessionID, we can put type **plaint Structure or none**. Seconds is **URL Query Parameter** has type **WSDL Query Parameter. **The third is **HTTP Header** that has the type** HTTP Header. **The fourth is **SOAP Body **that has type** WSDL Body **that contains** Business data **which type is **Plaint Structure or none. **See the picture below.  ![](../images/2020/03/2.png) In **Response Message Type** is the **WSDL Response type**. It has one element that is **the Envelope message type** has a Type **WSDL Envelope**. In Envelop has Header, type **WSDL Header** and **Body** has **WSDL Body** containing Business data Message Type with **Plain structure** type or none. See the picture below.  ![](../images/2020/03/3.png) In **Fault Response** Message Type is **Type WSDL Fault** and it contains two elements such as **Envelope** has Type **WSDL Envelope**. In Envelop Message Type has **Body** that is **WSDL Body type** and under the Body is **Business Message Type** that is a **plain structure or none type**.  see the picture below. ![](../images/2020/03/4.png) This is the request message type: SOAP **URL** Parameter : The Simple Object Access Protocol (SOAP) endpoint is a URL. It identifies the location on the built-in HTTP service where the web services listener listens for incoming request.  There are two URL parameter: - Path parameter: - Query parameter: But we support only Query parameter: For example, [https://www.example.com/{herewillbeparametername}/xml?{test}](https://www.example.com/%7Bherewillbeparametername%7D/xml?{test}) Here we can see the Question mark in above URL, So before ? mark we have path parameter and after question mark we have query parameter and parameter name exactly same as we inserted in messageType. **SOAP Header** : The optional SOAP Header element contains application-specific information (like authentication, payment, account id etc) about the SOAP message.If the Header element is present, it must be the first child element of the Envelope element. It Contains any optional attributes of the message used in processing the message, either at an intermediary point or at the ultimate end-point. It can be hierarchical. SOAP **Body :** The SOAP body is a mandatory element that contains the application-defined XML data being exchanged in the SOAP message. The body must be contained within the envelope and must follow any headers that might be defined for the message. The body is defined as a child element of the envelope, and the semantics for the body are defined in the associated SOAP schema.The body contains mandatory information intended for the ultimate receiver of the message. It can be hierarchical. We support hierarchical body and generate chained interface. For example − fields of account object: - Name - BillingCity - BillingCountry How to create Message Type? There are different ways to create message type from IStructureRepository: - Import Metadata - Open Editor - Manually create New Message Type. ![](../images/2020/03/Untitled1-2.png) #### Import MEtadata: Skyvva support different file formats(xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x) to create message type.  Upload button  automatically create a hierarchical structure like msgtype Istructure  from hierarchical file. #### Pre-requisite: **To create Metadata Provider.** To Create ** Istructure Repository.** Go to Istructure **Repository and click on "Upload File" button.** #### **Select file format which you want to upload.** #### #### 2. Open Editor **To create Metadata Provider.** To Create ** Istructure Repository.** Go to Istructure **Repository and click on "Open Editor" button.** ![](../images/2020/03/SoapmsgType1.png) ![](../images/2020/03/Untitled4-4.png) #### 3. Manually Create message type: - **To create Metadata Provider.** - To Create ** Istructure Repository.** - Go to Istructure **Repository and click on "New message Type" button.** ![](../images/2020/03/Untitled5-3.png) ![](../images/2020/03/SoapmsgType4.png) Once we Save this Message type is created. ![](../images/2020/03/SoapmsgType5.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Soap adapter required specific template in which every message type should have fixed TYPE. For example, MessageType: **Request**   and its TYPE:   **WSDL Request **[/su_box] We will going to create follwing type of Message Type for build xml payload: Message Type Name TYPE MessageType: Google SOAP Service WSDL Service MessageType: Request WSDL Request MessageType : URL Query Parameter WSDL URL Query Parameter MessageType : SOAP Header WSDL Header MessageType : HTTP Header HTTP Header MessageType: SOAP Body  WSDL Body MessageType : Response WSDL Response MessageType : Envelope WSDL Envelope MessageType : SOAP Header WSDL Header MessageType : SOAP Body WSDL Body MessageType : Fault WSDL Fault MessageType : Envelope WSDL Envelope MessageType : SOAP Body WSDL Body ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use the CDD and CDT with the different scheduler per integration, per interface group and per interface? Title: 1. How to use the CDD and CDT with the different scheduler per integration, per interface group and per interface? Slug: how-to-use-the-cdd-and-cdt-with-the-different-scheduler-per-integration-per-interface-group-and-per-interface URL: https://help.skyvva.com/#article/how-to-use-the-cdd-and-cdt-with-the-different-scheduler-per-integration-per-interface-group-and-per-interface ================================================================================ # 1. How to use the CDD and CDT with the different scheduler per integration, per interface group and per interface? **Learning Objective :-** This unit Describes:- - What is CDC? - How to use the CDD and CDT with the different scheduler? ## 1. What is Change Data Control (CDC)? With CDC we provide an ability to record all data changes you create on any business object. It will be automatically push to your external system at any time you scheduled. In comparison to the streaming API, you can overcome the limit of sending changes record by record. Here we can bulk and collect changes to be callout in packages meaning that you leverage the best usage of your Salesforce resources. Don't disturb your online business user while operation hours. Use CDC Scheduler to schedule data changes to be send out at a time. CDC is made up of two components, the CDD and the CDT. CDC is stand for Change Data Detection and CDT is stand for Change Data Transfer. These two components has different functionality. CDD is a scheduler which is running to call batch Apex in order to collect data change and save all those data into Change Pointer Object. CDT is another scheduler which is running to collect the records from the Change Pointer Object and sent to the external System such as SAP … etc. The Schedule will executes callout as parallel of future, queueable, batch based on priority, integration resource and interface group type (EO/EOIO). ## 2. How to use the CDD and CDT with the different scheduler? We can use the CDD and CDT with the different schedulers per integration, per interface group and per interface. The process is given below:- - **Pre-requiste:-** - The Configuration of CDC. We can check the link to learn about configuration. [(#article/how-to-use-cdc-control-board)](#article/how-to-use-cdc-control-board) ### 1. Run CDD Per Integration Scheduler:- (As shown in the picture given below) - Open **Integration Details Tap** **->** **CDC Control board Tap->Scheduler**. Then start the scheduler on an outbound section and set the time as you prefer. ![](../images/2019/07/cdd1.png) - We can check the result in change pointer for that we have to click  **Integration Details Tap -> CDC Control board Tap ->Change Pointer -> Integration name -> Interface Name -> Status -> Search** ![](../images/2019/01/cdc9.png) *** NOTE:-** - Same way we can check for CDD Per Interface Scheduler and for CDD Per Interface Group Scheduler. - In the pictures given below you can find CDD  Per Interface and CDD per Interface Group scheduler. - CDD  Per Interface:- ![](../images/2019/07/cdd2-1.png) - CDD  Per Interface Group:- ![](../images/2019/07/cdd3.png) ### 2. Run CDT Per Interface Scheduler:- (As shown in the picture given below) - Enter **Integration Details Tab ->CDC Control board Tap -> Scheduler Tab -> Start the Schedule -> **Then start the scheduler on an outbound section and set the time as you prefer. ![](../images/2019/07/cdd4.png) - **The following screenshots shows how to monitor CDT:**           Clicks on **Setup -> Jobs -> Apex Jobs**           Enter Apex Jobs Monitoring to see CDT workers: - Future/Queueable process - Worker (Batch) Process ![](../images/2019/01/cdc11.png) **As a Result: ** ** **Checks Message Monitoring Board:- ![](../images/2019/07/cdd5.png) *** NOTE:-** - Same way we can check for CDT Per Integration Scheduler and for CDT Per Interface Group Scheduler. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use message type? Title: 1. What is the rest template message type? Slug: what-is-the-rest-template-message-type URL: https://help.skyvva.com/#article/what-is-the-rest-template-message-type ================================================================================ # 1. What is the rest template message type? Learning Objective: After completing this unit, you’ll be able to: - Describe Rest Message Structure - Easily create rest template message type Rest Template is used to create applications that consume REST Web Services. To   secure our data transmission system need specific formatted data. #### What is the rest template message type? We use a message type which we create according to the response structure of the REST response then the message name should be the root node. The processing should be based on the message node. To secure our data transmission system need specific formatted data. We have create message type.  The messaging contain message data and metadata i.e. information about message itself. In Skyvva we have specific soap template message type contains URL, body. we need both part e.g. Request and Response. When we design the callout interface using our different template we put Request into the outbound and Response into the inbound interface. We are using template mainly for the outbound call. In Skyvva we have specific Rest template message type contains URL, header and body. We have different template for request and response. . As we have three element in Request: , - Request URL - Request Header - Request Body **Request Structure:** ``` { "Google REST Service":{ "Request":{ "URL":{ "PATH Param":{ //Flate Strture.. }, "Query Param":{ //Flate Strture.. } }, "Header":{ //Flate Strture.. }, "Body":{ //Custom Buisness Messagetype } } } } ``` #### What is Rest response? When an JSON String is sent to a REST service, you must set Content-Type HTTP header to be "application/JSON". The REST service converts the XML input data to the JSON format that is accepted by REST services. Only contain business Message type. Response Structure: ``` { root //Custom Buisness Message Type like Account,Contact,Asset,Opportunity,Case } ``` So , when we get response and we will get both header and body so based on mapping we will perform DML operation for the data we got in response. **Template should Looks like:** Example: **Template should Looks like:** Example: { "Complex_JSON_REST_Service": { "Request": { "URL": { "Path Parameter": {}, "QUERY Parameter": {} }, "Header": {}, "Body": { "Account.Owner": [ { "Account Number": "Acoount-1", "Phone": 123456789, "Shipping Address": { "Shipping City": "Surat", "Shipping Street": "292, Gayatri Society", "Description Information": { "Description": "Testing Account1 Description." } }, "Billing Address": { "Billing City": "Surat", "Billing Country": "India", "Billing Street": "292, Gayatri Society" }, "My.Contact": [ { "FirstName": "Testing", "LastName": "Contact1", "Other Address": { "Other City": "Surat", "Other Country": "India", "Other Street": "292, Gayatri Society" }, "Mailing Address": { "Mailing City": "Surat", "Mailing Street": "292, Gayatri Society", "Description Information": { "Description": "Testing Contact1 Description." } }, "MyAsset": [ { "AssetName": "Testing Asset1", "Quantity": 15, "SerialNumber": "Asset-1" } ] } ] } ] } }, "Response": { "root": { "MyAccount": [ { "Description": "Testing Account1 Description.", "Name": "Testing Account1", "MyContact": [ { "FirstName": "Testing", "LastName": "Contact1", "MyAsset": { "AssetName": "Testing Asset1", "Quantity": "15.00", "SerialNumber": "Asset-1" } }, { "FirstName": "Testing", "LastName": "Contact2", "MyAsset": { "AssetName": "Testing Asset2", "Quantity": "15.00", "SerialNumber": "Asset-2" } } ] }, { "Description": "Testing Account2 Description.", "Name": "Testing Account2", "MyContact": [ { "FirstName": "Testing", "LastName": "Contact3", "MyAsset": { "AssetName": "Testing Asset3", "Quantity": "15.00", "SerialNumber": "Asset-3" } }, { "FirstName": "Testing", "LastName": "Contact4", "MyAsset": { "AssetName": "Testing Asset4", "Quantity": "15.00", "SerialNumber": "Asset-4" } } ] } ] } } } } In message type table, your template should looks like as below; ![](../images/2020/11/Untitled2.png) ![](../images/2020/11/Untitled1.png) **Message Type Template format:** ``` ** Rest Adapter Template** "Rest Service":{ "Request":{ "URL":{ "PATH Parameter":{ //flat Structure }, "QUERY Parameter":{ //flat Structure } }, "Header":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } } } } ``` **Terms should know:** **Request URL:** A Request URL specifies the Method Token (GET, PUT … ) followed by the RequestURI and then the HTTP Protocol that is being used. There are two URL parameter: - Path parameter: - Query parameter: **Request Header:** The REST headers and parameters contain a wealth of information that can help you track down issues when you encounter them. **Request Body: **The request body is used to send and receive data. **Response Status:** It provides information about the status codes and error messages that can be received. **Response Header: **The response may contain URI in Location header field in HTTP headers list, which can have reference to the newly created resource #### How to create Message Type? There are different ways to create message type from IStructureRepository: - Upload File - Open Editor - Manually create New Message Type. ![](../images/2020/03/Untitled12-1.png) #### Upload File: Skyvva support different file formats(xsd, json schema, wsdl 1.1 & 2.0, swagger 2.0 and openAPI 3.x) to create message type.  Upload button  automatically create a hierarchical structure like msgtype Istructure  from hierarchical file. #### Pre-requisite: **To create Metadata Provider.** To Create ** Istructure Repository.** Go to Istructure **Repository and click on "Upload File" button.** #### **Select file format which you want to upload.** #### #### Open Editor **To create Metadata Provider.** To Create ** Istructure Repository.** Go to Istructure **Repository and click on "Open Editor" button.** #### #### Manually Create message type: - **To create Metadata Provider.** - To Create ** Istructure Repository.** - Go to Istructure **Repository and click on "New message Type" button.** ![](../images/2020/11/Capture4.png) It will navigate to: ![](../images/2020/03/SoapmsgType4.png) Once we Save this Message type is created. ![](../images/2020/03/SoapmsgType5.png) ![](../images/2020/11/Capture6.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to pass raw data to custom class for processing with custom code? Title: 1. How to pass raw data to custom class for processing with custom code? Slug: how-to-pass-raw-data-to-custom-class-for-processing-with-custom-code URL: https://help.skyvva.com/#article/how-to-pass-raw-data-to-custom-class-for-processing-with-custom-code ================================================================================ # 1. How to pass raw data to custom class for processing with custom code? **Learning Objective:-** This unit describes:- - How to pass raw data to a custom class (message creation) for processing? #### 1. How to pass raw data to a custom class (Message Creation) for processing? Our Skyvva Tool supports XML, CSV, and JSON file formats by default. However, if you have complex XML, JSON, or other raw data structures that our tool cannot read in your payload, you will need to use a custom class to build your logic and read your raw data structure to create the SKYVVA Message yourself. #### Here is a sample payload in a data format that our standard cannot read: --- status: success code: '200' message: completed data: - Id: ba228042-793a-4289-b0cb-57a661c11ff5 Name: Jamie Conn Fax: "(646) 029 4240" BillingCity: Saint Helier BillingCountry: Jersey Type: Direct Solutions Supervisor Website: https://frieda.com Description: Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/3.0) Contact: - Id: f062cfad-a38c-4a4c-b8b0-788a8ae5910e FirstName: Jamie LastName: Conn Email: Jamie97@yahoo.com Title: Regional Security Technician Description: Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/3.0; .NET CLR 4.6.90034.5) Asset: - Id: 250c739a-4ab8-4ba8-997b-a184bec568d7 Name: Intelligent Frozen Sausages Quantity: 954 City: Nā‘ūr Country: Jordan Description: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:8.9) Gecko/20100101 Firefox/8.9.0 Case: - Id: 91282b68-0894-4439-bb56-c27df3cf8cf1 Status: ATS Subject: BMW Description: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 5.3; Trident/7.1) - Id: e03fxb30-c925-4c63-9e6c-e2b974c3fe39 Name: Ouu MeyNeang Fax: "(431) 476 31545" BillingCity: Mao Sen Tong BillingCountry: China Type: Lead SKYVVA Consultant Website: https://apsara-consulting.com Description: testing record - Id: e03fcc30-c925-4c63-9e3c-e2b974c3fe38 Name: Cesar Murazik Fax: "(431) 476 3151" BillingCity: Mao BillingCountry: Chad Type: Lead Tactics Consultant Website: https://alene.org Description: Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko Contact: - Id: 30e65a2e-2a0e-4a53-893e-01d30b725204 FirstName: Cesar LastName: Murazik Email: Cesar41@hotmail.com Title: National Marketing Orchestrator Description: Mozilla/5.0 (Windows; U; Windows NT 6.3) AppleWebKit/535.1.2 (KHTML, like Gecko) Chrome/14.0.886.0 Safari/535.1.2 Asset: - Id: 5a948bfb-7441-4d63-9d47-a38ab611d2fa Name: Incredible Plastic Pizza Quantity: 4534 City: La Estrella Country: Panama Description: Mozilla/5.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.1) Case: - Id: 93e3b363-0e08-425d-b659-7122ef3c9e34 Status: Wrangler Subject: Jaguar Description: Mozilla/5.0 (Windows NT 6.2; Trident/7.0; rv:11.0) like Gecko #### 2. The procedure to pass raw data to a custom class (Message Creation) for processing with custom code:- The procedure is given below with an example:- ##### 2.1. Create MetaData, Repository and Message Type:- ![](../images/2019/10/Screenshot-2023-12-04-at-3.31.26-pm.png) ##### 2.2. Create Integration:- ![](../images/2019/10/Screenshot-2023-12-04-at-3.10.46-pm.png) ##### 2.3. Create custom class : - ** The custom code is given below to pass raw data (create the message)****:-** public with sharing class RawDataCustomProcessing extends AbstractIntegrationV3 { List lines{get;set;} Map mapParentIntfMsg = new Map(); public override IServicesUtil.IMessageResult createMessage(AbstractIntegrationV3.DtoRequestBody dtoRequestBody, AbstractIntegrationV3.DtoStructure dtoStr){ AbstractIntegrationV3.DtoInterface dtoIntfStructure = getInterfaceStructure(); // custom transaction if(String.isBlank(dtoRequestBody.transactionId))dtoRequestBody.transactionId='YAML-Data-'+System.now().getTime(); // parse yaml payload to map// here using your own logic Map dataAsMap = doParse(dtoRequestBody.payload); System.debug('>>dataAsMap: '+dataAsMap); // i know exactly my data contain data node as array //{"NodeX":[{},{}]} List rootData = (List)dataAsMap.get(dtoIntfStructure.sourceObject); for (Object nodeRoot : rootData) { // create mesage from root createMsg((Map)nodeRoot,dtoIntfStructure,true,1,dtoRequestBody.transactionId,null); } return super.msgResult; } // overide create message logic public override IMessage__c invokeNewMessage( String rootId, String parentId, String transId, Boolean hasChild, Integer lv, String hPath, Boolean isRoot, Interfaces__c mInft, Map idata ){ // just using skyvva default message setting IMessage__c msg=super.invokeNewMessage(rootId,parentId,transId,hasChild,lv,hPath,isRoot,mInft,idata); msg.Name='IM#YAML-Data-'+System.now().getTime()+'---'+indexMsg; return msg; } // hierarchy message creation void createMsg(Map objectX,AbstractIntegrationV3.DtoInterface dtoIntfStructure,Boolean isRoot,Integer level,String transactionId,IMessage__c rootMsg){ Map idata = new Map(); for (String field : objectX.keySet()) { Object valueX=objectX.get(field); // ignore array or object, ingore childen datas if(valueX instanceof List || valueX instanceof Map)continue; idata.put(field,valueX+''); //string,string } // System.debug('>>createMsg>idata: '+JSON.serializePretty(idata)); // get parent message if current creation is child IMessage__c parentMsg=mapParentIntfMsg.get(dtoIntfStructure.parentIntfId); // current message, invoke create message setting IMessage__c msg = invokeNewMessage(rootMsg?.External_Id2__c,parentMsg?.External_Id2__c,transactionId,false,level,null,isRoot,super.mIntf.get(dtoIntfStructure.intfId),idata); // save parent interface to message mapParentIntfMsg.put(dtoIntfStructure.intfId,msg); // if current is root levelt then set it to children if(isRoot)rootMsg=msg; else { // mark parent and grand parent as has child rootMsg.HasChild__c=true; parentMsg.HasChild__c=true; } // create children message for(AbstractIntegrationV3.DtoInterface tmp : dtoIntfStructure.child){ // System.debug('>>createMsg>tmp.sourceObject: '+tmp.sourceObject); Object obj = objectX.get(tmp.sourceObject); if(obj==null){ // ingore case for (String field : objectX.keySet()) { // find child node if(tmp.sourceObject.equalsIgnoreCase(field)){ obj = objectX.get(field); } } } // System.debug('>>createMsg>obj: '+obj); // child message if(obj instanceof Map){ createMsg((Map)obj,tmp,false,level+1,transactionId,rootMsg); } // child message array else if(obj instanceof List){ List lstObj = (List) obj; for(Object obj1 : lstObj){ createMsg((Map)obj1,tmp,false,level+1,transactionId,rootMsg); } } } } // logic parsing raw data --------------satrt Map doParse(String yamlString){ Map yamlMap = new Map(); lines=yamlString.split('\n'); while (!lines.isEmpty()){ readByLine(lines.remove(0),yamlMap); } return yamlMap; } void readByLine(String line,Map result){ if (String.isBlank(line.trim()))return; if(!line.contains(':'))return; String[] parts = line.split(':',2); String name = parts[0].trim(); name=name.removeStart('- '); String value = parts[1].trim(); if (String.isNotBlank(value)) { result.put(name.removeStart('- '), value); } else if(!lines.isEmpty() && isElement(lines.get(0))) { Integer indexOfNextLevel=getIndexOfElement(lines.get(0)); List> children=new List>(); Map child; // read children Integer nextLvl=indexOfNextLevel; while(!lines.isEmpty() && getIndexOfElement(lines.get(0))==nextLvl){ if(isElement(lines.get(0))){ child=new Map(); children.add(child); } readByLine(lines.remove(0),child); } result.put(name,children); } } Boolean isElement(String nextLine){ return String.isNotBlank(nextLine) && nextLine.trim().startsWith('-'); } Integer getIndexOfElement(String nextLine){ Integer level = 0; while (nextLine.substring(level,level+1) == ' ' || nextLine.substring(level,level+1)=='-') { level += 1; } return level; } // logic parsing raw data --------------end---------------- } - **Copy and paste this code into the custom class. This example code will enable the reading of the data structure.** ![](../images/2019/10/Screenshot-2023-12-04-at-5.12.30-pm.png) ##### 2.4. Create Interface: ![](../images/2019/10/Screenshot-2023-12-04-at-3.26.26-pm.png) - ** In the Runtime Configuration Section of the Interface page we need to select two things which are shown in the picture given below:-** - To enable custom processing, check the 'Custom Processing' option. Once you have checked this option, you will be able to use a custom class for this interface. A custom Apex class is required to handle the specific processing for this interface. - You also need to enter the custom processing class that you have created with the logic mentioned above. - **In the Custom Processing section, you need to select the block that you want to custom** - Select 'Message Creation' on "Custom Block to replace the SKYVVA Block". This is the block that you need to customize. ![](../images/2019/10/Screenshot-2023-12-04-at-4.01.11-pm.png) ##### 2.5. Do Mapping: ![](../images/2019/10/Screenshot-2023-12-04-at-5.27.01-pm.png) ##### 2.6. Call via V4/integrate ![](../images/2019/10/Screenshot-2023-12-04-at-5.19.23-pm.png) - **After calling V4/integrate, it will read raw data and create the message.** ![](../images/2019/10/Screenshot-2023-12-04-at-5.22.58-pm.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is the operation type Upsert Auto External ID, Update Auto External ID and Delete Auto External ID? Title: 1. What is the operation type Upsert Auto External ID, Update Auto External ID and Delete Auto External ID? Slug: what-is-the-operation-type-upsert-auto-external-id-update-auto-external-id-and-delete-auto-external-id URL: https://help.skyvva.com/#article/what-is-the-operation-type-upsert-auto-external-id-update-auto-external-id-and-delete-auto-external-id ================================================================================ # 1. What is the operation type Upsert Auto External ID, Update Auto External ID and Delete Auto External ID? **Learning Objective:-** **This unit describes:-** - About 3 operation types Upsert Auto External ID, Update Auto External ID and Delete Auto External ID. - And why we need these three operation types? #### Why we need Upsert Auto External ID, Update Auto External ID and Delete Auto External ID? We are providing the “AUTO” operation to handle the problem that our customers faced. The issue was we were not able to handle the mixed key(mix key means if in the account record customer provide the external Id but also the Salesforce Id)value because the user needs to specify an operation for an interface e.g. UPSERT and he needs to check the box "Ext Id" in the mapping. If no external Id was provided, we run into an error. The solution for him was that he has to split the interface into two interfaces and provide the data clearly but not a mixed-mode. One data provider only Salesforce Id and thus sets the operation to UPDATE. The other data provide only external Id and thus set the operation to UPSERT. But if we could handle this automatically from our side, the customer would not need to split the interface and not needed to create two interfaces. So here we have a solution, the new implementation is about the combination of “External Id” and “Salesforce Id”. New operation Upsert/Update/Delete Auto Id creates or updates the record based on Salesforce id or external fields are specified on the interface. This would improve the performance because an update with a dedicated key is faster than upsert where a search has to be performed first to find the record. But if a Salesforce Id is provided directly there is no search needed. Salesforce Id is always a single field e.g. the Salesforce Id whereas the external Id could be 1 or more than one. #### How to use "Upsert Auto External ID"? The procedure is given below:- **Create Integration:-** ![](../images/2019/07/OP1.png) **Create Interface:-** - Select Upsert Auto External ID in the Operation type section. As shown in the picture given below. ![](../images/2019/07/upsert.png) - We have 2 fields as External ID. Many external fields are specified on the interface is combining key. As you can see in the picture given below:- ![](../images/2019/07/op2.png) - The account will be upsert/delete based on: -Id: if salesforce id is specified in data payload then update the record based on its value. -External fields: ERP_DEBTOR_ID__c, ERP_DEBTOR_ID2__c is setting as on interface. If salesforce Id is not specified or blank, then Account will upsert based on ERP_DEBTOR_ID__c AND ERP_DEBTOR_ID2__c. - Navigate to mapping section and map it like the picture given below - Tick two boxes external id on Fields ERP_DEBTOR_ID__c, ERP_DEBTOR_ID2__c - Click Save ![](../images/2019/07/op3.png) - The result of upload data can be seen in message monitoring as shown in the picture given below. It is created by an external ID. ![](../images/2019/07/op4-1.png) **We have so many cases to use Upsert Auto External ID:-** - Updating Account that using new Operation Type Upsert Auto Id - Update Account base on Salesforce Id, Other external field are not in data payload. #### Delete Auto External ID":- - We can see in the picture given below. ![](../images/2019/07/op5.png) - We Delete record base on given salesforce Id. - Delete record base given external fields. #### UpdateAuto External:- - If salesforce Id is not blank, then the record will update by its value.  Otherwise, update the record by external fields setting on the interface. - We can see in the picture given below how to select Update Auto External ID:- ![](../images/2019/07/op6.png) - Update records based on specifying the external field on the interface. - Update record based on given salesforce Id. ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is the operation query and pullQuery and what is the difference? Title: 1. What is the operation query and pullQuery and what is the difference? Slug: what-is-the-operation-query-and-pullquery-and-what-is-the-difference URL: https://help.skyvva.com/#article/what-is-the-operation-query-and-pullquery-and-what-is-the-difference ================================================================================ # 1. What is the operation query and pullQuery and what is the difference? **Learning Objective:-** **This unit describes:-** - What is the operation query and how it works? - What is pullQuery and how it works? #### What is a Query? Query means querying data from salesforce from a client by using Soap UI or postman and when we use postman we use rest version and for soap, we use search service API. Querying data is using SOQL statement, We can write SOQL by entering into the outbound interface or using the query editor and this way we can generate SOQL statements in our outbound interface. It gives the response as a JSON to the client if we call using Soap UI or by the postman, we can put different conditions or requests. But the main reason or requirement is query data. #### 1.1 We have 2 possibilities for query operation:- 1. Query operation without mapping will give raw data as a result. 2. Query operation with mapping will give enhanced data as a result. #### 1.2 How does query works? **The procedure is given below:-**         Pre-Requisite :- - Create Metadeta provider. - Create Istructure Repository. - Create Message type e.g AccountMT is the parent of ContactMT. - Create Integration. **1. Create Outbound Interface then select Status is Deployed and Operation Type with Query (As shown in the picture given below):-** ![](../images/2019/07/query.png) **2. Add Metadata Provider, Istructure Repository, Message Type for interface(As shown in the picture given below):-** ![](../images/2019/07/query1.png) **3. Do tree mapping field Salesforce object map with Message Type step by step with the level (As shown in the picture given below):-** ![](../images/2019/07/query2.png) **4. Navigate to Postman application.** **5. Create a new request and a new folder.** **6. Change method GET to POST and enter Salesforce classic URL** **with /services/apexrest/skyvvasolutions/SearchService (shown in the picture given in point 8).** **7.Click Body tab => click raw tab => select JSON (application/json) in picklist => Create rest body** **The body is shown below in the picture.** ``` { "INTEGRATIONID" : "xxxxxxxxxxxx", "INTERFACENAME" : "xxxxxxxxxxxx" } ``` **8. Click Header tab => enter Authorization for Key cell => create Bearer with sessionId.** **(As shown in the picture given below).** ![](../images/2019/07/query3.png) **9. Click Send button to get response data.** **10. Here is the result of the responded JSON data.** ![](../images/2019/07/query4.png) #### What is pullQuery? When we query data we get a result and then next time we query again we get the same result and it sends to the client again. So the pullQuery is used in combination with an outbound interface and it is used within interface outbound scheduler, we have a schedule that can execute the outbound interface, select the data and send the data to the receiver. Here we use pullQuery operation like we don't want to send save data again which is sent once already. So by this pullQuery operation, we will send data only once. For this, we need to create a custom field on account salesforce object. #### 2.1 How does pullQuery works? **The procedure is given below:-** ** Pre-Requisite:-** - Create Integration. - Create Adapter- SFDC2SAPPI. #### 1. Create an Outbound interface:- - Interface Direction - "OutBound". - Operation Type - "pullQuery". ![](../images/2019/07/pquery.png) - Click on Query Editor - Enter Query as per requirement. - Save SOQL. ![](../images/2019/07/pquery1.png) - Select Inbound Interface ID in "Response Interface". - Select Outbound Adapter. - Select Invoke Outbound/Inbound Interface. - Select Processing mode - "Asynchronous" ![](../images/2019/07/pquery2-3.png) - Click on Do Mapping. - Save Mapping. ![](../images/2019/07/pquery3.png) #### 2. Create an Inbound interface:- - Interface Direction - "Inbound". - Operation Type - "Upsert". ![](../images/2019/07/pquery4.png) - Click on Do Mapping. - Create Formula in the sentToSAP field. - Click on Save. ![](../images/2019/07/pquery6.png) ![](../images/2019/07/pquery5.png) - Run the "Interface Execution Scheduler". ![](../images/2019/07/pquery10.png) #### Open Developer Console and run the code given below:- skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnxml=true; c.returnListRecord=true; c.iscreatemessage=true; List lId = new List(); lId.add('0017F000009gT11QAE'); for(Account a : [SELECT Id FROM Account]){ lId.add(a.Id); } skyvvasolutions.IServices.invokeCallout2('PullQuery','Outbound',lId,'SYNC', c); ![](../images/2019/07/pquery7.png) #### Check the result in Message Monitoring:- ![](../images/2019/07/pquery8.png) ![](../images/2019/07/pquery9.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use the searchService to build the interface to query data from Salesforce? Title: 1. How to use the searchService to build the interface to query data from Salesforce? Slug: how-to-use-the-searchservice-to-build-the-interface-to-query-data-from-salesforce URL: https://help.skyvva.com/#article/how-to-use-the-searchservice-to-build-the-interface-to-query-data-from-salesforce ================================================================================ # 1. How to use the searchService to build the interface to query data from Salesforce? **Learning Object :-** This unit describes about:- - What is searchService? - How to use the searchService to build the interface to query data from salesforce. #### 1. What is searchService API? The searchService api is working as the query method of HTTP request. We have integration and interface configuration where we mapped objects as per our requirements. So when we use search service API, we actually query the data we have mapped for our interface. So it will return the data of the object as per mapping of interface. We can use the REST api SearchService or the soap API. In this tutorial we used postman application where Request payload means the body we have pass through postman and endpoint url is the url we have pasted on postman and in response we will get JSON data as parent and child by using searchService API. ## 2. How to use the searchService to build the interface to query data from salesforce? The procedure is given below :- **        Pre-Requisite :-** - Create Metadeta provider. - Create Istructure Repository. - Create Message type e.g AccountMT is the parent of ContactMT. - Create Integration. - **Create Outbound Interface then select Status is Deployed and Operation Type with Query (As shown in the picture given below):-** ![](../images/2019/07/query.png) - **Add Metadata Provider, Istructure Repository, Message Type for interface(As shown in the picture given below):-** ![](../images/2019/07/query1.png) - **Do tree mapping field Salesforce object map with Message Type step by step with the level (As shown in the picture given below):-** [![](../images/2019/10/q.png)](../images/2019/10/q.png) - **Check the select statement Query editor as shown below:-** - **Navigate to Postman application.** - **Create a new request and a new folder.** - **Change method GET to POST and enter Salesforce classic URL** **with /services/apexrest/skyvvasolutions/SearchService (shown in the picture given in point 8).** - **Click Body tab => click raw tab => select JSON (application/json) in picklist => Create rest body** **The body is shown below in the picture.** ``` { "INTEGRATIONID" : "xxxxxxxxxxxx", "INTERFACENAME" : "xxxxxxxxxxxx" } ``` - **Click Header tab => enter Authorization for Key cell => create Bearer with sessionId.** **(As shown in the picture given below).** [![](../images/2019/10/q1.png)](../images/2019/10/q1.png) - **Click Send button to get response data.** - **Here is the result of the responded JSON data.** [![](../images/2019/10/q2.png)](../images/2019/10/q2.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to load mass data using bulk api using Agent? Title: 1. How to load mass data using bulk api using Agent? Slug: how-to-load-mass-data-using-bulk-api-using-agent URL: https://help.skyvva.com/#article/how-to-load-mass-data-using-bulk-api-using-agent ================================================================================ # 1. How to load mass data using bulk api using Agent? #### Learning Objectives In **SKYVVA**, the bulk-loading option increases the performance of a session where huge volumes of data are involved. During bulk loading, the Integration Service bypasses the database log, which results in performance improvement. Without writing to the database log, however, the target database cannot perform a rollback. While using bulk loading, the need for improved session performance must be weighed against the ability to recover an incomplete session. #### Introduction The Data Integration Service can use the **SKYVVA** Bulk API to write data to sObjects. Use the Bulk API to write large amounts of data to Salesforce with a minimal number of API calls. Users can use the Bulk API to write data to Salesforce targets with Salesforce API version 31.0. With a Bulk API write, each batch of data can contain up to 10,000 records or one million characters of data in CSV format. When the Data Integration Service creates a batch, it adds required characters such as quotation marks around text, to format the data. Users can configure a Bulk API target session to load batches serially or in parallel. By default, the data load is in parallel mode, but you can override the data load to serial mode. Users can also monitor the progress of batches in the session log. To configure a session to use the Bulk API for Salesforce targets, select the Use **SKYVVA** Bulk API session property. When the user selects this property, the Data Integration Service ignores the Max Batch Size session property. #### SKYVVA Bulk Interface Processing SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When the user has much data, using Bulk Interface Processing is necessary (over **5000** records). Before configuring Bulk Interface Processing, the user has to know about the parameters: **BULK Mode:** Check this flag if you want to run interface in a bulk mode using Salesforce BULK API. **Bulk Version:** We support SFDC pure bulk mode in version 1.0 or 2.0. Then we have our own SKYVVA bulk mode. This uses SKYVVA workflow and mapping and thus is more powerful but slower than the pure bulk API technique from Salesforce. This one is SKYVVA’s own bulk mode. **Bulk Processing Mode:** This field indicates the two-mode, which is support with bulk version 1.0. With bulk, version 2.0 only parallel mode is supported. Therefore, the value here depends on the selection of the field bulk version e.g. when we want to use ‘Serial’ then we need to choose ‘Bulk V 1.0’. There are two modes which are: ![](../images/2019/07/Bulk.png)In the figure, we showing SKYVVA BULK Processing mode which includes Parallel and series mode. **Parallel:** When you select this processing mode, it will run parallel. **Serial:** When you select this mode, it will not run at the same time. **Bulk Package Size:** This parameter determines how many records are split into Bulk data size. If your Message contains **10.000** records and the value for this parameter is 1000 so the user will get 10 bulk data set in Salesforce. **Bulk Monitor Keep Size:** The number of bulk executes logs to be kept. **Bulk Search Frequency:** This is the schedule time frequency for the bulk scheduler on the interface. Bulk Integrate Time Interval (minute): The interval (minutes) used to integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. #### Difference Between Normal and Bulk Mode? **Normal Mode** **Bulk Mode** In normal mode, the Integration service writes into the database logs during the job run. In Bulk Mode, the Integration services bypass the database logs during job run for improved performance. Since the database logs are available, the job recovery is possible during failure. Since the database logs are bypasses, job cannot be recovered during failure. Indexes, constraints, auto-generated features can be available in table level during the job run. During Bulk load, indexes, constrains and auto generating features should not configured in table. #### #### Difference Between SKYVVA Bulk and SFDC Bulk Mode? **SKYVVA Bulk Mode** **SFDC Bulk Mode** In SKYVVA Bulk Mode user can create upsert, update, insert, and query, query All, pullQuery or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data over a **5000** records. In SFDC Bulk Mode user can create update, or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data from a few thousand to millions of records. **Monitoring in Bulk Control Board:** As user did integrate, your data you might want to check or monitor if all your data are successfully integrated. To monitor bulk data. There are three orders to monitor bulk processing: **Bulk Data Inbox : **When data pushed from the client using Bulk API, that will appear in this section **Bulk Data Processing: **Bulk Data Processing is using to store data that are processing**.** **Bulk Monitor: **User can monitor the total records of attachments, total batch and batches that had processed. **Monitoring Bulk Data Load Jobs:** Process a set of records by creating a job that contains data that will be processed asynchronously. The job specifies which object is being processed and what type of operation is being used. Indexes, constraints, auto-generated features can be available at table level during the job run. **Operations:** The processing operation for all the batches in the job. The valid values are: delete insert query queryall upsert update Delete It supports SFDC **BulkV1.0, SFDCV2.0** for all Job Type **Operations:** The processing operation for all the batches in the job. The valid values are: delete insert query (Bulk V1 type jobs only) queryall(Bulk V1 type jobs only) upsert update hardDelete (Bulk V1 type jobs only) It also supports BulkV2 for some Job Type #### Advantages - The major advantage of using **SKYVVA** bulk load is in the significant improvement of performance. Especially in the large volume table, bulk loading speeds up the process. - If the **SKYVVA** job fails, the recovery is not possible due to the bypass of database logs. The only option during job failure is truncate and reprocess. For detail information: [https://trailhead.salesforce.com/en/content/learn/modules/api_basics/api_basics_bulk](https://trailhead.salesforce.com/en/content/learn/modules/api_basics/api_basics_bulk) #### How to Use Bulk Mode SKYVVA and SFDC Bulk with Agent? **CASE 1: Using SKYVVA Bulk version** - Create Integration - Create Interface ![](../images/2019/07/Screenshot-366.png) - Click on Interface - Scroll down to Bulk Setting section - Check flag of BULK Mode - Select **SKYVVA Bulk1.0** value from picklist - Save ![](../images/2019/07/Screenshot-368.png) - Scroll down to Source Definition section - Choose file & Save ![](../images/2019/07/Screenshot-369.png) - Click on Open Mapping Button ![](../images/2019/07/Screenshot-371.png) - Select Ext Id - Save Go to **SKYVVA** Agent configure with your Salesforce Org. Which is obvious - Select Integration Name - Select SKYVVA Bulk Interface - Click on Edit Interface ![](../images/2019/07/Screenshot-372.png) ![](../images/2019/07/Screenshot-373.png) - Select File Folder - Write File Name - Click on Test Query - Save ![](../images/2019/07/Screenshot-375.png) - Select your Interface **SKYVVA Bulk** - Click on Process button ![](../images/2019/07/Screenshot-377.png) - Process Completed - Click ok button ![](../images/2019/07/Screenshot-378.png) Go back to your Salesforce Org. - Go to Integration Detail page - Click on Bulk Control Board ![](../images/2019/07/Screenshot-385.png) - Drop down and select your Inbound Interface - Click on Search button - Now click on timer logo ![](../images/2019/07/Screenshot-382.png) - Set Time Interval lets play with 2 min. - Save ![](../images/2019/07/Screenshot-388.png) - Click on Action button and start Scheduler - See message pop up in dialogue box Bulk Schedule Job is running ![](../images/2019/07/Screenshot-394.png) - See Bulk Data Inbox shows total no. of records ![](../images/2019/07/Screenshot-390.png) - Bulk Data Monitor shows the no. of records which is 10 - Status Completed **CASE 2: Using SFDC Bulk version** - Create Interface - Click on Interface ![](../images/2019/07/Screenshot-396-3.png) - Scroll down to the Bulk Setting section - Check flag of BULK Mode - Select **SFDC Bulk API 1.0, SFDC Bulk API 2.0** value from picklist - Select Bulk Processing Mode Parallel - Save ![](../images/2019/07/Screenshot-398.png) - Scroll down to Source Definition section - Choose file & Save ![](../images/2019/07/Screenshot-399.png) - Click on Open Mapping Button ![](../images/2019/07/Screenshot-400.png) - Select Custom Ext. Id - Save Go to **SKYVVA** Agent configure with your Salesforce Org. Which is obvious - Select Integration Name - Select SF Bulk Interface - Click on Edit Interface ![](../images/2019/07/Screenshot-403.png) ![](../images/2019/07/Screenshot-404.png) - Select File Folder - Write File Name - Click on Test Query ![](../images/2019/07/Screenshot-405.png) - Select **SF Bulk** - Click on Process button ![](../images/2019/07/Screenshot-406.png) Go back to your Salesforce Org. - Go Setup - Write Apex job in search box ![](../images/2019/07/Screenshot-407.png) - See here Bulk Data Load Jobs - Status Job Completed ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is the different init-operation for the chained interface? Title: 1. What is the different init-operation for the chained interface? Slug: what-is-the-different-init-operation-for-the-chained-interface URL: https://help.skyvva.com/#article/what-is-the-different-init-operation-for-the-chained-interface ================================================================================ # 1. What is the different init-operation for the chained interface? **Learning Objectives:-** - Describe what are the different init-operation for the chained interface. - Comfortably use different init-operation for the chained interface. #### Introduction:- SKYVVA provides the different init-operation for the chained interface i,e None, Delete First, Delete specific child, Delete Anyway and Delete + Upsert. In this tutorail we will learn how to config these init-operation with Interface which has hierarchical message type. #### Pre-required: - Upload Hierarchical Message Type. - Create Integration and Inbound Interface. **Step1:** Upload Hierarchical Message Type or create Hierarchical Message Type. - Here's the Hierarchical message Type ![](../images/2019/07/5-2.png) **Step2:** Create Inbound Interface and Linked Message Type. - Here's the Inbound Interface which linked with Message Type. ![](../images/2019/07/7-2.png) #### - Do mapping ![](../images/2019/07/8-2.png) #### How to configuration Ichain ? To configuration IChain Interface we need to do mapping in hirachical and then go to Interface Related see the example bellow. - Go to Interface Related ![](../images/2019/07/9-1.png) - Scroll Down to find Ichained Interface and click IChain Interfaces Name. ![](../images/2019/07/10-1.png) - Click Edit button. ![](../images/2019/07/11-1.png) - Now we can see How many Section in IChained  Interface. ![](../images/2018/10/3-6.png) - Parent Interface refers to the Interface that we choose as the parent In this example we use using hierarchical mapping so the first mapping is the parent Interface. - Sequence is refers  to creating an order, an order sequence number is generated and can be used to identify the order. - Child Interfaces refers to the Interfaces that we selected the other interface as the child. In this case if user want to use other Interface they can create the new IChain to config , If the user want to use the child interface as the match as the hierarchical mapping, user just select the Child Interface that contain _ParentInterface_ChildInterface_1.2 meaning that this is get from mapping, If  the mapping have more object in one Interface it will generated the Interface to suffix  1.3,1.4 so on. - Parent Relationship Name / Foreign Field is refers to the primary key between Parent Object to child Object depends on the primary key of each Objects. Example: We have many fields to look up to account depend on ID or depend on name so we can select the fields that we want to look up meaning that if the records that parents is exits as the same parent payload it will update the parent records and insert the child payload. - Init Operation is the useful functions that allow users to modify the child Interface when we do inbound. In this function there are 5 operation such as None, Delete First, Delete Specific Child, Delete Child anyway,  and Delete+ Upsert (we can Called delta ).  See the picture below. #### Which are different init-operation for the chained interface? The feature with our inti operation for the chained interface is to handle the deletion of a child from the sending system. There are different init-operation for the chained interface as per the condition. - **None:** Add a new child or update existing. - **Delete First:** Delete all child records of a parent. - **Delete specific child:** delete specific child of the parent. - **Delete Anyway:** This will always delete the children, no matter if you only send Parent or Parent + Children. - **Delete + Upsert : **that is about delete children does not come along with their parent i.e. Existing account with contacts C1, C2, C3. if the system sends account with a contact C2, then C1, C3 will deleted from Account and insert/update C2, So Account has only 1 contact C2. #### None:- This is the default option when we create IChained Interface. Nothing is deleted here but the new children added or existing children updated. It is not correlated with previous data So there maybe different levels between order items in SAP and in Salesforce. - Create Integration - Create two interfaces -Account and contact where the account is parent interface and contact is a child. - Click on the related tab of the account interface and scroll down the page to the IChained interface. - Click on the new IChained interface. ![](../images/2019/07/image_2022_03_24T07_50_21_198Z.png) #### Delete First:- In this case, when the child record is inserted or updated the previous ones should be deleted. This ensures that the Salesforce page contains only the child, included in the latest payload. We have in the  the option the set "Delete First" to delete first the existing children before adding new children. For example, the message comes with message A. If A contains a child record then the deletion works. In this case, we delete all existing children and create the new child coming with the new message. But if we send only the parent data only parent data get updated. No children get deleted. "Delete First" in Chain is that when we have child record in the message e.g. Parent + Child then it delete first all existing children and then adds the new children which come with the current message. The sender needs always to send all children. The sender cannot send only children which have been changed at the sender system. If he only sends a changed record which has been changed at the sender system the situation on both systems. e.g. sender and Salesforce are not consistent anymore. This mode does not support that the sender sent deltas. This mode works only correctly when the sender always sends in full mode e.g. all children every time! **How to use "Delete First"?** Follow the given steps:- - Create a hierarchical interface Account, Contact where contact is a child interface. - We use init Operation = Delete First. #### Delete specific child:- How to use Delete specific child. **Follow the given steps:-** **step1:** Create a hierarchical interface Account, Contact where contact is a child interface. We use init Operation = None **Step2: **Upload the following data. We have account parent fields Account (Parent fields):- - AccountName=CacaCambo (ExternalID), - BillingCountry=Cambodia and Contact child fields:- - LastName=Jen (ExternalID), - FirstName=Jonh, - Email = jonh@test.com Here are the records account and contact after processed:- ![](../images/2019/07/Untitled5.png) **Step3:** Now We use init Operation = Delete Specific Child in IChained Interfaces to delete some values in child interface data but it is not External ID value. Now we want to change only email value I,e  jonh@test.com to jen@test.com where, - LastName=Jen (ExternalID), - FirstName=Jonh like before. So user just push above data again the data will be created again with last change email= jen@test.com ![](../images/2019/07/Untitled-6-1.png) **Here is the result of contact data on message monitoring change email value:-** ![](../images/2019/07/Untitled-7-1.png) #### Delete Child Anyway:- Delete Child Anyway meaning that it will delete all children even have one or more and it will create new child as the payload we sent. - Here's the Interface Delete Child Anyway ![](../images/2019/07/12-1.png) - Here's the records that has existing in salesforce. ![](../images/2019/07/12-1.png) - Here's the data that has existing in Salesforce ![](../images/2019/07/13-1.png) - Here's the payload to processing that will delete these are three contact and add the new one from payload. ![](../images/2019/07/14-1.png) - Go to monitor to see the result and click Related To link to see the account that has modify. ![](../images/2019/07/15-1.png) - Here's the account in salesforce ![](../images/2019/07/16-1.png) #### Delete + Upsert :- Deleting children do not contain in the coming payload of their parent, that means delete all not children base on parent external value and children’s external-values do not contains in the payload. **How to use Delete+Upsert. ** **Follow the given steps:- ** **step1:** Create a hierarchical interface Account, Contact where contact is a child interface. We use init Operation = Delete + Upsert **Step2: **Upload the following data. We have Account (Parent Field):- - AccountName = COCA_COLATest1(ExternalID), - BillingCity = pp1 Contact1 (Child Field):- - FirstName = COCA3, - LastName = COLA_3New(ExternalID) Contact2 (Child Field):- - FirstName = COCA2_UpdateNew, - LastName = COLA_2 Here are the records account and contact after processed:- ![](../images/2019/07/image_2022_03_25T12_39_02_955Z.png) In this case, we have Records Account that contained 2 Contacts which external ID are COLA_1 and COLA_2, so when we push the same Account name and 2 contacts which external ID are COLA_2 and COLA_3. The processing **Upsert + Delete** will work like to Update the COLA_2, Delete COLA_1 and add COLA_3. Contact2 (Child Field):- - FirstName = COCA2_UpdateNew, - LastName = COLA_2 ![](../images/2019/07/image_2022_03_25T12_55_26_204Z.png) **Here is the result of contact data on message monitoring change Contact FirstName & LastName  value updated:-** ![](../images/2019/07/image_2022_03_25T12_57_51_196Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: What are the different bulk mode supported? Title: 1. What are the different bulk mode supported? Slug: what-are-the-different-bulk-mode-supported URL: https://help.skyvva.com/#article/what-are-the-different-bulk-mode-supported ================================================================================ # 1. What are the different bulk mode supported? **Learning Objectives:-** **This unit describes:-** - About the different bulk modes supported in SKYVVA. **What is bulk mode supported in SKYVVA?** Bulk Processing uses for running attachment as batch too. It has more ability than synchronous, batch and running with huge records at high speed. The Records have more than 5000, so you use bulk processing. It can contain many records in an attachment, and you can set time intervals in bulk processing scheduler of SKYVVA or Agent Scheduler to run anytime that you want. **Bulk Modes:-** There are two options of bulk mode:- – SKYVVA Bulk – SFDC Bulk **SKYVVA Bulk:-** SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use the SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing mode, which is Parallel and Serial. The default value is Serial. SKYVVA bulk, you can handle volume size like 50k or 100k. SKYVVA bulk mode we can use the mapping tool from SKYVVA to execute the mapping. For big data volume (not millions of records) then the user can use the SKYVVA bulk mode. **The configuration of SKYVVA Bulk** To be able to use SKYVVA bulk mode you have to enter Interface page detail and scroll down to Streaming and Bulk API Configuration section then checkbox on BULK Mode along with choosing Bulk Version.![](../images/2019/07/1-6.png) When you check this flag, it means you activate the bulk processing and your data will be integrated from Agent. **To integrate from Agent:-** This part will show the example by integrate the data from Agent. To integrate from Agent, you have to create an adapter. To create an adapter in Agent please check this link (How to create an adapter in Agent). **To set schedule:-** When the creating adapter is done, you have to set the scheduler in order to integrate the bulk data. To set scheduler, you can: Click Integration Scheduling Property File Selection>Integration Name>Interface Name>Integration Mode>On>Run at/Run every>Save **To monitor in Bulk Control Board and Message Monitoring Board:-** As you did integrate, your data you might want to check or monitor if all your data are successfully integrated. To monitor bulk data, please log in to Salesforce and enter Bulk Control Board. If you want to know more and how to use Bulk Control Board please kindly look for this documentation (How to use Bulk Control Board). ![](../images/2019/07/2-5.png)**SFDC Bulk:-** We support SFDC pure bulk mode in version 1.0 or 2.0 that is very fast but cannot use the SKYVVA mapping tool to do business data mapping. SFDC Bulk mode uses the Salesforce Bulk API 2.0 to process mass volume data. On the other hand, SFDC Bulk requires the data has to be mapped already on the sender side and doing the additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. It is best to fit for the initial data load scenario but not for a medium-size daily business data synchronization. In SDFC Bulk user needs mapping to convert and transform the data. **The configuration of SFDC Bulk:-** To be able to use SKYVVA bulk mode you have to enter Interface page detail and scroll down to Streaming and Bulk API Configuration section then checkbox on BULK Mode along with choosing Bulk Version. ![](../images/2019/07/3-5.png)When you check this flag, it means you activate the bulk processing and your data will be integrated from Agent. Note: When you do a mapping, you have to use the requirement field as external Id otherwise, this SFDC Bulk won’t work. **To integrate from Agent:-** This part will show the example by integrate the data from Agent. To integrate from Agent, you have to create an adapter. To create an adapter in Agent please check this link (How to create an adapter in Agent). **To set schedule:-** This step is similar to the procedure of SKYVVA Bulk. **To monitor in Monitor Bulk Data Load Jobs and Message Monitoring Board:-** When the integration is done, you have to check the bulk data in Monitor Bulk Data Load Jobs. To enter Monitor Bulk Data Load Job: – Click Setup >Jobs> Monitor Bulk Data Load Jobs ![](../images/2019/07/4-2.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]**For SKYVVA Bulk Version:-** Completed, Fail, and Pending message are all shown in the Message Monitoring Board. **For SFDC Bulk version:-** Only Fail and Pending Messages are shown in the Message Monitoring Board.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to generate SOQL statement for the outbound interface? Title: 1. How to generate SOQL statement for the outbound interface? Slug: how-to-generate-soql-statement-for-the-outbound-interface URL: https://help.skyvva.com/#article/how-to-generate-soql-statement-for-the-outbound-interface ================================================================================ # 1. How to generate SOQL statement for the outbound interface? **Learning Objective :-** This unit describes:- - How to generate SOQL statements for the outbound interface? - The 3 different features. - The easiest feature to use among three. **Introduction:-** In this tutorial, we can see how SOQL can be generated from doing the drag & drop mapping. Before we used to write the SOQL manually into the field Query. The other possibility is to use the Query Editor where we can generate the SOQL as well. The SOQL is only needed for the outbound interface to select data from salesforce object. We can see different possibilities in detail. **The possibilities are:-** - Create SOQL manually. - Generation of SOQL by Using the Query Editor. - Generation of SOQL by using the Mapping tool. **Create SOQL manually:-** In this section, we show how and where we can enter manually the SOQL. This is the way we use a long time ago now we have the easiest way to do with new features, which you can see in the next two possibilities which are given below. The procedure is given below:- **Pre-Requisite:-** 1. Create integration. 2. Create interface - Select type "Outbound". 1.  Check the section "SOQL query to select sObject data". - In this section, we can enter the query manually. - And after writing the query, we need to save it. (As shown in the picture given below) ![](../images/2019/07/editor3-1.png) **Generation of SOQL by Using the Query Editor:-** In this section, we show how we can generate SOQL by using "Query Editor". The Query Editor is available only with the use of an outbound interface. With inbound interface it make no sense. This is the better way then create SOQL manual. The easiest way is given in the next section. The procedure is given below:- **Pre-Requisite:-** 1. Create integration. 2. Create interface - Select type "Outbound".  1.   Click on Query Editor as shown in the picture given below:- ### 2. You can see in the picture given below:- - Select Object:-                                                                                                                                                                                 ![](../images/2019/07/editor1.png) - Select Fields - Click on Execute SOQL. - Click on Test SOQL. - Click on save SOQL. (As shown in the picture given below). ![](../images/2019/07/editor2.png) **Generation of SOQL by using the Mapping tool:-** In this section we show how we can use mapping tool for generating SOQL, The easiest way is by using the mapping tool because here the SOQL is generated automatically and the user doesn't need to know the syntax of the SOQL and the most important thing we can save time by using the mapping tool. The procedure is given below:- 1. Create Integration:- ![](../images/2019/07/soql-1.png) 2. Create Interface:- - Select type "OutBound". ![](../images/2019/07/soql1-1.png) 3. Do Mapping drag and drop in Data Mapping grid :- ![](../images/2019/07/editor4-2.png) 4. We can see the section of "SOQL Query to select sObject data" where SOQL is automatically generated when we do mapping:- ![](../images/2019/07/editor5-1.png) #### CASE  1. If we try to delete Query when the mapping is active:- - It cannot be deleted we will get an error as shown in the picture given below. #### CASE 2. If we delete query fields which are not mapped, then it will not show any error and field can be deleted successfully:- #### CASE 3. There will be no changes in mapping when we do changes in Query:- ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: 1. How to do invokeCallout2 by using Auto mode? Slug: 1-how-to-do-invokecallout2-by-using-auto-mode URL: https://help.skyvva.com/#article/1-how-to-do-invokecallout2-by-using-auto-mode ================================================================================ # 1. How to do invokeCallout2 by using Auto mode? **Learning Objectives:-** **This unit describes:-** - Describe What is Invoke callout Auto mode? - Comfortably use the Invoke callout method. #### Introduction:- This tutorial explains the configuration of invoking callout Auto mode using the future and the batch processing. It describes the process of performing this operation by executing the syntax in the apex code. #### What is Invoke callout Auto mode? Invoke callout Auto mode is one type of callout that split records to callout as FUTURE and BATCH Processing. The future method used to callout for 10 per transaction, however, the performance has been enhanced to do 100 callouts per execution. For the remaining records, BATCH Job will carry on the performance. #### Why is the skyvva callout method? The callout methods are using to send data from salesforce to external system (SFDC to SAP/SAP-PI) through interface outbound. The Service only sends one record/children per request to SAP. To invoke callout from apex trigger the method invokeCallout(interfaceId, ids, ‘AUTO’) is recommended. #### Pre-Requisite:- - Create Integration. - Create Adapter. - Create Interface. - Interface Direction- Outbound - Processing Mode- Asynchronous - Link Adapter. - Do mapping. #### The configuring of Invoke callout:- To do invoke callout, the user can follow the step given below:- **Step 1:-** Login to Salesforce and enter the developer console. ![](../images/2019/01/invoke.png) **Step 2:-** Select the debug and Open Execute Anonymous Window. ![](../images/2019/01/invoke1.png) **Step 3:-** Enter Apex code in open window then Execute the code. ![](../images/2019/01/invoke2.png) **Note**:- The callouts above is just an example to demonstrate for the user. The following syntax is apex code which you can use, however, you can change the Integration name, Interface name which is in red letters. #### Apex Code is given below:- **skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl();** **c.returnxml=true;** **c.returnListRecord=true;** **c.iscreatemessage=true;** **List lId = new List();** **for(Account a : [SELECT Id FROM Account]){** **lId.add(a.Id);** **}** **skyvvasolutions.IServices.invokeCallout2('Invoke_Callout','Account',lId, 'AUTO', c);** #### To check the result:- You can check the result in Apex Jobs. ![](../images/2019/01/invoke3.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use workflow? Title: 1. What is the Workflow transaction and how to use it? Slug: what-is-the-workflow-transaction-and-how-to-use-it URL: https://help.skyvva.com/#article/what-is-the-workflow-transaction-and-how-to-use-it ================================================================================ # 1. What is the Workflow transaction and how to use it? **Learning Objectives:-** **This unit Describes:-** - What is Workflow and Workflow transaction? - How Workflow transaction works. #### What is Workflow and Workflow transaction? Workflow is used to push the database on the condition, and the condition bases on Interfaces. Such as the Message that belongs to Account Interface will push into Account, and the Message that belongs to Contact Interface will push into Contact by Workflow. Workflow Transaction lets users automate standard/Custom internal procedures and processes to save time across our SKYVVA App. A workflow transaction is the main container for a set of workflow instructions. #### We can see 3 options in Runtime behavior and we can select any one of them according to our requirement:- - **Continue when an error occurred:-  ** It is a default option if we process messages and suppose we met with error on 2nd or 3rd message. The other message will continue to process. - **Stop when an error occurred:-** If we process messages and suppose we met with error on the 2nd or 3rd message. We should stop there", for that processing the code will automatically stop the process, we don't have to manually stop pushing the message. - **Rollback when an error occurred:-** If we got some error while processing a message like perform DML operation based on mapping and we get some error like missing the required field value, missing ExtId value that we need to considered as error. When a workflow message met an error it will immediately stop processing and rollback. #### Please check the picture given below:- ![](../images/2019/09/workflow.jpg) #### How to use it? The procedure is given below:- **Pre-requisite:-** - **Create Integration.** - **Create two interfaces i,e Account and contact.** ##### (As shown in the picture given below) ![](../images/2019/06/wf-e1561548641898.png) #### #### **[su_box title="Note" box_color="#2a8af0" title_color="#000000"] **We can select Runtime behavior as per our requirement.[/su_box] **Do mapping for both Account and Contact and check Istructure on Interface related page:-** - **Account's  Istructure:**- ![](../images/2019/06/a.png) - **Contact's  Istructure:-** ![](../images/2019/06/wf2.png) #### Create Workflow:- - Click on the workflow on the integration detail page. - Click on New IWorkflow. ![](../images/2019/06/wf4.png) - **Creating Wf1 with condition BillingCity= NewYork.** ![](../images/2019/06/wf5-e1561548482422.png) ![](../images/2019/06/wf6-e1561548314303.png) - **Creating Wf2 with condition BillingCountry= USA.** ![](../images/2019/06/wf14.png) ![](../images/2019/06/wf15-e1561548127778.png) - **Creating Wf2 with condition NOT(ISNUll(FirstName)).** ![](../images/2019/06/WF16-e1561547502280.png) - **Push data using manual load:-** ![](../images/2019/06/wf18.png) ![](../images/2019/06/wf19.png) #### Check on message board:- ![](../images/2019/06/wf20.png) ![](../images/2019/06/wf21.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use workflow? Title: 2. What is new in workflow with the Spring '19 release? Slug: 2-what-is-new-in-workflow-with-the-spring-19-release URL: https://help.skyvva.com/#article/2-what-is-new-in-workflow-with-the-spring-19-release ================================================================================ # 2. What is new in workflow with the Spring '19 release? **Learning Objectives:-** **This unit describes:-** What is new in workflow with the Spring '19 release? #### Introduction:- In this tutorial, we will come to know about new updates in Workflow with the Spring '19 release. Mainly we have 3 more new features like "Status Handling.", "Processing Mode", "Runtime Behavior". All three features are described in this tutorial. #### Following new Workflow settings/features are added:- We can find this page on the integration page with the tab name "Workflows". And then selecting interface from the left side as shown in the picture below:- - Status Handling. - Processing Mode. - Runtime Behavior. ![](../images/2019/09/work.jpg) #### Status to set to when a condition is not met:- - **None**: By default, "None" is selected. No status of the message will be set if None is selected - **Cancelled**: In runtime, if conditions do not meet workflow step condition then the status is set to Cancelled. - **Completed**: For all successful workflows step conditions status is set to complete. - **New**: ![](../images/2019/09/work1.jpg) #### Workflow Processing Mode:- To use this feature, you need to configure some step: - Set up Workflow Mode on Integration page, by clicking on the new tab "Workflows". - Click on the Processing Mode picklist then choose any of the one options. We use this feature to pass the match condition message to the next step and remove the message which not match any condition. We provide one more value option for the user to desire their own needs business. For a release ’19 we offer new picklist in the interface: - **Pass all messages to the next step:-**  This is the current behavior and it is as the default value. - **Pass only matched messages to the next step:- **Message that matches workflow condition will pass to the next step/ New processing mode behavior. ![](../images/2019/09/wof.png) #### Runtime Behaviour:- We can see 3 options in Runtime behavior and we can select any one of them according to our requirement:-    - **Continue when an error occurred:-  ** It is a default option if we process messages and suppose we met with error on 2nd or 3rd message. The other message will continue to process. - **Stop when an error occurred:-** If we process messages and suppose we met with error on the 2nd or 3rd message. We should stop there", for that processing the code will automatically stop the process, we don't have to manually stop pushing the message. - **Rollback when an error occurred:-** If we got some error while processing a message like perform DML operation based on mapping and we get some error like missing required field value, missing ExtId value that we need to considered as error. When workflow message met an error it will immediately stop processing and rollback. ![](../images/2019/09/work2.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is the different posting behavior for the inbound interface? Title: 1. What is the different posting behavior for the inbound interface? Slug: what-is-the-different-posting-behavior-for-the-inbound-interface URL: https://help.skyvva.com/#article/what-is-the-different-posting-behavior-for-the-inbound-interface ================================================================================ # 1. What is the different posting behavior for the inbound interface? Learning Objective: After completing this unit, you’ll be able to: - Describe What is the mode By-pass the message layer. - Comfortably use By-pass the message layer mode. #### Introduction “Inbound Interface” when data is sent from SAP to Salesforce. So, the reference point is set to Salesforce. #### Prerequisite for creating an inbound interface - The Skyvva solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. **Step 1. Creating an inbound interface(Salesforce)** Login to the Salesforce org and then select Skyvva Integration Cloud. Go to Integration Tab and create New Integration under that go to the interfaces tab and then create New interface as shown below. Now we have to fill the following fields: - Name - Source Name - Status - Sequence - Operation Type - Connect with Middleware - External Mapping - Interface Mode Then click on button “Save” to save your interface. Now we have to specify some required fields and other optional fields for defining the inbound interface. Following all fields related to creating an inbound interface for connecting to Salesforce are described. Note that there are also fields in the screen which is not needed for the SAP-PI coupling but needed for other couplings e.g. the SAP direct coupling. Following are the posting behaviour for the inbound interface – ![](../images/2019/09/Untitled1.png) An asynchronous process is a process or function that executes a task "in the background" without the user having to wait for the task to finish. Asynchronous Apex is used for callouts to external systems, operations that require higher limits, and code that needs to run at a certain time. **Future Apex** - Methods with the future annotation must be static methods, and can only return a void type. - The specified parameters must be primitive data types, arrays of primitive data types, or collections of primitive data types; future methods can’t take objects as arguments. - Future methods won’t necessarily execute in the same order they are called. In addition, it’s possible that two future methods could run concurrently, which could result in record locking if the two methods were updating the same record. - Future methods can’t be used in Visualforce controllers in getMethodName(), setMethodName(), nor in the constructor. - You can’t call a future method from a future method. Nor can you invoke a trigger that calls a future method while running a future method. See the link in the Resources for preventing recursive future method calls. - The getContent() and getContentAsPDF() methods can’t be used in methods with the future annotation. - You’re limited to 50 future calls per Apex invocation, and there’s an additional limit on the number of calls in a 24-hour period. ** ** Future Apex is used to run processes in a separate thread, at a later time when system resources become available. When using synchronous processing, all method calls are made from the same thread that is executing the Apex code, and no additional processing can occur until the process is complete. Future methods can be used for any operations asynchronously in its own thread. This provides the benefits of not blocking the user from performing other operations and providing higher governor and execution limits for the process. Future methods are typically used for: - Callouts to external Web services. If you are making callouts from a trigger or after performing a DML operation, you must use a future or queueable method. A callout in a trigger would hold the database connection open for the lifetime of the callout and that is a "no-no" in a multitenant environment. - Operations you want to run in their own thread, when time permits such as some sort of resource-intensive calculation or processing of records. - Isolating DML operations on different sObject types to prevent the mixed DML error. This is somewhat of an edge-case but you may occasionally run across this issue. Future methods must be static methods, and can only return a void type. The specified parameters must be primitive data types, arrays of primitive data types, or collections of primitive data types. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] global class SomeClass { @future public static void someFutureMethod(List recordIds) { List accounts = [Select Id, Name from Account Where Id IN :recordIds]; // process account records to do awesome stuff } }[/aux_code] To make a Web service callout to an external service or API, you create an Apex class with a future method that is marked with (callout=true). The class below has methods for making the callout both synchronously and asynchronously where callouts are not permitted. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] public class SMSUtils { // Call async from triggers, etc, where callouts are not permitted. @future(callout=true) public static void sendSMSAsync(String fromNbr, String toNbr, String m) { String results = sendSMS(fromNbr, toNbr, m); System.debug(results); } // Call from controllers, etc, for immediate processing public static String sendSMS(String fromNbr, String toNbr, String m) { // Calling 'send' will result in a callout String results = SmsMessage.send(fromNbr, toNbr, m); insert new SMS_Log__c(to__c=toNbr, from__c=fromNbr, msg__c=results); return results; } }[/aux_code] To test future methods, enclose your test code between the startTest and stopTest test methods. The system collects all asynchronous calls made after the startTest. WhenstopTest is executed, all these collected asynchronous processes are then run synchronously. You can then assert that the asynchronous call operated properly. ![](../images/2019/09/img2.png) **Batch Apex** Batch Apex is used to run large jobs for example, data cleansing or archiving. Using Batch Apex, you can process records asynchronously in batches. Each time a batch class is invoked, the job is placed on the Apex job queue and is executed as a discrete transaction. Batch Apex has two awesome advantages: - Every transaction starts with a new set of governor limits, making it easier to ensure that your code stays within the governor execution limits. - If one batch fails to process successfully, all other successful batch transactions aren’t rolled back. For writing batch class you need to implement the Database.Batchable interface and include the following three methods: Start, execute and finish. To ensure fast execution of batch jobs, minimize Web service callout times and tune queries used in your batch Apex code. The longer the batch job executes, the more likely other queued jobs are delayed when many jobs are in the queue. Best practices include: - Only use Batch Apex if you have more than one batch of records. If you don't have enough records to run more than one batch, you are probably better off using Queueable Apex. - Tune any SOQL query to gather the records to execute as quickly as possible. - Minimize the number of asynchronous requests created to minimize the chance of delays. - Use extreme care if you are planning to invoke a batch job from a trigger. You must be able to guarantee that the trigger won’t add more batch jobs than the limit. ![](../images/2019/09/img3.png) **Queueable Apex** - Similar to future methods, but provide additional job chaining and allow more complex data types to be used. It gives you a class structure that the platform serializes for you, a simplified interface without start and finish methods and even allows you to utilize more than just primitive arguments! It is called by a simple System.enqueueJob() method, which returns a job ID that you can monitor. Queueable Apex allows you to submit jobs for asynchronous processing similar to future methods with the following additional benefits: - Non-primitive types: Your Queueable class can contain member variables of non-primitive data types, such as sObjects or custom Apex types. Those objects can be accessed when the job executes. - Monitoring: When you submit your job by invoking the System.enqueueJob method, the method returns the ID of the AsyncApexJob record. You can use this ID to identify your job and monitor its progress, either through the Salesforce user interface in the Apex Jobs page, or programmatically by querying your record from AsyncApexJob. - Chaining jobs: You can chain one job to another job by starting a second job from a running job. Chaining jobs is useful if you need to do some sequential processing. ## Queueable Syntax To use Queueable Apex, simply implement the Queueable interface. public class SomeClass implements Queueable {     public void **execute**(QueueableContext context) {        // awesome code here    }} One of the best features of Queueable Apex is job chaining. In Queueable Apex following needs to be taken care – - The execution of a queued job counts once against the [shared limit for asynchronous Apex method executions](https://developer.salesforce.com/docs/atlas.en-us.220.0.apexcode.meta/apexcode/apex_gov_limits.htm#asyncExecutionLimit). - You can add up to 50 jobs to the queue with System.enqueueJob in a single transaction. - When chaining jobs, you can add only one job from an executing job with System.enqueueJob, which means that only one child job can exist for each parent queueable job. Starting multiple child jobs from the same queueable job is a no-no. - No limit is enforced on the depth of chained jobs, which means that you can chain one job to another job and repeat this process with each new child job to link it to a new child job. However, for Developer Edition and Trial orgs, the maximum stack depth for chained jobs is 5, which means that you can chain jobs four times and the maximum number of jobs in the chain is 5, including the initial parent queueable job. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Skyvva Formula Title: 2. How use conversion table as mapping formula? Slug: 2-how-use-conversion-table-as-mapping-formula URL: https://help.skyvva.com/#article/2-how-use-conversion-table-as-mapping-formula ================================================================================ # 2. How use conversion table as mapping formula? Learning Objective: After completing this unit, you’ll be able to: - Describe what is the conversion table. - Comfortably use the conversion table as a mapping formula. **Introduction** Conversion functions are used to convert Skyvva data elements and variables from one type to another. Here we required to convert a value from an ID to another ID. Once the conversion table is defined then the value can be read using the vlookup from SKYvva mapping. **What is conversion?** conversion refers to either implicitly or explicitly changing a value from one data type storage format to another. **Conversion Table** is something which system creates the active version of the table in the database and it is maintained by the user.  Skyvva promotes the user to define the conversion rule using a customer setting. **Why do we need to use the conversion table as a mapping formula?** To convert a value from an ID to another ID user has to define the conversion rule using a customer setting.  For example,  from SAP the country code is 2 digits like DE but in Salesforce it is a full name like German. Therefore we need to convert DE to Germany. So to convert this value from DE to Germany we required this feature. **Pre-requisite:** we should have a salesforce org with Skyvva product. Create integration in your organization. **How to use the conversion table as a mapping formula?** Follow the given step to use the conversion table as mapping formula: **Step1: Create custom setting in your salesforce organization.** 1. Go to Setup. 2. Click on Home =>search for 'Custom Code' in quick find box =>  click on Custom Settings. ![](../images/2019/08/Conv12.png) 3. Click on the NEW button. 4. Click List of Setting Type field. ![](../images/2019/08/Conv1.png) 5. Click the New button to Create Fields ![](../images/2019/08/Conv2.png) ![](../images/2019/08/Conv3.png) ![](../images/2019/08/conv4-1.png) ![](../images/2019/08/Conv5.png) 6. Click the Manage button. -> click the New button to create Data. It navigates to: ![](../images/2019/08/Conv6.png) **Step2: Configuration on SKYVVA IntegrationCloud** 1. Create Integration 2. Create Inbound Interface 3. Do mapping ![](../images/2019/08/Conv7.png) 4. Add VLOOKUP formula : VLOOKUP(CurrencySetting__c, Value__c, Name, "DE")  Note that all fields for Formula must be taken from Custom settings. ![](../images/2019/08/conv8.png) **Step3:** We can call data with  SoapUI, Agent or Manual Load. Here we used SoapUI to call data from SoapUI to Salesforce. 1. Open SoapUI application and define data payload. Give a call to salesforce as shown in the screenshot: ![](../images/2019/08/Conv9.png) 2. We can check the result on the message board. Here is the result data in message monitoring after the call date from SoapUI. ![](../images/2019/08/Conv10.png) 3. Value is converted from DE to Germany. Here is **Germany's** value in record detail that returns from DE. ![](../images/2019/08/Conv11.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is the InterfaceExecution Scheduler and when to use it? Title: 1. What is the InterfaceExecution Scheduler and when to use it? Slug: what-is-the-interfaceexecution-scheuler-and-when-to-use-it URL: https://help.skyvva.com/#article/what-is-the-interfaceexecution-scheuler-and-when-to-use-it ================================================================================ # 1. What is the InterfaceExecution Scheduler and when to use it? **Learning Objectives:- ** #### This unit describes:- - What is the Interface execution scheduler? - When to use it? #### Introduction:- In this chapter, you will learn about the "Interface execution scheduler". The new scheduler "Interface Execution Scheduler" is only used with the outbound interface and is generated automatically for any outbound interface inside an integration. The scheduler uses the method invokeCallout2() to execute the outbound interface. #### Interface Execution Scheduler? This scheduler is only used with the outbound interface and is generated automatically for any outbound interface inside an integration. It uses the SOQL in the field "SOQL Query for filter sObject". In this field, the user can write the SOQL statement which filter sObject to be passed on the method invokeCallout2(). The scheduler uses the method invokeCallout2() to execute the outbound interface. If the SOQL is not powerful enough to solve the requirement of a customer then they can use apex class to write their own logic for data selection. Then the flag "Use Apex Class" has to be set and in the field "Apex Class for Filter sObject" an apex class has to be specified. #### How to use it? **We can see 2 Cases:-** **Case 1:-**  Callout data to SAP with SOQL Query to filter sObject by using InterfaceExecution schedule processing. **Case 2:-  **CallOut data by using apex class for filter sObject. #### Configuration for Interface Execution Scheduler:- **Pre-Requisite:-** - Create Integration. - Create SFDC2SAPPI Adapter. - Create a Remote Site setting. #### Configuration For Case 1:- #### Create Inbound Interface:- - Do Mapping as shown below and save it. - In this inbound interface, we need to use the Id as the external Id. This Id is needed to update the record id which was found by the filter query SOQL. If we don't use the Id field of the sObject it will not work. ![](../images/2019/09/ies.png) #### Create Outbound Interface:- - **Select Operation type- ** Query/ PullQuery. - **Processing mode-** Asynchronous. - **Select Outbound Adapter.** - **In Section "SOQL Query for filter sObject"** - **Filter Query****:- **SELECT Id FROM Account WHERE BillingCity = 'PhnomPenh' AND SAP_Sales_Org__c = " - **Interface to change condition:- **Enter Inbound Interface ID. - **In section "SOQL Query to select sObject data" or by using "Query Editor" we can write the query:-** SELECT Id,BillingCity,BillingCountry,Name,SAP_Sales_Org__c FROM Account. ![](../images/2019/09/ies2.png) - **Do Mapping as shown below.** ![](../images/2019/09/ies1.png) - On the Integration, page Select the "Scheduler" tab. - Check the section "Scheduler Per interface". - Run the "Interface execution Scheduler" as shown in the given picture below. ![](../images/2019/09/ies3.png) #### Check Result on Message Monitoring For Case 1 once InterfaceExecution scheduler processed:- ![](../images/2019/09/ies4.png) #### Configuration For Case 2:- - Configuration for the inbound interface will be the same as case 1. - Configuration for the outbound interface is given below. - Section "SOQL Query for filter sObject" will automatically generate by mapping. - Check the box of Use the apex class. - Interface to change condition:- Enter Inbound Interface ID. - Create a custom apex class with the code given below:- [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]Global with sharing class InterfaceCustomClass implements skyvvasolutions.CustomInterfaceObjectCallout { Global map getMapObject(){ map ActMap = new map([SELECT Id,BillingCity,BillingCountry,Name,SAP_Sales_Org__c FROM Account where BillingCity='PhnomPenh' AND SAP_Sales_Org__c ='']); system.debug(ActMap); return ActMap; } }[/aux_code] ![](../images/2019/09/ies7.png) 5. Fill the details as shown below in the picture. ![](../images/2019/09/ies6.png) #### Run the scheduler:- ![](../images/2019/09/ies3.png) #### Check Result on Message Monitoring For Case 2 once InterfaceExecution scheduler processed:- ![](../images/2019/09/ies8-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is the mode By-pass the message layer and when to use it? Title: 1. What is the mode By-pass the message layer and when to use it? Slug: what-is-the-mode-by-pass-the-message-layer-and-when-to-use-it URL: https://help.skyvva.com/#article/what-is-the-mode-by-pass-the-message-layer-and-when-to-use-it ================================================================================ # 1. What is the mode By-pass the message layer and when to use it? Learning Objective: After completing this unit, you’ll be able to: - Describe What is the mode By-pass the message layer. - Comfortably use By-pass the message layer mode. #### Introduction We have the flag: 'Don't persist message' to delete the message again after the processing. When the flag 'by-pass Message Layer' is checked then even failed message is not created. This will help to spee up processing. #### What is By-pass the message layer mode? The new flag is 'By-passing message layer' is be used for all e.g. inbound and outbound message processing and with all mode. It doesn't depend on the mode anymore if it is synchronous or asynchronous. If the user uses this flag then the message processing takes place only in the memory and not database operation is done with the massage table.  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. [![](../images/2019/09/msg_Layer.png)](../images/2019/09/msg_Layer.png) #### Why we add By-pass the message layer mode? Message Layer redesign to reduce data storage consumption. We have the flag: 'Don't persist message' to delete the message again after the processing. The problem is that we have created the message in the first step and after processing it we delete it again from the database. Thus we needed two database operation. This has a bad impact of the database record which still kept in the Salesforce database center even we have hard-deleted them from apex layer. When the flag 'by-pass Message Layer' is checked then even failed message is not created. Also It will not create a message in the database. It will dominate the interface mode. #### Advantage Some customer criticizes our solution that we use data storage from their Org. Unlike the API (soap, rest) which is just the api call to CRUD the sObject the only storage they need is the storage to create the sObject. There is no other data storage which is needed. With this flag, we want to provide such an option as well and thus we can save that we behave the same way like an API. But we have more functionality e.g. our step with workflow and mapping which add more functionality to the message processing. Our processing can do some more logic e.g. workflow and mapping before it does the posting e.g. CRUD like the normal API. This we have workflow+mapping+CRUD. The api has the only CRUD. This is our advantage against the standard API but doesn't use the data storage. But we have the flexibility to by-pass or still use the message layer. When we use the message layer then we can still have monitoring and reprocessing feature. But when due to data storage shortage customer cannot afford to use the data storage then we have to by-pass and renounce the benefits with monitor + reprocessing. But we still have workflow + mapping + alerting. #### Dis-Advantage The disadvantage is that we lose the message monitoring because there are not message anymore created in our massage table. #### How to use By-pass the message layer mode? Step 1: Create Integration. [![](../images/2019/09/msg_Layer1.png)![](../images/2019/09/msg_Layer1.png)](../images/2019/09/msg_Layer1.png) Step 2: Create Inbound Interface. (Source Name: Account, Status: Deployed, Operation Type: Upsert) [![](../images/2019/09/msg_Layer2.png)![](../images/2019/09/msg_Layer2.png)](../images/2019/09/msg_Layer2.png) Step 3: check By-pass the message layer check box. - Go to Information section. - scroll down the page to "By-pass the message layer" check box. [![](../images/2019/09/msg_Layer3.png)![](../images/2019/09/msg_Layer3.png)](../images/2019/09/msg_Layer3.png) Step 4:  Changing inbound process mode: Go to interface detail => Inbound Posting Behavior - Synchronous: None (is default value:Syn.), Immediately - Asynchronous: Future Apex, Queueable Apex, Batch Apex [![](../images/2019/09/msg_Layer4.png)![](../images/2019/09/msg_Layer4.png)](../images/2019/09/msg_Layer4.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]- Future Apex => process as Future job and we can see it call Apex class IServices and Apex method reprocessAsynch - Queueable Apex => process as Queueable job and we can see it call Apex class InboundPostingBehaviorQueue - Batch Apex => process as Batch Apex job and we can see it call Apex class IServicesBatchV2[/su_box] **Case** **Don’t Persist** **Message** **By Passing** **Message checked** **Interface mode** **Description** *Use By passing message flag only* 1 Yes Synchronous (*None, Immediately*) No message created. We can only see record of sobject created on salesforce 2 Yes *Batch Apex* No message created. We can only see record of sobject created on salesforce 3 Yes *Queueable Apex* No message created. We can only see record of sobject created on salesforce 4 Yes *Future Apex* No message created. And no record create. *Use both flag*: *By passing message flag and Don’t persist message* 5 Yes Yes Synchronous (*None, Immediately*) No message created. We can only see record of sobject created on salesforce 6 ** ** Yes ** ** Yes ** ** *Batch Apex* No message created. We can only see record of sobject created on salesforce 7 Yes Yes *Queueable Apex* No message created. We can only see record of sobject created on salesforce 8 Yes Yes *Future Apex* No message created. And no record create. *Use Don’t persist message flag only* 9 ** ** Yes Synchronous (*None, Immediately*) No message created. We can only see failed message or pending message on monitoring 10 ** ** ** ** Yes ** ** ** ** *Batch Apex* Message create then it delete from database if it complete and We can see failed message or pending message on monitoring. 11 ** ** ** ** Yes ** ** ** ** *Queueable Apex* Message create then it delete from database if it complete and We can see failed message or pending message on monitoring. 12 ** ** ** ** Yes ** ** ** ** *Future Apex* Message create then it delete from database if it complete and We can see failed message or pending message on monitoring. *No check any flag* 13 Synchronous (*None, Immediately*) Message create normally: complete, failed, pending. We can see these message on monitoring. 14 ** ** *Batch Apex* Message create normally: complete, failed, pending. We can see these message on monitoring. 15 ** ** *Queueable Apex* Message create normally: complete, failed, pending. We can see these message on monitoring. 16 ** ** *Future Apex* Message create normally: complete, failed, pending. We can see these message on monitoring. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to publish platform event using the inbound interface? Title: 1. How to publish platform event using the inbound interface? Slug: how-to-publish-platform-event-using-the-inbound-interface URL: https://help.skyvva.com/#article/how-to-publish-platform-event-using-the-inbound-interface ================================================================================ # 1. How to publish platform event using the inbound interface? **Learning Objectives:-** **This unit describes:-** - How to publish platform event using the inbound interface? #### Introduction:- - Salesforce platform event provides an event-bus for streaming and integration using event-driven publish/subscribe architecture. Creating an event can be done using the inbound or outbound interface. - With the inbound interface, we get data from the outside and with this data, we can create an event into the Salesforce bus. - Platform events enable developers to deliver secure, scalable, and customizable event notifications within the Salesforce platform or from external sources. Platform events are based on a publish-subscribe architecture. - We added new functionality to create and consume platform event and we need to see what and which event is on the event bus. - In Skyvva we can enrich the event data with mapping and process the data after we have mapped the event/message. - If the customer doesn't have Skyvva he needs to do all the mapping and transformation using Apex code in the trigger. - Hence these are the added value with Skyvva. So in this tutorial, you will get to know How to publish platform event using the inbound interface? #### How to Publish Platform event using Inbound interface? **Steps are given below:-** #### 1. Create a Platform event:- - Go to Set Up. - Search Platform Event in the quick find box. - Click on the "New" button. - Fill the required fields. - Click on the "Save" button. *The pictures are given below for a reference which covers all the above points:- [![](../images/2019/09/event.png)](../images/2019/09/event.png) [![](../images/2019/09/event1-1.png)](../images/2019/09/event1-1.png) #### 2. Create Custom Fields:- - Click on the "New" button in the Custom Fields & Relationships section. [![](../images/2019/09/event2.png)](../images/2019/09/event2.png) - The New button navigates to the page shown in the picture given below. - Click on the "Text" and then click on the "Next" button. [![](../images/2019/09/event3.png)](../images/2019/09/event3.png) - Create a Custom field (Name). - Fill the required fields. - Click on the "Save" button. [![](../images/2019/09/event4.png)](../images/2019/09/event4.png) ***Repeat the same process to create the AccountNumber field.** #### 3. Create Trigger: - Click on the "New" button in the "Trigger" section. [![](../images/2019/09/event5.png)](../images/2019/09/event5.png) - Use the given Code:- [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] trigger trgPlatformAccountEvent on Platform_Event__e (after insert) { List lst = new List(); for(Platform_Event__e evt: Trigger.New) { Account acc = new Account(); acc.Name = evt.Name__c + 'evt' ; acc.AccountNumber = evt.AccountNumber__c + 'evt' ; lst.add(acc); } insert lst; } [/aux_code] [![](../images/2019/09/event6.png)](../images/2019/09/event6.png) #### 4. Create Integration:- [![](../images/2019/09/event7.png)](../images/2019/09/event7.png) #### 5. Create Interface:- - Select Platform event Object name in "Source/Target Name". - Select Operation type- "Publish Salesforce Event". - Select Interface Type- "Event-Type". [![](../images/2019/09/event8.png)](../images/2019/09/event8.png) - Do Mapping as shown below in the picture. - Click on the "Save" button. [![](../images/2019/09/event9.png)](../images/2019/09/event9.png) #### 6. Upload data Manually:- - Go to an Integration detail page. - Upload CSV file. - Push data to message board [![](../images/2019/09/event10.png)](../images/2019/09/event10.png) #### 7. Check the result in Message Monitoring:- [![](../images/2019/09/event11.png)](../images/2019/09/event11.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is the difference between normal and chained interface? Title: 1. What is the difference between normal and chained interface? Slug: what-is-the-difference-between-normal-and-chained-interface URL: https://help.skyvva.com/#article/what-is-the-difference-between-normal-and-chained-interface ================================================================================ # 1. What is the difference between normal and chained interface? **Learning Objectives:-** This unit describes:- - About the Normal Interface? - About the Chained Interface? - And the difference between Normal and Chained Interface? - Recommendations when to use which model. #### Introduction:- This tutorial is to explain the two different interfaces we can model with SKYVVA. These are "Normal interface" and "chained Interface" The normal interface that can handle flat data structure and thus post into a single sObject. But real business data is not always simple and flat but contains hierarchical data as for example a sales order consisting of a header, item and schedule line. Such hierarchical data can be handled using our chained interface concept. #### Normal Interface:- The normal interface is used where the need is to handle flat data structure and thus post into a single sObject. So its normal form of creating an interface. Steps for creating Normal Interface which we can model with SKYVVA is given below:- - Create Integration. [![](../images/2019/10/Normal.png)](../images/2019/10/Normal.png) - Create Interface [![](../images/2019/10/Normal1.png)](../images/2019/10/Normal1.png) - Upload File by choosing the option of "Choose File" and then save it #### - Do Mapping as shown below and save it:- #### - Check the Normal Interface is created. #### #### Chained Interface:- The Chained interface is needed when the data is hierarchical, at this time we cannot use normal interface. Mostly in real business, data is not always simple and flat, so the chained interface is having a very important role. The chained interface can be created Manually or generated Automatically. So when we use Tree mapping in that case chained interface generated automatically. On the other hand, we can create manually by moving in a related list. **The two ways of creating Chained Interface are given below:-** - Creating Chained Interface manually. - Generating Automatically Chained Interface. #### 1. Creating Chained Interface manually:- Steps for creating IChained manually is given below:- - Create Integration. - Create 2 Interfaces. (Account and Contact). - Create IChained Interface as shown given below:- - **Click on "related":-** [ ![](../images/2019/10/manually3.png)](../images/2019/10/manually3.png) - **Click on "New IChained Interface":-** [![](../images/2019/10/manually.png)](../images/2019/10/manually.png) - **Create IChained Interface as shown below:-** [![](../images/2019/10/manually1.png)](../images/2019/10/manually1.png) - **Check the created IChained below:-** [![](../images/2019/10/manually2.png)](../images/2019/10/manually2.png) #### 2. Generating Automatically Chained Interface:- **Steps for generating IChained Automatically is given below:-** - Create Metadata Provider. - Create Istructure Repository. - Create a Message Type. - Create Integration. - Create Interfaces(Account, Contact). - Add MetaData Provider, Istructure Repository, Message Type as show below:- [![](../images/2019/10/manually4.png)](../images/2019/10/manually4.png) - Do Mapping and save it as shown below:- [![](../images/2019/10/manually5-1.png)](../images/2019/10/manually5-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We also need to drag the source object and drop it to the target  object[/su_box] - **Check the IChained which is generated Automatically below:-** [![](../images/2019/10/manually6.png)](../images/2019/10/manually6.png) #### Difference between the Normal and Chained Interface: The main difference between the normal and chained interface is that Normal interfaced can handle only flat structure data while Chained interface can handle hierarchical data. #### Recommendations:- - When we will have simple flat data structure in this case we will use Normal Interface. - When we will have a Hierarchical data structure, in this case, we will use the Chained Interface. - In Chained interface, we have two options:- - Creating Chained Interface manually is good but Generating Automatically Chained Interface is best. - Using Tree mapping for Generating Automatically Chained Interface is the best option. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to subscribe Salesforce Platform Event created by SKYVVA inbound interface? Title: 1. How to subscribe Salesforce Platform Event created by SKYVVA inbound interface? Slug: how-to-use-the-salesforce-cdc-change-event-to-send-data-out-with-the-skyvva-api-2 URL: https://help.skyvva.com/#article/how-to-use-the-salesforce-cdc-change-event-to-send-data-out-with-the-skyvva-api-2 ================================================================================ # 1. How to subscribe Salesforce Platform Event created by SKYVVA inbound interface? Learning Objective: After completing this unit, you’ll be able to: - Describe What is apex trigger and platform event. - Comfortably use the apex trigger to consume the platform event? #### Introduction To subscribe platform event we can use the apex trigger. We use generic method to execute the interface either it is an inbound or outbound interface. Execution of interface using apex trigger is is a Salesforce solution. But with Skyvva we can enrich the event data with mapping and process the data after we have mapped the event/message. Here It is the same way as we process an incoming message through the skyvva processing pipeline e.g. workflow, mapping, processing. #### Platform event **Platform events** enable developers to deliver secure, scalable, and customizable **event** notifications within the **Salesforce platform** or from external sources. **Platform events** are based on a publish-subscribe architecture. #### How Platform event work with inbound processing? - we create a platform event with our inbound interface with the new version. - We used API to execute inbound interface. With this API we can execute an inbound or outbound interface in a synchronous or asynchronous way. We have to provide this API in two versions e.g. REST API and internal apex method. The REST API is used by external REST client and the internal API is used by apex class, Flow or Process. With this API or method, we should be able to execute both inbound and outbound interface unlike our existing method 'invokeCalloutX()' where we can use only wit outbound interface. #### How to create the platform event SKYVVA feature? We can create a platform event without programming with SKYVVA feature. Creating an event can be done using the inbound or outbound interface. With the inbound interface, we get data from the outside and with this data, we can create an event either into the Salesforce bus. Follow the given steps to create platform event with SKYVVA: **Step1: Create platform Event:** - Go to Set Up. - Search for Platform Event in quick find box. - Click on new button. - Fill the required fields. - And click on the Save button. [![](../images/2019/10/apextrigger_1-3.png)](../images/2019/10/apextrigger_1-3.png) **Step2: Create custom Fields** - Go to Custom fields and Relationship section. - Click on new button. [![](../images/2019/10/apextrigger_2-1.png)](../images/2019/10/apextrigger_2-1.png) - New button navigate to: [![](../images/2019/10/apextrigger_3.png)](../images/2019/10/apextrigger_3.png) - Click on next button. - Create two custom fields. AccountNumber and Name. [![](../images/2019/10/apextrigger_4.png)](../images/2019/10/apextrigger_4.png) Repeat same process to create Name field. **Step3: Create Integration** [![](../images/2019/10/apextrigger_10.png)](../images/2019/10/apextrigger_10.png) **Step4: Create interface. ** We can execute inbound interface with our new API i,e Event Interface. - source/target name: select Platform Event name. here platform event name is Platform_Event_Account_e. - Operation Type: It should be Public salesforce Event. - Interface Type: Event Interface [![](../images/2019/10/apextrigger_11.png)](../images/2019/10/apextrigger_11.png) **Step5: Do mapping** [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_40_21.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_40_21.png) **Step6: Upload data manually.** - Go to Integration detail page. - Upload CSV file. - Push data to message board. [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_51_53.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_51_53.png) **Step7: Search result on message Monitoring:** - Go to Message Board - Select Interface and search [![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_52_40.png)](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-03-19_52_40.png) #### How to consume the platform event created through Skyvva? We can to consume the event by using : - apex trigger - process builder process - Salesforce flow - External Client using CometD protocol #### External Client using CometD protocol User can write themselves a cometD. They can use any supported programming language from Salesforce. #### Apex Trigger: A **trigger** is an **Apex** script that executes before or after specific data manipulation language (DML) events occur, such as before object records are inserted into the database, or after records have been deleted. **Triggers** enable to perform custom actions before or after changes to Salesforce records. **How to create Trigger:** - Go to created platform event - Go to trigger section - Click on New button. [![](../images/2019/10/apextrigger_5.png)](../images/2019/10/apextrigger_5.png) Use the given Code to apex trigger: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] trigger trgPlatformAccountEvent on Platform_Event_Account__e (after insert) { List lst = new List(); for(Platform_Event_Account__e evt: Trigger.New) { Account acc = new Account(); acc.Name = evt.Name__c + 'evt' ; acc.AccountNumber = evt.AccountNumber__c + 'evt' ; lst.add(acc); } insert lst; }[/aux_code] [![](../images/2019/10/apextrigger_7.png)](../images/2019/10/apextrigger_7.png) Make sure Apex Identifier should be correct. For example 'evt'. if you copy code from browser then it will take char in HTML . when the apex trigger is used to consume the platform event we can check created record and its data. All the custom fields which we added in platform event are shows with 'evt'. For example AccountNumber+evt, name+evt. Follow the steps to show How to use the apex trigger to consume the platform event? Step1: Go to created integration-> Open your Interface -> go to manual Load -> Uplaod data ![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-09-12_27_31.png) Go to message board -> Search for result; ![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-09-12_38_41.png) step 3: Search created record in developer console: - Go to set up - Open developer Console - Apply query on Account Object ![](../images/2019/10/apextrigger_13.png) You can see the data with evt. #### Process builder: Process Builder is a Salesforce’s point-and-click tool that lets you easily automate if/then business processes and see a graphical representation of your process as you build. Every process consists of a trigger, at least one criteria node, and at least one action. You can configure immediate actions or schedule actions to be executed at a specific time. Here we are using process builder to consume platform event. **Follow the given steps to show how process builder to consume platform event.** Here we are using same Integration and interface. we have to deactivate apex trigger. Step 1: Create process using process builder. - Go to set up. - search for Process Builder in quick search box. - Go to process Builder. ![](../images/2018/10/OutboundProcessing_3.png) - Click On new button. - Enter process name which can recognise your process. - Select Process status as : A platform Event message is received. - Click on save button. ![](../images/2019/10/extra.png) - Add the Object and Specify when to start the Process. 1. Select Platform Event 2. Choose object as Account 3. Add Matching condition where I put this condition on Account name field.;- ![](../images/2019/10/Process-builder2.png) - Add the Criteria to define it for Action Group: 1. Name the Criteria 2. Choose No Criteria option 3. click on Save button . ![](../images/2019/10/Process-builder3.png) - Add the actions to execute when the criteria are met by: 1. Select the Action Type: Create Record 2. Give the Action Name: Account Creation 3. Select Record type: Account - Set Field Values as per data and platform event reference ![](../images/2019/10/Process-builder4.png) To be able to execute process builder, just click on Activate button. ![](../images/2019/10/Process-builder5.png) step2: manually Load data - Go to Integration -> details. - click on Manual Load. - Upload data Manually. - select uploaded record records and push to message board. ![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-09-18_06_05.png) **Step 3: Monitor the result on message board** ![](../images/2019/10/screencapture-hardik01-dev-ed-lightning-force-one-one-app-2019-10-09-12_38_41-1.png) As this record are created by process builder consuming platform event we can't see details of created record. we can't get Related to" link here. we can check data in dev console. **Step 4: Search created record in developer console:** - Go to set up - Open developer Console - Apply query on Account Object ![](../images/2019/10/Process-builder6.png) Note: The process runs asynchronously under the Automated Process entity. As a result, there can be a delay between when an event message is published and when the process evaluates the event message #### Flow ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use the operation query and transform the result set using the mapping tool? Title: 1. How to use the operation query and transform the result set using the mapping tool? Slug: how-to-use-the-operation-query-and-transform-the-result-set-using-the-mapping-tool URL: https://help.skyvva.com/#article/how-to-use-the-operation-query-and-transform-the-result-set-using-the-mapping-tool ================================================================================ # 1. How to use the operation query and transform the result set using the mapping tool? **Learning Objectives:-** **This unit describes:-** - What is Operation Query? - How to use it? #### What is Operation Query? Query means querying data from salesforce from a client by using Soap UI or postman and when we use postman we use rest version and for soap, we use search service API. Querying data is using SOQL statement, We can write SOQL by entering into the outbound interface or using the query editor and this way we can generate SOQL statements in our outbound interface. It gives the response as a JSON to the client if we call using Soap UI or by the postman, we can put different conditions or requests. But the main reason or requirement is query data. #### We have 2 possibilities for query operation:- 1. Query operation without mapping will give raw data as a result. 2. Query operation with mapping will give enhanced data as a result. ![](../images/2019/10/image_2019_10_23T21_23_37_321Z.png) #### Operation Query with mapping is explained below:- **How does query works?** The procedure is given below:- **        Pre-Requisite :-** - Create Metadeta provider. - Create Istructure Repository. - Create Message type e.g AccountMT is the parent of ContactMT. - Create Integration. - **Create Outbound Interface then select Status is Deployed and Operation Type with Query (As shown in the picture given below):-** ![](../images/2019/07/query.png) - **Add Metadata Provider, Istructure Repository, Message Type for interface(As shown in the picture given below):-** ![](../images/2019/07/query1.png) - **Do tree mapping field Salesforce object map with Message Type step by step with the level (As shown in the picture given below):-** [![](../images/2019/10/q.png)](../images/2019/10/q.png) - **Check the select statement Query editor as shown below:-** - **Navigate to Postman application.** - **Create a new request and a new folder.** - **Change method GET to POST and enter Salesforce classic URL** **with /services/apexrest/skyvvasolutions/SearchService (shown in the picture given in point 8).** - **Click Body tab => click raw tab => select JSON (application/json) in picklist => Create rest body** **The body is shown below in the picture.** ``` { "INTEGRATIONID" : "xxxxxxxxxxxx", "INTERFACENAME" : "xxxxxxxxxxxx" } ``` - **Click Header tab => enter Authorization for Key cell => create Bearer with sessionId.** **(As shown in the picture given below).** [![](../images/2019/10/q1.png)](../images/2019/10/q1.png) - **Click Send button to get response data.** - **Here is the result of the responded JSON data.** [![](../images/2019/10/q2.png)](../images/2019/10/q2.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Different ways to add custom logic for the inbound processing. Title: 68. Different ways to add custom logic for the inbound processing. Slug: 68-different-ways-to-add-custom-logic-for-the-inbound-processing URL: https://help.skyvva.com/#article/68-different-ways-to-add-custom-logic-for-the-inbound-processing ================================================================================ # 68. Different ways to add custom logic for the inbound processing. Learning Objective: After completing this unit, you’ll be able to: - Describe custom apex class. - Comfortably use the apex class to implement the custom processing integration. #### Introduction There are different possibilities for inbound custom processing. To process structured, unstructured,raw data we can use custom processing. #### What are the different way to use custom processing? Apex class is used for custom processing. There are four different ways to inbound custom processing: - **Custom Processing Apex Class with old way.** - **Pass raw data to custom class for processing.** - **Operation type - apex class** - **Custom Processing with very flexible way to add custom logic at any place.** #### Basic Processing Steps: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Message   ->  Workflow   ->   Mapping   ->  Operation** [/aux_code] **In Custom Processing with old way: ** we always response to give back the message type structure which contain the Salesforce Id and SKYVVA message Id. Customer need to write the complete code for all processing steps **Pass raw data to custom class for processing: **When we get unstructured data which are not xml, csv or json at that time we need to create custom class . The data can be raw text and do not follow any format. Therefore we cannot parse and create messages. In this case, we pass the raw data to the customer class and the custom class will do everything itself e.g. parse the data, create and post messages. **Operation type - apex class: **In new version we added new Operation type = Apex class. which is to execute the posting processing after the mapping step **Custom Processing with new way: **This replace the old way completely and we are very flexible to add custom logic at any place. Customer has the possibility to plug-in between the step or replace the different SKYVVA step. **Difference between processing ways:** - In old way, we can process structured data whereas in pass raw data we can process Boolean, unstructured, word data. - In old way, we can map the field (it is not mandatory) whereas in pass raw data we can't map the fields as it has no structured data. - In custom class in old way need t have code for all step himself where in operation type - apex class, need t have code only for operation step. for example replace our standard CRUD operation by apex class. - Custom processing in v3 is very flexible. This replaced the old way completely and we are very flexible to add custom logic at any place. #### 1. Inbound custom processing implementation with apex class To extend some functions of integrate inbound processing extends ***skyvvasolutions.IProcessCustomAbs*** and implements ***skyvvasolutions.GisOdbgIntegration.IProcess*** Methods are order process integration of custom processing and could be overridden if required - void init(String interfaceId) – Select interface based on interfaceId, It can be optional. - void doMap(skyvvasolutions.IServicesUtil.IMessageResult iResult) – Manage apex mapping data available in iResult which order list of skvva messages and list Map data and handling logic could be applied here. - List upsert2() – DML operation, upert business record and update status of message based on result of upsert business record (ie. Upsert Account). **follow the given steps to use apex class:** **Step1**: Create apex class - Go to set up-> Search for apex class in quick search box-> Click on new button [su_box title="Warning" box_color="#F7DC6F" title_color="#000000"]“Custom Processing Class”: provide full name of your custom processing class (including namespace if any). Format: **[namespace.]classname **eg: namespaceX.ClassX (if there is namespace in the salesforce instance) or ClassX (if no namespace)[/su_box] **Step 2**: Create Integration **Step3 : Create Interface** - Go to integration - select interface tab and click on new Interface button. - Scroll down the page to Runtime Configuration- general section. - Check custom processing flag - Select custom processing class. Here class is SKYVva_CustomIntegration ![](../images/2019/10/customprocessing5.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]“Custom Processing” checkbox: indicates if the interface uses the custom-processing implementation[/su_box] **Step4** : Do mapping. **Step5**: upload data manually **Step6**: Check result on message board You can not see related to link here to check detail as this interface is used custom processing. **Step7: **Check uploaded record and its details on dev console. ![](../images/2019/10/customprocessing6-1.png) #### 2. Pass raw data to custom class for processing with custom code When we get unstructured data which are not xml, csv or json at that time we need to create custom class . The data can be raw text and do not follow any format. Therefore we cannot parse and create messages. In this case, we pass the raw data to the customer class and the custom class will do everything itself e.g. parse the data, create and post messages. The unstructured data are for example binary data, windows ini file etc. **Step1**: Create Integration **Step2: **Create Interface - In Runtime Configuration Section of Interface page we need to select two things which are shown in picture given below :- - We need to tick Custom Processing. - And need to enter Custom Processing class. ![](../images/2019/07/raw2.png) **Step3. Create custom class** - ** The custom code is given below to pass raw data to custom class:-** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **public with sharing class RawDataCustomProcessing extends AbstractIntegrationV3 { public override String messageProcessing(){ System.debug('>>>>>>RawDataCustomProcessing>messageProcessing>dtoRequestBody: '+dtoRequestBody); //do raw data in dtoRequestBody return 'ok'; } public override IServicesUtil.IMessageResult createMessage(AbstractIntegrationV3.DtoRequestBody dtoRequestBody, AbstractIntegrationV3.DtoStructure dtoStr){ return null; } } **[/aux_code] ### 4. Call Webservice: ![](../images/2019/07/raw3.png) - After call Webservice, it will pass raw data to messageProcessing method. - After that, user can use this raw data to do with their complex logic that they want. #### 3. How to use Operation type = Apex class to custom processing ? In Apex, user can define top-level classes (also called outer classes) as well as inner classes, that is, a class defined within another class. You can only have inner classes one level deep. **follow the given steps to use apex class:** **Step 1: **Create Integration **Step 2**: Create interface - Select operation Type: Apex class from drop down -> Save **Step 3:** Create this class is used for Apex Custom class on Interface and Click on wrench icon and click on Setup. - Create this class is used for testing operation type Apex - Go to Interface Detail Page -> Select TestCustomApexClass -> Save - Scroll down to Mapping Section -> Select Ext ID -> Save **Step4: Upload data manually.** - Go to Integration Detail Page -> Select Manual Load - Select all records -> Press Push button - Go to Message Board -> Search for result - Scroll down to Message section - See status Green Flag which means user inbound apex class operation successfully done - All records are integrated with Salesforce Org. ![](../images/2019/06/ApexClass14.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use CDC Processing? Title: 3. How to use the Salesforce CDC change event to send data out with the SKYVVA API? Slug: 3-how-to-use-the-salesforce-cdc-change-event-to-send-data-out-with-the-skyvva-api URL: https://help.skyvva.com/#article/3-how-to-use-the-salesforce-cdc-change-event-to-send-data-out-with-the-skyvva-api ================================================================================ # 3. How to use the Salesforce CDC change event to send data out with the SKYVVA API? **Learning Objectives:-** **This unit describes:-** - What is the CDC change event? - How to use it? - What is the advantage of using it? #### Introduction:- In this unit, I will show you how we can use Change Events to synchronize changes to the Salesforce records in your ERP(Enterprise resource planning) system. You can subscribe to change events the same way you subscribe to other events, like PushTopic events or platform events. You can use CometD or Apex triggers. CometD is a messaging library that enables listening to events through long polling and simulates push technology.  Even we can consume the CDC change event using a process builder. #### Change Data Capture:- A Change Data Capture event, or change event, is a notification that Salesforce sends when a change to a Salesforce record occurs as part of a create, update, delete, or undelete operation. The notification includes all new and changed fields and header fields that contain information about the change. So we use salesforce CDC when we needed a real-time notification. #### So here we will learn How to Consume the change events using an apex trigger and do local action e.g. update an account:- **How to use it?** **Follow the given steps:-** **Step 1:- **Subscribing to platform events:- - Set up debug logs for event Subscriptions. 1. From Setup, enter Debug Logs in the Quick Find box, then click Debug Logs. 2. Click New. 3. For Traced Entity Type, select Automated Process. 4. Select the time period to collect logs and the debug level. 5. Click on Save. ![](../images/2019/10/change.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Using the Event PlatForm for use the Salesforce CDC change event to send data out with the skyvva API ,The user type is  Automated Process.[/su_box] **Step 2:-  **Select Object for Change data capture:- 1. From Setup, enter Change data capture in the Quick Find box. 2. Select-Object. ![](../images/2019/10/change1.png) 3. Save it. ![](../images/2019/10/change2.png) **Step 4:-** Create an Apex trigger:- - Open Developer console. - Click on File=>New=>Apex Trigger. - Enter Name and sObject as shown in the picture given below. ![](../images/2019/10/cdcEvent1.png) 4. Click on the Submit button to generate a header script. 5. After clicking on the submit button. 6. We will add the code as shown in the picture given below. ![](../images/2019/10/cdcEvent.png) **We can use this code:-** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]trigger trgTestCDC on AccountChangeEvent (after insert) { List lstId = new List(); for (AccountChangeEvent event : Trigger.New) { EventBus.ChangeEventHeader header = event.ChangeEventHeader; System.debug('Received change event for ' + header.entityName + ' for the ' + header.changeType + ' operation.'); System.debug('RecordIds: ' + header.recordIds); System.debug('Account Name: ' + event.Name); System.debug('Account Phone: ' + event.Phone); if ( header.changetype == 'UPDATE') { lstId.addAll(header.recordIds); } } }[/aux_code] #### Check the result on Debug logs:- 1. From Setup, enter Debug Logs in the Quick Find box, then click Debug Logs. 2. We can check result in debug logs. ![](../images/2019/10/cdcEvent2.png) #### #### #### #### #### #### #### #### Now you might be thinking why our chapter name is "How to use the Salesforce CDC change event to send data out with the SKYVVA API?" So here is the reason. The salesforce CDC change event to send data out with the SKYVVA API means, that we are using a combination of the real-time capability of salesforce change data capture and callout capability of SKYVVA. The callout capability of SKYVVA is best as we have different adapters that connect to many external systems for this our user doesn't need a programmer. This is the benefit of using SKYVVA invoke Callout2(). #### We provide these two modes to our user:- - Real-time with our invoke callout. The combination of the Salesforce CDC  change event and SKYVVA callout. - Batch processing with our invoke callout. Using SKYVVA CDC with SKYVVA callout. #### When to use which mode:- - If there is a lot of changes and updations it will impact the system change during real-time. Where we don't need real-time in some cases, sometimes real-time block the resources. It is a resource-consuming blocking of the connecting systems in terms of integration technology. In this case, SKYVVA CDC with SKYVVA callout is the best option, because of its scheduler. - The combination of Salesforce CDC and SKYVVA callout is used when we want an updated record in real-time. As the callout capability of SKYVVA is best as we have different adapters that connect to many external systems for this our user doesn't need a programmer. This is the benefit of using SKYVVA invoke Callout. #### So here we will learn how to consume the event using an apex trigger and sending out data using Invoke callout2. **How to use it?** **Pre-requisite:-** - Create Integration. - Create Interface (Outbound). **Follow the given steps:-** **Step 1:- **Subscribing to platform events:- - Set up debug logs for event Subscriptions. 1. From Setup, enter Debug Logs in the Quick Find box, then click Debug Logs. 2. Click New. 3. For Traced Entity Type, select Automated Process. 4. Select the time period to collect logs and the debug level. 5. Click on Save. ![](../images/2019/10/change.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Using the Event PlatForm for use the Salesforce CDC change event to send data out with the skyvva API ,The user type is  Automated Process.[/su_box] **Step 2:-** Register Licence key for Automated Process user:- 1. From Setup, enter custom settings in the Quick Find box. 2. Click on the Manage option. ![](../images/2019/10/change5.png) 3. Click on the "NEW" button at the top. 4. Enter the SKYVVA license key in the value block. 5. Save it. ![](../images/2019/10/change6.png) **Step 3:-  **Select Object for Change data capture:- 1. From Setup, enter Change data capture in the Quick Find box. 2. Select-Object. ![](../images/2019/10/change1.png) 3. Save it. ![](../images/2019/10/change2.png) **Step 4:-** Create an Apex trigger:- - Open Developer console. - Click on File=>New=>Apex Trigger. - Enter Name and sObject as shown in the picture given below. ![](../images/2019/10/re_cdc_change_event.png) 4. Click on the Submit button to generate a header script. 5. After clicking on the submit button. 6. It will show the screen as shown in this picture given below. ![](../images/2019/10/re_cdc_change_event1.png) **Step 5:-  **Generate Trigger script by following steps given below:- - Navigate to SKYVVA Trigger tab. - Select Change Event Trigger in Trigger Type picklist. - Checkbox After insert. - Select your integration in Integration Name. - Select your Interface in Interface Name. - Select object change event in Select Object. - Select any Mode in Trigger Mode e.g. AUTO. - Click the Generate Script tab to generate script Trigger. ![](../images/2019/10/re_cdc_change_event2.png) 9. Select and copy the generated script and paste it in the apex trigger which we created in step 4. 10. Do it as shown in the picture given below. ![](../images/2019/10/re_cdc_change_event3.png) 11. Save it. #### Check the result on Message Monitoring:- ![](../images/2019/10/re_cdc_change_event4.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For trigger after delete it is working when query selection with keyword "ALL ROWS". E.g SELECT BillingCity,BillingCountry,Name,Id,Description From Account ALL ROWS[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Different ways to add custom logic for the inbound processing. Title: 68.1 How to implement custom inbound processing with apex class by old way? Slug: 68-1-how-to-implement-custom-inbound-processing-with-apex-class-by-old-way URL: https://help.skyvva.com/#article/68-1-how-to-implement-custom-inbound-processing-with-apex-class-by-old-way ================================================================================ # 68.1 How to implement custom inbound processing with apex class by old way? Learning Objective: After completing this unit, you’ll be able to: - Describe custom apex class. - Comfortably use the apex class to implement the custom processing integration. #### Introduction We can implement custom inbound processing with apex by two ways. #### what is Custom Processing Apex Class with old way? We always response to give back the message type structure which contain the Salesforce Id and SKYVVA message Id. Customer need to write the complete code for all processing steps #### Basic Processing Steps: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Message   ->  Workflow   ->   Mapping   ->  Operation** [/aux_code] #### Advantage We can the fields as we have structured data. #### Disadvantage Customer need to write the complete code for all processing all steps. #### How to implement custom inbound processing with apex class: To extend some functions of integrate inbound processing extends ***skyvvasolutions.IProcessCustomAbs*** and implements ***skyvvasolutions.GisOdbgIntegration.IProcess*** Methods are order process integration of custom processing and could be overridden if required - void init(String interfaceId) – Select interface based on interfaceId, It can be optional. - void doMap(skyvvasolutions.IServicesUtil.IMessageResult iResult) – Manage apex mapping data available in iResult which order list of skvva messages and list Map data and handling logic could be applied here. - List upsert2() – DML operation, upert business record and update status of message based on result of upsert business record (ie. Upsert Account). **follow the given steps to use apex class:** Step1: Create apex class - Go to set up - Search for apex class in quick search box - Click on new button ![](../images/2019/10/customprocessing1.png) [su_box title="Warning" box_color="#F7DC6F" title_color="#000000"]“Custom Processing Class”: provide full name of your custom processing class (including namespace if any). Format: **[namespace.]classname **eg: namespaceX.ClassX (if there is namespace in the salesforce instance) or ClassX (if no namespace)[/su_box] The bellow is example of custom processing inbound and some methods should be overridden: - **global** **override** **void** init(String interfaceId) - **global** **override** **void** doMap(skyvvasolutions.IServicesUtil.IMessageResult iResult) - **global** **override** List upsert2() Example1: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] global with sharing class SKYVVA_CustomIntegration extends skyvvasolutions.IProcessCustomAbs implements skyvvasolutions.GisOdbgIntegration.IProcess { private List lc=new List(); global override void doMap(skyvvasolutions.IServicesUtil.IMessageResult iResult){ //Assign value of param to its property inherited from the parent this.iResult=iResult; //Map data in iResult to your salesforce sObject for(integer i=0;i mapRecord =iResult.listMapRecord.get(i); System.debug('mapRecord :: ' +mapRecord); // Contact c=new Contact(); c.LastName = mapRecord.get('lastname'); lc.add(c); } } global override List upsert2(){ //upsert records Database.UpsertResult[] results=Database.upsert(lc,false); for(Integer i=0;i lines{get;set;} Map mapParentIntfMsg = new Map(); public override IServicesUtil.IMessageResult createMessage(AbstractIntegrationV3.DtoRequestBody dtoRequestBody, AbstractIntegrationV3.DtoStructure dtoStr){ AbstractIntegrationV3.DtoInterface dtoIntfStructure = getInterfaceStructure(); // custom transaction if(String.isBlank(dtoRequestBody.transactionId))dtoRequestBody.transactionId='YAML-Data-'+System.now().getTime(); // parse yaml payload to map// here using your own logic Map dataAsMap = doParse(dtoRequestBody.payload); System.debug('>>dataAsMap: '+dataAsMap); // i know exactly my data contain data node as array //{"NodeX":[{},{}]} List rootData = (List)dataAsMap.get(dtoIntfStructure.sourceObject); for (Object nodeRoot : rootData) { // create mesage from root createMsg((Map)nodeRoot,dtoIntfStructure,true,1,dtoRequestBody.transactionId,null); } return super.msgResult; } // overide create message logic public override IMessage__c invokeNewMessage( String rootId, String parentId, String transId, Boolean hasChild, Integer lv, String hPath, Boolean isRoot, Interfaces__c mInft, Map idata ){ // just using skyvva default message setting IMessage__c msg=super.invokeNewMessage(rootId,parentId,transId,hasChild,lv,hPath,isRoot,mInft,idata); msg.Name='IM#YAML-Data-'+System.now().getTime()+'---'+indexMsg; return msg; } // hierarchy message creation void createMsg(Map objectX,AbstractIntegrationV3.DtoInterface dtoIntfStructure,Boolean isRoot,Integer level,String transactionId,IMessage__c rootMsg){ Map idata = new Map(); for (String field : objectX.keySet()) { Object valueX=objectX.get(field); // ignore array or object, ingore childen datas if(valueX instanceof List || valueX instanceof Map)continue; idata.put(field,valueX+''); //string,string } // System.debug('>>createMsg>idata: '+JSON.serializePretty(idata)); // get parent message if current creation is child IMessage__c parentMsg=mapParentIntfMsg.get(dtoIntfStructure.parentIntfId); // current message, invoke create message setting IMessage__c msg = invokeNewMessage(rootMsg?.External_Id2__c,parentMsg?.External_Id2__c,transactionId,false,level,null,isRoot,super.mIntf.get(dtoIntfStructure.intfId),idata); // save parent interface to message mapParentIntfMsg.put(dtoIntfStructure.intfId,msg); // if current is root levelt then set it to children if(isRoot)rootMsg=msg; else { // mark parent and grand parent as has child rootMsg.HasChild__c=true; parentMsg.HasChild__c=true; } // create children message for(AbstractIntegrationV3.DtoInterface tmp : dtoIntfStructure.child){ // System.debug('>>createMsg>tmp.sourceObject: '+tmp.sourceObject); Object obj = objectX.get(tmp.sourceObject); if(obj==null){ // ingore case for (String field : objectX.keySet()) { // find child node if(tmp.sourceObject.equalsIgnoreCase(field)){ obj = objectX.get(field); } } } // System.debug('>>createMsg>obj: '+obj); // child message if(obj instanceof Map){ createMsg((Map)obj,tmp,false,level+1,transactionId,rootMsg); } // child message array else if(obj instanceof List){ List lstObj = (List) obj; for(Object obj1 : lstObj){ createMsg((Map)obj1,tmp,false,level+1,transactionId,rootMsg); } } } } // logic parsing raw data --------------satrt Map doParse(String yamlString){ Map yamlMap = new Map(); lines=yamlString.split('\n'); while (!lines.isEmpty()){ readByLine(lines.remove(0),yamlMap); } return yamlMap; } void readByLine(String line,Map result){ if (String.isBlank(line.trim()))return; if(!line.contains(':'))return; String[] parts = line.split(':',2); String name = parts[0].trim(); name=name.removeStart('- '); String value = parts[1].trim(); if (String.isNotBlank(value)) { result.put(name.removeStart('- '), value); } else if(!lines.isEmpty() && isElement(lines.get(0))) { Integer indexOfNextLevel=getIndexOfElement(lines.get(0)); List> children=new List>(); Map child; // read children Integer nextLvl=indexOfNextLevel; while(!lines.isEmpty() && getIndexOfElement(lines.get(0))==nextLvl){ if(isElement(lines.get(0))){ child=new Map(); children.add(child); } readByLine(lines.remove(0),child); } result.put(name,children); } } Boolean isElement(String nextLine){ return String.isNotBlank(nextLine) && nextLine.trim().startsWith('-'); } Integer getIndexOfElement(String nextLine){ Integer level = 0; while (nextLine.substring(level,level+1) == ' ' || nextLine.substring(level,level+1)=='-') { level += 1; } return level; } // logic parsing raw data --------------end---------------- } - **Copy and paste this code into the custom class. This example code will enable the reading of the data structure.** ![](../images/2019/10/Screenshot-2023-12-04-at-5.12.30-pm.png) ##### 2.4. Create Interface: ![](../images/2019/10/Screenshot-2023-12-04-at-3.26.26-pm.png) - ** In the Runtime Configuration Section of the Interface page we need to select two things which are shown in the picture given below:-** - To enable custom processing, check the 'Custom Processing' option. Once you have checked this option, you will be able to use a custom class for this interface. A custom Apex class is required to handle the specific processing for this interface. - You also need to enter the custom processing class that you have created with the logic mentioned above. - **In the Custom Processing section, you need to select the block that you want to custom** - Select 'Message Creation' on "Custom Block to replace the SKYVVA Block". This is the block that you need to customize. ![](../images/2019/10/Screenshot-2023-12-04-at-4.01.11-pm.png) ##### 2.5. Do Mapping: ![](../images/2019/10/Screenshot-2023-12-04-at-5.27.01-pm.png) ##### 2.6. Call via V4/integrate ![](../images/2019/10/Screenshot-2023-12-04-at-5.19.23-pm.png) - **After calling V4/integrate, it will read raw data and create the message.** ![](../images/2019/10/Screenshot-2023-12-04-at-5.22.58-pm.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Different ways to add custom logic for the inbound processing. Title: 68.3 How to execute the custom processing with operation type = Apex class? Slug: 68-3-how-to-execute-the-custom-processing-with-operation-type-apex-class URL: https://help.skyvva.com/#article/68-3-how-to-execute-the-custom-processing-with-operation-type-apex-class ================================================================================ # 68.3 How to execute the custom processing with operation type = Apex class? Learning Objective: After completing this unit, you’ll be able to: - Describe custom apex class. - Comfortably use the apex class to implement the custom processing integration. #### Introduction To obtain more potential to enable the user to execute the business process by practicing an apex class through which SKYVVA pass data & message to the user after the user performs its own business logic already with data that SKYVVA passed, later user must update message status and return it to SKYVVA.  The operation is at block 4 and here we add new operation types like Apex Class. #### What is Operation type - Apex class? In Apex, users can define top-level classes (also called outer classes) as well as inner classes, that is, a class defined within another class. You can only have inner classes one level deep. `public class myOuterClass { // Additional myOuterClass code here class myInnerClass { // myInnerClass code here } }` #### Basic Processing Steps: **Message   ->  Workflow   ->   Mapping   ->  Operation** There are two ways to use the Operation Apex Class: Interface V2 and Interface V3 designs. 1.    Interface V2 design #### How to use the Apex Class, the process is given below:- - Click on Setup, and in Quick Find box, write Apex Class. - In the Apex class setup page, select "New", as shown in the picture given below. ![](../images/2020/07/apexclass.png) - Paste the given code in Apex class Body. The code for example for interface v2 design is given below. `global class TestApexOperation extends skyvvasolutions.ApexCustomClassOperation{ global override void execute(List lstObj, ListlstMessage){ List lst = new List(); Account up = new Account(); for(Integer j=0; j< lstObj.size(); j++){ up = (Account)lstObj[j]; up.Name = up.Name ; up.AccountNumber = (up.AccountNumber + 500); lst.add(up); } Database.SaveResult[] srList = Database.insert(lst, false); for(Integer i=0; i< srList.size(); i++){ if(srList[i].isSuccess()){ lstMessage[i].skyvvasolutions__Status__c = 'Completed'; lstMessage[i].skyvvasolutions__Comment2__c = 'Comment success form custom Apex Class'; }else{ lstMessage[i].skyvvasolutions__Status__c = 'Failed'; lstMessage[i].skyvvasolutions__Comment2__c = 'Comment Failed from custom Apex Class'; } } } } ` - Click Save, As shown in the picture given below. ![](../images/2020/07/apexclass1.png) The configuration on the interface - Create an interface and choose an operation "Apex Class". ![](../images/2020/07/apexclass2.png) - In the interface detail page,  Enter your Apex class name in Operation Type Apex Class. ![](../images/2020/07/apexclass3.png) - Do mapping ![](../images/2020/07/apexclass4.png) - Push data Using Manual load ![](../images/2020/07/apexclass6.jpg) - Check message in message monitoring ![](../images/2020/07/apexclass5.png) 2.    Interface V3 design #### How to use the Apex Class, the process is given below:- - Click on Setup, and in Quick Find box, write Apex Class. - In the Apex class setup page, select "New", as shown in the picture given below. ![](../images/2020/07/apexclass.png) - Paste the given code in Apex class Body. The code for example for interface v3 design is given below. `global class TestApexOperationV3 extends skyvvasolutions.ProcessMessage{ global override void updateMessageStatus(Mapping.MappingRow row,String id,boolean isSuccess,String operation,Database.Error[] errs){ if(isSuccess){ boolean firstMsg =true; for(IMessage__c msg:row.msgs){ if(!firstMsg){ if(operation=='Creation'){ operation = 'Modification'; }else if(operation=='Insertion'){ operation = 'Updation'; } } firstMsg=false; msg.Status__c = AbstractIntegrationV3.STATUS_COMPLETED; String comment = operation+' of '+row.obj.getSObjectType()+' form custom Apex Class'; msg.Related_To__c = id; setMessageComment(msg,comment); } }else{ for(IMessage__c msg:row.msgs){ this.integrationV3.markMesageAsProcessError(msg,IServices.appendLog(errs)); } } } }` - Click Save, As shown in the picture given below. ![](../images/2019/10/2023-12-07_10-47-13.png) The configuration on the interface - Create an interface and choose an operation "Apex Class". ![](../images/2019/10/2023-12-07_10-55-46.png) - In the interface detail page,  Enter your Apex class name in Operation Type Apex Class. ![](../images/2019/10/2023-12-07_10-56-11-1.png) - Do mapping ![](../images/2019/10/2023-12-07_10-57-45.png) - Push data ![](../images/2019/10/2023-12-07_11-20-38.png) - Check message in message monitoring ![](../images/2019/10/2023-12-07_10-21-29-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to create message type from the Database table, view, and stored procedure? Title: 70. How to create message type from the Database table, view, and stored procedure? Slug: 70-how-to-create-message-type-from-the-database-table-view-and-stored-procedure URL: https://help.skyvva.com/#article/70-how-to-create-message-type-from-the-database-table-view-and-stored-procedure ================================================================================ # 70. How to create message type from the Database table, view, and stored procedure? **Learning Objectives:-** **This unit describes:-** - Creation of Message types from the Database table, view, and stored procedure. #### Introduction:- In this tutorial, we will learn to create the message type from the database table, view, and stored procedure through the new Agent. 1. Table 2. View 3. Stored Procedure We can browse through the list of tables, views or stored procedures and can search for the name of the object. We can select one or multiple objects and click on the button 'Create Message Type'. The three databases we have in the option are MySQL, Oracle, and MS SQL Server. Here we will show the use case by using the MySQL database. #### MySQL Database:- MySQL is an Oracle-backed open-source relational database management system (RDBMS) based on Structured Query Language (SQL). Although it can be used in a wide range of applications, MySQL is most often associated with web applications and online publishing. #### Message Type:- Applications that use Service Broker communicate by sending messages to each other as part of a conversation. The participants in a conversation must agree on the name and content of each message. A message type object defines a name for a message type and defines the type of data that the message contains. Message types persist in the database where the message type is created. You create an identical message type in each database that participates in a conversation. #### How to create message type using Database:- We have an option of the database in the repository detail page. From where we will see three fields. The three fields are:- - **Agent instance:-** This will show all the connection which we will create in the agent control board. - **Adapter type:-** This will show all the adapters which we will create. - **Object type:- ** We have 3 object types:- - Table. - View. - Stored Procedure. #### Process of creating message type by using MySQL database:- **Pre-Requisite:-** - Create Integration. - Create Interface. **Steps to create message type:-** **    1. MySQL **** Database:-** - Open MySQL workbench. - Create New Schema. - Open database file and execute it. - We can see three objects Tables, Views and stored procedures as shown in the picture below. ![](../images/2019/10/mysql.png) **     2. Agent Configuration:-** - Open Agent Control Board. - Fill all the required fields in the Configuration tab. - Click on the Ping Agent Connection. ![](../images/2019/10/mysql1.png) ![](../images/2019/10/mysql2.png) **    3. Create Adapter:-** - Click on the Adapter tab. - Fille all the required fields as shown in the picture given below:- ![](../images/2019/10/mysql3.png) ![](../images/2019/10/mysql4.png) **    4. Add Remote site settings:-** - Click on setup. - Search Remote site settings in the Quick Find box. - Fill fields as shown in the picture given below. ![](../images/2019/10/mysql5.png) **        ** **     5. Create metadata provider:-** **     6. Create Repository:-** **     7. On Detail repository page:-** - Click on the Database button. ![](../images/2019/10/mysql9.png) - The new popup screen will display. 1) Select your agent. 2) Select your adapter. 3) If you want to create a message type from Table then select Table. If you want to create a message type from View then select View. If you want to create a message type from Stored Procedure then select Store Procedure. 4) Click on the Create Message Type button. - As shown in the picture given below. ![](../images/2019/10/mysql6.png) - On Repository related page we can check Message type and Istructure. As shown in the picture given below. ![](../images/2019/10/mysql7.png) ![](../images/2019/10/mysql8.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]In the same way we can create message type for the Object type View and for Stored Procedure.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use the API invokeCallout2() to pass data from the screen and apex class? Title: 71. How to use the API invokeCallout2() to pass data from the screen and apex class? Slug: 71-how-to-use-the-api-invokecallout2-to-pass-data-from-the-screen-and-apex-class URL: https://help.skyvva.com/#article/71-how-to-use-the-api-invokecallout2-to-pass-data-from-the-screen-and-apex-class ================================================================================ # 71. How to use the API invokeCallout2() to pass data from the screen and apex class? Learning Objective: After completing this unit, you’ll be able to: - How to pass data from a screen and apex class to invokes callout #### Introduction We can pass data from the screen and apex class where the data is going into the mapping instead coming from the database through the select statement in the interface. The caller is an apex class and use the class method invokeCallout2(). Inside this method we have a map parameter where the user can pass name/value pair to the method. The map with the key/value he has to build in the apex caller program. #### Why and when to use Screen and apex class to pass data? We always need to pass the sObject Id to select the data from the database. Here requirement is that user doesn't want to select data from the database. The data is coming from a screen and they want to make a call to SAP with that data. We have to pass the data which user enters into a screen to invokeCallout2() They don't want to have the data to be written into a table in Salesforce. Just whatevere user enters in the screen need to be put a request for the HTTP callout through the SFDC2SAPPI or other adapters. They would use customer class in the outbound interface, so they can extract data themselves. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]“The callout is done in mode SYNC only. Future and batch are not needed in this scenario[/su_box] The data which he build into the map can come from screen or just a constant or data he select himself with select statement. The data is not coming through the select statement in our outbound interface. There is different way to build the map and fill with data. - **From Screen:**from screen means that you have to write apex code to read data from screen first and then put into the map. - **From Apex:  **from apex means that you can set the map with constant value or read from the table or call first google API get the response and put the response into the map. #### Steps to use the API invokeCallout2() to pass data from the screen and apex class: User want to pass data when s/he executes callout api, so only api invokeCallout2 can handle this scenario. here we are using SFDC2SAPPI adapter for outbound processing. **Step1**: Create SFDC2SAPPI adapter. ![](../images/2019/11/screencapture-shwetatest-dev-ed-lightning-force-lightning-r-skyvvasolutions-Adapter-c-a006F00003MrqqJQAR-view-2019-11-05-13_53_33.png) **Step2**: Create Integration. **Step2**: Create Outbound Interface ![](../images/2019/11/Untitled1.png) Step3: Do mapping ![](../images/2019/11/Untitled2.png) Step4: Push data with apex class - Go to set up - Click on developer console - Open Anonymous Window and enter following apex code. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); Map m=new Map(); m.put('Name', 'AC1'); m.put('BillingCity','City1'); m.put('BillingCountry','DE'); m.put('BillingState','State1'); m.put('ERP_DEBTOR_ID__c','AC1'); m.put('SAP_Division__c','00'); m.put('SAP_Sales_Org__c','00'); c.setPayLoad(m); skyvvasolutions.IServices.invokeCallout2('Shweta', 'Account', null, 'SYNC', c); [/aux_code] **Step5: **check result on message board ![](../images/2019/11/screencapture-shwetatest-dev-ed-lightning-force-lightning-r-skyvvasolutions-Integration-c-a0W6F00000oZCBXUA4-view-2019-11-05-15_53_44.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use message type? Title: 6. How to create tree hold in hierarchical message type? Slug: 6-how-to-create-tree-hold-in-hierarchical-message-type URL: https://help.skyvva.com/#article/6-how-to-create-tree-hold-in-hierarchical-message-type ================================================================================ # 6. How to create tree hold in hierarchical message type? #### Learning Objectives In **SKYVVA**, the **MetaData** repository is a component that manages metadata. In the context of database systems, one example of metadata is information about the database schema, which is a description of the data. Besides, the **MetaData** repository can manage information about the processes which create, use, or update the data, the components that host these processes or the database system. As metadata is also data, metadata repositories offer the same functionality for metadata as database management systems (**DBMS**) for data, **e.g.,** queries, updates, transactions, access control. #### Introduction **SKYVVA** API Service can use the V3 integrate Inbound web services, such as the REST API, allow you to interact with **SKYVVA** instance data using web service requests. **SKYVVA** supports inbound web services using REST and SOAP. The REST style emphasizes that interactions between clients and services are enhanced by having a limited number of operations. Each operation (**GET, POST, PUT & DELETE**) has a specific meaning, **REST** avoids ambiguity. The REST API is active by default in all instances. RESTful web services offer administrators several advantages, including: - Support for different **HTTP** methods to perform different actions - Detailed response codes and header information - Streaming data on POST requests [su_box title="Note" box_color="#2a8af0" title_color="#000000"]V3 integrate API service is based on process hierarchical message in our tool SKYVVA, it also shows the monitoring and a tree hold in the hierarchical message.[/su_box] **Go to MetaData Providers Tab** - Click on New - Create MetaDeta Providers ![](../images/2020/01/Screenshot-912.png) - Create IStructure Repository ![](../images/2020/01/Screenshot-913.png) - Save - Create **Message Type** as **Hierarchical** ![](../images/2020/01/Screenshot-914.png) - Create Message Type Name & Select Plain structure from **Type** picklist - **Root_MSG-Test, AccountTestV3**, **ContactTestV3 & CaseTestV3** message type Name - Save User Just Create **Root_MSG-Test** Message Type - Click on Related List ![](../images/2020/01/Screenshot-915-1.png) - Click on Message Type **(Child)** New button ![](../images/2020/01/Screenshot-916-1.png) - User Just Create **AccountTestV3 **Message Type - Click on Related List - Click on New Button of **Message Type Field Entry** ![](../images/2020/01/Screenshot-917.png) - Create Account Number IStructure **AccountNumber** - Create IStructure **Name** - Create Account_ID** IStructure Account_ID** - Create Billing City IStructure **BillingCity** - Create Billing Country IStructure **BillingCountry** - Save **Great user Create Message Type Field Entry Successfully** ![](../images/2020/01/Screenshot-918.png) **Now the user has to Go to Related List** - Click on Message Type **(Child)** New button - Save ![](../images/2020/01/Screenshot-923.png) - User Just Create **ContactTestV3 **Message Type - Click on Related List - Click on New Button of **Message Type Field Entry** ![](../images/2020/01/Screenshot-921.png) - Create Cont_ID Istructure **Cont_ID** - Create First Name Istructure **FirstName** - Create Last Name Istructure **LastName** - Create Email Istructure **Email** - Save **Great user Create Message Type Field Entry Successfully** ![](../images/2020/01/Screenshot-922.png) **Now the user has to Go to Related List** - Click on Message Type **(Child)** New button - Save ![](../images/2020/01/Screenshot-924.png) - User Just Create **CaseTestV3 **Message Type - Click on Related List - Click on New Button of **Message Type Field Entry** ![](../images/2020/01/Screenshot-920.png) - Create Subject Istructure **Subject** - Create Supplied Phone Istructure **SuppliedPhone  ** - Save **Great user Create Message Type Field Entry Successfully** ![](../images/2020/01/Screenshot-925.png) **Go to ** **Istructure Repository Details page** ![](../images/2020/01/Screenshot-926.png) - See how Hierarchical Type look in **Tree** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use apex trigger to send real time data change to Agent? Title: 1. How to use apex trigger to send real time data change to Agent? Slug: how-to-use-apex-trigger-to-send-real-time-data-change-to-agent URL: https://help.skyvva.com/#article/how-to-use-apex-trigger-to-send-real-time-data-change-to-agent ================================================================================ # 1. How to use apex trigger to send real time data change to Agent? #### Learning Objectives A Change Data Capture event, or change event, is a notification that Salesforce sends when a change to a Salesforce record occurs as part of a Create, update, delete, or undelete operation. User has to create Account in SalesForce, it should trigger an event and send this Account Information to MS SQL Server DB of our organisation. Once it's inserted in our SQL DB, it will create particular AccountID and give it back to SalesForce. The notification includes all new and changed fields and header fields that contain information about the change. #### Introduction The reason user need to accomplice this is our Account creation process used to start from Our own **SKYVVA** product so it was creating AccountID (Auto Generated) from DB and used from Primary identification for Account across the system. Now we want to create Account from SalesForce but need to keep AccountId generated from SQL DB. For example, header fields indicate the type of change that triggered the event and the origin of the change. Change events support all custom objects and a subset of standard objects. #### [su_box title="Note" box_color="#2a8af0" title_color="#000000"]User have to click on link below through which user get configuration about, How to Consume the change events using an apex trigger.[/su_box] #### How to use the Salesforce CDC change event to send data to Agent? Users can be experienced how **SKYVVA** Change Events to synchronize changes to the Salesforce records in your SQL server Db Management system. **SKYVVA** can Change/Update events the same way you subscribe to other events. **Go to Microsoft SQL Server Management Studio** –  [Download Microsoft SQL Server Management Studio...](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15/) ![](../images/2020/02/Screenshot-902.png) **Connect to Server** ![](../images/2020/02/Screenshot-903.png) - Click on Databases - Scroll down to Tables - Right Click on New - Click on Table ![](../images/2020/02/Screenshot_3.png) - Create Column Name - Select Data Type “**nvarchar(Max)”**or”**nvarchar(50)”** - Allow Nulls checked by default ![](../images/2020/02/Screenshot_4.png) Now go to Salesforce Click on Adapter Tab - Create Adapter Type **JDBC** - Click on Ping Connection ![](../images/2020/02/Screenshot-890.png) - Adapter property made a connection successfully with Agent and SQL Server called **jdbcSQLServerDriver** - Database Type **SQL Server** - Database Name **mydb** ![](../images/2020/02/Screenshot-891.png) - Create Integration - Create Interface ![](../images/2020/02/Screenshot-889.png) - Click on Interface - Scroll down to mapping Section - Select Ext id - Save ![](../images/2020/02/Screenshot-892.png) Now go to the Agent and Select your Integration which you just created - Select your Interface - Click on Edit Interface Button ![](../images/2020/02/Screenshot-894.png) Now see Interface Source Definition - Test Source connection with SQL Server Database - Write Query in Query/Filter section - Click on Test Query button - Records are fetching from Salesforce Org in Query table successfully - Save ![](../images/2020/02/image_2020_02_11T07_41_47_608Z.png) - Select Your Interface - Click on the Process button ![](../images/2020/02/image_2020_02_11T07_57_48_656Z.png) Go to Salesforce Org and click on Message Monitoring - Select Integration Name - Select Interface - ok ![](../images/2020/02/image_2020_02_11T07_56_38_264Z.png) - Scroll Down to Messages section - Click on the search button ![](../images/2020/02/image_2020_02_11T08_10_19_785Z.png) - Records upsert successfully - Now click on Account Object - Click on Record user just created ![](../images/2020/02/Screenshot-897.png) - Click on Related list Detail ![](../images/2020/02/Screenshot-901.png) Open **SQL Server** Now - Right, Click on **Account.ApexTrigger** - Click on Edit Top 200 Rows - Now records are open - Now we have to update ![](../images/2020/02/image_2020_02_11T09_15_40_436Z.png) Now Change/Update on Salesforce Org. - Billing Street - Billing City - Billing Country ![](../images/2020/02/Screenshot-900.png) Open SQL Server Now - Right-click anywhere in Records Section - Click on Execute SQL - Congratulation See User Record field is Change/Updated Automatically ![](../images/2020/02/image_2020_02_11T09_30_58_207Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Data capture functionality Process Builder with Agent? Title: 1. How to use Data capture functionality Process Builder with Agent? Slug: how-to-use-data-capture-functionality-process-builder-with-agent URL: https://help.skyvva.com/#article/how-to-use-data-capture-functionality-process-builder-with-agent ================================================================================ # 1. How to use Data capture functionality Process Builder with Agent? [su_box title="Note" box_color="#2a8af0" title_color="#000000"]A Process Builder is a notification that Salesforce sends when a change to a Salesforce records/fields appear as part of a Create, update, delete, or undelete operation.[/su_box] #### Learning Objectives A Change Data Capture event, or change event, is a notification that Salesforce sends when a change to a Salesforce record occurs as part of a Create, update, delete, or undelete operation. User has to create Account in SalesForce, it should trigger an event and send this Account Information to MS SQL Server DB of our organization. Once it's inserted in our SQL DB, it will create particular AccountID and give it back to SalesForce. The notification includes all new and changed fields and header fields that contain information about the change. #### Introduction The reason users need to accomplice this is our Account creation process used to start from Our own **SKYVVA** product so it was creating AccountID (Auto Generated) from DB and used from Primary identification for Account across the system. Now we want to create Account from SalesForce but need to keep AccountId generated from SQL DB. For example, header fields indicate the type of change that triggered the event and the origin of the change. Change events support all custom objects and a subset of standard objects. ![](../images/2020/02/Screenshot-881-1.png) #### How to use Process Builder with Agent? The user has to experienced how **SKYVVA** Change Events to synchronize changes to the Salesforce records in your SQL server Db Management system. SKYVVA can Change/Update events the same way you subscribe to other events. Users can use Process Builder. CometD is a messaging library that enables listening to events through long polling and simulates push technology. Go to Salesforce Org. - Click on Setup Gear icon ![](../images/2020/02/Screenshot-944.png) - Write Process builder in the search box & click on it ![](../images/2020/02/Screenshot-945.png) - Click on New button ![](../images/2020/02/Screenshot-951.png) - Write Process Name then Select A record changes ![](../images/2020/02/Screenshot-947.png) - Click Add Object - Choose object e.g Account - Start the process, select when a record is created or edited ![](../images/2020/02/Screenshot-952.png) - Click Add Criteria - Write Criteria Name, choose Formula evaluates true for criteria to Execute Action - Write Formula **ISCHANGED([Account].BillingCity)** formula for changing **BillingCity** - Save ![](../images/2020/02/Screenshot-954.png) - Click Add Action - For Action, Type choose **Apex, **for Action Name write Name - Choose **SKYVVA Callout/Create CP** ![](../images/2020/02/Screenshot-956.png) - Click Activate button on the right side then click confirm button when the popup message ![](../images/2020/02/Screenshot-957.png) **Go to Microsoft SQL Server Management Studio** –  [Download Microsoft SQL Server Management Studio...](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15/) ![](../images/2020/02/Screenshot-902.png) **Connect to Server** ![](../images/2020/02/Screenshot-903.png) - Click on Databases - Scroll down to Tables - Right Click on New - Click on Table ![](../images/2020/02/Screenshot_3.png) - Create Column Name - Select Data Type “**nvarchar(Max)”**or”**nvarchar(50)”** - Allow Nulls checked by default ![](../images/2020/02/image_2020_02_20T08_22_14_951Z.png) Now go to Salesforce Click on Adapter Tab - Create Adapter Type **JDBC** - Click on Ping Connection ![](../images/2020/02/image_2020_02_20T07_13_07_791Z.png) - Adapter property made a connection successfully with Agent and SQL Server called **jdbcSQLServerDriver** - Database Type **SQL Server** - Database Name **mydb** ![](../images/2020/02/Screenshot-891.png) - Create Integration - Create Interface ![](../images/2020/02/Screenshot-929.png) - Click on Interface - Scroll down to mapping Section - Select Ext id - Save ![](../images/2020/02/Screenshot-930.png) Now go to the Agent and Select your Integration which you just created - Select your Interface - Click on Edit Interface Button ![](../images/2020/02/Screenshot-932-1.png) **Now see Interface Source Definition** - Test Source connection with SQL Server Database - Write Query in Query/Filter section - Click on Test Query button - Records are fetching from Salesforce Org in Query table successfully - Save ![](../images/2020/02/image_2020_02_20T08_49_29_201Z.png) - Select Your Interface - Click on the Process button ![](../images/2020/02/image_2020_02_20T09_12_10_153Z-1.png) **Go to Salesforce Org and click on Message Monitoring** - Select Integration Name - Select Interface - ok ![](../images/2020/02/Screenshot-933.png) - Scroll Down to Messages section - Click on the search button ![](../images/2020/02/image_2020_02_20T09_54_38_152Z.png) - Records upsert successfully - Now click on Account Object - Click on Record user just created ![](../images/2020/02/Screenshot-939.png) - Click on Related list Detail ![](../images/2020/02/Screenshot-941.png) **Open SQL Server Now** - Right Click on **Account_ProcessBuilder** - Click on Edit Top 200 Rows - Now records are open - Now we have to update ![](../images/2020/02/image_2020_02_20T10_29_47_201Z.png) Now try to Change/Update on Salesforce Org. - Billing City ![](../images/2020/02/Screenshot-942.png) - See here “**We hit a snag**” means we can’t change **BillingCity** because Process builder fire on the **BillingCity** field and it works fine. - Go to your registered **EmailID.** ![](../images/2020/02/Screenshot-943.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use LAST_INTERFACE_DATETIME() function? Title: 75. How to use LAST_INTERFACE_DATETIME() function? Slug: 75-last_interface_datetime URL: https://help.skyvva.com/#article/75-last_interface_datetime ================================================================================ # 75. How to use LAST_INTERFACE_DATETIME() function? #### Introduction #### Date Formats and Date Literals In a SOQL query, you can specify either a particular date or a date literal. A date literal is a fixed expression that represents a relative range of time, such as last month, this week, year. DateTime field values are stored as Coordinated Universal Time (UTC). When a DateTime value is returned in Salesforce, it’s adjusted for the time zone specified in your org preferences. SOQL queries, however, return DateTime field values as UTC values. If you want to process these values in different time zones, your application might need to handle the conversion. #### Date Formats A fieldExpression uses different date formats for date and DateTime fields. If you specify a DateTime format in a query, you can filter only on DateTime fields. Similarly, if you specify a date format value, you can filter only on date fields.: #### Format #### #### Format Syntax #### Example Date only YYYY-MM-DD 2010-01-01 Date, time, and time zone offset - YYYY-MM-DDThh:mm:ss+hh:mm - YYYY-MM-DDThh:mm:ss-hh:mm - YYYY-MM-DDThh:mm:ssZ - 2010-01-01T23:01:01+01:00 - 2010-01-01T23:01:01-08:00 - 2010-01-01T23:01:01Z [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The zone offset is always from UTC. For more information, see links: [D ISO 8601 Date and Time Formats](http://www.w3.org/TR/xmlschema-2/#isoformats) [Date and Time Formats](http://www.w3.org/TR/NOTE-datetime) [/su_box] #### LAST_INTERFACE_DATE() for outbound direction  The “LAST_INTEGRATION_DATE” function is created to specific for SKYVVA inbound direction. Additionally, the outbound direction is required to add in order to complete the lack of functionally. This function allows the user to retrieve or query the new records which have been modified after the last run date with Agent. You can export data from Salesforce to SQL Server with the syntax: $LAST_INTERFACE_DATETIME(). **To configure the function, there are some steps should be followed: ** - Enter Query section on Interface Source Definition. Use $LAST_INTERFACE _DATETIME() to query data from SQL Server that focus on column Lastdate ![](../images/2018/10/image-41.png)  2.  Set scheduler to process on Agent ![](../images/2018/10/Screenshot-613.png) ![](../images/2020/03/Screenshot-1049.png) **You can monitor this function by:** - Enter Salesforce and go to the Integration page. Click on Interface tab and check the result of data that you had the process. ![](../images/2018/10/Screenshot-612.png)       2. After the schedule done process it creates file automatically in Agent file location. ![](../images/2018/10/Screenshot-614.png) User can see that screenshot above show File cache DateTime after scheduler completed [su_box title="Note" box_color="#2a8af0" title_color="#000000"]This function you will get only new creation or update records after a successful outbound transfer.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Overview of SKYVVA Soap and Rest API Title: 1. Overview of SKYVVA Soap and Rest API Slug: overview-of-skyvva-soap-and-rest-api URL: https://help.skyvva.com/#article/overview-of-skyvva-soap-and-rest-api ================================================================================ # 1. Overview of SKYVVA Soap and Rest API #### #### Learning Objective: After completing this unit, you’ll be able to: - Overview of **SKYVVA** soap and rest API - Comfortably connect soap UI with salesforce organization. #### Introduction SoapUI is an open-source web service testing application for service-oriented architectures and representational state transfers. We can connect soap UI with the salesforce organization to push data. #### Required details: - SoapUI application. - Username and password of your salesforce organization. - Security Token. We can push data using the following: - **Soap API** - **Rest API** #### What is a SOAP API? SOAP is a standard communication protocol system that permits processes using different operating systems like Linux and Windows to communicate via HTTP and its XML. SOAP-based APIs are designed to create, recover, update, and delete records like accounts, passwords, leads, and custom objects. These offer over twenty different kinds of calls that make it easy for the API developers to maintain their accounts, perform accurate searches, and much more. These can then be used with all those languages that support web services. SOAP APIs take advantage of making web-based protocols such as HTTP and XML that are already operating on all operating systems that are why its developers can easily manipulate web services and get responses without caring about language and platforms at all. ![](../images/2020/04/Screenshot-1061.png) #### Explaining a Simple SOAP Example SOAP, by its very nature, requires a little more setup, but I think you’ll be amazed at how simple it is to use. Begin this example by creating a Windows Forms application using Apex. The sample code uses java, but the same technique works fine with other Apex languages (you’ll need to modify the code to fit). Add labels, text boxes, and buttons as shown here (the Latitude and Longitude fields are read-only). #### How to Integrate SoapUI to SKYVVA Follow the given steps to connect SoapUI with SKYVVA **Step1: Generate API file** - Go to your Salesforce Organization ![](../images/2020/04/Screenshot-1058.png) - Click on API under Integration ![](../images/2020/04/Screenshot-1062.png) - Click on Generate Enterprise WSDL ![](../images/2020/04/Screenshot-1063.png) ![](../images/2020/04/Screenshot-1064.png) **Go to SoapUI** - Click on SOAP - Create a new SOAP project ![](../images/2020/04/Screenshot-1065.png) - Save the WSDL file in your system. **Step2:  Go to the SoapUI application** - SoapUI is open-source. Users can easily download it from Google.com. - Here we are using SoapUI Version  5.5.0 ![](../images/2020/04/Screenshot-1068.png) - Right-click & open SoapUI application ![](../images/2020/04/Screenshot-1069.png) - Click Soap & create a new SOAP project as shown in the picture. ![](../images/2020/04/Screenshot-1070.png) - Write your Project name - Browse the Initial WSDL XML file ![](../images/2020/04/Screenshot-1071.png) - Click on the OK button. ![](../images/2020/04/Screenshot-1072.png) ![](../images/2020/04/Screenshot-1073.png) - Expand login & click “Request 1“ ![](../images/2020/04/Screenshot-1074.png) - Delete this section it is UN-use-able ![](../images/2020/04/Screenshot-1075.png) - Enter your Org credentials - Username - Password + Security Token - Click on the play button ![](../images/2020/04/Screenshot-1076.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Refresh sessionId with 15-10 minutes because it changes frequently[/su_box] - Great you Generated sessionId successfully. ![](../images/2020/04/Screenshot-1077.png) **Step3: Now repeat almost the same steps but this time download  SKYVVA  WSDL** - Go to salesforce setup & Apex Classes in the search box - Click Apex Classes ![](../images/2020/04/Screenshot-1078.png) - Scroll down to Service - Click & generate WSDL ![](../images/2020/04/Screenshot-1079.png) - Save the generated file ![](../images/2020/04/Screenshot-1080.png) - Go to SoapUI - Click on SOAP - Create a new SOAP project ![](../images/2020/04/Screenshot-1081.png) - Type the Project Name in the open window. Browse your Initial WSDL XML file and Click ok ![](../images/2020/04/Screenshot-1082.png) - Expand SkyvvaIServices - Go to integrate - Rename it to Authorization ![](../images/2020/04/Screenshot-1083.png) **Step 4: Create an Interface in your org** - Go back to your org - Create Integration & copy IntegrationID - Create Interface & copy Interface Name ![](../images/2020/04/Screenshot-1084.png) ![](../images/2020/04/Screenshot-1085.png) **Go to the related page and create an IStructure** - Name - BillingCity - BillingCountry ![](../images/2020/04/Screenshot-1086.png) - Click on the Open Mapping button ![](../images/2020/04/Screenshot-1087.png) **Step5: Go to SoapUI to connect SKYVVA with Soap UI** - Paste this code `00D7F000001bZ8f!AQEAQNjsb3J8mRbgmaxbkCVyEddn1hbyDUuFkvD.ali3CWVC0_8UIC65ek0XEvWUD410R3NM9FLG8T2Z_NL67g7PDFi1Vg7u a0i7F000003gJ2JQAU Test_SoapUI Name Test BillingCity Mumbai BillingCountry India ` ![](../images/2020/04/Screenshot-1088.png) - Submit - Great you passed your code to Salesforce - When you click on submit your code automatically transfers to Salesforce org **Step6:  Check result** **Go to your Salesforce org** - Click on the Message Monitoring Tab - Select your Integration - Select your Interface ![](../images/2020/04/Screenshot-1089.png) - OK - Click on the Search button ![](../images/2020/04/Screenshot-1090.png) Congratulations your record has been updated successfully #### 2   What is REST API? REST is an architectural style of web services that works as a channel of communication between different computers or systems on the internet. The term REST API is something else. Those application programming interfaces that are backed by the architectural style of the REST architectural system are called REST APIs. REST API-compliant web services, database systems, and computer systems permit requesting systems to get robust access and redefine representations of web-based resources by deploying a predefined set of stateless protocols and standard operations. By these protocols and operations and redeploying the manageable and updatable components without causing the effect on the system, REST API systems deliver fast performance, reliability, and more progression. ![](../images/2020/04/Screenshot-1091.png) #### Explaining a Simple REST Example IntegrateBatch The examples in this section use REST API resources to create, retrieve, update, and delete records, along with other record-related operations. - Open SoapUI - Click on REST ![](../images/2020/04/Screenshot-1092.png) **Login to your Salesforce org** - Go to setup - Copy your URL ![](../images/2020/04/Screenshot-1093.png) - Paste the URL here to create a new REST project - Click ok ![](../images/2020/04/Screenshot-1094-1.png) - Rest project created. ![](../images/2020/04/Screenshot-1095.png) - Expand URL - Right-click on Request - Click on Clone Request ![](../images/2020/04/Screenshot-1096.png) ![](../images/2020/04/Screenshot-1097.png) - Specify the name of the cloned Request - Eg. Authorization - Click ok ![](../images/2020/04/Screenshot-1098.png) Now here something is very important **Method POST** Endpoint  URL: https://skyvva-test-dev-ed.lightning.force.com/ RESOURCE: /services/apexrest/skyvvasolutions/integrateBatch ![](../images/2020/04/Screenshot-1099.png) - Media type by default application/json where we post. (json is the format) - Header is some tricky although it is easy - Click on Header ![](../images/2020/04/Screenshot-1100.png) - Add header name eg. Authorization - A bearer is a keyword after pressing the space key - Paste your sessionID - Press enter key **Now go back to your Salesforce org** - Create Integration & copy IntegrationID - Create Interface & copy Interface Name ![](../images/2020/04/Screenshot-1101.png) ![](../images/2020/04/Screenshot-1102.png) Click on Related List & create an IStructure - Name - BillingCity - BillingCountry ![](../images/2020/04/Screenshot-1103.png) - Click on the Open Mapping button ![](../images/2020/04/Screenshot-1104.png) - Select Ext Id & Save **Go to SoapUI** Paste  this code under the Media type section URL: https://skyvva-test-dev-ed.lightning.force.com/ RESOURCE: /services/apexrest/skyvvasolutions/integrateBatch `{"INTEGRATIONID" : "a0W2v000019ePQOEA2", "INTERFACENAME" :  "akash_Interface", "messages": [ { "BillingCountry": "Cam", "Name": "Test01", "BillingCity": "PP" }, { "BillingCountry": "Cam", "Name": "Test02", "BillingCity": "PP" }, { "BillingCountry": "Cam", "Name": "Test03", "BillingCity": "PP" } ] }` ![](../images/2020/04/Screenshot-1105.png) - Paste the code and submit it. ![](../images/2020/04/Screenshot-1106.png) Great you pass - Number Of Records": "3" - Basket Name": "IB-00000" - Basket Id": "a0A2V0000uHgCiEAK" Go to your Salesforce org - Go to your Integration - Click on Batch Control Board ![](../images/2020/04/Screenshot-1107.png) Here is all the information about our Integration Inbound processing - Click on view - Successfully saved ![](../images/2020/04/Screenshot-1108.png) ![](../images/2020/04/Screenshot-1109.png) #### Explaining a Simple REST Example Create New Message Follow the same steps to create the REST project. **Go back to your Salesforce org** - Create an Integration & copy IntegrationID - Create an Interface & copy Interface Name ![](../images/2020/04/Screenshot-1110.png) ![](../images/2020/04/Screenshot-1111.png) Click on Related List to create IStructure - Name - BillingCity - BillingCountry ![](../images/2020/04/Screenshot-1112.png) - Click on the Open Mapping Button - Go to the mapping section select ExtId & save ![](../images/2020/04/Screenshot-1113.png) - **Go to SoapUI** - Paste this code under the Media type section - URL: https://skyvva-test-dev-ed.lightning.force.com/ - RESOURCE: /services/apexrest/skyvvasolutions/createNewMessage `{ "integrationid":"a0W2v000019eQGkEAM", "INTERFACENAME":"Interface_createNewMessage" , "messages":[ { "imessage":{ "skyvvasolutions__status__c":"Pending", "skyvvasolutions__Comment__c":"Test Comment1123456" }, "idata":{ "BillingCity":"Billing City0", "Name":"Account01" } }, { "imessage":{ "skyvvasolutions__status__c":"New", "skyvvasolutions__Comment__c":"Test Comment1123456" }, "idata":{ "BillingCity":"Billing City0", "Name":"Account22" } }, { "imessage":{ "skyvvasolutions__status__c":"Failed", "skyvvasolutions__Comment__c":"Test Comment1123456" }, "idata":{ "BillingCity":"Billing City0", "Name":"Account12" } } ] } ` - Submit ![](../images/2020/04/Screenshot-1114.png) - Great you passcode **Go to your Salesforce org** - Click on Message Board - Go to your Integration - Select Interface ![](../images/2020/04/Screenshot-1115.png) - OK - Click on the search button ![](../images/2020/04/Screenshot-1116.png) **This is an example of a Failed message seeing a red flag, If the user has business requirements New, Pending, and Cancelled messages use the method process message to reprocess. As now we explain in next step** #### Explaining a Simple REST Example Process Message We have to follow the same steps for creating REST Project 3 - Follow same steps **Go back to your Salesforce org** - Copy Integration - Copy Interface Name ![](../images/2020/04/Screenshot-1117.png) **Go to SoapUI** - Paste this code under the Media type section - URL:   https://skyvva-test-dev-ed.lightning.force.com - RESOURCE: /services/apexrest/skyvvasolutions/processMessage `{ "INTEGRATIONNAME" : "Integration_createNewMessage", "INTERFACENAME" : "Interface_createNewMessage", "MODE":"SYNC", "STATUS":[ "New", "Pending", "Failed" ], "messages": [ "a0N2v00000aLYAlEAO", "a0N2v00000aLYAmEAO", "a0N2v00000aLYAnEAO" ] } ` [su_box title="Key to remember" box_color="#2a8af0" title_color="#000000"]Click here to find messageID[/su_box] ![](../images/2020/04/Screenshot-1119.png) - Click on Detail List - See Integration and Interface name ![](../images/2020/04/Screenshot-1120.png) **Go to SoapUI** - Submit ![](../images/2020/04/Screenshot-1121.png) - Great you passcode **Go to your Salesforce org** - Go to your message board ![](../images/2020/04/Screenshot-1122.png) - Congratulations you have done very easily #### Explaining a Simple REST Example Integrate Synchronous This feature is created to allow user to call Skyvva Services by REST Api from their system. - Create integration & copy Name ![](../images/2020/04/Screenshot-1123.png) Create an interface & copy the Name ![](../images/2020/04/Screenshot-1124.png) **Click on the Related list & create IStructure** - Name - BillingCity - BillingCountry ![](../images/2020/04/Screenshot-1125.png) - Click on the Open Mapping Button ![](../images/2020/04/Screenshot-1126.png) **Go to SoapUI** - Paste this code under the Media type section - URL:  https://skyvva-test-dev-ed.lightning.force.com - RESOURCE: /services/apexrest/skyvvasolutions/IntegrateSynchronous ` { "integrationid" : "Integrate_synchronous", "interfacename" : "Interface_synchronous", "batchmode" : "false", "messages": [ { "Name": "India", "BillingCity": "Mumbai", "BillingCountry": "India" } , { "Name": "USA", "BillingCity": "LA", "BillingCountry": "Virgina" } ] } ` - Submit ![](../images/2020/04/Screenshot-1127.png) **Great code pass successfully** - Go to your Salesforce org - Go to your Integration - Click on the Message Monitoring Tab ![](../images/2020/04/Screenshot-1128.png) - Select your Integration - Select your Interface - OK **Click on the Search button** ![](../images/2020/04/Screenshot-1129.png) **The green flag status reflects that your inbound integration was successfully achieved with the help of SoapUI.** ================================================================================ Book: Tutorials Section: Tutorials Subsection: Control Board Title: 10. Bulk Control Board Slug: 18-3-batch-control-board URL: https://help.skyvva.com/#article/18-3-batch-control-board ================================================================================ # 10. Bulk Control Board A job runs to process bulk data that use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. All processed batches are managed on the bulk control board. Bulk Control Board is a dashboard where you can monitor Inbound Processing, Interfaces, and Schedulers. These tabs are using for bulk processing performance. Bulk Control Board is using for mass data. In SKYVVA Bulk Mode user can create upsert, update, insert, and query, query All, pullQuery or delete a large volume of records with the Bulk API, which is optimized for processing large sets of data. It makes it simple to load, update, or delete data over a **5000** records. #### SKYVVA Bulk Interface Processing **SKYVVA** Bulk Interface Processing is an interface uses for running bulk attachments. When the user has much data, using Bulk Interface Processing is necessary (over **5000** records). Before configuring Bulk Interface Processing, the user has to know about the parameters: - **BULK Mode**: Check this flag if you want to run interface in a bulk mode using Salesforce BULK API. - **Bulk Version**: We support SFDC pure bulk mode in version 1.0 or 2.0. Then we have our own **SKYVVA** bulk mode. This uses **SKYVVA** workflow and mapping and thus is more powerful but slower than the pure bulk API technique from Salesforce. This one is **SKYVVA's** own bulk mode. - **Bulk Processing Mode**: This field indicates the two-mode, which is support with bulk version 1.0. With bulk, version 2.0 only parallel mode is supported. Therefore, the value here depends on the selection of the field bulk version e.g. when we want to use ‘Serial’ then we need to choose ‘Bulk V 1.0’. There are two modes which are: - **Parallel:** When you select this processing mode, it will run parallel. - **Serial:** When you select this mode, it will not run at the same time. - **Bulk Package Size:** This parameter determines how many records are split into Bulk data size. If your Message contains **10.000** records and the value for this parameter is 1000 so the user will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be kept. - **Bulk Sch Frequency:** This is the schedule time frequency for the bulk scheduler on the interface. - **Bulk Integrate Time Interval (minute)**: The interval (minutes) used to integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. #### Pre-requisite **Configuring of Bulk Interface Processing** This section will be explained by the configuring of Bulk Interface Processing. Assuming you are already created Integration and interface. To understand the process, please follow the steps below: - Enter Interface page detail - Scroll down the page to the Streaming and Bulk API Configuration section and configure the parameters as: - Check the flag on BULK Mode - Choose the Bulk Version and Bulk Processing Mode ![](../images/2018/10/1-17.png) When the user checks this flag, it means you activate the bulk processing and your data will be integrated from Agent. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]After user done configuring the bulk processing, you can do mapping in Salesforce. You have to remember that creating, editing and deleting interface has to do in Salesforce.[/su_box #### Monitoring Bulk Control Board:- Bulk Control Board is located in the Integration page detail and exists in the Custom links section. We use Bulk Control Board to store data temporarily. -  Bulk control board is made up of three main section: - **Inbound Processing** - **Interfaces** - **Scheduler** #### Inbound Processing Inbound Processing tabs contain 5 differences sections which are Filter, Bulk Interface Scheduler, Bulk Data Inbox, Bulk Data Processing, and Bulk Monitor. Each section plays different roles in bulk processing. The following will describe in detail each section and how they work. There are Four orders to monitor bulk processing: - **Bulk Interface Scheduler** - **New Baskets** - **Current Processing Baskets** - **Processed Baskets** #### Filter The filter is a screen where we can search the baskets. We can filter the baskets based on: - Integration - Interface We can apply filer on your Integration and interface and search for the result. It shows as below: ![](../images/2018/10/filter.png) #### #### Bulk Interface Scheduler This section uses to monitor two schedulers Processing and Reprocessing. You can only Start/Stop the schedule here. If you want to set the time for your attachment processing, you have to enter the Scheduler tab. It only shows Job Id, Last Run Date, and Next Run Date. ![](../images/2018/10/bulkSchedular.png) #### When data pushed from the client using Bulk API, they will appear in this section. This means it contains new incoming data. The bulk processing scheduler will fetch the data from this section and process. So it is a place to store all the attachments which have been integrating from the external system. It contains 6 buttons which are Delete, Delete All, View List, Process Bulk Attachment, Upload, and Refresh. If you want to clear the attachment you can click on Delete and Delete All buttons. To process manually, you have to click on Process Bulk Attachment. **New Baskets** #### #### #### #### #### #### #### #### #### #### Current  Processing Baskets Bulk Data Processing is used to store data that are processing. These data will remove after it has done to the Bulk Monitor section. Whenever all the attachments that store has faced some problems like crashing you can use the Delete button to eliminate them. But if you want to stop this attachment processing you need to go to Apex job to abort them. Otherwise, the attachment will keep on processing. You can do reprocessing by checkbox and click on the “Re-Initialload” button. ![](../images/2018/10/freesnippingtool.com_capture_20211026234943.png) #### #### #### #### #### #### #### #### #### Processed  Baskets On the other hand, all the attachments will also move to “Bulk monitor”. In this section, you can monitor the total records of attachments, total batch and batches that had processed. Likewise, you can also know if the attachment is completed, failed or pending. ![](../images/2018/10/freesnippingtool.com_capture_20211026234943.png) #### Interface List of all interfaces which are processing on batch control board. This tab exhibit the interfaces that store in an Integration. You can facilely check or monitor them. If you land on the Bulk Control board, just simply click on the interface tab then you will visually perceive all the interfaces. However, this tab is not editable like the Interface tab in the Integration detail page. #### Scheduler There are two schedulers available in the Scheduler tab which are 'Attachment Process' and 'Attachment Reprocess '(reprocess the fail annexation). These schedules are for categorical integration. You can set the time and commence the schedule or refresh it. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Agent Control Board (old) Version 3.0 AWS? Title: 1. How to use Agent Control Board (old) Version 3.0 AWS? Slug: how-to-use-new-agent-control-board URL: https://help.skyvva.com/#article/how-to-use-new-agent-control-board ================================================================================ # 1. How to use Agent Control Board (old) Version 3.0 AWS? #### Introduction Amazon EFS provides file storage in the AWS Cloud. With Amazon EFS, you can create a file system, mount the file system on an Amazon EC2 instance, and then read and write data to and from your file system. You can mount an Amazon EFS file system in your VPC, through the Network File System versions 4.0 and 4.1 (NFSv4) protocol. We recommend using a current-generation Linux NFSv4.1 client, such as those found in the latest Amazon Linux, Redhat, and Ubuntu AMIs, in conjunction with the Amazon EFS Mount Helper. For instructions, see [Using the amazon-efs-utils Tools](https://docs.aws.amazon.com/efs/latest/ug/using-amazon-efs-utils.html)... For a list of Amazon EC2 Linux Amazon Machine Images (AMIs) that support this protocol, see [NFS Support](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-old.html#mounting-fs-nfs-info). For some AMIs, you'll need to install an NFS client to mount your file system on your Amazon EC2 instance. For instructions, see [Installing the NFS Client](https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-old.html#mounting-fs-install-nfsclient). You can access your Amazon EFS file system concurrently from multiple NFS clients, so applications that scale beyond a single connection can access a file system. Amazon EC2 instances running in multiple Availability Zones within the same AWS Region can access the file system so that many users can access and share a common data source. For a list of AWS Regions where you can create an Amazon EFS file system, see the [Amazon Web Services General Reference](#article/tutorial-v2-41-lightning). ![](../images/2020/05/Daco_5091796-2.png) #### What is Amazon EC2 Instance? An** EC2 instance** is nothing but a virtual server in Amazon [Web Services](https://www.guru99.com/web-services-tutorial.html) terminology. It stands for** Elastic Compute Cloud.** It is a web service where an AWS subscriber can request and provision a compute server in the AWS cloud. An** on-demand** EC2 instance is an offering from AWS where the subscriber/user can rent the virtual server per hour and use it to deploy his/her own applications. The instance will be charged per hour with different rates based on the type of the instance chosen. AWS provides multiple instance types for the respective business needs of the user. Thus, you can rent an instance based on your own CPU and memory requirements and use it as long as you want. You can terminate the instance when it’s no more used and save on costs. This is the most striking advantage of an on-demand instance- you can drastically save on your [CAPEX](https://www.quora.com/What-is-the-full-form-of-CAPEX). #### So what is Apache Camel? Camel Integration Framework really useful for development and support Connecting different system are easy using Camel Salesforce integration are pretty easy to develop **SKYVVA** is a very good hosting platform for Camel based integration. Apache Camel offers you the interfaces for the EIPs, the base objects, commonly needed implementations, debugging tools, a configuration system, and many other helpers which will save you a ton of time when you want to implement your solution to follow the EIPs. Take MVC. MVC is pretty simple in theory and we could implement it without any framework help. But good MVC frameworks provide us with the structure ready-to-use and have gone the extra mile and thought out all the other "side" things you need when you create a large MVC project and that's why we use them most of the time. That's exactly what Apache Camel is for EIPs. **It's a complete production-ready framework for people who want to implement their solution to follow the EIPs.** #### AWS Configuration? **Step 1 **Hit this link [AWS](https://aws.amazon.com/). Click on AWS Management Console ![](../images/2020/05/Screenshot-1169.png) - Select Root user - Provide your credentials Root user email address & password ![](../images/2020/05/Screenshot-1170.png) ![](../images/2020/05/Screenshot-1171.png) - Click on **Services** dropdown - Select **EC2** under **Compute** section ![](../images/2020/05/Screenshot-1172.png) - Great EC2 Dashboard showing now - Click on refresh button - And click on Running instances option under Resources section ![](../images/2020/05/Screenshot-1173.png) - Now user can see all instances easily - First, select your instance - Go to Action dropdown & select Instance State picklist - Then click on Start ![](../images/2020/05/Screenshot-1175.png) - Great our instance is running now ![](../images/2020/05/Screenshot-1176-1.png) **Step 2 **Now the user has to create a Remote Desktop Connection Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides secure, resizable compute capacity in the cloud. It is designed to make web-scale cloud computing easier for developers. Amazon EC2’s simple web service interface allows you to obtain and configure capacity with minimal friction. It provides you with complete control of your computing resources and lets you run on Amazon’s proven computing environment. - Download the .rdp file [and create a connection](https://aws.amazon.com/ec2/). - Great the user creates Remote Desktop Connection successfully. ![](../images/2020/05/Screenshot-1179.png) **Go to your Salesforce Org.** - Click on setup - Write Remote Site on the Search box ![](../images/2020/05/image_2020_05_26T08_54_22_083Z.png) - Click on New Remote Site button ![](../images/2020/05/Screenshot-1181.png) - Great user-created New Remote site successfully **Go to Agent Control Board Tab** - Click on your AGENT Properties File under Configuration Tab - See Status is OFFLINE - Click on the continue button ![](../images/2020/05/Screenshot-1182.png) - Users can see now AGENT properties file import the Salesforce Credential successfully - Username, Security token, Password and also status ONLINE - Click on Save button now ![](../images/2020/05/Screenshot-1208.png) - Provide Hostname/Public IP - Provide Port/Port forwarding - Click on Ping Agent Connection button ![](../images/2020/05/Screenshot-1183.png) - Click on System Information - AGENT / OS Information reflects all details of users OS ![](../images/2020/05/image_2020_06_23T08_37_44_649Z.png) The feature where we need to Restart Agent service from the agent control board ![](../images/2020/05/image_2020_07_15T09_02_07_623Z-1.png) **Service** - Open Service on your device and find **SKYVVA** Integration Agent - Click Restart Button. ![](../images/2020/05/image_2020_07_15T09_11_54_423Z.png) - After Click** Restart Button ** It's working normally ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use apex class ? Title: 77. How to use apex class ? Slug: 77-how-to-use-apex-class-and-flow-for-inbound-processing URL: https://help.skyvva.com/#article/77-how-to-use-apex-class-and-flow-for-inbound-processing ================================================================================ # 77. How to use apex class ? **Apex Class** In Apex, user can define top-level classes (also called outer classes) as well as inner classes, that is, a class defined within another class. You can only have inner classes one level deep. public class myOuterClass { // Additional myOuterClass code here class myInnerClass { // myInnerClass code here } } **follow the given steps to use apex class:** **Step 1: **Create Integration ![](../images/2019/06/ApexClass1.png) **Step 2**: Create interface - Select operation Type: Apex class from drop down -  Save ![](../images/2019/06/ApexClass2.png) **Step 3:** Create this class is used for Apex Custom class on Interface and Click on wrench icon and click on Setup. ![](../images/2019/06/ApexClass3.png) - Write Apex Class in Quick find box - Click on Apex Classes under Custom Code drop down ![](../images/2019/06/ApexClass4.png) - Write this class is used for Apex Custom class in interface - Quick save - Make sure your code has been saved successfully ![](../images/2019/06/ApexClass5.png) - Create this class is used for testing operation type Apex ![](../images/2019/06/ApexClass6.png) - Go to Interface Detail Page - Select TestCustomApexClass - Save ![](../images/2019/06/ApexClass7.png) - Scroll down to Mapping Section - Select Ext ID - Save ![](../images/2019/06/ApexClass9.png) - Go to Integration Detail Page - Select Manual Load ![](../images/2019/06/ApexClass10.png) - Select Integration Name& Interface - Select Data Type - Select CSV Separator - Choose file & upload ![](../images/2019/06/ApexClass11.png) - Select all records - Press Push button ![](../images/2019/06/ApexClass12.png) - Go to Message Board - Select your Integration - Select your Interface - Press Search Button ![](../images/2019/06/ApexClass13.png) - Scroll down to Message section - See status Green Flag which means user inbound apex class operation successfully done - All records are integrated with Salesforce Org. ![](../images/2019/06/ApexClass14.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 78. Database Adapter Slug: 78-how-to-use-jdbc-adapter-with-agent-control-board-old URL: https://help.skyvva.com/#article/78-how-to-use-jdbc-adapter-with-agent-control-board-old ================================================================================ # 78. Database Adapter ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to import Base64 String to Object Attachment in Salesforce with Agent Control Board (Old)? Title: 1. How to import Base64 String to Object Attachment in Salesforce with Agent Control Board (Old)? Slug: how-to-import-binary-database64string-in-salesforce URL: https://help.skyvva.com/#article/how-to-import-binary-database64string-in-salesforce ================================================================================ # 1. How to import Base64 String to Object Attachment in Salesforce with Agent Control Board (Old)? #### Introduction Base 64 String is a group of binary-to-text encoding schemes representing binary data in an ASCII string format by translating into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding. To help customers who want to import SObject and attach a file (base64), we have methods that can solve the problem. Now I would like to show you how to push binary data and SObject in the same XML file, but it will store the attachment in Attachment Object. The binary data is the data that has encoded with base64 string. #### How to import base64 string data (Attach file has stored in Attachment Object) #### Pre-require -Create Metadata provider and repository for the upload message type -Connection destination and create an adapter -Create Integration and Inbound Interface #### Step1: We need to have a Repository to upload structure for do mapping. How to create a MetaData provider, repository, and upload the message type we can refer to the following guide [#article/repository](#article/repository) for metadata provider. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]First, we need to upload the XML structure that is the same as the data we want to import to Salesforce. [/su_box] -Go to Repository Detail and click the button Upload File.![](../images/2020/07/11.png)-Choosing file type to upload and click Button save. that means we create Message Types.![](../images/2020/07/12.png)-Scroll down to see Message Types.![](../images/2020/07/13.png) #### Step 2: We go to the Agent control board (old)  to connect the destination. How to use the Agent control board (old). (Please refer[ #article/how-to-use-agent-control-board](#article/how-to-use-agent-control-board) ). -Connection Destination in Agent Control board![](../images/2020/07/43.png) #### Step3: Create an Adapter in Agent control board (old), We need the Adapter to transfer the data from one System to another system or computers. Here's an example below. -Go to Adapter on Agent Control Board (old).![](../images/2020/07/4.png)-Click the New Button to create an Adapter.![](../images/2020/07/15.png)-After that, fill in the name, type, direction, status, properties, and click the button save. Follow the example below.![](../images/2020/07/16.png) #### Step4: We need an inbound Interface for import data to Salesforce. -Create Integration and Inbound Interface with Message Types that we had uploaded. -Put an adapter, MetaData Provider, Repository, Message Type, and click button save.![](../images/2020/07/17-1.png)-We do mapping, which is a collection of key-value pairs where each unique key maps to a single value. (Please refer [#article/how-to-use-mapping](#article/how-to-use-mapping)). **• The example of mapping in the below is about How to import Binary data into ObjectAttachment in Salesforce.**![](../images/2020/07/18.png)-After that, go to the Agent control board (old) =>Select Integration.![](../images/2020/07/20.png)-Select the Interface tap, choose the interface, and click the Button PROCESS INTERFACE.![](../images/2020/07/23.png)-It will alert to go to monitor for checking results.![](../images/2020/07/24.png)-Click the Button search to see the result. #### • Here are two Accounts that import to Salesforce ![](../images/2020/07/26.png)![](../images/2020/07/27.png) ##### Summary Finally, we have learned about How to import Base 64 string data to ObjectAttachment in Salesforce. There are 4 steps to import Binary data to ObjectAttachment in Salesforce such as upload structure for getting Message Types, Connection Destination, Create adapter, and create an inbound interface for mapping. So this function is helpful for User who wants to import binary data to ObjectAttachment in Salesforce. On the next page, we will learn How to import Binary Data to ConetentVersion in Salesforce. Here is a document about import binary data to Conetentversion in Salesforce (Please refer [#article/tutorial-v2-41-lightning](#article/tutorial-v2-41-lightning)). ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to use FTP Adapter with Agent Control Board (old) ? Slug: how-to-use-ftp-adapter-with-agent-control-board-old URL: https://help.skyvva.com/#article/how-to-use-ftp-adapter-with-agent-control-board-old ================================================================================ # 1. How to use FTP Adapter with Agent Control Board (old) ? **This tutorial explains what is FTP Adapter, why do we need it. It explains how do we use it with the Agent control Board (old).** #### Introduction The **FTP Adapter** enables the integration of servers supporting File Transfer Protocol (**FTP**) and Secure Shell (SSH) File Transfer Protocol (sFTP) into Oracle Integration. The **FTP Adapter** can connect to **FTP** and sFTP servers that are publicly available on the internet. **FTP** Adapter is used as a connector to transfer data from the **FTP** server to Salesforce and from Salesforce to the **FTP** server. #### Prerequisite Before creating **FTP Adapter**, the user has to create an Integration and interface and these two steps must create in Salesforce. To create, edit, and delete you need to do in Salesforce. Please perform both integration and interface development in Salesforce first. ![](../images/2020/07/dsBuffer.bmp.png) #### Creating of FTP Adapter Follow the configuration steps: **Inbound** - Create an Integration ![](../images/2020/07/image_2020_07_13T11_44_41_696Z.png) - Create an Inbound Interface ![](../images/2020/07/image_2020_07_13T11_49_17_903Z.png) **Go to FileZilla Client & Server for Windows ** –  [Download FileZilla Client & Server for Windows...](https://filezilla-project.org/index.php) Now Go to **FileZilla Server** site - Click on Edit button - Create a user - Enable account - Set password - Click on ok button ![](../images/2020/07/image_2020_07_13T12_02_48_951Z.png) Now Go to **FileZilla Client** site - Go File then click on Site Manager - Click on New Site button - Provide all General information **Protocol, Host, etc.** - Create User and Password - Click on Connect button ![](../images/2020/07/image_2020_07_13T12_11_52_853Z.png) - Click on Quickconnect button - Directory Listing Successful - User Computer (PC) XML file is Listed on Remote Site ![](../images/2020/07/image_2020_07_13T12_31_59_029Z.png) **Now go to Salesforce Click on Adapter Inbound Tab** ![](../images/2020/07/image_2020_07_13T12_38_53_614Z.png) ![](../images/2020/07/image_2020_07_13T12_40_49_181Z.png) - Adapter property made a connection successfully with Agent and **FileZilla Client & Server ** - Authentication —Username_Password - URL —localhost - ftp_type —FTP ![](../images/2020/07/image_2020_07_13T12_55_57_995Z.png) **Now the user has to go to the Interface Detail page** - Scroll down to Inbound Setup Section - Select FTP-Inbound-Adapter ![](../images/2020/07/image_2020_07_13T13_01_34_980Z.png) - Click on Open Mapping Button ![](../images/2020/07/image_2020_07_13T13_09_34_975Z.png) - Map the target fields according to Account, Contact, Case to the Salesforce source sObject - Select **Ext Id** - Save ![](../images/2020/07/image_2020_07_13T13_18_05_314Z.png) **Now go to the Agent and Select your Integration which you just created** - Select your Interface - Click on Edit Interface Button ![](../images/2020/07/image_2020_07_13T13_25_17_710Z.png) **Now see Interface Source Definition ** - Test Source connection with Filezilla - Click on Test Query Button - Records are fetching - Save ![](../images/2020/07/image_2020_07_13T13_34_20_639Z.png) **Click on Agent Control Board (old) Tab** [- How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. - Click on the Integration tab - Select your Integration and Interface - Scroll down to Process button and click it ![](../images/2020/07/image_2020_07_13T13_40_52_691Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Now click on Monitor Tab ![](../images/2020/07/image_2020_07_13T13_44_15_581Z.png) - Scroll down to Messageboard - Click on the search button - Account created successfully ![](../images/2020/07/image_2020_07_13T13_46_21_250Z.png) ![](../images/2020/07/image_2020_07_13T13_49_40_014Z.png) **Click on the related list your record upserted successfully** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to import base 64 String data to Object ContentVersion in Salesforcewith Agent Control Board (Old)? Title: 1. How to import base 64 String data to Object ContentVersion in Salesforcewith Agent Control Board (Old)? Slug: how-to-import-binary-data-base64string-to-object-contentversion-with-agent-control-board-old URL: https://help.skyvva.com/#article/how-to-import-binary-data-base64string-to-object-contentversion-with-agent-control-board-old ================================================================================ # 1. How to import base 64 String data to Object ContentVersion in Salesforcewith Agent Control Board (Old)? #### Introduction In the last section, we learned about how to import base 64 string data with attachment files stored in the Attachment object. And now, we learn how to import binary data with attachment files stored in the Content version object in Salesforce. In this section, we are learning about How to import binary data to ObjectContentVersion in Salesforce. About import to ContentVersion in Salesforce, We are doing the same as import to ObjectAttachment in Salesforces, but we use different mapping. #### How to import binary data to Content Version #### Pre-require -Create MetaData provider and repository for the upload message type -Connection destination and create an adapter -Create Integration and Inbound Interface #### Step1: We need to have a Repository to upload structure for do mapping. How to create a MetaData provider, repository, and upload the message type we can refer to the following guide [#article/repository](#article/repository) for metadata provider. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] First, we need to upload the XML structure that is the same as the data we want to import to Salesforce. [/su_box] -Go to Repository Detail and click the button Upload File.![](../images/2020/07/11.png)-Choosing file type to upload and click Button save. which means we create Message Types. ![](../images/2020/07/12.png)-Scroll down to see Message Types.![](../images/2020/07/13.png) #### Step 2: We go to the Agent control board (old)  to the connection destination. How to use the Agent control board (old). (Please refer[ #article/how-to-use-agent-control-board](#article/how-to-use-agent-control-board) ). -Connection Destination in Agent Control board ![](../images/2020/07/43.png) #### Step3: Create an Adapter in the Agent control board (old), and We need the Adapter to transfer the data from one System to another system or computer. Here's an example below. -Go to Adapter on Agent Control Board (old). ![](../images/2020/07/4.png)-Click the New Button to create an Adapter. ![](../images/2020/07/15.png) #### -After that, fill in the name, type, direction, status, properties, and click the button save. Follow the example below. **Step4: ** we need an Inbound Interface for import data to Salesforce. -Create Integration and Inbound Interface with Message Types that we had uploaded. -Put an adapter, MetaData Provider, Repository, Message Type, and click button save. ![](../images/2020/07/44.png) -We do mapping, which is a collection of key-value pairs where each unique key maps to a single value. (Please refer [#article/how-to-use-mapping](#article/how-to-use-mapping)). -We need to do formula on-field IsMajorversion. **• The example of mapping the below is about How to import Binary data into ObjectContentVersion in Salesforce.**![](../images/2020/07/28-1.png)-Double Click on the IsMajorVersion field. We do formula and write the word "false" and click Test Formula and save it. ![](../images/2020/07/31.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] When we import binary data by content version that means the attachment has not existed in ObjContentDocument, So when we import Account with attachment make sure that attachment does not exist in ObjectContentDocument. Example:  We want to Push data that has Account and Attachment, but the attachment had already in ObjectContentDocument, so when We processed Account will not have attachment because attachment already exists in ObjectContetDocument. [/su_box] -After that, go to the Agent control board (old) =>Select Integration.![](../images/2020/07/32-1.png)-Select the Interface tap, choose the interface, and click the Button PROCESS INTERFACE.![](../images/2020/07/33.png)-Go to Monitor to see the result.![](../images/2020/07/34.png)-Here are Accounts that imported.![](../images/2020/07/35.png) ![](../images/2020/07/36.png) ##### Summary In this tutorial, we have learned about How to import base 64 string data to ContentVersion in Salesforce. There are four steps to import Binary data to ObjectAttachment in Salesforce such as upload structure for getting Message Types, Connection Destination, Create Adapter and create an inbound interface for mapping to make sure that Source name is ContentVersion. So this function is helpful for User who wants to import binary data to ObjectContentVersion in Salesforce. On the next page, we will learn How to import files to Account business by using ContentVersion. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to import attachment file to Account Using Content Version? Title: 82.How to import attachment file to Account Using Content Version? Slug: how-to-import-attachment-to-account-using-content-version URL: https://help.skyvva.com/#article/how-to-import-attachment-to-account-using-content-version ================================================================================ # 82.How to import attachment file to Account Using Content Version? #### Introduction As we already learn about how to import base 64 data to Salesforce. Now we will learn about How to import attachment to Account' business by using ContentVersion. Sometimes, the user wants to import only attachments to the Account business. SKYVVA has a limitation which can push file (Base64) around 1.6MB per transition. So if the user wants to import many files to Account, we need to use vlookup function to find Account. #### How to use import Attachment to Account by using ContentVersion? #### Pre-require -Create MetaData provider and repository for the upload message type -Connection destination and create an adapter -Create Integration and Inbound Interface #### Configuration of pushing SObject and attachment (base 64 data) in the same XML file. #### Step1: We need to have a Repository to upload structure for do mapping. How to create a MetaData provider, repository, and upload the message type, we can refer to the following guide [#article/repository](#article/repository) for metadata provider. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] First, we need to upload the XML structure that is the same as the data we want to import to Salesforce. [/su_box] -Go to Repository Detail and click the button Upload File.![](../images/2020/07/11.png)-Choosing file type to upload and click Button save. which means we create Message Types. ![](../images/2020/07/12.png)-Scroll down to see Message Types.![](../images/2020/07/13.png) #### Step 2: We go to the Agent control board (old)  to connect the destination. How to use the Agent control board (old). (Please refer[ #article/how-to-use-agent-control-board](#article/how-to-use-agent-control-board) ). -Connection Destination in Agent Control board![](../images/2020/07/43.png) #### Step3: Create an Adapter in the Agent control board (old), and We need the Adapter to transfer the data from one System to another system or computer. Here's an example below. -Go to Adapter on Agent Control Board (old). ![](../images/2020/07/4.png)-Click the New Button to create an Adapter.![](../images/2020/07/15.png) -After that, fill in the name, type, direction, status, properties, and click the button save. Follow the example below. ![](../images/2020/07/16.png) **Step4: ** we need an Inbound Interface for import data to Salesforce. -Create Integration and Inbound Interface with Message Types that we had uploaded. -Put an adapter, MetaData Provider, Repository, Message Type, and click button save. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Source Name we choosing ContentVersion. [/su_box]![](../images/2020/07/37.png)-We need to do the formula and use Vlookup on-field FirstPublishLocationId. How to use VlookUp. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Syntax : VLOOKUP(Account,Id,Name,PledgeDonation.PledgeType) [/su_box] please follow this tutorial on how to use VLookup [#article/formular-reference-guide](#article/formular-reference-guide).![](../images/2020/07/38.png)-We need to Formula on-field IsMajorVersion.![](../images/2020/07/39.png)-After that, go to the Agent control board (old) =>Select Integration.![](../images/2020/07/32-1.png)-Select the Interface tap, choose the interface, and click the Button PROCESS INTERFACE.![](../images/2020/07/40.png)-Go to Monitor to see the result![](../images/2020/07/42.png) ##### Summary In this tutorial, we have learned about How to import files to ContentVersion in Salesforce. This function is useful for users who want to import files to Business Sobject. We need to follow four steps to this function, as we have learned already. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to use File Adapter with Agent Control Board (old) ? Slug: how-to-use-file-adapter-with-agent-control-board-old URL: https://help.skyvva.com/#article/how-to-use-file-adapter-with-agent-control-board-old ================================================================================ # 1. How to use File Adapter with Agent Control Board (old) ? This tutorial explains what is File Adapter, why do we need it. It explains how do we use it with the Agent control Board (old). #### Introduction File adapter uses to integrate data from file to SFDC and from Salesforce to file. The **File** type that Agent support is CSV, XML, and Excel that can be integrated with their content. You can integrate file attachment into the attachment object. - CONTENT: use for integrating content in the file like CSV, Excel, and XML. - FILE: use for integrating file attachment into Attachment Object. #### Prerequisite Create an adapter, User has to follow steps before it would eg. Creating Integration and Interface. To create a File Adapter, there are some steps that must be followed : #### Creating of File Adapter **Inbound Case1** - Create an Integration ![](../images/2020/07/image_2020_07_15T06_42_04_679Z.png) - Create an Inbound Interface ![](../images/2020/07/image_2020_07_15T06_44_51_796Z.png) **Now go to Salesforce Click on Adapter Inbound Tab** - Create **Inbound** Adapter Type **File** - Click on Ping Connection ![](../images/2020/07/image_2020_07_15T06_49_22_111Z.png) ![](../images/2020/06/image_2020_06_25T11_02_26_882Z-1.png) Adapter property made a connection successfully with Agent and **File** Adapter - **file_upload_mode** —CONTENT - **filetype** —XML ![](../images/2020/07/image_2020_07_15T07_05_40_548Z.png) **Now the user has to go to the Interface Detail page** - Scroll down to Inbound Setup Section - Select File-Adapter-Inbound user just created ![](../images/2020/07/image_2020_07_15T07_26_38_034Z.png) - Click on Open Mapping Button ![](../images/2020/07/image_2020_07_15T07_29_51_974Z.png) - Map the target fields according to Account, Contact, Case to the Salesforce source sObject - Select **Ext Id** - Save ![](../images/2020/07/image_2020_07_15T08_30_48_602Z.png) **Now go to the Agent and Select your Integration which you just created** - Select your Interface - Click on Edit Interface Button ![](../images/2020/07/image_2020_07_15T08_34_50_483Z.png) **Now see Interface Source Definition ** - Test Source connection - Click on Test Query Button - Records are fetching - Save ![](../images/2020/07/image_2020_07_15T08_39_18_198Z.png) **Click on Agent Control Board (old) Tab** [- How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. - Click on the Integration tab - Select your Integration and Interface - Scroll down to the Process button and click it ![](../images/2020/07/image_2020_07_15T08_43_38_082Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Now click on Monitor Tab ![](../images/2020/07/image_2020_07_15T08_47_21_196Z.png) - Scroll down to Messageboard - Click on the search button - Account created successfully ![](../images/2020/07/image_2020_07_15T08_49_41_491Z.png) ![](../images/2020/07/image_2020_07_13T13_49_40_014Z.png) **Click on the related list your record upserted successfully** **Outbound Case2** - Create an Outbound Interface ![](../images/2020/07/image_2020_07_16T06_59_57_979Z.png) **Now go to Salesforce Click on Adapter Outbound Tab** - Create **Outbound** Adapter Type **File** - Click on Ping Connection ![](../images/2020/07/image_2020_07_16T07_07_04_257Z.png) ![](../images/2020/06/image_2020_06_25T11_02_26_882Z-1.png) - Adapter property made a connection successfully with Agent and **File** Adapter - **file_upload_mode** —CONTENT - **filetype** —XML ![](../images/2020/07/image_2020_07_16T07_09_21_933Z.png) **Now the user has to go to the Interface Detail page** - Scroll down to Outbound Setup Section - Select File-Adapter-Outbound user just created ![](../images/2020/07/image_2020_07_16T07_13_15_560Z.png) - Click on Mapping Button ![](../images/2020/07/image_2020_07_16T07_16_31_212Z.png) - Map the target fields according to Account, Contact, Case to the Salesforce source sObject - Save ![](../images/2020/07/image_2020_07_16T07_19_25_197Z.png) **Now go to the Agent and Select your Integration which you just created** - Select your Interface - Click on Edit Interface Button ![](../images/2020/07/image_2020_07_16T07_24_19_282Z.png) **Now see Interface Source Definition ** - Test Source connection with File - Write Query in Query/Filter section - Click on Test Query button - Records are fetching from **Salesforce Org** in Query table successfully - Save ![](../images/2020/07/image_2020_07_16T07_34_30_375Z.png) **Click on Agent Control Board (old) Tab** [- How to use the Agent Control Board (old ) ?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. - Click on the Integration tab ![](../images/2020/07/image_2020_07_16T07_38_16_961Z.png) - Select your Integration and Interface - Scroll down to Process button and click it ![](../images/2020/07/image_2020_07_16T07_40_11_121Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Now click on Monitor Tab ![](../images/2020/07/image_2020_07_16T08_02_48_083Z.png) - Scroll down to Messageboard - Click on the search button - Account created successfully ![](../images/2020/07/image_2020_07_16T08_10_45_801Z.png) **Now Go back to your PC Folder testdata** - Right-click on Folder ![](../images/2020/07/image_2020_07_16T08_16_30_255Z-1.png) **Export XML to your PC folder successfully From Salesforce** ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is the CDD (Change Data Detection) and how does it work? Title: 84.What is the CDD (Change Data Detection) and how does it work? Slug: 84-what-is-the-cdd-change-data-detection-and-how-does-it-work URL: https://help.skyvva.com/#article/84-what-is-the-cdd-change-data-detection-and-how-does-it-work ================================================================================ # 84.What is the CDD (Change Data Detection) and how does it work? **I. What is the CDD (Change Data Detection)?** CDD is an ability to record all data changes that you create or update on any business objects. It will be automatically push to your external system at any time you scheduled. **II. How does CDD work? ** It’s working when you tick flag CDD setting in the interface outbound and set time for run scheduler. CDD work when data had updated or created and this feature is looking on last Modified. **III. How to configuration CDD?** **Follow the given steps to use CDD:** **Step1:** Create Integration and Interface Outbound (CDD can use Message Type or none). ![](../images/2020/07/7-21-2020-5-11-32-PM.png) - Check the flag **Use Skyvva Outbound Scheduler** the functionality of CDD is working based on this flag when we tick box  **Use Skyvva Outbound Scheduler** the interface will display on CDC Control Board automatically - Pick CDD in CDC Mode Query packlist mean that user need the data to create into CDC Control Board after data update. ![](../images/2020/07/7-21-2020-5-15-49-PM.png) - Do mapping and save it. You can mapping the specific any field that you want the CDD works with hierarchical message type and flat message type as well. ![](../images/2020/07/7-21-2020-5-17-44-PM.png) **Step2:** Navigate to Integration -> CDC Control Board -> Scheduler The CDD is working when scheduler processed the CDD scheduler has 3 leveld are: 1. CDD_PerIntgration scheduler run based on an integration 2. CDD_perinterface scheduler run based on an interface 3. CDD_PerinterfaceGroup scheduler run based on interface Group Note: all records created into CDC control board when those records is updated or created after the scheduler started.![](../images/2020/07/7-21-2020-5-19-20-PM.png) Here is example now go to Account object and create an account record named **Jame** ![](../images/2020/07/7-21-2020-5-22-04-PM.png) - Then we Go to Integration and click CDC Control Board  the expectation we will get one record for cdc control board Choose Interface Name (CDD_OutBound) and click Search after that we can see the result Name **Jame** ![](../images/2020/07/7-21-2020-5-26-23-PM.png) **Step3:** Update account (CDD work base on Last Modifier date so if you update data different from mapping, it’s still working). So I update on Phone![](../images/2020/07/7-21-2020-5-29-08-PM.png) - Now we can see the result in CDC control board.![](../images/2020/07/7-21-2020-5-34-52-PM-1.png) - So when we updated or edit data that doesn’t match in mapping, it’s still working.![](../images/2020/07/7-21-2020-5-38-35-PM.png) **Step4:** We can collecting data that updated or created for a long time. the step is below Go to Interface Related and scroll down to see the word InterfaceControlRuntimes.![](../images/2020/07/7-21-2020-5-42-18-PM.png) - Click on the ID![](../images/2020/07/7-21-2020-5-47-10-PM.png) - **Click edit and choose the date that you want to collecting data to display.**![](../images/2020/07/7-21-2020-5-49-42-PM.png) - Let’s change it , Today is 29 of May and I want to collecting data that created and updated from 18 of May to Now.![](../images/2020/07/7-21-2020-5-52-01-PM.png) - Now go back to CDC control board to see the result. So I can see many accounts that have been created or updated.** ![](../images/2020/07/7-21-2020-5-54-23-PM.png)** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to call store procedure by handling the response using Agent? Title: 1. How to call store procedure by handling the response using Agent? Slug: how-to-call-store-procedure-by-handling-the-response-using-agent URL: https://help.skyvva.com/#article/how-to-call-store-procedure-by-handling-the-response-using-agent ================================================================================ # 1. How to call store procedure by handling the response using Agent? #### Introduction This tutorial explains how to use the new feature calling store procedure by handling the response using Agent. the responding store procedure is calling out from Salesforce to database system vai store procedure. After callout and we will get a response or fault message back real-time in the same calling. It supports only Synchronous mode. #### How to call store procedure by handling the response using Agent #### Pre-request call store procedure by handling the response firstly, you need to have some required step before you can do call store procedure by handling the response: - Create a Store Procedure - Create Interface (Inbound as a response and outbound as a request interface) - Create Adapter - Do mapping (Inbound and Outbound) #### Configuration - Create a Store Procedure CREATE PROCEDURE [dbo].upsertAccountTest01, @name nvarchar (255), @billingcity nvarchar (255), @billingcountry nvarchar (255), @nameOut nvarchar (255) OUTPUT, @billingcityOut nvarchar (255) OUTPUT, @billingcountryOut nvarchar (255) OUTPUT ) AS BEGIN IF EXISTS(SELECT id, name, billingcity, billingcountry FROM Account_Out WHERE Name=@name) BEGIN UPDATE Account_Out SET id=@id, name=@name, BillingCity=@billingcity, BillingCountry=@billingcountry WHERE Name=@name; END ELSE BEGIN INSERT INTO Account_Out (Id, Name, BillingCity, BillingCountry) VALUES (@id, @name, @billingcity, @billingcountry); END SELECT @id=id, @nameOut=name, @billingcityOut=billingcity, @billingcountryOut=billingcountry FROM Account_Out WHERE name=@name; END 2. Create an interface - Select Operation Type: UpSert - Select processing mode: Synchronous - The inbound interface as a Response interface - An outbound interface as a Request interface ![](../images/2020/07/1.png) 3. Create Adapter on Agent UI - Please run SKYVVA Integration Agent -> Integration Wizard - Choose your Property File - Go to interface detail by double click any interface in the interface list - Creating of JDBC Adapter ![](../images/2020/07/2.png) 4. Do mapping - Outbound interface ![](../images/2020/07/3-1.png) - On the Outbound interface you need to add the ID of the Inbound interface on-field Response interface ![](../images/2020/07/4-1.png) - The inbound interface you need to create Istructure (@nameOut,@billingcityOut,@billingcountryOut) like parameter in Store Procedure ![](../images/2020/07/5-1.png) - Do mapping on the Inbound interface ![](../images/2020/07/6.png) 5. Push data ![](../images/2020/07/7.png) 6. Check the result on the Message board ![](../images/2020/07/8-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How is the Outbound interface using Message Type through Old Agent Control Board for JDBC Adapter (SQLServer)? Title: 1. How is the Outbound interface using Message Type through Old Agent Control Board for JDBC Adapter (SQLServer)? Slug: how-to-use-outbound-interface-using-message-type-through-agent-control-board-for-jdbc-adapter-sqlserver URL: https://help.skyvva.com/#article/how-to-use-outbound-interface-using-message-type-through-agent-control-board-for-jdbc-adapter-sqlserver ================================================================================ # 1. How is the Outbound interface using Message Type through Old Agent Control Board for JDBC Adapter (SQLServer)? #### Introduction This tutorial explains how is the Outbound interface using flat data with a Message Type that has support with the JDBC Adapter in The Old Agent. #### What is the JDBC Adapter in Old Agent? JDBC Adapter is used as a connector to transfer data from Database to Salesforce and from Salesforce to Database. The Agent supports five-database types include Oracle, MySQL, SQLServer, MsAccess, and PostgreSQL. #### Pre-request to process Outbound interface using Message Type Firstly, you need to have some required step before you can do the Outbound interface with flat data using Message Type: - Configuration on Agent Control Board - Create Adapter on Agent Control Board - Create Message Type - Create integration and outbound interface - Do mapping #### Configuration 1. Configuration on Agent Control Board - Agent Server Credential - Salesforce credential - ![](../images/2020/07/9-1.png) 2. Create adapter on Agent Control Board - Go to Adapter tab on Agent Control Board -> Click on New button - Adapter Section: Choose Adapter Type(JDBC) -> Name Adapter - Adapter Properties: Database Type: Choose SQL Server. The type of database to which the adapter connects. Select between SQL Server or other. - Username: sa - Password: *** (The default password to use when making the connection to the database) - Hostname: 192.168.123.65(Ip address) - Port: 1433(default) - Database name: - Server Instance: (local) - Connection Destination: Agent property file - Save ![](../images/2020/07/10-1.png) 3. Create message type - You need to create MetaData Provider - Create repository - Click on Open Database(Old) button AGENT Property File: OldAgent_AWS.properties - Adapter Type: JDBC - Adapter Name: Outbound_adapter_SQL - Click on Retrieve Database - Table/Stored Procedure Name: Choose table name in Database - Save ![](../images/2020/07/11-1.png) - Message Type ![](../images/2020/07/12-1.png) 4. Create integration and interface - Metadata Provider: SreymayMeta - Repository: Repo - Source/Target Message Type: tbl_account ![](../images/2020/07/13-1.png) - Go to interface Detail Put the table name in a database on Source/Target Name field ![](../images/2020/07/14-2.png) 5. Do mapping ![](../images/2020/07/15-1.png) 6. Push data - Go to Agent Control Board -> integration tab -> Choose the interface that you want to process -> Click on PROCESS button ![](../images/2020/07/16-1.png) 7. Check result - The result on Message board ![](../images/2020/07/17-2.png) - Result in SQL Server ![](../images/2020/07/18-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Interface group in Agent Control Board (old)? Title: 1. How to use Interface group in Agent Control Board (old)? Slug: how-to-use-interface-group-in-agent-control-board-old URL: https://help.skyvva.com/#article/how-to-use-interface-group-in-agent-control-board-old ================================================================================ # 1. How to use Interface group in Agent Control Board (old)? #### Introduction This tutorial explains the interface group in Agent, what interface group, and how to create it. It describes how to create and using it. #### What is the Interface group? An interface group is a unit to group logical interfaces together. For example, you can group interfaces that are related to each other e.g. Account and Contact to one interface group. The interface group is the object user define at configuration time. #### How to create an interface group? Inside the interface group, we have a sequence number, Interface execution base on the sequence number is only useful for interface group and execute the interface in the order of the interface group. Before creating an interface group, there are some properties you must know: - Interface Group Name: It’s the name of the interface group. The name will be used as a part of the queue name. - Integration: This is integration. You create an interface group which belong to an integration. - Processing interface group has two type EO and EOIO : EO: we don't care about the sequence. Then the interface can be overtaken each other at the processing level. It’s working only V3. - EOIO: we have to follow the interface sequence and stop the processing when one interface failed. This means that one interface failed can block all other interfaces. - Package Size: the package size is taken from the individual interface. This means that the package size on the interface has higher priority as the package size on the interface group .if in the interface, there is no package size then use the package size from the group. - Last/Next Run Date: After processing the scheduler, we also can see the last/next run date. - Last data processing: we can see the last data processing as on interface. #### Configuration - Create Integration ![](../images/2020/07/1-1.png) 2. Create an interface - Status: Deployed - Operation: Upsert - Type: Inbound ![](../images/2020/07/2-1.png) 3. Agent Control Board (Old) - Go to Integration Tab and choose the Agent Control board (old). ![](../images/2020/07/3-2.png) 4. Choose properties name ![](../images/2020/07/4-2.png) - Configuration connection salesforce to the Agent control board. ![](../images/2020/07/5-2.png) 5. Create Interface group - Click on the ‘ **New button‘** to create a new one. ![](../images/2020/07/6-1.png) 6. Fill the field as shown in screenshots - Enter Interface group - Enter Integration - Choose Direction Type - Choose a type for the interface group - Choose priority ![](../images/2020/07/7-1.png) 7. Add interface - Click on Add interface Button. ![](../images/2020/07/8-2.png) - Choose the interface that you want to add to the new interface group. ![](../images/2020/07/9-2.png) 8. Check result - Here is the result of creating an interface group. ![](../images/2020/07/10-2.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How does the new version 3 of inbound processing works? Title: 88. How does the new version 3 of inbound processing works? Slug: 88-how-does-the-new-version-3-of-inbound-processing-works URL: https://help.skyvva.com/#article/88-how-does-the-new-version-3-of-inbound-processing-works ================================================================================ # 88. How does the new version 3 of inbound processing works? #### Introduction This tutorial is to explain the Inbound V3 processing. The Inbound V3 processing is based on the Message type. Please refer to the admin guide( [What is Message](#article/17-1-message-type)[ Type](#article/17-1-message-type)**)**and the tutorial ( [How to use Message type](#article/1-how-to-use-message-type) **) **to understand the concept of the message type. Inbound V3 is very powerful than Inbound V2 because it supports hierarchical data which can be designed by the message type directly. For example when using with V2 and when we have a hierarchical data (Account and contact) we need to create two Interfaces and use IChain for building the relationship between the parent and child. However, Inbound V3 we don't need to create two interfaces separately and use IChain. We just need one Interface with Message Type to do mapping. This means that with the new version V3 the design and processing of hierarchical data is enormous simplify and easier (follow this guide [The new Inbound processing with version v3](#article/6-8-the-new-inbound-processing-with-version-v3) ) to detail more. In addition, Inbound V3 support different processing mode like can normal integration, Batch, Bulk Mode, and Auto-Switch Mode. Follow this tutorial to understand what are the different modes and when we use their mode ( [When to use synchronous, batch or bulk interface? ](#article/when-to-use-synchronous-batch-or-bulk-interface)and [when to use Auto-Switch Mode?](#article/what-is-the-auto-switch-mode-and-when-to-use-it) ). #### Enhance new Inbound  V3 processing There are two techniques in new Inbound V3 for flexible way to enhance the process of flow among with Plug-In block and Replacement block. - Plug-In block is the technique that gives the ability for solving user requirement. this means that the user can extend our existing class or can add their class to existing Skyvva classes. A custom class can be apex class, flow or a process. We have the following plug-in block which could make sense: Before processing - Before Mapping - Before Workflow - Before Operation - After Processing - Replacement block is the technique that the user can use a custom class to override our SKyvva Classes. User can replacement block to 4 standards  Skyvva processing: Create Message - Workflow - Mapping - Operation **Here's the picture of Inbound V3 processing** ![](../images/2020/07/32-2.png) As the picture above we can see two Inbound processing such as old and new. In old Inbound processing work with Skyvva 4 steps, first of all, When we import the data, the data will create a message and then go to check the workflow that we use. next is checking the Mapping and final step it will do Operation (Upsert, Insert, Update, and delete). So this old Inbound V3 is not flexible because it cannot make us use our own logic. That why SKYVVA has to enhance the new one Inbound V3. The new Inbound V3 has the same SKYVVA flow as the old but we add more features which have Custom replacement and Custom Plug-in to help User do own business logic. #### Summary So as we know the processing of inbound V3 work base one Message Type, we can assume that Inbound V3 is more useful than Inbound V2 because Inbound V3 can help the user to do plug-in block or replace block. Also, When we use Inbound V3 we don't need two Interfaces like Inbound V2 to import hierarchical data because Inbound V3 is work base on Message Type that can help create a hierarchical structure to do mapping. Follow this link [How to create Custom class? ](#article/6-9-new-plug-in-custom-logic-of-the-inbound-processing) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How does the new version 3 of inbound processing works? Title: 88.1 How to use Plug-in Custom logic of the new Inbound V3 processing? Slug: 88-1-how-to-use-plug-in-custom-logic-of-the-new-inbound-v3-processing URL: https://help.skyvva.com/#article/88-1-how-to-use-plug-in-custom-logic-of-the-new-inbound-v3-processing ================================================================================ # 88.1 How to use Plug-in Custom logic of the new Inbound V3 processing? ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to add filter condition on "Set context" in mapping? Title: 90. How to add filter condition on "Set context" in mapping? Slug: 90-how-to-add-filter-condition-on-set-context-in-mapping URL: https://help.skyvva.com/#article/90-how-to-add-filter-condition-on-set-context-in-mapping ================================================================================ # 90. How to add filter condition on "Set context" in mapping? #### Introduction This tutorial explains how to add filter condition on "Set Context" in mapping and how to configure it. #### What is "Set Context" in Mapping? “Set context” in mapping to enable you to map the child node to the same level as you do for the parent. For example, if you have an invoice where you want to map the items to the same target node sObject like the invoice header we just take the first one of the items. The filter function you can add a condition to exactly fetch the item which you really need. E.g. the item with the amount of 25 USD. The condition is used to filter the child records which is to be used to map to the target object along with its parent. **Pre-required** Firstly, you need to have some required step before you can add filter condition on set context: - Create MetaData Provider - Create Integration and inbound interface - Do mapping - Push data payload from SoapUI with API:..../V3/Integrate #### Configuration **Step-1:**Create MetaData Provider, Repository and Message Type ( i.e. AccountMT,ContactMT,AssetMT) In this case, we use Open Editor on Repository to create Message Type [aux_code language="javascript" theme="tomorrow" title="**Here is the XML for creating Message Type** " extra_classes=""] Phnom PenhC 1 CambodiaC 1 VonTestC01 jonhc1@test.com Jonh1 Smeet1 Land-101 11.00 112233 [/aux_code] **Here is Message Type ** ![](../images/2020/07/a.png) [aux_code language="javascript" theme="tomorrow" title="**Here is the request payload **" extra_classes=""] { "dtoRequestBody": { "mode":"synchronous", "integration":"SetFilter", "iinterface":"AccountInbound", "transferId":"1234", "runtimeParameter":"", "responsePayloadFormat":"json", "payloadFormat":"json", "payload":"{\"Root\":{\"AccountMT\":{\"BillingCity\":\"Phnom PenhC1\",\"BillingCountry\":\"CambodiaC1\",\"Description\":\"\",\"AccountName\":\"VonTestC01\",\"ContactMT\":[{\"EMAIL\":\"jonhc1@test.com\",\"FirstName\":\"Jonh01\",\"LastName\":\"Smeet01\"},{\"EMAIL\":\"jonhc123@test.com\",\"FirstName\":\"Jonh02\",\"LastName\":\"Smeet02\"}]}}}" } } [/aux_code] **Step-2: **Create Integration and interface - Inbound interface for Account object, Status: Deploy, Operation type: Upsert and Choose MetaData Provider name, Repository and Message Type ![](../images/2020/07/a1.png) **Step-3: **Mapping Configuration on mapping + Level1: “AccountMT“ -  Map AccountName of “AccountMT“ to Name of Account on the target side - Set “ ContactMT“ to equal “ AccountMT“ - Map FirstName of “ContactMT“ to BillingCity of Account on the target side - Map LastName of “ContactMT“ to BillingCountry of Account on Target side **This section will show you how to set filter condition "AND" in mapping.** go to interface details page then click button open Mapping - Right-click on ContactMT -> Click on Set Context Level ![](../images/2020/07/a2.png) - After Click on Set Context level -> We Set “ContactMT“ to equal “AccountMT“ ![](../images/2020/07/a3.png) - Do mapping ![](../images/2020/07/a4.png) - Set filter condition of Context Level (Right-click on “ContactMT“ -> Click on Set/Remove Filter) ![](../images/2020/07/a5.png) **Step-4:** Create Rest Project on SoapUI for V3 Integrate - Past org: instance and API name Instance name: [https://sreymai-dev-ed.my.salesforce.com](https://sreymai-dev-ed.my.salesforce.com) - API name: /services/apexrest/skyvvasolutions/V3/integrate Example: ![](../images/2020/07/g2.png) **Step-5: **Push data payload from Soap UI to Salesforce ![](../images/2020/07/a8.png) - Check the result on Message Detail After push data, we get the records based on the filter on set context(FirstName = “Jonh02“, and LastName=“Smeet02“) ![](../images/2020/07/a9.png) **This section will show you how to set a filter condition "OR" in mapping.** **Step-6: **Mapping ![](../images/2020/07/a4-1.png) - Set Filter Condition of Context Level (Right-click on “ContactMT“ -> Click on Set/Remove Filter) ![](../images/2020/07/a12.png) **Step-7:** Push data payload from Soap UI to Salesforce ![](../images/2020/07/a8-1.png) - Check the result on Message Detail After push data, we get the records based on the filter on set context(FirstName =“Jonh01“) ![](../images/2020/07/a13.png) **Summary ** Finally, we have learned about how to add filter conditions on "set context" in mapping. We have understood how to set the filter, filter function we can add a condition to exactly fetch the item which we really need, and the condition is used to filter the records which are to be used to map to the target object along with its parent. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to export the Metadata in different format as xsd, XSD (Response for V3 Inbound), json schema, WSDL 1.1, swagger 2.0/OpenAPI 2.0 and openApi 3? Title: 47.1 How to export WSDL 1.1? Slug: 47-1-how-to-export-wsdl-1-1 URL: https://help.skyvva.com/#article/47-1-how-to-export-wsdl-1-1 ================================================================================ # 47.1 How to export WSDL 1.1? #### Introduction This tutorial will show you how the export WSDL 1.1 file. It guides you why we need it and what we do on file after generating it. For exporting the message Type of WSDL 1.1 Format as following: - The interface could be Request, Response, and Fault. - The Request/outbound interface will get the IStructure/MessageTye based on the interface and get extra fields as SKYVVA__MessageId field. The SKYVVA__MessageId field will generate for all levels of messageType. - The Response/inbound interface will get the IStructure/MessageTye based on the interface and get extra fields such as SKYVVA__MessageId, SKYVVA__MESSAGE, and SKYVVA__Response_Code field. The SKYVVA fields generate only the parent level with messageType. - The Fault will get the IStructure/MessageTye based on the interface and get extra fields such as SKYVVA__MessageId, SKYVVA__MESSAGE, and SKYVVA__Response_Code field. The SKYVVA fields generate only the parent level with messageType. - When the interface doesn’t link with Request Interface, it will automatically generate as Request. If the interface link with Request Interface, it will generate as Response. - When the interface link with the Request and Response Interface, it will generate as Fault. - The interface link Request, Response, and Fault Interface, it will alert message error “ Error While Processing. This is might be the Interface Structure Configuration issue“. - The SKYVVA field will not generate from Interface ISturcture that upload from the file. - The old ways checkbox will generate old or new ways of file format. - It will export the normal message type and SOAP template in the generic page and interface page. - It will generate only the SOAP template in the message type of repository. #### Pre-required First, you need to do some prerequisite steps before you can use the function “Generate Metadata“: - Create Integration - Create Inbound/Outbound Interface - Create IStructure/Message type add into the interface #### How to get message type in WSDL 1.1 File? The WSDL 1.1 can be generated at three places e.g. in the custom link of Integration and directly on the interface details page. We pick up one for sample using the inbound interface and having Message Type. Before getting the message type, we need to have a MetaData provider, a Repository. This is the Message Type sample: ![](../images/2020/08/Sample-of-MessageType.png) Inbound interface using with Message Type ![](../images/2020/08/Sample-of-Create-Interface.png) Checking structure message type in mapping tool at the left side because we are using an inbound interface. ![](../images/2020/08/MappingToolforcheckingGenerate.png) Now you are able to generate MetaData. we will show you how to generate metadata on **the generic page (the customs link of Integration Details Page)**. Please enter the integration details page and you will able to see the “Generate MetaData“ in the Custom Links section. Please click the Generate MetaData link: ![](../images/2020/08/Custom-Link.png) Generate metadata in new ways of WSDL 1.1. Please choose the interface name on “Create WSDL For Interface”, Choose file format WSDL 1.1 in “Chose a format file”, uncheck the checkbox “As old ways?” and click the “Export” button. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If your interface link to message type as WSDL template, so Combobox ‘Chose a format file’ will display only ‘WSDL 1.1’ option.[/su_box] ![](../images/2020/08/GeneateMetaData-Detils-Page.png) You will get a WSDL 1.1 file format under the “Outbound Interfaces (Related List)” section. You can download it by clicking the link “View”. You will able to see the file after download in download folder or download bar chrome browser. ![](../images/2020/08/DownlaodFileWSDL.png) This is the **second way to generate WSDL 1.1** format, you can go to Interface Details Page that you want to generate. You will see the “Generate MetaData” button in the header section page. Please click this button to see the pop-up screen. ![](../images/2020/08/InterfaceDetailsPage.png) Please choose WSDL 1.1 in “Chose a format file” picklist and click the “Export” button. ![](../images/2020/08/GeneateMeDataInInterfaaceDetailPage.png) You will get WSDL 1.1 file in the download bar section or you can check on the download folder on your local pc. ![](../images/2020/08/DownloadinInterfaceDetilsPage.png) After you get the WSDL 1.1 file you can import it for example into the SAP PO system side as the screenshot below. ![](../images/2020/08/SAP-PO-System.png) This is the **third way to generate WSDL 1.1** format from the message type. Please enter the repository. Then you will see the “Generate MetaData” Action button in the message type section. Note: if you want to generate the WSDL 1.0 file format on the message type, your message type has to SOAP template. For example, you can generate WSDL Service only. It has three-part in WSDL such as Request, Response, and Fault Message type depend on your business message type. Here is the SOAP message type template: ![](../images/2020/08/MessageTypeOfSOAPTemplate.png) We will show you to export the “SOAP Service” message type. Please click the MetaData button ![](../images/2020/08/ExportMetaFromMessageTypeOfRepository.png) It will pop-up to export metadata, then please choose the WSDL1.1 file format. ![](../images/2020/08/ChoseFileFormatForMessageTypeRepository.png) You will get WSDL 1.1 file in the download bar section or you can check on the download folder on your local pc. ![](../images/2020/08/GetFileAfterExportMetaFromMessageTypeRepository.png) After you get the WSDL 1.1 file you can import it for example into the SAP PO system side as the screenshot below. ![](../images/2020/08/ImportTheMessageTypeIntoSAPPO.png) **Summary** Finally, you have learned how to generate metadata with a WSDL 1.1 file format was in the generic page, Interface details page, and message type. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. Agent Kafka Adapter Slug: how-to-use-the-agent-kafka-adapter URL: https://help.skyvva.com/#article/how-to-use-the-agent-kafka-adapter ================================================================================ # 1. Agent Kafka Adapter **Learning Objectives:-** **This unit describes:-** - About Agent Kafka Adapter? - Event-based communication. - How to use it? - What is the advantage of using it? #### Introduction: This tutorial explains about the Agent Kafka adapter. Kafka is an Event-based communication. Event-based communication contains two main components: Publish (Producer) and Subscribe (Consumer). The work of a publisher is to upload a message into a queue or topic, which is Kafka or Pulsar, and the middleware tool like Kafka and Pulsar will maintain the news; they follow the principle of Publish and Subscribe. And they will deliver messages to the Consumer. Then all the applications can subscribe. For example, Netflix plays the role of a publisher. And we play the part of the subscriber(Consumer). Same way Kafka Adapter which we will see in this tutorial. **Few Points to know related to Kafka is given below:** #### Event-based Communication: This is the modern way of communication between different applications. It has two components: Publish and subscribe—for example, Netflix, youtube. - We can see the picture given below for reference. The SAP is a producer who is pushing messages, and Kafka or Pulsar works here as middleware and maintains messages. All other applications like Twitter, HubSpot, salesforce is a consumer or subscriber here. So SAP just needed to publish it one time, they don't need to send it to different applications individually. ![](../images/2020/08/kafkaAd.png) - One more example for better understanding. We all use Netflix to watch movies. It uses the Queuing tool and streaming tool. Netflix here plays the role of ProducerProducer, and we play the part of the Consumer. Netflix uploads Movie once, and all others who are subscribers of Netflix can watch. They do not need to request again and again. To send it individually, it takes so much time; here, we just needed to upload once, and all the subscribers will get it. ![](../images/2020/08/kafkaAd1.png) #### #### Event-Driven Technology Terminology: We have five main Event terminology. - Publish - Subscribe - Streaming - Producer - Consumer Check the picture below for description. ![](../images/2020/08/kafkaAd2.png) #### #### Any Connect: - Any connect is an easy tool that helps users to get your data into Salesforce objects. - Any Connect can also extract data from database objects into any of the destinations as per business requirements. - Similarly, Agent can use bulk deletions by exporting the ID fields for the data we wish to delete and using that source to specify deletions through the Any Connect. - Many networks and server monitoring solutions use what are called "Any Connect" to get values from the machines they are monitoring. It is programs that run on the remote machines and communicate with the main monitoring system. Some merchants try to hide the fact that they use Any Connect. They will try to deliver things like they "deploy" to remote systems or use other words, but it all compresses installing custom software on the remote machines. - We have available connectors like Pulsar, Kafka, Database, File, FTP, ftps, sftp, SOAP, and REST. ![](../images/2020/10/Any-Connect.png) #### #### Kafka Adapter: We have 2 Kafka Adapter- - **Outbound Kafka Adapter:** We need Outbound Kafka Adapter when we want to send data out from salesforce; here, We need to create a topic first. From salesforce, we can send data messages to the API endpoint of our Agent, and then we have a camel producer to publish into the topic invoice, which is on the Kafka side. This is the outbound process because we are sending data out here. It plays the role of Producer. - **Inbound Kafka Adapter:** We use Inbound Kafka Adapter when somebody pushes the topic into a topic customer on the Kafka side; then we are consuming. We have an event-driven listener, which is a camel consumer. We don't need a scheduler. We can consume immediately. This is the Inbound process because we are receiving data here. It plays the role of the Consumer. Check the picture given below for reference. ![](../images/2020/08/kafkaAd4.png) Summary This Feature is beneficial and a modern way of communication, which is event-based communication. Kafka can handle many terabytes of data without incurring much at all in the way of overhead. Kafka persists the messages on the disks, which provides intra-cluster replication. This makes for a highly durable messaging system. Kafka replicates data and can support multiple subscribers. Developing a Kafka adapter makes our client work easier and efficient too. Agent Kafka Adapter is a tool that helps the user to integrate data. Agent Kafka Adapter has two functions like Consumer, which sends data from Apache Kafka to Salesforce, meaning that we can use inbound with Agent Kafka, and Producer is using for send data from Salesforce to Apache Kafka that mean we do Outbound from Salesforce to Apache Kafka. In the next chapter, we will learn how to use the Agent Kafka adapter for Consumer and ProducerProducer. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to use the New Agent File adapter? Slug: how-to-use-the-agent-file-adapter URL: https://help.skyvva.com/#article/how-to-use-the-agent-file-adapter ================================================================================ # 1. How to use the New Agent File adapter? [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - The user has to assign **SkyvvaAllPermissions** set to the current user. - The user has to add **skyvvasolutions **namespace inside callout logic.[/su_box] #### Introduction **Agent File adapter** uses to integrate data from file to SFDC and from Salesforce to file. The **File** type that Agent support is CSV, XML, and Excel that can be integrated with their content. A File Adapter is an object used to manage file-based information through Clarify. File Adapters aid in the management of file-based resources: they can create, edit, delete, read, or write files on the local file system or on mapped network drives. #### How Agent File Works Business Processes use **Agent File Adapter** to perform file-based operations on data. Writing data immediately after transformation activity is the most common use of File Adapter. In addition to the data, Business Processes can supply runtime directions to the adapter. For example, a user may want to supply the name of a file to be written to the local file system. The Business Process can supply the file name (and other common runtime values) to the File write Adapter. #### Prerequisites - The user has to assign a **SkyvvaAllPermissions** set to the current user. - The user has to add **skyvvasolutions namespace** inside callout logic. - Supports **Asynchronous** mode, Asynchronous mode is a switching technique used by **SKYVVA** that uses asynchronous time-division multiplexing to encode data into small, fixed-sized cells.  An **Asynchronous** mode is working as when you make a request and whatever the result. Whether you failed or success just call the function **SKYVVA** gonna give you a call back code. So **Asynchronous** never waits for a call to come back in order to execute the rest of the code. #### Business Flow Assign** SkyvvaAllPermissions **to current User - Go to SETUP Users - Click on Username ![](../images/2020/08/image_2020_08_06T07_25_20_539Z.png) - Scroll Down to Edit Permission Set Assignments - Click on the Edit Assignments button - Add **SkyvvaAllPermissions** to Enable Permission Sets ![](../images/2020/08/image_2020_08_06T07_33_43_109Z.png) - Click on save ![](../images/2020/08/image_2020_08_06T07_41_01_481Z.png) #### Creating an Agent File Adapter **Outbound Asynchronous mode** - Create an Integration & Interface ![](../images/2020/08/image_2020_08_06T07_46_15_710Z.png) **Now Click on Adapter Outbound** - Create **Outbound** Adapter Type **Agent** **File** ![](../images/2020/08/image_2020_08_06T07_55_15_431Z.png) - Adapter property made a connection successfully with Agent and **Agent** **File** Adapter - **upload_mode** —Override - **filetype** —CSV - **FileProtocol**—Local - **Separator**— (,), (;), (Tab), (I) ![](../images/2020/08/image_2020_08_06T07_59_52_437Z.png) **Now the user has to go to the Interface Detail page** - Scroll down to Outbound Setup Section - Select Adapter-File-Outbound user just created ![](../images/2020/08/image_2020_08_06T08_15_09_923Z.png) - Click on Mapping Button ![](../images/2020/08/image_2020_08_06T08_18_47_150Z.png) [su_box title="Package Size" box_color="#2a8af0" title_color="#000000"]Define package size based on how many records user required to process at a time on **Processing Mode = Asynchronou**s[/su_box] - Map the target fields according to Account Salesforce source sObject - Click on Auto Mapping button ![](../images/2020/08/image_2020_08_06T08_22_22_948Z.png) - Save **Click on Agent Control Board Tab** –[How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. - Click on the Cache tab - Select your Integration Name - Click on a Push button ![](../images/2020/08/image_2020_08_07T06_35_27_326Z.png) **Now Go to Setup and open Developer console ** ![](../images/2020/08/image_2020_08_07T06_44_49_112Z.png) **Open the anonymous Window Ctr+E ** - This triggered Callout code shows existing records in Message Board - String[] ids= new String[]{'0013u000017a5B3AAI'}; (means that User has to Pass Account Record Ids) it can be more than one. - List result = skyvvasolutions.Iservices.invokeCalloutV3('Agent-File-Integration','Agent-File-Interface',ids,'AUTO',c)(means that user has to write **skyvvasolutions namespace **because this **invokeCalloutV3 method **has written on our **SKYVVA** Product). It is a must to write **skyvvasolutions namespace** in dev/production Org. No need to write **skyvvasolutions namespace in Sandbox because SKYVVA is a managed package.** - On the other side of code in which the user has to pass an argument user has to mention 'Integration Name','Interface Name' [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0013u000017a5B3AAI'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('Agent-File-Integration','Agent-File-Interface',ids,'AUTO',c);[/aux_code] ![](../images/2020/08/image_2020_08_07T07_14_52_180Z.png) - Then click on Execute button **Now Go to Message Monitor Tab** ![](../images/2020/08/image_2020_08_07T07_21_58_092Z.png) - Scroll down to Messageboard - Click on the search button - Record created successfully ![](../images/2020/08/image_2020_08_07T07_24_17_023Z.png) #### Summary Users have learned about How to use the Agent File adapter. User has to follow the upper steps to understand New Agent File Adapter is always work with Processing Mode=’**Asynchronous**’ and CSV and EXCEL File is work with **flat** mapping and XML file is work with hierarchical mapping). ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use Agent Control Board (New)? Slug: how-to-use-agent-control-board-new URL: https://help.skyvva.com/#article/how-to-use-agent-control-board-new ================================================================================ # How to use Agent Control Board (New)? #### Introduction The new agent control board is a component that can connect different application systems. Besides the component connect that we build on salesforce already.  But some protocols we cannot build on salesforce which is technically not possible. That’s why we build a new component called “Any Connect” which is based on apache camel is open source around the world. ![](../images/2020/08/Untitled2.png) Navigate to the Agent Control Board link on Integration details and then we can see any tabs on Agent Control Board which are: - Configuration Tab - Integration Tab - Interface Group Tab - Adapter Tab - Schedulers Tab - Log Configuration - Logs Tab - Cache Monitor - Adapter Monitor - Agent Cache - System Information Tab ![](../images/2020/08/agent.png) Follow the steps below to create a connection destination with the agent and then we can use any tabs from Agent Control Board: ** ** **Pre-required** - Create Salesforce connected app - Create Remote Site - Create Connection name on Agent Control Board **Step -1: Create Connected app on Salesforce           ** - Navigate to the search box and just type “**app…**” for finding the **App Manager** menu then click New Connected App to create a new connection on Salesforce ![](../images/2020/08/Untitled1-2.png) - Fill required information ![](../images/2020/08/Untitled2-2.png) - After that click button Save ![](../images/2020/08/Untitled3.png) - Click continue ![](../images/2020/08/Untitled4.png) - Here is the Client-Id (Consumer Key) and Client-Secret (Consumer Secret). But we cannot use those keys immediately as Salesforce has a display of a warning in the red line ![](../images/2020/08/Untitled5.png) **Step -2: CreateRemote Site ** ** ** We need to create a new Remote Site for allowed Salesforce access to your external system. Put host URL and Agent port number Example: *http://18.158.217.193:9055* ![](../images/2020/08/Untitled6.png) **Step -3 Create new Connection name** - Provide the credential to Connection Destination **Destination**→New **Name**→*any name* **Description**→ (*optional*) **Type** →any type, for example, Agent Database. If we work with Database, so Type is “Agent Database”. We need to create a connection type depends on the working target. ![](../images/2020/08/Untitled7.png) Then click on the **Continue** button - Second, provide the credential of Agent for ping connection from Salesforce to AGENT **Host URL**→ http://18.158.217.193 **Port Forward**→ 9055 (default) **Username**→skyvva (default) **Password**→skyvva@12! (default) ![](../images/2020/08/2-3.png) Then click on the **Ping Agent Connection** button - Third, provide the credential of Salesforce for ping connection from AGENT to Salesforce **Username**→ username of your org **Password**→ password of your org **Security Token**→optional, but if the org has been generated the Security Token we need to put it **Server Environment**→Sandbox/Production **Consumer Key** and **Consumer Secret** users get from the connected app from the Salesforce side ![](../images/2020/08/Untitled8.png) Then Click on the **Ping Salesforce Connection **button After we ping successful then we can save the connection name. And then we can use any Tab on the Agent Control Board, like checking system information of the Agent server ![](../images/2020/08/Untitled9.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use message type? Title: 7. How to create Message Type from Salesforce sObject? Slug: 7-how-to-create-message-type-from-salesforce-sobject URL: https://help.skyvva.com/#article/7-how-to-create-message-type-from-salesforce-sobject ================================================================================ # 7. How to create Message Type from Salesforce sObject? #### Introduction As we know already about message type is describing the structure of a message that we will use in the mapping tool. We can create message type in many ways, but in this tutorial will show how to get message type from salesforce sObject. There are 788 sObjects in Salesforce. So when we use Salesforce sObject to get Message type, it will get All sObject.That means all sObject will generate to Message Type; Even we don’t want to use some message type. #### How to use it? Pre-require -Create a Metadata provider and repository for upload salesforce sObject. **Step 1:** We need to create a MetaDataProvider and Repository. - Go to MetaData providers and click the New button. - Fill the name and click the Save button. ![](../images/2020/08/1.png) - After we created Metadata Provider, we need to create a Repository  to generate Salesforce sObject - Click the New button in the Repository block. ![](../images/2020/08/2.png) - Fill the name and choose type Salesforces sObject. - Click the Save button. (example below) ![](../images/2020/08/3.png) - After we save it, we can see the Button Upload All sObject in the repository. - Click Upload All sObject button. (The example below) ![](../images/2020/08/4-1.png) - It will tell Number of All sObject, then click the Upload button. (see the example below) ![](../images/2020/08/5.png) - We need to Refresh page because it has lots of sObject and then we got Messages Type sObject from Salesforce. (See the example below) ![](../images/2020/08/6.png) - We can edit Message Type to hierarchical Message Type. For example, we want Account has a Contact child. so we need to go to Contact and click edit and set Account as the parent of Contact. (see in the picture below) ![](../images/2020/08/7.png) - After we click the edit button, we need to set Account to parent for Contact and click Save button. (see in the image below) ![](../images/2020/08/8.png) -After we save it, we can see the Message Type of Account has a child which is Contact. ![](../images/2020/08/9.png) - We can add the Message Type of Case is a child of Contact by going to Message Type of Case and set Parent is Contact. - Click the save button after we set it. ![](../images/2020/08/10.png) - When we do like the example above,  we will have Account has  Contact's child, and Contact has Case's child. (here's an example below) ![](../images/2020/08/12.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We can create many message Type's children as we want by following the step above. [/su_box] **Step2:**  We will use this message type to export data in Salesforce. - Create Integration, Outbound Interface, and put the Message type in this Interface. ( see the example below) ![](../images/2020/08/11.png) - After we configuration Interface like the example above, we need to go to the Interface and do the mapping. - Click the Open Mapping button. ![](../images/2020/08/13.png) - We can do mapping what fields we want after we do mapping; we can click Save Button. (an example is a bellow). ![](../images/2020/08/14.png) **Step 3:** Connection destination and create an adapter for the Interface. - Go to the Agent control board old and connection destination. (How to configuration agent control board old? Following this guide: [ #article/how-to-use-agent-control-board](#article/how-to-use-agent-control-board) ). ![](../images/2020/08/15.png) - Create an Outbound Adapter for Interface. - Go to Adapter tab in the Agent control board (old) and click the New button. ![](../images/2020/08/16.png) - Fill the name of Adapter and Type, and direction Outbound. - Fill folder, XML type, and Connection Destination. - Click the Save button. ![](../images/2020/08/17.png) - Put the adapter in Interface by going to Interface and click edit.  ( Example is below.) ![](../images/2020/08/18.png) - Put the adapter and click Save Button. ![](../images/2020/08/19.png) - Select the Interface and click Process the Interface. ![](../images/2020/08/20.png) - Go to monitor to see the result. ![](../images/2020/08/22.png) - Here's the file that outbound from using Salesforce sObject. ![](../images/2020/08/23-1.png) **Summary ** Finally, we have reached the goal of how to create Message Type from  Salesforce sObject. We use Salesforce sObject when we want to get data fields as the same Salesforce's fields. Using Salesforce sObject for creating message type, we can't select the sObject that we wish to, so when we use the function Salesforce sObject to create Message type, it will make us generate all salesforce sobject that it has. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use message type? Title: 8. How to create Message Type from SKYVVA Business Object? Slug: 8-how-to-create-message-type-from-skyvva-business-object URL: https://help.skyvva.com/#article/8-how-to-create-message-type-from-skyvva-business-object ================================================================================ # 8. How to create Message Type from SKYVVA Business Object? #### Introduction In this tutorial will show how to create a Message type by usingSKYVVA Business sObject. Skyvva Business sObject is a function that SKyvva designed for the user who wants to get Message Type from sObjects, but it is better than the function Salesforce sObject because Skyvva Business sObject can allow the user to use the sObject that user want. #### How to use it? **Pre-require** **Step1:**  We need to create a MetaData Provider. - Create Metadata provider and repository type SKYVVA Business Object. - Click the new button to create the New Repository. - Fill the Name and choosing Type = SKYVVA Business Object, and click Save Button. ![](../images/2020/08/8-14-2023-2-22-13-PM.png) - After we create the Repository, we need to create Message Type. - Click the New button to create Message Type. (see the example below). ![](../images/2020/08/2-1.png) - We need to fill in the Name of the Message Type, choose Type = SKYVVA Business Object, and write the desired Message Type in the sObject type field. The example below shows creating an 'Account' in the sObject Type. Click the 'Save & New' button to continue creating the message type. ![](../images/2020/08/8-14-2023-11-37-18-AM.png) - Continue creating the message type with the name 'Contact', and you can select the parent while creating the message type. For example, create a 'Contact' under the 'Account' message type. If you want to finish creating the message type, please click the 'Save' button. ![](../images/2020/08/8-14-2023-11-39-14-AM-1.png) - After we click save button, here's the Message type was created. ![](../images/2020/08/7-1.png) **Step2: **Create the Integration and Create the Interface. - Here's the interface link with this message type and open mapping button. ![](../images/2020/08/8-14-2023-2-12-53-PM.png) - We can do mapping what fields we want after we do mapping; we can click Save Button. (an example is a bellow). ![](../images/2020/08/9-1.png) **Step 3:** connection destination and create an adapter for the Interface. - Go to the Agent control board old and connection destination. (How to configuration agent control board old? Following this guide: [ #article/how-to-use-agent-control-board](#article/how-to-use-agent-control-board) ). ![](../images/2020/08/15.png) - Create an Outbound Adapter for Interface. - Go to tap Adapter in Agent control board (old) and click the New button. - Fill folder, XML type, and Connection Destination. - Click the Save button. ![](../images/2020/08/17.png) - Put the adapter in Interface by going to Interface and click edit.  ( Example is below.) ![](../images/2020/08/17-1.png) - Put the adapter and click Save Button. ![](../images/2020/08/18-1.png) - select the Interface and click Process Interface button. ![](../images/2020/08/19-1.png) - Go to Monitor to see the result. ![](../images/2020/08/15-1.png) Summary Finally, We have learned about how to create message types by using SKYVVA Business Object. Skyvva business Object is the function that helpful for user who wants to use some objects as a message type in Salesforce because Skyvva Business Object allows user to choose object that user wants to use. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to import openAPI 3.x to create message type? Title: 94. How to import openAPI 3.x to create message type? Slug: 94-how-to-import-openapi-3-x-to-create-message-type URL: https://help.skyvva.com/#article/94-how-to-import-openapi-3-x-to-create-message-type ================================================================================ # 94. How to import openAPI 3.x to create message type? #### Introduction This tutorial explains importing open API 3.x, it guides you why we need it and what we do on file after generating it. SKYVVA has been added a new feature that can import message type and supported different files format such as XSD, JSON schema, wsdl1.1 & 2.0, swagger 2.0, openAPI3.x.After import the message type; therefore, you can further mapping in the SKYVVA mapping tool. This functionality is processing based on the message type node. It’s working with REST adapter and have a specific template message type contain URL, header, body.we have a different template for request and response .it has Format Structure as following: - it will generate like structure as below ![](../images/2020/08/B1.png) - Under of Components: Will generate default “ReferenceObject” (Type = Reference Object) as a message and cover field on components. - It will generate IStructure and MessageType based on Primitive Data or object Type: For example, Field has type as primitive (int, string, boolean, double ……..)So it will be the IStructure. A field is an object so it will be MessageType. - Under of Paths **Paths **Section will be API name type REST_Service **Request** Request URL - Request Header - Request Body - **Response** Response Header - Response Body [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Operation such as post, get, delete, patch and put you can check under parameter of operation. - Name of creating Messagetype or Istructure - “in” the place where we can put in the Request template - Description for add value into the description of IStructure or Message type - “ref” link to other messagetype[/su_box] **Pre-required** First, you need to do some required steps before you can use the function “Importing OpenAPI3.x“ - Create Metadata Provider /Repository - File OpenAPI3 - Create integration /interface - REST Adapter - MockService #### Configuration - Import metadata Create Metadata Provider, Repository, and click the Import Metadata button. ![](../images/2020/08/B2.png) - Generate Message type ![](../images/2020/08/B3.png) In the section, you got a message type and you can further be mapping in the SKYVVA mapping tool, here is an example Callout V3 with Rest adapter using Message Type. Step-1: Create Integration and Interface - Create an Outbound interface for Account object, Status: Deployed, Operation type: Query and Choose MetaData Provider name, Repository, and Message Type click Save button. ![](../images/2020/08/B4.png) Step-2: Do Mapping ![](../images/2020/08/B5.png) Step-3: Create Remote site - Go to setup and create the new remote site. ![](../images/2020/08/B6.png) Step-4: Create rest adapter from the SAP control board Create an Adapter and link to the outbound interface. - The Configuration create a new adapter ![](../images/2020/08/B7.png) Step-5: The Configuration MockService We callout V3 with Rest adapter using Message Type to Mock Service. ![](../images/2020/08/B8.png) Step-6: Query Data - Navigate to setup -> developer console ![](../images/2020/08/B9.png) [aux_code language="javascript" theme="tomorrow" title="Apex code" extra_classes=""] skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{0016E00001BEi9cQAD}; skyvvasolutions.Iservices.invokeCalloutV3('Test openAPI','OutBound',ids,'SYNC', c); [/aux_code] ![](../images/2020/08/B10.png) - Check the result on monitor after execute callout ![](../images/2020/08/B11.png) - Check Message details ![](../images/2020/08/B12.png) Summary: This feature we have learned about importing open API3x, and we have understood how to importing message type from open API3.x file format. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Quick Action? Title: 95. How to use Quick Action? Slug: 95-how-to-use-quick-action URL: https://help.skyvva.com/#article/95-how-to-use-quick-action ================================================================================ # 95. How to use Quick Action? **Learning Objectives:-** **This unit describes:-** - About Quick Action. - How to use it? #### Introduction: The lightning version does not support with custom button, So we need to implement our tool to generate a script of the lightning component to use with quick action instead of a button. We have a tool Skyvva Trigger which generates SKYVVA Trigger scripts where we have a trigger type "**Q****uick action".** **Pre- Requisite:-** - Create Integration. - Create an Outbound Interface. **Follow steps as shown below:** - Fill fields in the interface as shown below - Enter Name - Status: Deployed - Operation Type: Upsert - Type: Outbound - Fill in Adapter - Click save button ![](../images/2020/08/QuickAction.png) - Enter to Integration Tab - Open SKYVVA Trigger Tab - Fill in Trigger Type - Integration Name - Interface Name - Select Object - Trigger Mode - Click on Generate Script ![](../images/2020/08/QuickAction1-1.png) - Go to Set Up - Developer Console - Click on File - Select New Lightning Component - Fill in Name - Tick on Lightning Quick Action - Click on Submit ![](../images/2020/08/QuickAction2-1.png) - Click on Component - Copy script form Script Generation Component and paste in Component ![](../images/2020/08/QuickAction3.png) - Click on Controller - Copy the script from Script Generate JS Controller and paste in Controller ![](../images/2020/08/QuickAction4.png) - Navigate to Set up - Object Manager - Account - Buttons, Links and Actions - New Action - Fill in Required fields - Save ![](../images/2020/08/QuickAction5.png) - Enter to Page Layouts - Account Layout - Mobile& Lightning Actions - Drag into Salesforce Mobile and Lightning Experience Actions ![](../images/2020/08/QuickAction6.png) - Enter to Account - It will show the Button we’ve created - Click on that Button ![](../images/2020/08/QuickAction7.png) - Go to Message Board - Click Search will show the records that we callout ![](../images/2020/08/QuickAction8-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to export the Metadata in different format as xsd, XSD (Response for V3 Inbound), json schema, WSDL 1.1, swagger 2.0/OpenAPI 2.0 and openApi 3? Title: 47.2 How to export XSD (Response for V3 Inbound)? Slug: 47-2-how-to-export-xsd-response-for-v3-inbound URL: https://help.skyvva.com/#article/47-2-how-to-export-xsd-response-for-v3-inbound ================================================================================ # 47.2 How to export XSD (Response for V3 Inbound)? **Learning Objectives:-** **This unit describes:-** - About XSD (Response for V3 Inbound) - How to use it? #### Introduction: We implement XSD exportation for the response template of v3 inbound processing API. It is located at two places such as generic place (custom link in integration) and interface detail page. It’s an integrateSynchronous API. If we use this API, it will get the standard response from SKYVVA without creating a response interface in SKYVVA **Pre- Requisite:-** - Create an Integration - Create an Outbound Interface - Create a Metadata provider - Create a Repository - Create a Message Type - Link Message Type with Outbound Interface #### The Process is given below:- - The message type which we have already created has a message type field entry which we can check on the related page of the message type. As shown in the picture given below. ![](../images/2020/08/xsd.png) - Open on the Integration tab. - Click on the "Generate metadata". ![](../images/2020/08/1-2.png) - Choose a format file-  "XSD(Response For V3 Inbound)" - Select Outbound Interface in Create WSDL For Interface. - Click On Export. ![](../images/2020/08/xsd1.png) #### Result:- It will generate Response for V3 Inbound template include message Type name and two fields such as Subject and Description ![](../images/2020/08/xsd2.png) ![](../images/2020/08/xsd3.png) ![](../images/2020/08/xsd4.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to export the Metadata in different format as xsd, XSD (Response for V3 Inbound), json schema, WSDL 1.1, swagger 2.0/OpenAPI 2.0 and openApi 3? Title: 47.3 How to generate XSD (Integration,Interface,Repository) ? Slug: 47-3-how-to-export-xsd-integrationinterfacerepository URL: https://help.skyvva.com/#article/47-3-how-to-export-xsd-integrationinterfacerepository ================================================================================ # 47.3 How to generate XSD (Integration,Interface,Repository) ? #### Introduction XSD file is the file that has extension XSD, and it is most likely an XML Shema file, a text-based file format that defines validation rules for an XML file and explains the XML form. In Skyvva, we have the function to generate XSD from the message type to get structures. Generate XSD uses for getting the structure file to be imported into the external system for further mapping. We can generate XSD from three ways, such as on Integration, Interface, and Repository; We can generate XSD from both interfaces (Inbound and Outbound). One more thing we need to remember is that when we generate XSD​ on Integration and Interface that is Soap and Rest message type, it will get only requests and responses body. Yet, on The Repository, it will take only a request body. So, this tutorial will show users how to generate XSD in each technique (Integration, Interface, Repository). Pre-require - Create Integration - Create Interface - Create Meta provider - Create Repository - Create Message Type - Link Message Type with Interface (Outbound or Inbound) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Remember that User has configuration the pre-require already.[/su_box] #### 1. How to generate XSD from Generate MetaData on Integration? Generate XSD from Integration is a technique that helps users to get structures from Interface that they choose. There are two processing, like Old ways and new ways, but both are working the same. **   1.1 Generate XSD in New Way.** - Go to Integration -> click Generate MetaData (see the picture below) ![](../images/2020/08/1-2.png) - Select Interface -> choosing a format file = XSD -> and click export button. ![](../images/2020/08/13-2.png) - After we click the Export button, we will receive the message “file generated successfully,” and we will see the XSD file in the file section. Click View button to download the XSD file. ![](../images/2020/08/14-2.png) - Here’s the XSD file that we have generated. ![](../images/2020/08/12-3.png) **  1.2 Generate XSD as Old Ways.** - We can generate the XSD file to get Structure in the old way by check the flag As old Ways? ( The picture is below). ![](../images/2020/08/4-2.png) - Then, we will get the XSD file in the old way. -> Click the view button to download the XSD file. ![](../images/2020/08/5-2.png) - Here’s the Generate XSD file in Old ways. ![](../images/2020/08/10-2.png) #### 2. How to generate XSD file from Generate MetaData on Interface? Generate XSD file from Generate MetaData on Interface is useful for a user who knows the exact Interface that he/she wants to generate. - Go to Interface -> click Generate MetaData (The picture is below). ![](../images/2020/08/15-2.png) - Choosing a format file =XSD and click the Export button. ![](../images/2020/08/7-3.png) - After we click the export button, it will download the XSD file automatically. - Here’s the XSD file that we generate On Interface. ![](../images/2020/08/12-4.png) #### 3. How to generate XSD from the Repository? Generate XSD file from Export Metadata on message type section of repository is to allow users to choose the Message Type that the user wants to use. The Message Types that the user choosing will be takes the whole child message type. Example We have hierarchical Message Types that are parent and child like Account, Contact, and Case, then we want to generate XSD start from Contact. So, when we click Export Metadata will get XSD file Contact and Case because Case is a child of Contact. - Go to the Repository that we want to generate XSD and enter to message type section. You will able to see the action button on the left side of the message type. ![](../images/2020/08/ClickExportMetaDataFromActionButton.png) - Choosing the XSD file format and clicking the export button. ![](../images/2020/08/ExportMetaFromMessageTypeOfActionButton.png) - After we click the export button, it will download the XSD file automatically. - Here is the XSD file that we generate on the message type of repository. ![](../images/2020/08/GetFileAfterExportXSDFileFormat.png) After you get the XSD file you can import it for example into the SAP PO system side as the screenshot below. ![](../images/2020/08/png.png) **Summary ** Finally, we have learned how to generate the XSD file on Integration, Interface, and Repository. There are individual benefits like we use on Integration that we can choose the Interfaces that we want to get structures to generate XSD file. We use generate XSD file from the Interface when we have known the exact Interface, and We generate message types from the Repository when we want to get specific business message types. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 1. Installing CA-Signed certificate for Agent Service (https) Slug: creating-ca-signed-certificate-for-agent-service-https URL: https://help.skyvva.com/#article/creating-ca-signed-certificate-for-agent-service-https ================================================================================ # 1. Installing CA-Signed certificate for Agent Service (https) This tutorial will demonstrate how to install/configure the chain in KeyStore. We assumed that all the needed certificate files are downloaded already on your computer. #### Introduction Users can use a certificate provided by a Certifying Authority (CA) or a self-signed certificate for secure communication between the management server and the agent. **SKYVVA** uses standard HTTPS to communicate securely over the Internet. **SKYVVA** applications that are installed locally – including Private **Agents** – include a trusted Keystore containing all of the certificates that are needed to communicate securely. Users may need to add a new certificate to the **SKYVVA** Java Keystore if, for example, you are using a proxy server and need to allow the **SKYVVA** local client to communicate securely through the proxy server. This page contains generic instructions for manually adding certificates to the Jitterbit Java Keystore. #### Java KeyStore (JKS) Users must be in Administrator mode in order to run Java Keytool commands. Any of the Java Keytool commands presented in this document may be used by substituting the home directory for the product you are working with: [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Certificates must be installed into the \jre\lib\security folder included in the **SKYVVA** product installation.[/su_box] #### Install Certificate Chain in KeyStore ![](../images/2020/09/image_2020_09_16T05_05_15_136Z.png)1. file.ca-bundle : ![](../images/2020/09/Annotation-2020-03-26-162145.jpg) 2. file.crt: ![](../images/2020/09/Annotation-2020-03-26-162349.jpg) **Only two files are enough to install the certificate:** - Edit file.ca-bundle and file.crt. - Let copy all text from file.ca-bundle and paste under the text of file.crt - Save file.crt [su_box title="Note" box_color="#2a8af0" title_color="#000000"]this file has 4 sections start with -----BEGIN CERTIFICATE----- and end with -----END CERTIFICATE-----)[/su_box] 3. **CMD** > - openssl pkcs12 -export -in skyvva-agent.skyvva.com.crt -inkey skyvva-agent.skyvva.com.key.txt -certfile skyvva-agent.skyvva.com.crt -name "skyvva-agent.skyvva.com" -out skyvva-agent.skyvva.com.p12 > - keytool -importkeystore -deststorepass password -destkeystore skyvva-agent.skyvva.com.jks -srckeystore skyvva-agent.skyvva.com.p12 -srcstoretype PKCS12 4. After upload the JKS file running in java based web service with https and you can check your domain bellow: > - Follow link: [https://www.digicert.com/help/](https://www.digicert.com/help/) - Check Server Address ![](../images/2020/09/Annotation-2020-03-26-164121.jpg) #### Create new Linux ec2 instance This is an example to create a new **ec2-instance** with Linux which is similar to the existing agent-test ec2-instance. The agent-test ec2-instance is now used to run the Agent. The new **ec2-instance** is called '**agent-app**' where we will install all applications we need for testing like database, **FTP, Kafka, pulsar**, etc.. The user name is 'ec2-user'. The password is not clear at the moment. Probably we need to set a new password. We can connect to the shell using a browser like with the agent-test instance. Probably the password is the same. **Select the machine image** ![](../images/2020/09/clipboard-202007272311-6rsqk-1.png) **Choose the instance type** ![](../images/2020/09/clipboard-202007272312-aksot.png) **Network setup** ![](../images/2020/09/clipboard-202007272313-adzsk.png) **Define the storage** ![](../images/2020/09/clipboard-202007272314-yrbim.png) **Give a name** ![](../images/2020/09/clipboard-202007272314-poeea.png) **Security Group** ![](../images/2020/09/clipboard-202007272315-oyy2q.png) **Review the summary** ![](../images/2020/09/clipboard-202007272316-khmk3.png) **Keys file** ![](../images/2020/09/clipboard-202007272317-ahzg9.png) The file agent-app.pem is the private key that we have downloaded. **Increase the hard disc** After launching the instance it is not showing the 30GB hard disc. Instead, it shows only 8 GB. Therefore I have defined again. Click on the button 'Create Image' after a name for example 'root' is given. ![](../images/2020/09/clipboard-202007272345-uprcx.png) ![](../images/2020/09/clipboard-202007272345-iknhw.png) Now after changing again we see 30GB of space. ![](../images/2020/09/clipboard-202007280003-rrpwd.png) #### Summary Now user learned about How to install/configure the chain in KeyStore and Creating a CA-Signed certificate for Agent Service (https). ================================================================================ Book: Tutorials Section: Tutorials Subsection: Enhancement handling fault response message with V3. Title: 97. Enhancement handling fault response message with V3. Slug: 97-enhancement-handling-fault-message-with-v3 URL: https://help.skyvva.com/#article/97-enhancement-handling-fault-message-with-v3 ================================================================================ # 97. Enhancement handling fault response message with V3. #### Introduction We have an Enhancement handling fault response message with v3 for describes an application-specific error situation, and this function is working on SOAP protocol only. Using the fault message, the application records an application error. For example, "System error, AdminBlockException or Requested customer profile unknown ...". We can handle fault response messages when we make a callout (Request), and then it will respond to an error with fault Response. There are three enhancement fault message response. first is to write the fault message into the comment fields, second is put the fault message Interface into the request Interface, and third is handle multiple different fault message Interfaces. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Make sure that the other application has response fault message. [/su_box] #### I.  Write the fault message into the comment field. In this case, we don't need a fault Interface, and we don't need to related fault Interface, but when we Callout we can get fault messages because our SKYvva has put the fault message into the comment fields. But we need to remember that the Request Interface has a message type that has fault messages. **Pre-require:  ** - Create or upload a Soap Message Type. - Create Adapter. - Create Integration and Interface linked with the message type. **Step 1:  Create or upload Message Type** Go to create Metadata Provider => create a Repository=> create or Upload Soap Message Type. - Here's the Soap message Type. ![](../images/2020/09/1-2.png) - Users can see or upload the Example message Type the below. **[Google SOAP Service_skyvvasolutions__MessageType__c](../images/2020/09/Google-SOAP-Service_skyvvasolutions__MessageType__c.txt)** **Step 2:  Create Adapter ** - Go to Adapter tab  => click the button New => configuration the adapter => click Save Button. - Here's the example below. ![](../images/2020/09/2-2.png) - Ping this adapter for make ensure this adapter is working. ![](../images/2020/09/3-3.png) - Test Connection for ensuring that it has a response back. ![](../images/2020/09/4-2.png) **Step 3:  Create an Outbound Interface** - Go to create Integration=> create Outbound Interface=> fill the name of Interface, choosing type Outbound, linked Message type, and Adapter to the Outbound Interface. - Click Save Button ![](../images/2020/09/5-1.png) **Step 4: Do Mapping** - Go to Interface and click Open Mapping Button. - Do Mapping and click save. (Example is below) ![](../images/2020/09/6-2.png) **Step 5: Callout V3 with Apex Code** - Go to the Developer console. ![](../images/2020/09/7-3.png) - Click debug and click Open Execute Anonymous Window. ![](../images/2020/09/8-1.png) - Here's the code to Callout. CallOutControl c = new CallOutControl(); IServices.invokeCallOutV3('IntegrationName','InterfaceName',new String[]{'0011X00000g0pwxQAA'},'SYNC',c); - Copy the code the above and click Execute. - Account ID meaning that You want to Callout the Account that has ID. - Click Execute Button. ![](../images/2020/09/9-1.png) - Go to Message Monitor to see the result. - Here's the result of this case=> Go to Monitor and click search. ![](../images/2020/09/10-1.png) #### II.  Put the fault message Interface into the request Interface. In this case, we use two Interfaces like Inbound Interface for Response and Outbound Interface for Request. The process of these cases is to put the Response Interface, which is fault Message Type, into the Request Interface. Example. We have outbound Interface and put the fault Interface that has message Type fault_SystemError in the outbound Interface. When the callout V3 is met the situation, System Error, so the Inbound Interface will respond to the fault message to tell the user that the Callout has a problem with the system Error. **Pre-require:  ** - Create or upload the Soap Message Type that has a fault Message Type. (We have configuration already) - Create Adapter. (We have configuration already) - Create Integration and Outbound Interface linked with the Request message type. (We have configuration already) - Create Inbound Interface linked with Fault Message Type, which is in Response Message Type. **Step 1: Here's is the fault Message Type that has in the Envelop of Response Message type.** ![](../images/2020/09/11-2.png) **Step 2: Create an Inbound Interface for fault Response. ** - Go to create Integration=> create Inbound Interface=> fill the name of Interface, choosing type Inbound, linked fault Message type, and Adapter to the Inbound Interface. - Click Save Button. ![](../images/2020/09/12.png) **Step 3: Do Mapping.** - Go to Interface and click Open Mapping Button. - Do Mapping and click save. (Example is below). ![](../images/2020/09/13.png) **Step 4: Create Outbound Interface like the Case1.** ![](../images/2020/09/14.png) - Do Mapping the same as case 1. ![](../images/2020/09/15.png) **Step 5: Put Response fault inbound Interface into the fault Interface fields of the Outbound Interface.** - Go to outbound Interface. ![](../images/2020/09/16.png) - Scroll down to see Inbound /Outbound Setup => then put The Inbound fault response in the field Fault Interface and click Save. Here's the Example below. ![](../images/2020/09/17.png) **Step 6: Callout V3 with apex code.** - We call out like case 1. The example is below. ![](../images/2020/09/18.png) - Go to Message Monitor to see the result. - Here's the result of this case=> Go to Monitor and click search. ![](../images/2020/09/19.png) #### III.  Handle multiple different fault message Interfaces. This function is beneficial when we want to handle multiple different fault message Interfaces like Admin BlockException, AuthenticationException, or SystemError ...) So when we callout data to other systems and then the system has problems like Admin AlockException and System Error so that it will do the request data, but also it will respond to the fault message to tell users why we get fail to Integrate with that system. This function is not put the fault Interfaces in the request Interface anymore, but we put the Request Interface into each Fault Interfaces. The process of this function is checking on the message type of Fault interface (the Interface in related list Fault) to compare with the response node of Fault response. i.e Fault_AdminBlockException. if it matches each other between the message type and the node of fault response, then we know what Fault interface will do integration of inbound. It is similar to the case2 but just difference of Multi response fault interfaces. [su_box title= "Note" box_color=" #2a8af0" title_color=" #000000"]When we use Multiple different fault messages, we don't need to put fault Interface in the Request Interface because the field of fault Interface is a priority than related fault Interfaces. If we put Interface in field fault Interface, it will do only with field fault Interface, and the related Interface will not do.[/su_box] **Pre-require:  ** - Create one outbound Interface. (We configuration already). - Create a Message Type or upload a Message type which has a fault message Type. - Create two Inbound Interfaces for fault interfaces. **Step1: Create Message Type or upload Message Type that is Soap Message Type with 2 Fault messages Types.** - Here's The Message Type that needs to use to handle multiple different fault messages. We have two fault message Type such as SystemError and AdminBlockException. ![](../images/2020/09/20.png) - Here's the Message type that we used in this case. Users can use it or see it for easy to understand. **[Google SOAP Service_skyvvasolutions__MessageType__c (2)](../images/2020/09/Google-SOAP-Service_skyvvasolutions__MessageType__c-2.txt)** **Step 2: create two Inbound Interface that are fault interfaces and link with message type** - Create the first Inbound Interface for fault Interface and linked with System_Error Message Type. - Click the button Save. ![](../images/2020/09/21.png) **Do Mapping.** - Set Context filter System Error to equal detail. How to set Context Filter, please follow this guide (** [#article/16-12-set-context-filter](#article/16-12-set-context-filter) **). - Click the Save button. ![](../images/2020/09/22.png) - Create the second Inbound Interface for fault Interface and linked with Fault_AdminBlockException Message Type. - Click the button Save. ![](../images/2020/09/23.png)**Do Mapping.** - Set Context filter AdminblockException to equal detail. (how to set Context filter, please follow this guide:** [#article/16-12-set-context-filter )](#article/16-12-set-context-filter)** ![](../images/2020/09/25.png) **Step 3: Put Outbound Interface into the Field Fault Interface of two Inbound Interfaces(Response fault Message).** - Here's Response System Error Interface. ![](../images/2020/09/26.png) - Scroll down to find field fault Interface => put the request Interface=>Click save. ![](../images/2020/09/27.png) - Go to another fault Interface and do the same as the above. Here's another fault Interface. ![](../images/2020/09/28.png) - Scroll down to find field fault Interface => put the request Interface=>Click save. ![](../images/2020/09/29.png) **Step 4: Go to the Request interface to see the related fault Interface.** - Here's Request Interface ![](../images/2020/09/30.png) - This Request Interface doesn't have a fault Interface because we use the Related Fault Interface. ![](../images/2020/09/31.png) - Go to Related Interface to see the related fault Interface. ![](../images/2020/09/32.png) - Scroll down to see the fields Fault Interface. ![](../images/2020/09/33.png) We can see two fault Interfaces in the Related Request Interface. Because of both of the fault Interfaces, we have set the Request Interface in the field fault Interface of Response interfaces. So, it means that both Responses Interfaces are belonging Request Interface. that why we can see both response interfaces in the related Request Interfaces. **Step 5: Call out v3 with apex code.** [su_box title="Note" box_color="#2a8af0" title_color="#000000"]When We callout data on this function it will met the condition Error System because the system that use is had only the response system error. In real Business, it will meet the condition that the user set. so don't worry, this function is working incorrectly. [/su_box] ![](../images/2020/09/34.png) - Go to Message Monitor to see the result. ![](../images/2020/09/35.png) Summary Finally, we have learned these three enhancement completed. First is to write the fault message into the comment fields, the second is to put the fault message Interface into the request Interface, and the third is to handle multiple different fault message Interfaces. We hope these enhancements are useful for the user who want to get a response fault message to describe the application error. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use Log and Log Configuration Tab on Agent Control Board ? Slug: how-to-use-log-and-log-configuration-tab-on-agent-control-board URL: https://help.skyvva.com/#article/how-to-use-log-and-log-configuration-tab-on-agent-control-board ================================================================================ # How to use Log and Log Configuration Tab on Agent Control Board ? This tutorial will demonstrate how to use Log and Log Configuration Tab on Agent Control Board. #### Introduction **Log tab ↔**The log tab is used to show the log file from the Agent. The physical log file is created and kept in the local folder of the Agent and we need to view the file in Salesforce because we don't want to get into the Agent Server. Sometimes we don't have any access from the customer to access the Agent-Server and thus it is not possible to read the log file to analyze the error. Therefore we want to have the possibility to get the log file and show on the Log tab in Salesforce. In the section Logs, we store the error line from the log file into the ilog2 table. The button Refresh means that we reread the data from the table to see the new entries which were pushed from the Agent on a regularly based through a scheduler. The Agent push using the REST api to insert new entries into the table **ilog2__c** and thus we need to do the Refresh to see new content. The button 'Reread from Agent' is to actively read the new log entries without waiting for the scheduler. This is needed when we urgently need to see the latest log entries and cannot and don't want to wait until the scheduler push the new entries into the table **ilog2__c**. ![](../images/2020/09/image_2020_09_23T06_41_05_353Z.png) In the section Logs File, we show the file which we import from the Agent. We have discussed the solution that the Agent creates and updates e.g. append new entries into the active log file. But this is not possible because there is no Salesforce API that can append new lines to the file. The Salesforce API can only create new or replace the existing file. Therefore we cannot apply the solution to do from Agent using a scheduler as we can do for the **ilog2__c**. The new idea is to let the user click on the button 'Import from Agent' and call an API from the Agent which shows the currently active file. Then the currently active file is imported again and will overwrite the last one which we see on the screen. If the currently active file is enrolled in an archived state and we have a new current active file then this file is imported and has a new name. The previous current file becomes an archived file with that name. If for a long time the user has not imported any log files then he will have a log and he need not only the possibility to import the currently active file but also the other archived files. The **API** needs to provide only files that have not been imported already to Salesforce. The API has to import the currently active and those files which are still not imported to Salesforce. **Logging API Functionality:** We're using Logback as the controlling framework for Logs. Logs will be segregated into mainly two categories. **1. System Logs -** Log file name is going to be **SYSTEM-LOG.txt** and it will include all the system maintenance API, framework logs. **2. Business API Logs -** Log file name would be formed with this format ****-.txt. These logs will include the details about the Business APIs. At any point in time, we can update the Logging configuration through the **APIs** build in the system. There will be a default Logging setting which will remain active in case of any starts or restarts of the Agent service. This Logging is not present in the DB rather in the logback.xml. At any point, if we want to create a logging profile, we can do so using the APIs built and described below. Then to activate we need to use activate API. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]**h3**. Due to a change in the Logging API requirement, there will not be any default entries in the logging properties table. We will have to use the SaveOrUpdate API to do so.[/su_box] - Logs Section in which the user can able to see all logs related to selected Integration. - Active Log File in which the user can able to see all active log files related to selected integration. - Backup Log File Section in which the user can able to see all Backup logs file related selected Integration. - System Backup Log File in which the user can able to see all system backup log files related to selected integration. **Log Configuration Tab ↔ ** ![](../images/2020/09/image_2020_10_21T06_39_36_195Z.png) **Log Profile Name:** User can select the existing logfile from this dropdown. There are three default profiles available. If users want to create new then you can clone it. (**by click on the clone button**) **Name: ** This is the file name. where the user can see the selected log file name. **Id** This is an autogenerated field. The user can not edit this field. It will display the Id of Log. **Log Line Entry Format**: What kind of msg is going to proceed? This field is not going to change by anyone. For every profile, it's going to be the same. **Max. Total File Size (current + backup file)** This file size shows us how much max file size takes on the server? **1** = **1GB**. Means Agent keeps running and generating a log file every day. Every day there is a new log file. And an old log file is archived and stored in the backup folder. All the current and backup files should not cross **1GB**. once it crosses our function will start deleting the old log file which was pretty old it means the oldest file deleting first. **Max Days To Keep File** As agent keeps on running and generating a new log file every day. There should be a limit on how long the user kept this log file even if that log files are small but the user doesn’t want to keep that file which we don’t require that is what specified by this setting any of the old log file or archived log file is kept in the system for** 60 days**. After 60days it will be deleted automatically. **Max. File Size:** This property says that how much particular log file can be available at any point of time when the system creates a log file will verify whether file size getting more than some **MB's** and here the specified file size is in **MB**, not **GB**. We log a lot of files but in case of huge file size, we required to check by the system. What system will do as soon as it will hit the limit of **1MB** it will archive that file. And create a new file we have 2 types of a rotation policy for any log file: - Based on time - Based on size Whatever has been reached earlier a log file is being rooted because of that. If the file is not beyond **1MB** and the next day is started then we will get the new log file. If the file size has reached **1MB** on the same day. For example, In **1HR** user did so many transactions somehow log file size is beyond **1MB** then the system will create a new log file for further transaction. **Rolling Strategy** Rolling strategy means Strategy to use to switch to a new log file or rotation of log file. There is a different strategy like daily, weekly, monthly, yearly. Let's take an example of weekly:  If we are getting less log msg then-current log file is very small. In such a scenario it is ideal that we should keep the Rolling strategy is weekly. - Daily: At every midnight 12 new log file is created. If we are getting a lot of log msg then-current  log file is very huge - Weekly: after 7days - Monthly: after a month - Year: After a year a new log file is generated. **Backup File Format** Says what kind of zipping gzip. when the system sees gz then it will unzip to compressed and zip file. **Agent Trace Level** ** **Agent Trace Level is a picklist. It contains five different levels with different flexibility of showing a message log. - Error: Only the error message log will show when we select Error. - Info: Info message log as well as error message log will show when we select Info. - debug: when we enable debug, info, error message log will show. - trace: when we select trace error, info, debug and trace message log will show - all: all msgs are logs **Framework Trace Level** When Third-party API  is used their log is also managed by them only. So Framework Trace Level property helps us to log of third party log files. There are 5 different levels as: - Error: - Info: - debug: - trace: - all:** ** **File Location** Where do you want to save this log file inside the server? That is being configured by this file location. This file location specifies by active file location. **Backup File Location** This normal nomenclature. This file location specifies by active file. All active files that have rotated and back up are stored in this location. **Profile** Name of your active profile**.** **is Active?** This will indicate that a particular profile is active or not **Summary **Now user learned how log and log configuration tabs work and why these all fields for? ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to Import Metadata from Agent Control Board ? Slug: how-to-import-metadata-from-agent-control-board URL: https://help.skyvva.com/#article/how-to-import-metadata-from-agent-control-board ================================================================================ # How to Import Metadata from Agent Control Board ? #### Introduction The new agent control board is a component which can connect different application system. Besides the component connect that we build on salesforce already.  But some protocol we cannot build on salesforce which technically not possible. That’s why we build a new component called “Any Connect” which is based on apache camel is open source around the world. ![](../images/2020/10/image_2020_10_02T06_57_01_476Z.png) **SKYVVA** makes connecting even the most complex enterprise applications simple with a standards-based approach that includes native support for the major transports and protocols that you need to reach your systems. For example. **Database** adapter. The database adapter required its specific template. ![](../images/2020/10/image_2020_10_02T07_02_38_271Z.png) The New Agent Launched with the flexibility of importing metadata features. database template to perform different operations like** insert, update, delete, and select**. so we are providing create metadata functionality into **Agent Control Board**. The user will create a database template using this '**Import Metadata**' tab in the Agent Control Board. #### Basic pre-requisite required to import metadata - To navigate to a respected agent control board of integration you should create Integration. You can easily jump to the New agent control board from the Custom link “Agent control board”. ![](../images/2020/10/image_2020_10_02T10_52_29_309Z.png) – [How to use Agent Control Board ](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. - Create a database adapter on the new Agent Control Board. ![](../images/2020/10/image_2020_10_02T11_04_46_111Z.png) - Click on the new button - Provide Detail on the Adapter detail page ![](../images/2020/10/image_2020_10_02T11_00_48_085Z.png) - Provide Value on the Property section ![](../images/2020/10/image_2020_10_02T11_03_09_936Z.png) - Click on Ping connection **Go to the interface detail page and the user can select existing metadata and repository and select Adapter just created** - Select your Metadata and repository - Processing mode Synchronous / Asynchronous - Outbound ![](../images/2020/10/image_2020_10_02T11_11_55_283Z.png) - Scroll down and select your adapter you just created ![](../images/2020/10/image_2020_10_02T11_15_38_077Z.png) - Click on Mapping Button ![](../images/2020/10/image_2020_10_02T11_29_52_342Z.png) - Select Ext Id's - Save **Go to the Import Metadata Tab** - Select your MetaData and Repository ![](../images/2020/10/image_2020_10_02T11_21_16_034Z-1.png) - Click on Import Database MetaData button ![](../images/2020/10/image_2020_10_02T11_35_02_543Z.png) - Scroll down and Choose the Table name ![](../images/2020/10/image_2020_10_02T11_36_57_990Z.png) - Click on creating message type button **After that, we got the Message Type generated from the Database table** - Here the example for a table called: “**tbl_account_db_atn**” ![](../images/2020/10/image_2020_10_02T11_44_56_614Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We have a template for generating message type for a single table - Create a root message type with prefix “**Database_**” + “**table’s name**” within type “*Database Table Template*” - Create two messages the type as a child of root with fixed name “**Request**” within type “*Database Request*”. And the other one is “**Response**” within type “Database Response” - Under node “**Request**” create a message type as the child within named the same as your Table name in the database within type “*Database Table”. i.e:  *tbl_account_db_atn - Under node “**Response**” creates a message type as the child within a fixed named “**records**” type as “*Plain structure*”. Under the “**record**” node create a message type as the child type as “*Plain structure*” within name the same as your Table name in the database within type “*Plain structure*”. [/su_box] ![](../images/2020/10/image_2020_10_02T11_50_00_752Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Currently, we need to manual re-order message type as parent and child to the correct Request and Response. As the example below, we have three message types that refer to three tables on the database. Under node “**Request”**we take “*tbl_account_db_*atn” as a parent of “*tbl_contact_db_atn*”*and *“*tbl_case_db_atn*” as the child of “*tbl_contact_db_atn”, those message type are the type Database Table. On the “**Response” **message type, under node **records we*** take “*tbl_account_db_*atn” as a parent of “*tbl_contact_db_atn*” *and *“*tbl_case_db_atn*” as the child of “*tbl_contact_db_atn”, those message types are the type Plain structure.* [/su_box] ![](../images/2020/10/image_2020_10_02T11_51_39_509Z.png) **Summary ↔**The user has learned to create a database template using this **Import Metadata **tab in the Agent Control Board. **Import Metadata** from Agent Control Board through which the user got the **Message Type** generated from the Database table. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Agent Pulsar adapter Title: 1. Agent Pulsar adapter Slug: agent-pulsar-adapter URL: https://help.skyvva.com/#article/agent-pulsar-adapter ================================================================================ # 1. Agent Pulsar adapter **Learning Objectives:-** **This unit describes:-** - About Agent Pulsar Adapter? - Event-based communication. - What is the advantage of using it? #### Introduction: This tutorial explains about the Agent Pulsar adapter. Pulsar is basically an Event-based communication. Event-based communication contains two main components: Publish (Producer) and Subscribe (Consumer). The work of a publisher is to publish messages into a queue or topic which is Kafka or Pulsar and the middleware tool like Kafka and Pulsar will maintain the message, they follow the principle of Publish and Subscribe. And they will deliver messages to the consumer. Then all the applications can subscribe. For example, Netflix plays the role of a publisher. and we play the role of the subscriber(Consumer). Same way Pulsar Adapter works which we will see in this tutorial. **Few Points to know related to Pulsar are given below:** #### Event-based Communication: This is the modern way of communication between different applications. It has two components: Publish and subscribe. For example, Netflix, youtube. - We can see the picture given below for reference. The SAP is a producer who pushing messages and Kafka or Pulsar works here as middleware, and maintain messages. All other applications like Twitter, HubSpot, salesforce is a consumer or subscriber here. So SAP just needed to publish it one time, they don't need to send it to different applications individually. ![](../images/2020/08/kafkaAd.png) - One more example for better understanding. We all use Netflix to watch movies. It uses the Queuing tool and streaming tool. Netflix here plays the role of producer and we play the role of the consumer. Netflix uploads Movie once and all others who are subscribers of Netflix can watch. They do not need to request again and again. To send it individually it takes so much time, here we just needed to upload once and all the subscribers will get it. ![](../images/2020/08/kafkaAd1.png) #### #### Event-Driven Technology Terminology: We have 5 main Event terminology. - Publish - Subscribe - Streaming - Producer - Consumer Check the picture below for description. ![](../images/2020/08/kafkaAd2.png) #### Any Connect: - Any connect is an easy tool that helps users to get your data into Salesforce objects. - Any Connect can also be used to extract data from database objects into any of the destinations as per business requirements. - Similarly, Agent can use to perform bulk deletions by exporting the ID fields for the data we wish to delete and using that source to specify deletions through the Any Connect. - Many networks and server monitoring solutions use what are called “Any Connect” to get values from the machines they are monitoring. It is programs that run on the remote machines and communicate with the main monitoring system. Some merchants try to hide the fact that they use Any Connect. They will try to deliver things like they “deploy” to remote systems or use other words, but it all compresses to installing custom software on the remote machines. - We have available connectors like Pulsar, Kafka, Database, File, ftp, ftps, sftp, SOAP and REST. ![](../images/2020/10/Any-Connect.png) #### Pulsar Adapter: We have 2 Pulsar Adapter- - **Outbound Pulsar Adapter:** We need an Outbound Pulsar Adapter when we want to send data out from salesforce, here We need to create a topic first. From salesforce, we can send data messages to the API endpoint of our agent, and then we have a camel producer to publish into the topic invoice, which is on the Kafka side. This is the outbound process because we are sending data out here, It plays the role of Producer. - **Inbound Pulsar Adapter:** We use Inbound Pulsar Adapter when somebody pushes the topic into a topic customer on the Kafka side, then we are consuming. We have an event-driven listener which is camel consumer. We don't need a scheduler. We can consume immediately. This is the Inbound process because we are receiving data here. It plays the role of the consumer. Check the picture given below for reference. ![](../images/2020/10/pulsar1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use Cache Monitoring on Agent Control Board ? Slug: how-to-use-cache-monitoring-on-agent-control-board URL: https://help.skyvva.com/#article/how-to-use-cache-monitoring-on-agent-control-board ================================================================================ # How to use Cache Monitoring on Agent Control Board ? #### Cache monitoring Cache Monitoring is a dashboard to monitor the new agent cache where we use the H2 database to store the **SKYVVA** object. For the bulk api, for example, we need some fields from the interface like the following: - **skyvvasolutions__SObjectFieldExtId__c** **↔** which contain a field we use as the External Id - **skyvvasolutions__OperationType__c ↔** update, insert, delete, etc. - **skyvvasolutions__Source_Name__c** **↔** the sObject we use in the inbound interface such as Account, Contact, etc.. We need this information for example to create a bulk job at the first step in the series of operations we need to use with the bulk api. Therefore we need at run-time the interface metadata to be replicated down to SAP. ![](../images/2020/10/image_2020_10_08T07_37_24_427Z.png) **To keep the data synchronous and up-to-date:** - When we create a new integration and save it then it needs to be pushed down to Agent immediately. When integration is changed and the user clicks on the **SAVE**-Button then again we need to push down to Agent. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We need to check that the connection to Agent is active and working. cache monitoring also needs to show data from the same connection.[/su_box] - The user can work interactively with the **SKYVVA** application screen. For example, to create, insert, and delete the integration, interface, mapping, workflow, IChained interface (will be generated automatically in the future), define scheduler, adapter + property, etc. - In all cases except the mapping, we will use the after insert and after update trigger. For the mapping object, we are using the **SAVE**-Button to handle the list result after the user has added new, delete and change mapping records in the mapping editor. For the after insert trigger we know that the object is newly created and thus we can call the **API** with the mode **INSERT** and pass all the data fields e.g. full mode. In the after update trigger, we know that the user updates some fields and we can detect the specific fields which have been changed. Only those fields we need to pass through the **API**. This is the delta data mode with the mode **UPDATE**. #### Caching Functionality We have different components in the Object filter.  We have this application for the admin to be able to cache again any object which was failed for the first time. - If it is failed then the cache status is **red**. - If the caching has not been started then the color is **yellow**. - If the cache was successfully transferred then the color is **green**. When we push the data from the cache we always push in the full mode. ![](../images/2020/10/image_2020_10_08T09_26_53_374Z.png) This object has the own save button and thus we added an apex code for the save button to cache down when the data has been changed and the user clicks on the save button. We have different components in the Object filter: - Integration - Interface - Mapping - Adapter - InterfaceGroup - Workflow - Scheduler **Integration and Interface Object** The integration will be cache down when the interface is saved and have a connection destination. The user needs to set a connection destination for the interface when he wants to deploy this interface. If he doesn't set a connection destination then the interface will run locally in Salesforce as we have right now. Then the run-time instance is Salesforce and not Agent or SAP. For Salesforce there is no connection destination or it is null. Interface Dependent object: - Integration - Child-Interface - Mapping - Workflow - Interface Group ![](../images/2020/10/image_2020_10_08T09_33_11_463Z.png) **Mapping** Actions like Insert new, update or delete mapping line can be performed at the same time. At the end-user clicked on the SAVE-Button so the updated result sends to the Agent. It comes with the request body to the Agent where the agent has to be compared with the current result in Agent. ![](../images/2020/10/image_2020_10_08T09_36_36_581Z.png) **Adapter** When we cache the adapter we take all its properties. **Workflow:** The workflow is not a standalone and independent object. It is always linked to an interface that can be the main or sub- e.g. child interface. We can handle the caching through the trigger and take the connection destination for the main interface. If the workflow is defined for the main interface then the connection destination is directly there on the interface but if it is a child interface then we need to go up to make the connection **Interface group:** For each integration, we create automatically two interface groups e.g. with the name Skyvva_DefaultIG which contains all inbound interfaces of that integration, and the Skyvva_DefaultIG_Outbound which contains all outbound interfaces. For SAP/Agent only the interface group with the inbound interface is relevant. **Scheduler**: The schedule is created automatically and the user just needs to define the time setting and start or stop it. We will create on 3 levels the scheduler e.g. - per integration - per-interface group - per interface **Status** Cache Status is used to show the cache status like Failed, Successful, Pending. ![](../images/2020/10/image_2020_10_08T09_40_40_686Z.png) **Buttons →** **![](../images/2020/10/image_2020_10_08T09_48_59_529Z.png)** **Refresh** The refresh button would bring up the most recent content published on that page. Essentially, you're asking the cache page to show updated data from the h2 database. **Synchronize Cache** This function allows you to synchronize again the cache for a situation where you are not sure if the objects have been correctly caching down to the Agent already or not. This function can be used to repair the cache in a situation you don't know the reason why the normal cache fails. - Click on button ![](../images/2020/10/image_2020_10_08T09_53_44_540Z.png) When the yes button get clicked to synch Asynch data It will show synch status as pending: ![](../images/2020/10/image_2020_10_08T09_56_33_891Z.png) **Rebuild Cache after Transport** This function allows you to create a cache on the Agent after you have transported the **SKYVVA** object e.g. integration, interface, mapping, etc. You can create a cache for all or choose individual objects. - Click on the rebuild cache After Transport button ![](../images/2020/10/image_2020_10_08T10_00_35_506Z.png) - When the user clicked on the yes button it will navigate to ![](../images/2020/10/image_2020_10_08T10_03_04_141Z.png) Here user can see the selected object ![](../images/2020/10/image_2020_10_08T10_07_44_849Z.png) **Rebuild Cache after System Refresh** This function will use after the salesforce system refresh. After salesforce system refresh **sObject **in target **Org**. will drop and insert new. We need this function to removed old cache records on the **Agent** side in the target **Org**. and insert new ones. - Go to tab Configuration to remove connection destination comes from the source **Org**. e.g. Production ![](../images/2020/10/image_2021_04_22T07_48_27_748Z.png) - Please make sure we removed all connection destinations that come from the source org. - If we unable to delete like in the picture below ![](../images/2020/10/image_2021_04_22T07_50_37_982Z.png) - Go to tab Adapter and change every adapter used in this connection destination to another connection destination. - Before change connection destination ![](../images/2020/10/image_2021_04_22T07_54_29_552Z.png) - After changed ![](../images/2020/10/image_2021_04_22T07_56_37_073Z.png) - Now user removed the connection destination come from the source Org. successfully. ![](../images/2020/10/image_2021_04_22T07_59_06_746Z.png) - **Restore old connection/restore Connection after System Refresh** we use Restore Connection after System Refresh to restore old connection from Agent side to use it again salesforce ![](../images/2020/10/image_2021_04_22T08_00_49_342Z.png) - Read Instruction ![](../images/2020/10/image_2021_04_22T08_02_10_021Z.png) ![](../images/2020/10/image_2021_04_22T08_03_32_829Z.png) - Go to tab adapter again and put every adapter we have been changed with this connection destination. ![](../images/2020/10/image_2021_04_22T08_07_17_241Z.png) - Go to tab Cache Monitor and use the button Rebuild Cache after System Refresh - Read Instruction ![](../images/2020/10/image_2021_04_22T08_08_31_707Z.png) ![](../images/2020/10/image_2021_04_22T08_09_49_991Z.png) #### Summary This tutorial is learning about whenever a user creates a new integration and saves it then it needs to be pushed down to Agent immediately. When integration is changed and the user clicks on the **SAVE**-Button then again we need to push down Agent. Thus we guarantee that the data are always the same in Agent as in Salesforce by using the **Synchronize cache**, **Rebuild Cache After Transport buttons, Rebuild Cache after System Refresh, Restore Connection after System Refresh.** ================================================================================ Book: Tutorials Section: Tutorials Subsection: Control Board Title: 6. How to use Agent cache on Agent Control Board? Slug: 104-how-to-use-agent-cache URL: https://help.skyvva.com/#article/104-how-to-use-agent-cache ================================================================================ # 6. How to use Agent cache on Agent Control Board? #### Introduction We cannot always rely on our cache monitor showing that all entries are green. Sometimes due to unknown bugs the monitor show green but the entries are missing in the h2 database. Currently, we are calling a URL from h2 and look to the table to verify. We need one place to verify this and therefore this tab will show the table of the h2 database so that we can view and verify the content against the Salesforce database. #### Agent cache The user has to click on the drop-down on **Table Name **picklist as per the business requirement - ADAPTER - ADAPTER_PROPERTIES - AGENT_PROPERTIES - AGENT_SETTING - ICHAINED_INTERFACE - IMAPPING - INTERFACE - INTERFACE_GROUP - IWORKFLOW - SCHEDULER_SETTING 1. When the user selects the **ADAPTER** value now here we can see all the related table field entries. - Agent Setting Id - Status - Type - Name - Deleted - Direction - Description - ExId - Instance url - Adapter Id ![](../images/2020/10/image_2020_10_13T06_48_01_340Z.png) Similarly, the user can easily use a query table and create the where clauses **eg. **here user write a query on **ADAPTER** Table which says **ADAPTER_ID = true OR DISCRIPTION__C != false** click on the submit button, and below the list of the query is run successfully. ![](../images/2020/10/image_2020_10_13T07_09_44_459Z.png) 2. When the user selects the **ADAPTER_PROPERTIES **value now here we can see all the related table field entries. - Adapter Id - Deleted - Id - instanceURL - Name - Name__C - System_Modstamp - Value - Value2 - Value_Long ![](../images/2020/10/image_2020_10_14T06_08_31_941Z.png) Similarly, the user can easily use a query table and create the where clauses **eg. **here user write a query on **ADAPTER_PROPERTIES** Table which says **IS_DELETED**** != true OR NAME = Id** click on the submit button, and below the list of the query is run successfully. ![](../images/2020/10/image_2020_10_14T05_41_59_237Z.png) 3. When the user selects the **AGENT_PROPERTIES **value now here we can see all the related table field entries. - Agent Property ID - Agent Setting Id - Deleted - Instance URL - Value - Value Long ![](../images/2020/10/image_2020_10_14T06_53_20_676Z.png) Similarly, the user can easily use a query table and create the where clauses **eg. **here user writes a query on the **AGENT_PROPERTIES** Table which says **INSTANCEURL****= ***https://enterprise-site-9150-dev-ed.lightning.force.com ***OR VALUE = SANDBOX** click on the submit button, and below the list of the query is run successfully. ![](../images/2020/10/image_2020_10_14T06_42_58_389Z.png) 4. When the user selects the **AGENT_SETTING **value now here we can see all the related table field entries. - Agent Setting Id - Deleted - Description - Instance URL - Name - Type ![](../images/2020/10/image_2020_10_14T07_22_38_059Z.png) Similarly, the user can easily use a query table and create the where clauses **eg. **here the user writes a query on the **AGENT_SETTING** Table which says **NAME****= Connection org A** click on the submit button, and below the list of the query is run successfully. ![](../images/2020/10/image_2020_10_15T05_43_19_013Z.png) 5. When the user selects the **ICHAINED****_INTERFACE **value now here we can see all the related table field entries. - Ichained Id - Deleted - Init Operation - Interface Name - Instance URL - Parent Relationship Name - Sequence - Type - Child Interface Id - Parent Interface Id - Root Interface Id ![](../images/2020/10/image_2020_10_15T05_53_44_224Z.png) Similarly, the user can easily use a query table and create the where clauses **eg. **here the user writes a query on the **ICHAINED****_INTERFACE** Table which says **PARENT_RELATIONSHIP_NAME__C= Account OR TYPE__C= Outbound **click on the submit button, and below the list of the query is run successfully. 6. When the user selects the **IMAPPING **value now here we can see all the related table field entries. - Mapping Id - Name - Deleted - Ext Id - foreignKeyC - full_source_path - full_target_path - instanceURL - interfaceTableId - namespace - parent__c - refrence_parent_field_and_above__c - refrence_field_uncle__c - source2__c - source_Object__c - source_level__c - source_long__c - source_node_level__c - source_path__c - source_type__c - target_Object__c - target__c - target_level__c - target_node__level - target_path__c - target_type__c - type__c - usageType__c ![](../images/2020/10/image_2020_10_15T06_18_36_953Z.png) 7. When the user selects the **INTERFACE **value now here we can see all the related table field entries. - Interface Id - Name - BULKAPI - Namec - adapterId - alertToIntegrationSetupC - alert_to_interation_setup__c - apexClassC - apexClassForFilterSObjectC - apexClass__c - apex_class_for_filter_sObject__c - asynchronize__c - batchMode__c - batch_job_id__c - bulk_Package_size__c - bulk_Version__c - databaseQueryC - description - extId__c - external_mapping__c - failed_message_handling__c - faultInterface__c - filter_query__c - frequencyActiveC - frequency_active__c - fromIMapping__c - inbResponse_handling__c - inboundPostingBehaviour__c - initializationQueryC - initialization_Query__c - instanceURL - integrate_Batch_Max_Size__c - integrate_Max_Size__c - integrationId - interfaceGroupId - interface_mode__c - interface_type__c - isStreamingAPIC - isTransactionalC - mapping_in_SFDC__c - max_number_Of_retry__c - messageType__c - metaDataProviderC - metaData_provider__c - notPersistMessage__c - operationType__c - package_size__c - parent_interface__c - pi__c - postfeed__c - priority__c - query__c - responseInterface__c - runtime_behaviour__c - sObjectFieldExtId__c - sequence2__c - source_name__c - status_c - streamingAPI__c - transactional__c - type_c - use_apex_class__c - use_auto_switch__c - use_batch_optimized_mode__c - use_skyvva_outScheduler__c - wf_runtime_behaviour__c - workflowStatusHandling__c ![](../images/2020/10/image_2020_10_15T07_19_05_826Z.png) Similarly, the user can easily use a query table and create the where clauses **eg. **here the user writes a query on the **INTERFACE** Table which says **PARENT_RELATIONSHIP_NAME__C= Account OR TYPE__C= Outbound **click on the submit button, and below the list of the query is run successfully. 8. When the user selects the **INTERFACE_GROUP **value now here we can see all the related table field entries. - Interface Group Id - Deleted - Direction Type - External Value - Instance URL - Name - Number of record per batch - Package Size - Priority Sequence - Priority - Running CDD - Running Scheduler - Type - Integration Id ![](../images/2020/10/image_2020_10_16T06_33_08_263Z.png) Similarly, the user can easily use a query table and create the where clauses **eg. **here the user writes a query on the **INTERFACE** Table which says **DIRECTION_TYPE__C != Inbound AND INSTANCEURL= *https://enterprise-site-9150-dev-ed.lightning.force.com ***click on the submit button, and below the list of the query is run successfully. ![](../images/2020/10/image_2020_10_16T06_42_01_817Z.png) 9. When the user selects the **IWORKFLOW **value now here we can see all the related table field entries. - IWorkflow Id - Name - active__c - checkNext__c - condition2__c - condition__c - deleted - filter_messages__c - inFixToPostFix__c - instanceURL - integrationId - message__c - old_id__c - operation_Type__c - sequence__c - sourceInterfaceId - targetInterfaceId Similarly, the user can easily use a query table and create the where clauses **eg. **here the user writes a query on the **IWORKFLOW** Table which says **IWORKFLOWW_ID= ***a0T1x000004KOnREAW *click on the submit button, and below the list of the query is run successfully. ![](../images/2020/10/image_2020_10_16T11_04_25_343Z.png) 10. When the user selects the **SCHEDULER_SETTING **value now here we can see all the related table field entries. - Scheduler Id - Name - cron_expression__c - deleted - description__c - direction - frequency__c - instanceURL - integrationId - interfaceGroup - interfaceTable - job_name__c - messageReprocessPerInterface - scheduler_type2__c - scheduler_type__c - status__c - systemModeStamp - time_interval__c ![](../images/2020/10/image_2020_10_16T07_03_20_731Z.png) Similarly, the user can easily use a query table and create the where clauses **eg. **here the user writes a query on the **SCHEDULER_SETTING** Table which says **FREQUENCY_C != Run At OR INSTANCEURL= *https://enterprise-site-9150-dev-ed.lightning.force.com ***click on the submit button, and below the list of the query is run successfully. ![](../images/2020/10/image_2020_10_16T07_12_47_375Z.png) **Summary **In this tutorial user learns about, How to run a query by writing a where clause on all table names by selecting different standard and custom fields under the Agent Cache tab. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Agent SOAP Adapter Title: 1. Agent SOAP Adapter Slug: agent-soap-adapter URL: https://help.skyvva.com/#article/agent-soap-adapter ================================================================================ # 1. Agent SOAP Adapter #### Introduction Agent SOAP Adapter is a feature like SOAP Adapter, but it has more power than the SOAP Adapter.SOAP Adapter needs the System to have Public API to callout API, but Agent SOAP Adapter can callout API with Systems that have Public API and Local API. So it is useful for users who want to keep data in the local System. To use Agent SOAP Adapter, we need to have an Agent application to store in the local machine meaning that Agent SOAP Adapter is like a bridge to connect Salesforce to the Agent machine and the Agent machine connects to Backend applications. Example: In Real business, we want to make our data secure, so we need to use a local network zone to install Agent machine and Backend applications such as SAP or Oracle. We do like this because we don't want any systems to access our System, and it is the technique to protect our data from being safe. #### Agent SOAP Adapter is Supporting - Request without response - Request with response - Request with response fault message and multiple fault message - Special characters dot(.) - Copy node. #### The processing of Agent SOAP Adapter Here's the picture of the processing of the Agent SOAP Adapter. ![](../images/2020/10/2-1.png) This picture shows that Salesforce and Skyvva are in the Internet zone where Agent Machine and Backend applications are in the Local network zone.So when we callout from Salesforce to Backend applications, it will access Agent Machine, and Agent Machine sends data to Backend applications. The agent is responsible for making connections with the inside enterprise and then connecting with Salesforce (Internet zone). This Adapter is really helpful for users to send data to salesforce to local backend applications. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to export the Metadata in different format as xsd, XSD (Response for V3 Inbound), json schema, WSDL 1.1, swagger 2.0/OpenAPI 2.0 and openApi 3? Title: 47.4 How to generate (export) JSON Schema? Slug: 47-4-how-to-generate-export-json-schema URL: https://help.skyvva.com/#article/47-4-how-to-generate-export-json-schema ================================================================================ # 47.4 How to generate (export) JSON Schema? #### Introduction JSON Schema is a detail for JSON based format for characterizing the structure of JSON information. In SKYVVA, we have a tool to generate JSON from Integration, Interface, and Message Type. This function is useful for users who want to generate JSON structure from their Integration Interface and Message type. We can generate JSON from both Interfaces Inbound and Outbound, and we will get the structures of fields with descriptions. So this tutorial will show about How to generate or export JSON Schema from Integration, Interface, and Message Type. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] + In tool Generate Json Schema we need to know about this following: - If It is the message type, so it will generate the field has type as an object. - If It is the message type, so it will generate the field has type as an object. - If the message is Rest temple, it will get only the business message underbody of the rest template. It will not take three SKYYVA fields with the Interface linked Rest Message template. - If the message is Rest temple, it will get only the business message underbody of the rest template. It will not take three SKYYVA fields with the Interface linked Rest Message template. - If the message is Rest temple, it will get only the business message underbody of the rest template. It will not take three SKYYVA fields with the Interface linked Rest Message template. - If the message type is using with the outbound interface, it will generate a field of SKYVVA as SKYVVA__MessageId. - If the IStructure in interface creation by from file, it won't generate the SKYVVA field. [/su_box] **Pre-Require** - Create Integration - Create Interface - Create Meta provider - Create Repository - Create Message Type - Link Message Type with Interface (Outbound or Inbound) - Here is the message type sample to link the inbound Interface -AccountTest has four message type field entry such as Name, AccountNumber, BillingCity, and BillingCountry. - The name has a description as "**the testing description on generating MessageType"**. - AccountNumber has description as “**AccountNumber Description From MsgTypeFieldEntry**”. -Contact MessageType has two message type field entry such as FirstName and LastName. - FirstName has a description as "**FirstName From Field Entry Name"**. - Case MessageType has two message Types as **Subject** and **Description.** - The subject has a description of "**hello"**. - The description has the description "**Testing again"**. ![](../images/2020/09/1-1.png) - Here the Interface links the **AccountTest** **Message** **Type.** ![](../images/2020/09/2-1.png) #### 1. How to generate JSON Schema from the Generic page? Generate JSON schema on generic page “Generate Meta” custom link of Integration, and It allows users to select which Interfaces that users want to generate without leaving to find every Interface. For example, when we have 10 Interfaces, and we need to generate Json for 5 Interfaces, we can use this technique. Ingenerate JSON schema on Integration, there are two ways to generate, such as New way and Old way. In old ways, we get fields from System and description is ID Integration, but in a new way, we change the word from System to Integration and change from integration ID to Integration Name. - Enter to **Integration**->Click Generate MetaData in Custom link section->Choose Inbound Interface->and chose a format file ![](../images/2020/09/4-1.png) - Choose the **Account WithMessageType** in **Create WSDL for Interface**->Choose **JSON Schema** in **Chose a format file->**Click the **Export** button. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] As old way and the new ways just different 2 field. [/su_box] - in the old way will generate a target object and from System -the **description** of the form system is the **id** of Integration -the **description** of the **target** object is the **name** of Interface - in the new ways will change target object to Interface and from System to Integration - the **description** of **Integration** is **Integration** **name** - the **description** of Interface is the **interface** **name** ![](../images/2020/09/3-2.png) - Scroll down to find the class file and click view to download the file. ![](../images/2020/09/6-1.png) - Here's the result of generating JSON Schema. ![](../images/2020/09/7.png) #### 2. How to generate JSON Schema from Generate Metadata on Interface? Generate JSON file from Generate Metadata on Interface is useful for a user who knows the exact Interface that he/she wants to generate. - Go to Interface -> click Generate MetaData (The picture is below). ![](../images/2020/09/7-2.png) - Choosing a format file =JSON Schema and click the Export button. ![](../images/2020/09/8.png) - After we click the export button, it will download the JSON Schema file automatically. - Here's the JSON schema  file that we generate On Interface.( Export on Integration and Interface, the result is the same.) ![](../images/2020/09/7.png) #### 3. How to generate JSON Schema from the message type of Repository? Generate JSON Schema file from Export Metadata on message type of Repository is to allow users to choose the Message Type that the user wants to use. The Message Types that the user choosing will be takes the whole child message type. - Go to the Repository that we want to generate JSON Schema->enter to message type section->click Export Metadata in action button. ![](../images/2020/09/ExportMetaDataFromMessageTypeSection.png) - It will pop-up to export metadata, then please choose the JSON Schema file format. ![](../images/2020/09/ExportMetaDataFromMessageTypeSection-1.png) - After exporting, we will get structure Contact and his child that is Cases Message Type. Because we choose, Contact is a parent of Cases Message Type. - Here is the result of Export JSON Schema from Message Type on Repository. ![](../images/2020/09/11.png) **Summary ** Finally, we have learned how to generate the JSON Schema file on Integration, Interface, and Repository. There are individual benefits like we use on Integration that we can choose the Interfaces that we want to get structures to generate the JSON Schema file. We use​​​ to generate the JSON Schema file from the Interface when we have known the exact Interface, and We generate message types from the Repository when we want to get specific business message types. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. Agent REST Adapter Slug: agent-rest-adapter URL: https://help.skyvva.com/#article/agent-rest-adapter ================================================================================ # 1. Agent REST Adapter #### Introduction Agent REST Adapter is a new feature like the existing REST adapter. Agent REST can callout an API system that provides the REST API with public and local API. It is useful for the user can keep their data for the local system and safe. To use the Agent REST adapter, we need an Agent application for a store in the local machine that this adapter is like a connection salesforce to the agent machine and the agent machine connect to the backend application. #### The processing of Agent REST Adapter Here is the picture of the processing of the Agent REST adapter   ![](../images/2020/11/Agent-Rest-Adapter.png)  This picture will explain to you the processing of Agent REST adapter, we will be able to see the internet zone has Skyvva and salesforce where the local network zone has Agent machine and backend application. The Agent has the responsibility for making connections for each other. Example: In real business, we don't want any system that van access our system and protect our data from being safe, we can make our data secure, so we need to use a local network zone to install Agent machine and backend applications such as SAP or Oracle. Of course, it useful for the user to export data to salesforce to the backend application. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. How to create REST interface using the Agent REST Adapter? Slug: how-to-create-rest-interface-using-the-agent-rest-adapter URL: https://help.skyvva.com/#article/how-to-create-rest-interface-using-the-agent-rest-adapter ================================================================================ # 2. How to create REST interface using the Agent REST Adapter? #### 1. How to use it? Adapter Agent **REST** has three authentication types to use when calling out to a rest web service and it has handle response type **XML** and **JSON**. Here is the authentication type we support : - Basic Authentication - Oauth2.0 (grant type: password, client credentials, and refresh token) - API Key **Agent Rest adapter is supporting :** - Request without response - Request with response - Special characters dot(.) - Supports Is Array on the root message type - Supporting Is Array on properties field for multiple picklist values. #### Handle API message without Response interface using Basic Adapter **Step 1**: Create or upload message type ![](../images/2020/11/uploadmeta.png) - Click upload file (put meta and click OK) ![](../images/2020/11/ImportMeta.png) **Step 2**: Create Integration - Create an outbound interface and link with message type ![](../images/2020/11/outboundbasic.png) - Do Mapping ![](../images/2020/11/mappingbasic-1.png) **Step 3**: Configuration Agent Control board - Go to Integration Detail and click Agent Control Board ![](../images/2020/11/agentcontrol.png) - Create Connection on Agent Control Board ![](../images/2020/11/createconnection.png) - Configuration Destination Salesforce to Agent - Fill agent credential ![](../images/2020/11/create2.png) - Configuration Agent to Salesforce - Fill in Salesforce Credential click ping Salesforce connection and click the save button. ![](../images/2020/11/create3.png) **Step 4**: Create an Adapter on Agent Control Board - Create adapter type Basic from adapter tap on Agent Control Board ![](../images/2020/11/createadapterbasic.png) **Step 5**: Link Adapter into an interface ![](../images/2020/11/linkadapterbasic.png) - CallOut V3 with Apex code - Here is the code callout. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0011x000018SiQAAA0'}; skyvvasolutions.Iservices.invokeCalloutV3('Adapter_Agent_Rest','Outbound_Basic_Authentication',ids,'SYNC', c); [/aux_code] - Go to developer console Native to debug -> open execute anonymous window ![](../images/2020/11/apexcodebasic.png) - Go to Monitor to check the result ![](../images/2020/11/messagebasicout.png) #### Handle API message with Response interface In this case, we just need to create a Response Interface using Message Type. Pre requires - Create or Upload Message Type **REST**. (We have configured in case1) - Configuration Agent control board. (We have configured in case1) - Create Adapter Agent **REST**. (We have configured in case1) - Create Inbound Interface **How to handle API message with response interface** - In this case, we just need an Inbound interface one more for doing response. Because we have configuration some pre-required already. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Note you make sure that the message type response interface is matching with payload response of another request system or server.[/su_box] **Step 1**: Create Interface - Create an inbound interface, link message type into an interface, and click the save button. ![](../images/2020/11/createinboundbasic.png) - Do mapping ![](../images/2020/11/mappingresponsebasic.png) **Step 2**: Put response interface into the Request interface - Go to the request interface scroll down to see the field’s response and put the response interface’s name. ![](../images/2020/11/linkinterfacebasic.png) **Step 3**: Callout **V3** with apex code with request interface [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0032x000004XV2dAAG'}; skyvvasolutions.Iservices.invokeCalloutV3('Adapter_Agent_Rest','OutBound_Basic_Authentication',ids,'SYNC', c); [/aux_code] - Native to Developer Console ![](../images/2020/11/apexcodebasic.png) - Go to Monitor Tap to check the result ![](../images/2020/11/messageinboundbasic.png) #### Handle API message without Response interface using OAuth2.0 Authentication In this case, we just need to create an Adapter type OAuth2.0 authentication. Pre requires - Create or Upload Message Type **REST**. - Create Integration and outbound Interface. - Configuration Agent control board. (We have configured in case1) **Step 1**: Create Adapter Agent **REST** This authentication we test callout from salesforces. - Create Agent **REST** adapter type **OAuth**. ![](../images/2020/11/image_2020_11_30T09_04_48_317Z.png) **Step 2**: Create an outbound interface In this case, we need two outbound interface - Create one outbound interface that has a Target Name account used for matching with payload from the postman. ![](../images/2020/11/ountboundapi1.png) - Do mapping ![](../images/2020/11/mapping1.png) - Create an outbound interface one more for call out from salesforce. ![](../images/2020/11/outboundapi2.png) - Do mapping - The set formula for a link to the first outbound interface. ![](../images/2020/11/setfomula.png) - Link Adapter into Callout interface ![](../images/2020/11/linkadapteroauth.png) **Step 3**: CallOut **V3** Apex code - Using apex code same case 1 ![](../images/2020/11/apexcodeoauth.png) - Go to Monitor to check the result ![](../images/2020/11/messageoauthout.png) #### Handle API message with Response interface In this case, we just need an Inbound interface one more for doing response. Because we have configuration some pre-required already. **Step 1**: Create a response interface ![](../images/2020/11/inboundoauth.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]User have to make sure the payload matching the message type[/su_box] - Do Mapping ![](../images/2020/11/mappingoauthin-1.png) **Step 2**: Put response interface into a request interface - Go to the request interface scroll down to see the field’s response and put the response interface’s name. ![](../images/2020/11/linkinterfaceoauth.png) - Callout v3 Apex code ![](../images/2020/11/apexcodeoauth.png) - Check the result on the monitor ![](../images/2020/11/messageoauthin.png) #### Handle API message without Response interface using API Key Authentication **Pre requires** In this case, we have some requirements from another case you just create adapter type API Key authentication. **Step 1: **Create adapter Agent Rest Create adapter type agent rest API key authentication ![](../images/2020/11/createadapterapi.png) **Step 2: ** Create an outbound interface - Create an outbound interface. ![](../images/2020/11/outboundapi.png) - Link Adapter into the interface ![](../images/2020/11/linkadapterapi-1.png) - Do Mapping ![](../images/2020/11/mappingapiout-1.png) **Step3: **Call out by apex code - Here is the apex code ![](../images/2020/11/apexapi-1.png) - Go to monitor to check the result ![](../images/2020/11/messageoutapi-2.png) #### Handle API message with Response interface In this case, we just need an inbound interface one more to do response because we have some pre-requires already. But you make sure the payload is matching the message type. **Step1: ** Create an inbound interface ![](../images/2020/11/inboundapi.png) - Do Mapping ![](../images/2020/11/mappingapiin.png) **Step 2: **Put response interface into a request interface - Go to the request interface and scroll down to see the field **response interface** and put the name response interface into the field. ![](../images/2020/11/linkinterfaceapi-1.png) **Step 3: ** Call v3 by apex code Here is an example in the developer console ![](../images/2020/11/apexapi-1.png) - Check the result on the monitor page ![](../images/2020/11/messageapirespone.png) #### Supports isArray on properties message type and field for multiple picklist values We have data type a data picklist(Multi-Select) not Sobject which should be generated in the JSON array of the JSON outbound payload. Now we are able to generate it. Step1: Metadata Provider Go to message type using rest template ![](../images/2020/11/r1.png) - Checking isArray properties on the message type ![](../images/2020/11/r2.png) - Checking isArray on message field entry ![](../images/2020/11/r3.png) Step2: Create an outbound interface Create an outbound interface and link metadata provider into the interface. ![](../images/2020/11/r4.png) - Link adapter to interface ![](../images/2020/11/r5.png) - Do mapping Do mapping custom field that has multi-picklist with message field entry checked isArray properties. ![](../images/2020/11/r6.png) - Got to the agent control board We need to check the cache monitor to ensure that adapter, Integration, interface group, interface, Ichain, mapping, or workflow that we set on an interface is cache retrieved. ![](../images/2020/11/r7.png) - Go to Developer Console ![](../images/2020/11/r8.png) - Checking the result on the message monitor ![](../images/2020/11/r9.png) - Here is the request payload result ![](../images/2020/11/r10.png) #### Summary Finally, this feature has been explained to you how to use the Agent REST adapter to call out to other systems with the response interface. This adapter is useful for the user who wants to import or export data with the internal and external systems in synchronous and asynchronous modes. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to export the Metadata in different format as xsd, XSD (Response for V3 Inbound), json schema, WSDL 1.1, swagger 2.0/OpenAPI 2.0 and openApi 3? Title: 47.5 How to export Swagger 2.0/OpenAPI 2.0? Slug: 47-5-how-to-export-swagger-2-0-openapi-2-0 URL: https://help.skyvva.com/#article/47-5-how-to-export-swagger-2-0-openapi-2-0 ================================================================================ # 47.5 How to export Swagger 2.0/OpenAPI 2.0? #### Introduction The Swagger 2.0/OpenAPI 2.0 is used to define a set of files required to describe and document of Rest API. This tutorial will show you how to export Swagger 2.0/OpenAPI 2.0 file which API that you want to generate. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] + In tool Generate Swagger 2.0/OpenAPI 2.0 we need to know about this following: - The interface could be Request, Response. - The Request/outbound interface will get the IStructure/MessageTye based on the interface and get extra fields as the SKYVVA__MessageId field. The SKYVVA__MessageId field will generate for all levels of messageType. - The Response/inbound interface will get the IStructure/MessageTye based on the interface and get extra fields such as SKYVVA__MessageId, SKYVVA__MESSAGE, and SKYVVA__Response_Code field. The SKYVVA fields generate only the parent level with messageType. - When the interface doesn’t link with Request Interface, it will automatically generate as Request. If the interface link with Request Interface, it will generate as Response. - The SKYVVA fields will not generate from Interface ISturcture that uploads from the file. - The old ways check box will generate old or new ways of file format. - It will export the normal message type and Rest template in the generic page and interface page, but the message type of repository will generate only the Rest template. - If you generate metadata from the message type section of the repository, it will not get SKYVVA fields. [/su_box] #### Pre-Require First, you need to do some prerequisite steps before you can use the function “Generate Metadata“: - Create Integration - Create Inbound/Outbound Interface - Create MetaData - Create Repository - IStructure/Message type add into the interface #### How to get message type in Swagger 2.0/OpenAPI 2.0 File Format? The Swagger 2.0/OpenAPI 2.0 can be generated at three places e.g. in the generic page (the custom link of Integration), the interface details page, and the message type of Repository page. We pick up one for sample using the inbound interface and having Message Type. Before getting the message type, we need to have a MetaData provider, a Repository. Here is the Message Type sample: ![](../images/2019/06/SampleMessageType.png) Inbound interface using with Message Type ![](../images/2019/06/CreateInterfaceLinkwithTheMessageType.png) Checking structure message type in mapping tool at the left side because we are using an inbound interface. ![](../images/2019/06/SourceOfMessageType.png) #### How to generate Swagger 2.0/OpenAPI 2.0 from Generic Page? Now you are able to generate MetaData. we will show you how to generate metadata on the generic page (the customs link of Integration Details). Please enter the integration details page and you will able to see the “Generate MetaData“ in the Custom Links section. Please click the Generate MetaData link: ![](../images/2019/06/CustomLinks.png) Generate metadata in the new way of Swagger 2.0/OpenAPI 2.0. Please choose the interface name on “Create WSDL For Interface”, Choose Swagger 2.0/OpenAPI 2.0 file format in “Chose a format file”, uncheck the checkbox “As old ways?”, Chose an api name, chose an operation, and click the “Export” button. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If your interface link to message type as Rest template, so Combobox ‘Chose a format file’ will display ‘Swagger 2.0/OpenAPI 2.0 and OpenAPI 3.0’ option.[/su_box] ![](../images/2019/06/GenericPageInSwagger2.0_OpenAPI2.0.png) You will get a Swagger 2.0/OpenAPI 2.0 file format under the “Outbound Interfaces (Related List)” section. You can download it by clicking the link “View”. You will able to see the file after download in the download folder or download bar chrome browser. ![](../images/2019/06/DownlaodFileForGenericPage.png) #### How to generate Swagger 2.0/OpenAPI 2.0 from Interface Details Page? This is the second way to generate Swagger 2.0/OpenAPI 2.0 format, you can go to Interface Details Page that you want to generate. You will see the “Generate MetaData” button on the header section page. Please click this button to see the pop-up screen. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] it generate automatically as new way while you generate in interface details page.[/su_box] ![](../images/2020/11/InterfaceDetailPageGeneric.png) Please choose Swagger 2.0/OpenAPI 2.0 in the “Chose a format file” picklist and click the “Export” button. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If your interface link to message type as Rest template, so Combobox ‘Chose a format file’ will display only ‘Swagger 2.0/OpenAPI 2.0’ option.[/su_box] ![](../images/2020/11/POPUPofInterfaceDetailsPage.png) You will get the Swagger 2.0/OpenAPI 2.0 file in the download bar section or you can check on download folder on your local pc. ![](../images/2020/11/AfterDownloadinInterfaceDetailsPage.png) Here is the result of generating meta from the generic page and interface details page. It will generate the Request message type includes the message Type name and its fields that you have link the message type with this interface. ![](../images/2020/11/TheTopofFile.png) ![](../images/2020/11/TheRoofoffgenerationSwagger-1.png) #### How to generate Swagger 2.0/OpenAPI 2.0 from Message Type of Repository? This is the third way to generate Swagger 2.0/OpenAPI 2.0 format from the message type. Please enter the message type section in the repository. Then you will see the “Generate MetaData” Action button in the message type section. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]if you want to generate the Swagger 2.0/OpenAPI 2.0 file format on the message type, your message type has to Rest template. For example, you can generate Rest Service only. It has two-part in Rest template such as Request, Response Message type depend on your business message type.[/su_box] Here is the Rest message type template: ![](../images/2020/11/MessageTypeasRestTemplate.png) We will show you to export the “Rest Service” message type. Please click the Export MetaData button. ![](../images/2020/11/ExportRestService.png) It will pop-up to export metadata, then please choose the Swagger 2.0/OpenAPI 2.0 file format. ![](../images/2020/11/popupofexportinMessageTypeofRepository.png) You will get the file in the download bar section or you can check on the download folder on your local pc. ![](../images/2020/11/DownlaodfilefromMessageTypeofRepository.png) Here is the Swagger 2.0/OpenAPI 2.0 file format after generating from Repository. ![](../images/2020/11/FileGetFromMessageTypeRepositoryOnTOp.png) ![](../images/2020/11/FileGetFromMessageTypeRepositoryOnMiddle.png) ![](../images/2020/11/FileGetFromMessageTypeRepositoryOnButton.png) #### Summary Finally, you have learned how to generate metadata with a Swagger 2.0/OpenAPI 2.0 file format was in the generic page, Interface details page, and message type. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to export the Metadata in different format as xsd, XSD (Response for V3 Inbound), json schema, WSDL 1.1, swagger 2.0/OpenAPI 2.0 and openApi 3? Title: 47.6 How to export OpenAPI 3.0? Slug: 47-6-how-to-export-openapi-3-0 URL: https://help.skyvva.com/#article/47-6-how-to-export-openapi-3-0 ================================================================================ # 47.6 How to export OpenAPI 3.0? #### Introduction OpenAPI 3.0 is the next evolution of the Swagger specification. The OpenAPI 3.0 is also used to define a set of files required to describe and document of Rest API. This tutorial will show you how to export OpenAPI 3.0 file which API that you want to generate. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] + For exporting the message Type of OpenAPI 3.0 Format, we need to know about this following: - The interface could be Request, Response. - The Request/outbound interface will get the IStructure/MessageTye based on the interface and get extra fields as the SKYVVA__MessageId field. The SKYVVA__MessageId field will generate for all levels of messageType. - The Response/inbound interface will get the IStructure/MessageTye based on the interface and get extra fields such as SKYVVA__MessageId, SKYVVA__MESSAGE, and SKYVVA__Response_Code field. The SKYVVA fields generate only the parent level with messageType. - When the interface doesn’t link with Request Interface, it will automatically generate as Request. If the interface link with Request Interface, it will generate as Response. - The SKYVVA fields will not generate from Interface ISturcture that uploads from the file. - The old ways check box will generate old or new ways of file format. - It will export the normal message type and Rest template in the generic page and interface page, but the message type of repository will generate only the Rest template. - If you generate metadata from the message type section of the repository, it will not get SKYVVA fields. [/su_box] #### Pre-Require First, you need to do some prerequisite steps before you can use the function “Generate Metadata“: - Create Integration - Create Inbound/Outbound Interface - Create MetaData - Create Repository - IStructure/Message type add into the interface #### How to get message type in OpenAPI 3.0 File Format? The OpenAPI 3.0 be generated at three places e.g. in the generic page (the custom link of Integration), the interface details page, and the messsage type of the Repository page. We pick up one for sample using the inbound interface and having Message Type. Before getting the message type, we need to have a MetaData provider, a Repository. Here is the Message Type sample: ![](../images/2019/06/SampleMessageType.png) Inbound interface using with Message Type ![](../images/2019/06/CreateInterfaceLinkwithTheMessageType.png) Checking structure message type in mapping tool at the left side because we are using an inbound interface. ![](../images/2019/06/SourceOfMessageType.png) #### How to generate OpenAPI 3.0 from the Generic Page? Now you are able to generate MetaData. we will show you how to generate metadata on the generic page (the customs link of Integration Details). Please enter the integration details page and you will able to see the “Generate MetaData“ in the Custom Links section. Please click the Generate MetaData link: ![](../images/2019/06/CustomLinks.png) Generate metadata in the new way of OpenAPI 3.0. Please choose the interface name on “Create WSDL For Interface”, Choose OpenAPI 3.0 file format in “Chose a format file”, uncheck the checkbox “As old way?”, Chose an api name, chose an operation, and click the “Export” button. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If your interface link to message type as Rest template, so Combobox ‘Chose a format file’ will display ‘Swagger 2.0/OpenAPI 2.0 and OpenAPI 3.0’ option.[/su_box] ![](../images/2020/11/generatefromGenericPageOpenAPI3.0.png) You will get an OpenAPI 3.0 file format under the “Outbound Interfaces (Related List)” section. You can download it by clicking the link “View”. You will able to see the file after download in the download folder or download bar chrome browser. ![](../images/2020/11/DownloadOPenAPI3.0InGenericPage.png) #### How to generate OpenAPI 3.0 from Interface Details Page? This is the second way to generate OpenAPI 3.0 format, you can go to Interface Details Page that you want to generate. You will see the “Generate MetaData” button on the header section page. Please click this button to see the pop-up screen. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] it generate automatically as new way while you generate in interface details page.[/su_box] ![](../images/2020/11/InterfaceDetailPageGeneric.png) Please choose Swagger 2.0/OpenAPI 2.0 in the “Chose a format file” picklist and click the “Export” button. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If your interface link to message type as Rest template, so Combobox ‘Chose a format file’ will display only ‘Swagger 2.0/OpenAPI 2.0 and OpenAPI 3.0’ option.[/su_box] ![](../images/2020/11/PopUpScreenToChooseFileFormatFromInterfaceDetailsPage.png) You will get OpenAPI 3.0 file in the download bar section or you can check on download folder on your local pc. ![](../images/2020/11/AfterDownloadinInterfaceDetailsPage.png) Here is the result of generating meta from the generic page and interface details page. It will generate the Request message type includes the message Type name and its fields that you have link the message type with this interface. ![](../images/2020/11/ToptheFileOfOpenAPI3.0InGenericPageandInterfacePage.png) ![](../images/2020/11/TheButtomFileOfOpenAPI3.0InGenericandInterfaceDetailPage.png) #### How to generate OpenAPI 3.0 from Message Type of Repository? This is the third way to generate OpenAPI 3.0 format from the message type. Please enter the message type section in the repository. Then you will see the “Generate MetaData” Action button in the message type section. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]if you want to generate the OpenAPI 3.0 file format on the message type, your message type has to Rest template. For example, you can generate Rest Service only. It has two-part in Rest such as Request, Response Message type depend on your business message type.[/su_box] Here is the Rest message type template: ![](../images/2020/11/MessageTypeasRestTemplate.png) We will show you to export the “Rest Service” message type. Please click the Export MetaData button. ![](../images/2020/11/ExportRestService.png) It will pop-up to export metadata, then please choose the OpenAPI 3.0 file format, Chose an API name, and Chose an operation. ![](../images/2020/11/PopUpScreenToChooseFileFormatFromMessageTypeOfRepository.png) You will get the file in the download bar section or you can check on the download folder on your local pc. ![](../images/2020/11/DownlaodfilefromMessageTypeofRepository.png) Here is the OpenAPI 3.0 file format after generating from message type of Repository. ![](../images/2020/11/TheTopFileGenericFromMessageTypeOFRepository.png) ![](../images/2020/11/TheMiddleFileOfOpenAPI3.0FromMessageTypeOfRepository.png) ![](../images/2020/11/TheButtomFileOfOpenAPI3.0InMessageTypeOFRepository.png) #### Summary Finally, you have learned how to generate metadata with OpenAPI 3.0 file format was in the generic page, Interface details page, and message type. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 1. How to install Agent 3.0 for Windows? Slug: how-to-install-agent-3-0-for-windows URL: https://help.skyvva.com/#article/how-to-install-agent-3-0-for-windows ================================================================================ # 1. How to install Agent 3.0 for Windows? #### System Requirements ![](../images/2020/04/image_2020_11_23T06_37_45_906Z.png) #### Approach - User/Admin has bought a valid **SSL** certificate from the trusted vendors of Salesforce. –  [Outbound Messaging SSL CA Certificates](https://cs89.salesforce.com/cacerts.jsp) - User/Admin has got the deployment package and transferred it to the deployment server. #### Installation Procedure 1. Once we have the Skyvva Integration Agent setup file available. We can execute it by double-clicking on it. ![](../images/2020/11/image_2021_04_27T09_54_03_726Z.png) 2. Hit Next, it will ask you to accept the License Agreement. Read the agreement and accept it. This is mandatory to proceed further with the installation. ![](../images/2020/11/image_2021_04_27T09_57_54_487Z.png) 3. Hit **I Agree**, it will take you to Choose the installation directory. By default, it will be C:\Program Files\Skyvva Integration Agent\ You can update it or leave it as is. ![](../images/2020/11/image_2021_04_27T10_00_40_313Z.png) Then click Next. 4. It will take you to choose the Start Menu Folder name, by default it will be Skyvva Integration Agent. Again you can change the name or leave it as is. ![](../images/2020/11/image_2021_04_27T10_02_56_217Z.png) Then click Install. ![](../images/2020/11/image_2021_04_27T10_04_26_602Z.png) 5. Once you click Finish, it will install the Agent as a service and start it. 6. We can find out the installed artifacts in the installation directory. ![](../images/2020/11/image_2021_04_27T10_08_04_281Z.png) **In the installation directory, we will have a few executables, out of which we can use 2 namely** SkyvvaIntegrationAgent-Start.exe SkyvvaIntegrationAgent-Stop.exe **As their names say, they will be used to start or stop the agent. If you had already chosen to run the agent while installing, it will be running right now.** 7. In case if we wanted to update the configuration for an agent, we could stop the services by executing the SkyvvaIntegrationAgent-Stop.exe executable and following the procedure described below. 8. Now once we have all the artifacts available and extracted in the deployment directory, we can update the configuration in the config\skyvva_application.properties file. `User/Admins must only change the following mentioned attributes in the property file.` - server.port=9055 The above property will set the port on which the Skyvva Agent will listen. - skyvva.h2.db.port=9099 The above property will set the port on which the Skyvva Agent Internal database web console will be available. - skyvva.agent.username=skyvva skyvva.agent.password=skyvva@12! - The above 2 properties will enable the basic authentication on the Skyvva Agent service. #### Upgrade Procedure 1. In case if we want to upgrade Skyvva Integration Agent to a new patch, then all we have to do is just install the new upgrade file. 2. While upgrading, the installer will not touch the database file, so we don’t have to bother about that file at all. #### Uninstall Procedure 1. Go to the installation directory, if it was not changed then it will be as follows C:\Program Files\Skyvva Integration Agent ![](../images/2020/11/image_2021_04_27T10_19_23_358Z.png) 2. Look for the uninstall.exe, and execute it by double-clicking on it. ![](../images/2020/11/image_2021_04_27T10_22_04_029Z.png) 3. Hit Uninstall, this will stop the running service and delete everything from the installation directory. `Once you uninstall, the database file will also be removed. In case you do not want to lose the database file for any purpose, then make sure that you move the file with the name skyvva.mv.db from the agent-db folder before starting to uninstall procedure.` #### SSL Setup Procedure There are two parts to setting up **SSL**. - The first part is where we enable **SSL** for the Agent instances so that all the services/endpoints exposed by **SKYVVA** Agent middleware can be accessed using **SSL** over **http** i.e. **https protocol**. - In the second part, we need to ensure that **SKYVVA** Agent middleware can access the Salesforce org using **https**. In order to do that we will have to trust the Salesforce **SSL** certificate by adding the **Root CA** certificate of Salesforce org to Agent’s trusted keystore. #### Setup SSL for Agent Instance `We need a valid **SSL** certificate in .p12 or .pfx format available to setup **SSL** for Agent Instance. Please check out the list of available trusted vendors ([Outbound Messaging SSL CA Certificates](https://cs32.salesforce.com/cacerts.jsp)) from which you can purchase an **SSL** certificate.` **1.** Copy the new valid SSL certificate to the deployment directory i.e. C:\skyvva-agent **2.** Once we have copied the new **SSL** certificate to the deployment directory, we need to change the property file so that the Agent Instance can pick up the **SSL** certificate. Open the property file with the name skyvva_application.properties and look for the properties mentioned below. `================================== # Agent SSL Properties # ==================================` # Change this to true, if SSL has to be enabled skyvva.h2.db.ssl.enabled=false # Uncomment the following properties to enable SSL for Agent Services #server.ssl.key-store-type=PKCS12 #server.ssl.key-store=C:\\skyvva-agent\\ssl-certificate.p12 #server.ssl.key-store-password=Skyvva@12! #server.ssl.key-alias=1 #security.require-ssl=true **3.** As we can see above, all the properties except one have been commented out (which means starts with ‘**#**’). We will have to uncomment them i.e. remove ‘**#**’ from the starting of the lines. Once done it will look like as shown below. `# ================================== # Agent SSL Properties # ==================================` # Change this to true, if SSL has to be enabled skyvva.h2.db.ssl.enabled=false # Uncomment the following properties to enable SSL for Agent Services server.ssl.key-store-type=PKCS12 server.ssl.key-store=C:\\skyvva-agent\\ssl-certificate.p12 server.ssl.key-store-password=Skyvva@12! server.ssl.key-alias=1 security.require-ssl=true **4.** Now we will have to change only 4 properties to enable the **SSL** for **SKYVVA** Agent. Those 4 properties are as follows. `skyvva.h2.db.ssl.enabled=true server.ssl.key-store=C:\\skyvva-agent\\Add the name of the new SSL certificate file server.ssl.key-store-password=SSL certificate store password server.ssl.key-alias=Alias of the SSL certificate ` **Once we have replaced the highlighted values with the right possible values, we can restart the Agent Instance.** #### Setup SSL for Outbound Flow In this section, we will see how to trust a **Root** **CA certificate** so that we can connect to any system like **Salesforce, Kafka, SAP,** etc using **SSL** through **SKYVVA** Agent middleware. Normally all the standard **CA certificates** are already present in the Trust Store file used by the **JDK**(which is embedded inside the Agent Deployable Package), but in rare scenarios where it's not available, we can import it as a trusted certificate. #### Procedure [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Before we start the procedure, we need to download the other system or web site’s SSL certificate. To download any website’s certificate using the browser, please check the next section.[/su_box] **1.** Open the command prompt. ![](../images/2020/04/image_2020_11_24T07_54_26_031Z.png) **2.** Go to the Agent deployment directory using the command below. cd C:\skyvva-agent\zulu14\bin\ ![](../images/2020/04/image_2020_11_24T07_55_53_350Z.png) **3.** Use the command described below to import the certificate file as a trusted certificate. `keytool.exe -importcert -alias certificate-alias-name -file path_to_certificate_file -keystore C:\skyvvaagent\zulu14\lib\security\cacerts -storepass changeit -trustcacerts ` ![](../images/2020/04/image_2020_11_24T08_03_07_281Z.png) **Make sure that you replace the highlighted parts with the actual values before executing the above command. Once done, restart the Agent Instance.** #### Procedure to Download on SSL certificate #### Google Chrome **Export the SSL certificate of a website using Google Chrome:** **1.**Click the ***Secure*** button (a padlock) in an address bar. ![](../images/2020/04/image_2020_11_24T08_10_05_352Z.png) **2.** Click the ***Certificate(Valid).*** ![](../images/2020/04/image_2020_11_24T08_12_02_007Z.png) **3.** Go to the ***Details*** tab ![](../images/2020/04/image_2020_11_24T08_13_26_069Z.png) **4. **Click the ***Copy to File***… button **5**. Click the ***Next*** button. **6**. Select the “Base-64 encoded X.509 (.CER)” format and click the ***Next*** button. ![](../images/2020/04/image_2020_11_24T08_14_57_214Z.png) **7**. Specify the name of the file you want to save the SSL certificate to **8**. Click the ***Next*** and the ***Finish*** button #### Mozilla Firefox **Export the SSL certificate of a website using Mozilla Firefox:** **1**. Click the ***Site Identity*** button (a padlock) in an address bar. ![](../images/2020/04/image_2020_11_24T08_18_30_757Z.png) **2**. Click the ***Show connection details*** arrow **3**. Click the ***More Information*** button ![](../images/2020/04/image_2020_11_24T08_20_07_607Z.png) **4**. Click the ***View Certificate*** button **5**. Go to the ***Details*** tab ![](../images/2020/04/image_2020_11_24T08_21_33_498Z.png) **6**. Click the ***Export*** button **7**. Specify the name of the file you want to save the SSL certificate too, keep the “**X.509 Certificate (PEM)**” format and click the ***Save*** button #### Internet Explorer **Download and save the SSL certificate of a website using Internet Explorer:** **1**. Click the ***Security report*** button (a padlock) in an address bar ![](../images/2020/04/image_2020_11_24T08_24_40_313Z.png) **2**. Click the View Certificate button ![](../images/2020/04/image_2020_11_24T08_26_13_628Z.png) **3**. Go to the ***Details*** tab **4**. Click the ***Copy to File***… button **5**. Click the ***Next*** button **6**. Select the “**Base-64 encoded X.509 (.CER)**” format and click the ***Next*** button **7**. Specify the name of the file you want to save the **SSL** certificate to **8**. Click the ***Next*** and the ***Finish*** buttons ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 1. How to install Agent 3.0 for Linux ? Slug: 107-how-to-install-agent-3-0-for-linux URL: https://help.skyvva.com/#article/107-how-to-install-agent-3-0-for-linux ================================================================================ # 1. How to install Agent 3.0 for Linux ? #### System Requirements ![](../images/2020/11/image_2020_11_25T08_00_22_504Z.png) #### Approach - User/Admin has bought a valid **SSL** certificate from the trusted vendors of Salesforce. –  Outbound Messaging SSL CA Certificates - User/Admin has got the deployment package and transferred it to the deployment server. - User/Admin has exported the deployment package to the following directory. /opt/skyvva-agent **If the above directory doesn’t exist already then create it using the following command.** mkdir –p /opt/skyvva-agent/{agent-db,logs} ![](../images/2020/11/image_2020_11_25T07_36_18_212Z.png) - Extract the deployment package using the following command. tar –xvzf Skyvva-Agent-Deployment-Package.tgz -C /opt/skyvva-agent/ [aux_highlight style="aux-highlight-blue" extra_classes=""][root@ip-172-20-63-98~]# tar -xvzf Skyvva-Agent-Deployment-Package.tgz -C/opt/skyvva-agent/[/aux_highlight] #### Deployment Procedure **1.** Once we extract the deployment package to the above-mentioned directory, we should be able to find the following artifacts in the above directory. - **Skyvva-Agent-3.0.0.jar** - **quartz.properties** - **skyvva_application.properties** - **startup.sh** - **stop-agent.sh** - **zulu14** ![](../images/2020/11/image_2020_11_25T07_50_29_247Z.png) **2**. Now once we have all the artifacts available and extracted in the deployment directory, we can update the configuration in the skyvva_application.properties file. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] User/Admins must only change the following mentioned attributes in the property file. • server.port=9055 The above property will set the port on which the Skyvva Agent will listen. • skyvva.h2.db.port=9056 The above property will set the port on which the Skyvva Agent Internal database web console will be available. • skyvva.agent.username=skyvva • skyvva.agent.password=skyvva@12![/su_box] **The above 2 properties will enable the basic authentication on the Skyvva Agent service.** **3.** After completing all the above steps, we can safely start the agent by executing the startup script. • start-agent.sh #### SSL Setup Procedure There are two parts to setting up **SSL**. - The first part is where we enable **SSL** for the Agent instances so that all the services/endpoints exposed by **SKYVVA** Agent middleware can be access using **SSL** over **http** i.e. **https protocol**. - In the second part, we need to ensure that **SKYVVA** Agent middleware can access the Salesforce org using **https**. In order to do that we will have to trust the Salesforce **SSL** certificate by adding the **Root CA** certificate of Salesforce org to Agent’s trusted keystore. #### Setup SSL for Agent Instance [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We need a valid **SSL** certificate in .p12 or .pfx format available to setup **SSL** for Agent Instance. Please check out the list of available trusted vendors ([Outbound Messaging SSL CA Certificates](https://cs32.salesforce.com/cacerts.jsp)) from which you can purchase an **SSL** certificate.[/su_box] **1.** Copy the new valid SSL certificate to the deployment directory i.e. C:\skyvva-agent **2.** Once we have copied the new **SSL** certificate to the deployment directory, we need to change the property file so that the Agent Instance can pick up the **SSL** certificate. Open the property file with the name skyvva_application.properties and look for the properties mentioned below. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]# ================================== # Agent SSL Properties # ================================== # Change this to true, if SSL has to be enabled skyvva.h2.db.ssl.enabled=false # Uncomment the following properties to enable SSL for Agent Services #server.ssl.key-store-type=PKCS12 #server.ssl.key-store=/opt/skyvva-agent/ssl-certificate.p12 #server.ssl.key-store-password=Skyvva@12! #server.ssl.key-alias=1 #security.require-ssl=true[/aux_code] **3.** As we can see above, all the properties except one have been commented out (which means starts with ‘**#**’). We will have to uncomment them i.e. remove ‘**#**’ from the starting of the lines. Once done it will look like as shown below. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]# ================================== # Agent SSL Properties # ================================== # Change this to true, if SSL has to be enabled skyvva.h2.db.ssl.enabled=false # Uncomment the following properties to enable SSL for Agent Services server.ssl.key-store-type=PKCS12 server.ssl.key-store=/opt/skyvva-agent/ssl-certificate.p12 server.ssl.key-store-password=Skyvva@12! server.ssl.key-alias=1 security.require-ssl=true [/aux_code] **4.** Now we will have to change only 4 properties to enable the **SSL** for **SKYVVA** Agent. Those 4 properties are as follows. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvva.h2.db.ssl.enabled=true server.ssl.key-store=/opt/skyvva-agent/Add the name of the new SSL certificate file server.ssl.key-store-password=SSL certificate store password server.ssl.key-alias=Alias of the SSL certificate [/aux_code] **Once we have replaced the highlighted values with the right possible values, we can restart the Agent Instance.** #### Setup SSL for Outbound Flow In this section, we will see how to trust a **Root** **CA certificate** so that we can connect to any system like **Salesforce, Kafka, SAP,** etc using **SSL** through **SKYVVA** Agent middleware. Normally all the standard **CA certificates** are already present in the Trust Store file used by the **JDK**(which is embedded inside the Agent Deployable Package), but in rare scenarios where it's not available, we can import it as a trusted certificate. #### Procedure [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Before we start the procedure, we need to download the other system or web site’s SSL certificate. To download any website’s certificate using the browser, please check the next section.[/su_box] **1**. Go to the jdk directory inside the deployment directory using the following command. cd /opt/skyvva-agent/zulu14/bin ![](../images/2020/11/image_2020_11_25T08_28_53_259Z.png) **2**. Use the command described below to import the certificate file as a trusted certificate. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]keytool.exe -importcert -alias certificate-alias-name -file path_to_downloaded-certificate-der-file -keystore /opt/skyvva-agent/zulu14/lib/security/cacerts -storepass changeit -trustcacerts [/aux_code] ![](../images/2020/11/image_2020_11_25T08_42_21_961Z.png) **Make sure that you replace the highlighted parts with the actual values before executing the above command. Once done, restart the Agent Instance.** #### Procedure to Download on SSL certificate #### Google Chrome **Export the SSL certificate of a website using Google Chrome:** **1**.Click the ***Secure*** button (a padlock) in an address bar. ![](../images/2020/04/image_2020_11_24T08_10_05_352Z.png) **2**. Click the ***Certificate(Valid).*** ![](../images/2020/04/image_2020_11_24T08_12_02_007Z.png) **3**. Go to the ***Details*** tab ![](../images/2020/04/image_2020_11_24T08_13_26_069Z.png) **4**.Click the ***Copy to File***… button **5**.Click the ***Next*** button. **6**.Select the “Base-64 encoded X.509 (.CER)” format and click the ***Next*** button. ![](../images/2020/04/image_2020_11_24T08_14_57_214Z.png) **7**.Specify the name of the file you want to save the SSL certificate to **8**.Click the ***Next*** and the ***Finish*** button #### Mozilla Firefox **Export the SSL certificate of a website using Mozilla Firefox:** **1**.Click the ***Site Identity*** button (a padlock) in an address bar. ![](../images/2020/04/image_2020_11_24T08_18_30_757Z.png) **2**.Click the ***Show connection details*** arrow **3**.Click the ***More Information*** button ![](../images/2020/04/image_2020_11_24T08_20_07_607Z.png) **4**.Click the ***View Certificate*** button **5**.Go to the ***Details*** tab ![](../images/2020/04/image_2020_11_24T08_21_33_498Z.png) **6**.Click the ***Export*** button **7**.Specify the name of the file you want to save the SSL certificate to, keep the “**X.509 Certificate (PEM)**” format and click the ***Save*** button #### Internet Explorer **Download and save the SSL certificate of a website using Internet Explorer:** **1**.Click the ***Security report*** button (a padlock) in an address bar ![](../images/2020/04/image_2020_11_24T08_24_40_313Z.png) **2**.Click the View Certificate button ![](../images/2020/04/image_2020_11_24T08_26_13_628Z.png) **3**.Go to the ***Details*** tab **4**.Click the ***Copy to File***… button **5**.Click the ***Next*** button **6**.Select the “**Base-64 encoded X.509 (.CER)**” format and click the ***Next*** button **7**.Specify the name of the file you want to save the **SSL** certificate to **8**.Click the ***Next*** and the ***Finish*** buttons **Summary  **The user learns how to install Agent 3.0 for Linux by bought a valid **SSL** certificate from the trusted vendors of Salesforce. [Outbound Messaging SSL CA Certificates. ](https://cs32.salesforce.com/cacerts.jsp)Also, by got the deployment package and transferred it to the deployment server, and exported the deployment package directory. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use File Adapter (FileZilla Client & Server) with Agent Control Board for Consumer? Title: 1. How to use File Adapter (FileZilla Client & Server) with Agent Control Board for Consumer? Slug: how-to-use-file-adapter-filezilla-client-server-with-agent-control-board-for-consumer URL: https://help.skyvva.com/#article/how-to-use-file-adapter-filezilla-client-server-with-agent-control-board-for-consumer ================================================================================ # 1. How to use File Adapter (FileZilla Client & Server) with Agent Control Board for Consumer? #### Introduction In this tutorial, we will learn how Agent File Adapter works for consumers. Agent File Adapter for consumers means Inbound Agent File Adapter. We use Inbound Agent File adapter for reading using the new event-driven mode with the consumer. We have an event-driven listener who is a camel consumer. We don’t need a scheduler. We add the real-time and event-driven feature to pick up immediately. To use the Agent file for consumers, we need to configure the Agent Control Board, and we need to create an Agent File adapter. #### Pre-require Firstly, you need to have some required step before you can use the Agent File adapter: - Create **Metadata** Provider, **Istructure** Repository - Configure a New Agent control board - To checking to catch a New Agent control board #### Configuration - Create Metadata Provider, Istructure Repository and Create Flat Message ![](../images/2020/12/image_2020_12_03T06_37_34_732Z.png) 2. Go to the Integration Detail page - Click on the new agent control board ![](../images/2020/12/image_2020_12_03T06_40_12_650Z.png) - Now we need to create a connection destination. For that, we can give any name to the destination. As shown below. ![](../images/2020/12/image_2020_12_03T06_44_46_082Z.png) - Fill all the required fields in **Salesforce -> Agent** ![](../images/2020/12/image_2020_12_03T06_45_59_411Z.png) - Click on the Ping Agent connection ![](../images/2020/12/image_2020_12_03T06_47_09_687Z.png) - Fill all the required fields in **Agent -> Salesforce** and click on the Ping Salesforce Connection - Save ![](../images/2020/12/image_2020_12_03T06_49_21_959Z.png) #### Case 1 **Create Inbound Agent File Adapter for Excel format and Protocol: FTPs** - Create Inbound Agent File Adapter for excel format **Fill all required field** - Name: any Name - Type: Agent File - Direction: Inbound - Protocol: **FTPs** - Host: Public IP Address - Username: FTPs Username - Password: FTPs password - Port: FTPs Server Port - File Type: **Excel** - Folder: Sreymay/Inbound2/Excel - File Name: MyAccount2.xlsx - What to do with the file after Processing?: Delete File - Connection Destination: your destination name ![](../images/2020/12/image_2020_12_03T07_31_55_375Z.png) - Create an inbound interface, add **Metadata** Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/12/image_2020_12_03T07_37_07_932Z.png) - Add inbound Adapter ![](../images/2020/12/image_2020_12_03T07_40_19_798Z.png) - Mapping ![](../images/2020/12/image_2020_12_03T07_41_14_690Z.png) - Start the adapter route by clicking the start route button on Adapter Detail Tab on Agent Control Board ![](../images/2020/12/image_2020_12_03T07_42_33_649Z.png) ![](../images/2020/12/image_2020_12_03T07_44_17_606Z.png) You will get a success message when the route started successfully. - Upload Excel file on consumer folder. Example: MyAccount2.xslx ![](../images/2020/12/image_2020_12_03T07_46_09_417Z.png) - Here is the result of Excel in Message monitor ![](../images/2020/12/image_2020_12_03T07_47_29_990Z.png) #### Case 2 **Create Inbound Agent File Adapter for XML format and Protocol: SFTP** - Create Inbound Agent File Adapter for XML format **Fill all required field** - Name: any Name - Type: Agent File - Direction: Inbound - Protocol: **SFTP** - Host: Public IP Address - Username: SFTP Username - Password: SFTP password - Port: SFTP Server Port - File Type: **XML** - Folder: SFTP/XML - File Name: Account-SB3.xml - What to do with the file after Processing?: Delete File - Connection Destination: your destination name ![](../images/2020/12/image_2020_12_03T07_56_27_975Z.png) - Create an inbound interface, add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below ![](../images/2020/12/image_2020_12_03T07_57_58_260Z.png) - Add inbound adapter ![](../images/2020/12/image_2020_12_03T08_00_36_702Z.png) - Mapping ![](../images/2020/12/image_2020_12_03T08_01_54_040Z.png) - Start the adapter route by clicking the start route button on Adapter Detail Tab on Agent Control Board ![](../images/2020/12/image_2020_12_03T08_05_05_090Z.png) ![](../images/2020/12/image_2020_12_03T08_10_59_177Z.png) You will get a success message when the route started successfully. - Upload XML file on consumer folder. Example: Account-SB3.xml ![](../images/2020/12/image_2020_12_03T08_14_36_869Z.png) - Here is the result of XML in the Message monitor ![](../images/2020/12/image_2020_12_03T08_15_45_256Z.png) #### Case 3 **Create Inbound Agent File Adapter for JSON format and Protocol: FTP** - Create Inbound Agent File Adapter for excel format **Fill all required field** - Name: any Name - Type: Agent File - Direction: Inbound - Protocol: **FTP** - Host: Public IP Address - Username: FTP Username - Password: FTP password - Port: FTP Server Port(21) - File Type: **JSON** - Folder: Sreymay/Inbound/Json - File Name: Final_json5.json - What to do with the file after Processing?: Delete File - Connection Destination: your destination name ![](../images/2020/12/d.png) - Create an inbound interface, add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below ![](../images/2020/12/d-1.png) - Add inbound Adapter ![](../images/2020/12/d-2.png) - Mapping ![](../images/2020/12/d-3.png) - Start the adapter route by clicking the start route button on Adapter Detail Tab on Agent Control Board ![](../images/2020/12/d-4.png) ![](../images/2020/12/d-5.png) You will get a success message when the route started successfully. - Here is a result of JSON in Message Monitor ![](../images/2020/12/d-6.png) #### **Summary**: The user learned about how Agent File Adapter works for consumers, We add the real-time and event-driven feature to pick up immediately. To use the Agent file for consumers. Here users can understand by seeing these inbound cases, **FTPs, SFTP, FTP** file protocol. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to Synchronize MySQL Database Data Using an Inbound Interface via a Scheduler? Slug: how-to-synchronize-mysql-database-data-using-an-inbound-interface-via-a-scheduler URL: https://help.skyvva.com/#article/how-to-synchronize-mysql-database-data-using-an-inbound-interface-via-a-scheduler ================================================================================ # How to Synchronize MySQL Database Data Using an Inbound Interface via a Scheduler? #### Introduction This tutorial will guide you on how to synchronize the data from the database and push it to salesforce. For the database, we can select the data from the table or we can use the Stored Procedure to push the data into Salesforce. On the Salesforce side, We do any operation such as upsert, insert, and update or use the custom class when the business logic is complex that is something available already in the SKYVVA solution. MYSQL database is used for example to retrieve data from the existing records in the database and it located on EC2 instance. **Pre-requisites:-** - Create Integration - Do configuration on the new Agent Control Board - Create inbound Database Adapter - Create Metadata Provider, Repository and generate Message Type from the database - Create inbound Interface - Check Cache monitoring status - Use scheduler as consumer #### How to do synchronize database data using an inbound Interface? In this case, we need a scheduler to synchronize data from the database into Salesforce. The scheduler will fetch the database record based on the value put on Database Query in Interface. **Step-1:** Create Integration and test connection destination. Create new Integration by following the guide, Link is given below. [#article/what-is-an-integration-and-how-to-create-it](#article/what-is-an-integration-and-how-to-create-it) - Navigate to AGENT Control Board as shown below. ![](../images/2020/12/Database.png) - In the Configuration tab enter the connection destination name and click on the button "Continue". ![](../images/2020/12/database1.png) - Fill in all the required details - Click button Ping Agent Connection ![](../images/2020/12/database2.png) - Fill in all the required details - Click button Ping Salesforce Connection ![](../images/2020/12/database3.png) **Step-2:** Create an Inbound Database Adapter on the new Agent Control Board - Navigate to the Adapter tab after that click the button New ![](../images/2020/12/database4.png) - Fill all required field - Name: *any name* - Type: Agent Database - Direction: Inbound - Status: Active - Database Type: *MySQL* - Driver: *mysql.jdbc.Driver* - Username: (*your user name on database)* - Password: (*your password on database)* - Hostname: *124.40.1949 (public ipv4 on EC2 AWS)* - Port: *3306(default)* - Database Name: your database name - Insert Operation Mode: *Internal Key Management* - Connection URI: *jdbc:mysql://3.124.40.194:3306/testdb (connection url format is protocol//[hosts][/database])* - Connection Destination: *your destination name* *** on EC2, make sure you have allowed MYSQL port 3306 on Group Policy for connectivity from other system. ![](../images/2020/12/database5.png) **Step-3** Generate Message Type from the database - Create Metadata Provider - Create a Repository - Go to the Repository details page then click the Import Database Metadata button ![](../images/2020/12/database6.png) - Fill all required field then click Retrieve Database to get the Table’s record - Agent Instance: *your instance name* - Adapter Name: *your adapter name* - Object Type: Table, View, Procedure - Database Operation: Select* (database’s template will be generated based on operation*) ![](../images/2020/12/database7.png) - Choose Table’s name for creating Message Type ![](../images/2020/12/database8.png) - After that, we got the Message Type generated as a template from the database ![](../images/2020/12/database9.png) **Note:** For Select operation, we have a template for generating Message Type for a single Table -  Create a root Message Type with the prefix “**Database_**” + “**Table’s name**” within type as “*Database Table Template*” -  Create two Message Type as a child of the root with the fixed name. The first one is “**Request**”, type as “*Database Request*”. And the other one is “**Response**”, type as “*Database Response*” -  Under “**Request**”, create a Message Type as the child. The Table’s name is used for this Message Type within type as “*Database Table”. *i.e:*  tbl_account_db_atn. *In this Message Type, was generated the field name like on Table -  Under “**Response**”, create a Message Type as the child with the fixed name “**records**” within type as “*Plain structure*” -  Under “**records**”, create a Message Type as the child. The Table’s name is used for this Message Type within type as “*Plain structure*”. In this Message Type, was generated the field name like on Table **Step 4: **Create Interface - For creating the Interface need to follow this guide[ #article/1-what-is-an-interface-and-how-to-create-it](#article/1-what-is-an-interface-and-how-to-create-it) - Create an inbound Interface for Synchronous mode, operation(upsert), Choose Adapter, Metadata Provider, Repository and Message Type (*Response*) ![](../images/2020/12/database10.png) - Mapping: ![](../images/2020/12/database11.png) - Put select statement into Database Query’s field. ![](../images/2020/12/database12.png) - This SQL select will fetch the record which is AccountNumber equal “100248”. ![](../images/2020/12/database13.png) - **Go to scheduler** Agent scheduler will be generated after the user clicks the Scheduler tab.![](../images/2020/12/database14.png) - Set a time to run every 1 minute. ![](../images/2020/12/database15.png) Note: If the machine has a small memory, we should not set the time for running every 1 minute because it will block another job. Running every 10 minutes or more is a good recommendation. ![](../images/2020/12/database16.png) - As a result of message monitoring, the record has been sent to Salesforce correctly via Scheduler. ![](../images/2020/12/database17.png) - **Run at a specific time** The time that we define here, is the time on the server that is Agent running. ![](../images/2020/12/database18.png) - Time ![](../images/2020/12/database19.png) ![](../images/2020/12/database20.png) - As a result of message monitoring, the record has been sent to Salesforce correctly via Scheduler. ![](../images/2020/12/database21.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. Agent File Adapter Slug: agent-file-adapter URL: https://help.skyvva.com/#article/agent-file-adapter ================================================================================ # 1. Agent File Adapter #### Introduction This tutorial explains the Agent File adapter. Agent File adapter uses to integrate data from file to SFDC and from Salesforce to file. The File Type that Our Agent support is CSV, Excel, XML, JSON, and, CSV Fixed Length that can be integrated with their content. **We have 4 protocol of Agent File adapter in Agent:** - Local - FTP - FTPs - SFTP **We have “File Handling Mode” using for Outbound Agent File Adapter:** - Append - New **We have “What to do with the file after Processing?” using for Inbound Agent File Adapter:** - Delete File - Backup File #### Event-driven mode The Agent file adapter will have a new mode e.g. event-driven mode to read files from the folder whenever new files arrive. The old File adapter support only the scheduling mode where we need to define the time and frequency when the file gets to pick up and process. With this new model, we add the real-time and event-driven feature to pick up immediately when they are there. We support this mode in addition to the existing scheduled mode. The consumer can be started only for the inbound interface. #### Agent File Adapter **We have 2 Agent File Adapter:** - **Outbound Agent File Adapter** uses for writing files from salesforce to file. We need an outbound Agent file adapter when we want to send data out from salesforce. To use the agent file for the Producer, we need to configure the Agent Control Board, and we need to create an Agent File adapter. - **Inbound Agent File Adapter uses** for file reading using the new event-driven mode with the consumer. We have an event-driven listener which is a camel consumer. We don’t need a scheduler. We add the real-time and event-driven feature to pick up immediately when they are there. Check the picture given below for reference. ![](../images/2020/12/o.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use File Adapter (FileZilla Client & Server) with Agent Control Board for Producer? Title: 1. How to use File Adapter (FileZilla Client & Server) with Agent Control Board for Producer? Slug: how-to-use-file-adapter-filezilla-client-server-with-agent-control-board-for-consumer-2 URL: https://help.skyvva.com/#article/how-to-use-file-adapter-filezilla-client-server-with-agent-control-board-for-consumer-2 ================================================================================ # 1. How to use File Adapter (FileZilla Client & Server) with Agent Control Board for Producer? #### Introduction Agent File adapter for produce uses for writing a file from salesforce to file. Agent file adapter for Producer means outbound Agent File Adapter. To use the Agent File adapter for Producer, we need to configure the Agent Control Board, and we need to create an Agent File Adapter. In this chapter, we will learn how to use the Agent File adapter for the producer, and we will know how to do outbound with CSV, Excel file type. #### Pre-require Firstly, you need to have some required step before you can use the Agent File adapter: - Create **Metadata** Provider, **Istructure** Repository - Configure a New Agent control board - To checking to catch a New Agent control board #### Configuration - Create Metadata Provider, Istructure Repository and Create Flat Message ![](../images/2020/12/image_2020_12_03T06_37_34_732Z.png) 2. Go to the Integration Detail page - Click on the new agent control board ![](../images/2020/12/image_2020_12_03T06_40_12_650Z.png) - Now we need to create a connection destination. For that, we can give any name to the destination. As shown below. ![](../images/2020/12/image_2020_12_03T06_44_46_082Z.png) - Fill all the required fields in **Salesforce -> Agent** ![](../images/2020/12/image_2020_12_03T06_45_59_411Z.png) - Click on the Ping Agent connection ![](../images/2020/12/image_2020_12_03T06_47_09_687Z.png) - Fill all the required fields in **Agent -> Salesforce** and click on the Ping Salesforce Connection - Save ![](../images/2020/12/image_2020_12_03T06_49_21_959Z.png) #### Case 1 **Create Outbound Agent File Adapter for Excel format and Protocol: FTP** - Create Outbound Agent File Adapter for excel format **Fill all required field** - Name: any Name - Type: Agent File - Direction: Outbound - Protocol: **FTP** - Host: Public IP Address - Username: FTP Username - Password: FTP password - Port: FTPs Server Port - File Type: **CSV** - Folder: File_Adapter - File Name: Account.csv - File Size: **5(MB)** - File Handling Mode: Append - Connection Destination: your destination name ![](../images/2020/12/image_2020_12_15T07_21_34_962Z.png) - Create an Outbound interface, add **Metadata** Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/12/image_2020_12_15T07_23_20_727Z.png) - Add Outbound Adapter ![](../images/2020/12/image_2020_12_15T07_25_51_493Z.png) - Mapping ![](../images/2020/12/image_2020_12_15T07_27_05_291Z.png) - Callout ![](../images/2020/12/image_2020_12_15T07_28_10_953Z.png) - Message Monitor ![](../images/2020/12/image_2020_12_15T07_29_23_931Z.png) CSV: ![](../images/2020/12/image_2020_12_15T07_41_10_976Z.png) #### Case 2 **Create Outbound Agent File Adapter for CSV format and Protocol: SFTP** - Create Outbound Agent File Adapter for CSV format **Fill all required field** - Name: any Name - Type: Agent File - Direction: Outbound - Protocol: **SFTP** - Host: Public IP Address - Username: SFTP Username - Password: SFTP password - Port: SFTP Server Port - File Type: **CSV** - Folder: C: File_Adapter - File Name: Account.csv - File Size: **5(MB)** - File Handling Mode: Append - Connection Destination: your destination name ![](../images/2020/12/image_2020_12_15T07_45_20_550Z.png) - Create an outbound interface, add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below ![](../images/2020/12/image_2020_12_15T07_47_01_389Z.png) - Add Outbound adapter ![](../images/2020/12/image_2020_12_15T07_48_10_145Z.png) - Mapping ![](../images/2020/12/image_2020_12_15T07_49_06_593Z.png) - Callout: ![](../images/2020/12/image_2020_12_15T07_50_47_778Z.png) - Message Monitor ![](../images/2020/12/image_2020_12_15T07_52_10_495Z.png) CSV: ![](../images/2020/12/image_2020_12_15T07_53_27_730Z.png) - Here is the result of CSV #### Case 3 **Create Inbound Agent File Adapter for JSON format and Protocol: FTP** - Create Inbound Agent File Adapter for excel format **Fill all required field** - Name: any Name - Type: Agent File - Direction: Inbound - Protocol: **FTP** - Host: Public IP Address - Username: FTP Username - Password: FTP password - Port: FTP Server Port(21) - File Type: **JSON** - Folder: Sreymay/Inbound/Json - File Name: Final_json5.json - What to do with the file after Processing?: Delete File - Connection Destination: your destination name ![](../images/2020/12/d.png) - Create an inbound interface, add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below ![](../images/2020/12/d-1.png) - Add inbound Adapter ![](../images/2020/12/d-2.png) - Mapping ![](../images/2020/12/d-3.png) - Start the adapter route by clicking the start route button on Adapter Detail Tab on Agent Control Board ![](../images/2020/12/d-4.png) ![](../images/2020/12/d-5.png) You will get a success message when the route started successfully. - Here is a result of JSON in Message Monitor ![](../images/2020/12/d-6.png) #### **Summary**: The user learned about how Agent File Adapter works for consumers, We add the real-time and event-driven feature to pick up immediately. To use the Agent file for consumers. Here users can understand by seeing these inbound cases, **FTPs, SFTP, FTP** file protocol. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. How to use Agent File Adapter For Consumer Slug: agent-file-adapter-for-consumer URL: https://help.skyvva.com/#article/agent-file-adapter-for-consumer ================================================================================ # 2. How to use Agent File Adapter For Consumer #### Introduction In this tutorial, we will learn how Agent File Adapter works for consumer. Agent File Adapter for consumer means Inbound Agent File Adapter. We use Inbound Agent File adapter for reading using the new event-driven mode with the consumer. We have an event-driven listener which is a camel consumer. We don’t need a scheduler. We add the real-time and event-driven feature to pick up immediately. To use the agent file for consumer, we need to configure the Agent Control Board, and we need to create an Agent File adapter. #### Pre-required Firstly, you need to have some required step before you can use the Agent File adapter: - Create Metadata Provider, Istructure Repository - Create Integration and Configure a new agent control board - Create Agent File Adapter(inbound) on new Agent Control Board - Create Inbound interface - Checking Cache monitoring status **How to use Agent File Adapter for Consumer?** - Create Metadata Provider, Istructure Repository and Create Flat Message ![](../images/2020/12/b1-1.png) 2. Go to the Integration Detail page - Click on the new agent control board ![](../images/2020/12/b2.png) - Now we need to create a connection destination. For that, we can give any name to the destination. As shown below. ![](../images/2020/12/b3.png) - Fill all the required fields in Salesforce -> Agent ![](../images/2020/12/b4.png) - Click on the Ping Agent connection ![](../images/2020/12/b5.png) - Fill all the required fields in Agent -> Salesforce and click on the Ping Salesforce Connection - Save ![](../images/2020/12/b6.png) **Case 1: Create Inbound Agent File Adapter for CSV format and Protocol: Local.** - Go to the new Agent control board and create a new Agent File adapter for CSV data format inbound processing - Fill all required field - Name: any Name - Type: Agent File - Direction: Inbound - Protocol: Local - File Type: CSV - Folder: C: File_Adapter - File Name: Account.csv - What to do with the file after Processing?: Delete File - Connection Destination: your destination name ![](../images/2020/12/b7.png) - Create Integration and Inbound Interface - Add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/12/b8.png) - Add Inbound Adapter ![](../images/2020/12/b9.png) - Mapping ![](../images/2020/12/b10.png) - Upload CSV file on consumer folder. Example: MyAccount.csv ![](../images/2020/12/b11.png) - Start the adapter route by clicking the start route button on Adapter Detail Tab on Agent Control Board ![](../images/2020/12/b12.png) ![](../images/2020/12/b13.png) You will get a success message when the route starts successfully [su_box title="Note" box_color="#2a8af0" title_color="#000000"] you need to link the inbound adapter with the inbound interface otherwise route will not start.[/su_box] - You will get a success message when the record is inserted if the record does not exist in Salesforce org. When a record is modified if the record already exists in your Salesforce org. ![](../images/2020/12/b14.png) **Case 2:** **Create Inbound Agent File Adapter for Excel format and Protocol: FTPs** - Create Inbound Agent File Adapter for excel format - Fill all required field - Name: any Name - Type: Agent File - Direction: Inbound - Protocol: FTPs - Host: Public IP Address - Username: FTPs Username -Password: FTPs password -Port: FTPs Server Port -File Type: Excel -Folder: Sreymay/Inbound2/Excel -File Name: MyAccount2.xlsx - What to do with the file after Processing?: Delete File - Connection Destination: your destination name ![](../images/2020/12/b15.png) - Create an inbound interface, add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/12/b16.png) - Add inbound Adapter ![](../images/2020/12/b17.png) - Mapping ![](../images/2020/12/b18.png) - Upload Excel file on consumer folder. Example: MyAccount2.xslx ![](../images/2020/12/b19.png) - Start the adapter route by clicking the start route button on Adapter Detail Tab on Agent Control Board ![](../images/2020/12/b20.png) ![](../images/2020/12/b21.png) You will get a success message when the route started successfully. - Here is the result of Excel in Message monitor ![](../images/2020/12/b22.png) **Case 3:** **Create Inbound Agent File Adapter for XML format and Protocol: SFTP** - Create Inbound Agent File Adapter for XML format - Fill all required field - Name: any Name - Type: Agent File - Direction: Inbound - Protocol: SFTP - Host: Public IP Address - Username: SFTP Username -Password: SFTP password -Port: SFTP Server Port -File Type: XML -Folder: SFTP/XML -File Name:Account-SB3.xml - What to do with the file after Processing?: Delete File - Connection Destination: your destination name ![](../images/2020/12/b23.png) - Create an inbound interface, add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below ![](../images/2020/12/b24.png) - Add inbound adapter ![](../images/2020/12/b25.png) - Mapping ![](../images/2020/12/b26.png) - Upload XML file on consumer folder. Example: Account-SB3.xml ![](../images/2020/12/b27.png) - Start the adapter route by clicking the start route button on Adapter Detail Tab on Agent Control Board ![](../images/2020/12/b28.png) ![](../images/2020/12/b29.png) You will get a success message when the route started successfully. - Here is the result of XML in the Message monitor ![](../images/2020/12/b30.png) **Case 4:** **Create Inbound Agent File Adapter for JSON format and Protocol: FTP** - Create Inbound Agent File Adapter for JSON format - Fill all required field - Name: any Name - Type: Agent File - Direction: Inbound - Protocol: FTP - Host: Public IP Address - Username: FTP Username -Password: FTP password -Port: FTP Server Port -File Type: Json -Folder: Sreymay/Inbound/Json -File Name:Final_json5.json - What to do with the file after Processing?: Delete File - Connection Destination: your destination name ![](../images/2020/12/b31.png) - Create an inbound interface, add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below ![](../images/2020/12/b32-1.png) - Add inbound adapter ![](../images/2020/12/b33.png) - Mapping ![](../images/2020/12/b34.png) - Upload JSON file on consumer folder. Example: Final_json5.json ![](../images/2020/12/b35.png) - Start the adapter route by clicking the start route button on Adapter Detail Tab on Agent Control Board ![](../images/2020/12/b36-1.png) ![](../images/2020/12/b37.png) You will get a success message when the route started successfully. - Here is the result of XML in the Message monitor ![](../images/2020/12/b38.png) **Summary:** We have learned how to use an inbound Agent File adapter for reading using the new event-driven mode with the consumer. In this adapter, we can do inbound with CSV, Excel, XML, and Json data records. ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is Streaming API for the new agent? Title: 3. What is Streaming API for the new agent? Slug: 112-what-is-streaming-api-for-the-new-agent URL: https://help.skyvva.com/#article/112-what-is-streaming-api-for-the-new-agent ================================================================================ # 3. What is Streaming API for the new agent? The new function (streaming API) is used with the outbound interface. We are supporting the following Salesforce event type e.g. - Streaming API with pushTopic - Generic Event -> This is not supported because it just a plain text that we can transfer to the external application - CDC Event - Platform Event **Streaming API with PushTopic** In this case, we have to set the flag 'Streaming, CDC, and Platform Event' to indicate that the interface operates as an event interface. To distinguish this type from the CDC and Platform Event we have to check the field 'Source/Target' that contains the sObject. If it is a sObject and the flag is checked then we know that this interface operates in the mode 'Streaming API with 'PushTopic'. In the message type, we define the external message type structure for example the database structure when we want to send data triggered by the event to the database. We can do the mapping from the sObject (source) to the message type (target) side. This mapping is needed to build the transformation logic on the Agent to the external message type structure for example to send to the database. We have a table in the Agent where we store the interface-id, status, and some other event-related data. This table is created or updated when the user clicks on the button 'Subscribe' of the interface on the Agent Control Board. This table is used for internal logic processing inside the agent for the event-driven interface processing. Based on this table we can find the interface and related mapping when an event occurred and the cometD client in the Agent catch this event. With the cometD capability in the Agent, it can subscribe to the event from Salesforce. When the event gets received we need to find the interface and its related mapping. Knowing this we can transform the data that we received as an event to the external message type structure and send it to the database. A mapping is mandatory in order to do this transformation from the event data to the external data structure based on the message type. In the Agent we have to check and if there is no mapping we have to raise an error in the log. When we receive the event data we create a message of type 'Event Message' in our message table. Doing this way we can provide a kind of event monitoring in Salesforce pushing out to the Agent. We can also do a reprocessing if needed. In this case, we will republish the event again based on the event data in the message. Note that this function is only available for the event type 'Platform Event' and not for 'PushTopic' and 'CDC' event. **CDC Event** In this case, we don't have a SQL to select which data is needed to be sent. All changed data will be automatically sent as events to the Agent. For the CDC event, we just need to set the flag, select the xxxChangeEvent object in the interface on the field 'Source/Target' field, for example, AccountChangeEvent, or LeadChangeEvent, OpportunityChangeEvent, etc.. In the message type again we put the external message type. Then we can do the mapping from the sObject field to the external message type. The flow is the same that when the user change, insert, delete, or undelete data an event is created and the Agent will receive all the field that has been changed. In Agent, we are checking the mapping and transform the event data to the external structure based on the mapping. This means that when there is no mapping we need to raise an error and write into the log. We don't need to select the operation 'Insert', 'Update', 'Delete' and 'Undelete'. This operation is pre-selected by default setting when the CDC event is used. Therefore there is no need to configure this operation as we do for the CDC Event trigger with apex. Like case (1) we also create a message for the monitoring. Also, this kind of message cannot be reprocessed by the reprocessing job. **Platform Event** Here we have to create an event object first. Those objects will have the suffix __e to indicate that it is an event object. This object needs to be put into the field 'Source/Target' field on the interface. Again like cases (1) and (2) we have to put the external message type into the field message type to represent the external application structure. Here we also create an event message for monitoring and this message we can reprocess. Reprocessing means that we use the apex code to publish the event again from the event message data. We have to delete the previous red message when we publish again the event because we want to keep one event-message for monitoring only. If it failed again we will see a new red event-message. ##### Streaming API subscription button is added on interface tab of new agent control board. ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is Streaming API for the new agent? Title: 1. How to use push topic? Slug: how-to-use-push-topic URL: https://help.skyvva.com/#article/how-to-use-push-topic ================================================================================ # 1. How to use push topic? Streaming API is a feature used in Agents for real-time data change scenarios. When there is a new record inserted or a record updated on the Salesforce side, it automatically changes the data on the client-side. Use Streaming API to receive notifications for changes to Salesforce data that match a SOQL query you define. #### Notification For Operation: - **Create →** Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is created. - **Delete → **Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is deleted. - **Undelete → **Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is undeleted. - **Update →** Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is updated. - **Soft Deleted →** Just deletes sObject from the salesforce database but Agent is not deleted record from the local database. - **Hard Deleted →** Just deletes sObject from the salesforce database and the Agent will delete records from the local database too. **Replay Option**: This option indicates how the client, subscribed to the PushTopic, read the missing data in case it is online again after a failure. **For detailed information:   ** –  [Salesforce Basic Streaming API Modules](https://trailhead.salesforce.com/en/modules/api_basics/units/api_basics_streaming) **Pre-requisite****: ** - Create Integration. - Create metadata provider -> Create Istructure Repository -> Create msg type. - Create an Adapter with a new agent control board. Here we are using an agent file adapter with Linux. ![](../images/2020/12/Untitled6.png) **Steps:** Here we are elaborating each step with a screenshot. **Step1**: We have to create a Message Type for Istructure. ![](../images/2020/12/screencapture-flow-ruby-9911-dev-ed-lightning-force-lightning-r-skyvvasolutions-IStructure-Repository-c-a0R1j000003SGxGEAW-view-2020-12-23-10_46_01.png) **Step2: **Create Integration. And navigate to New agent control board through a custom link. ![](../images/2020/12/Capture2.png) Once the Agent control board is open. We have to configure the agent with config details. ![](../images/2020/12/Untitled3.png) Click on ping agent connection button. ![](../images/2020/12/Untitled4.png) **Step3**: Create an Adapter. Here we are using an Agent file adapter. You can refer to this tutorial to create a file adapter: [How to create a file adapter](#article/tutorial-v2-41-lightning). ![](../images/2020/12/screencapture-flow-ruby-9911-dev-ed-lightning-force-one-one-app-2020-12-23-16_40_44.png) **Step4:** Go to Integration -> Interface Tab -> Click on New Interface button. We have to create Outbound Interface where: - Interface type="Event-Interface. - source name has SObject e.g. Account. - Streaming CDC and Platform Events="true” (Checkbox) - Query: While selecting SOQL query Id is a mandatory field for push topic. Note: When we select SOQL query Id field is mandatory. ![](../images/2020/12/screencapture-flow-ruby-9911-dev-ed-lightning-force-lightning-r-skyvvasolutions-Interfaces-c-a0a1j000003ZxKdAAK-view-2020-12-23-17_38_35.png) - Step 5: Go to New agent control board -> Interface tab On the Interface tab, there is a streaming button on the interface list. click start Streaming Api (make sure you can connect to the agent) ![](../images/2020/12/Untitled6-1.png) ![](../images/2020/12/image1.png) Step 6: Change a Salesforce record and you will see the record is pushed to your external system. You can check the message monitoring to see the result. ![](../images/2020/12/image2.png) In your external system, you get a file. ![](../images/2020/12/image3.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 3. How to use Agent File Adapter For Producer Slug: agent-file-adapter-for-producer URL: https://help.skyvva.com/#article/agent-file-adapter-for-producer ================================================================================ # 3. How to use Agent File Adapter For Producer #### Introduction In this tutorial, we will learn how Agent File Adapter works for Producer. Agent File adapter for producer uses for writing a file from salesforce to file. Agent file adapter for Producer means outbound Agent File Adapter. To use the Agent File adapter for Producer, we need to configure the Agent Control Board, and we need to create an Agent File Adapter. In this chapter, we will learn how to use the Agent File adapter for the producer, and we will know how to do outbound with CSV, Excel file type. #### Pre-required Firstly, you need to have some required step before you can use the Agent File adapter: - Create Metadata Provider, Istructure Repository - Create Integration and Configure a new agent control board - Create Agent File Adapter (Outbound) on the new Agent Control Board - Create an Outbound interface - Checking Cache monitoring status - Callout  to new Agent **How to use Agent File Adapter for Producer?** **Step-1:** Create Message Type - Create Metadata Provider - Create a Repository - Go to the Repository details page then click the New Message type button ![](../images/2020/12/e3.png) - Fill all required fields then click the Save button ![](../images/2020/12/e4.png) - Navigate to the Related tab and select Message type field Entry ![](../images/2020/12/e5.png) - After that, we got the Message type ![](../images/2020/12/h1.png)**Step-2: **Create Integration and test connection destination. Create new Integration by following the guide #article/what-is-an-integration-and-how-to-create-it - Navigate to AGENT Control Board as shown below: ![](../images/2020/12/c2.png) - In the configuration tab enter the connection destination name, select the adapter type and click on the button "Continue" ![](../images/2020/12/c4.png) - Fill in all the required detail - Click the button Ping Agent Connection ![](../images/2020/12/d4-Copy.png) - Fill in all the required details - Click the button Ping Salesforce Connection ![](../images/2020/12/c13.png) - Ping connection successfully ![](../images/2020/12/d2.png) - Save the connection destination ![](../images/2020/12/d3.png) **Case 1: Create Outbound Agent File Adapter for CSV format and Protocol: Local.** **Step-3: **Create an outbound Agent File Adapter on the new Agent Control Board - Navigate to the Adapter tab after that click the button New ![](../images/2020/12/e1.png) - Fill all required fields - Name: *any Name* -Type: *Agent File* -Direction: *Outbound* -Status: *Active* -Protocol: *Local* -File Type: *CSV* -Folder:* location folder* -File Name: *Account.csv* -Outbound File Threshold Size(MB): 5 -File Handling Mode: *you can choose the mode* -Connection Destination: *your destination name* ![](../images/2020/12/e2.png) **Step-4:** Create Outbound Interface - For creating the Interface need to follow this guide #article/1-what-is-an-interface-and-how-to-create-it - Create an outbound Interface for Asynchronous mode, operation(upsert), Choose Adapter, Metadata Provider, Repository, and Message Type ![](../images/2020/12/h8.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Agent File Adapter support only Asynchronous Mode.[/su_box] - Mapping: ![](../images/2020/12/d11.png) **Step-5:** Check Cache monitoring status - Integration: ![](../images/2020/12/d5.png) - Interface: ![](../images/2020/12/d6.png) - Mapping ![](../images/2020/12/d7.png) - Adapter: ![](../images/2020/12/d8.png) - Interface Group: ![](../images/2020/12/d9.png) - Navigate to Developer Console, Open Execute Anonymous Windo, and then past the callout code. As show below: ![](../images/2020/12/e7.png) [aux_code language="javascript" theme="tomorrow" title="Callout" extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011j00000qwCoXAAU','0011j00000qhAC1AAM'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('Agent-File','Outbound',ids,'AUTO',c); [/aux_code] - As a result of message monitoring, those record has been sent out ![](../images/2020/12/d12.png) - CSV  File: ![](../images/2020/12/d13.png) **Case 2: Create Outbound Agent File Adapter for Excel format and Protocol: Local.** - Create an Outbound Agent File adapter - Go to Agent control board -> Click Adapter -> Click New button. (We configuration like the case 1 but choose File Type Excel ) ![](../images/2020/12/h18.png) - Create an outbound Interface for Asynchronous mode, operation(upsert), Choose Adapter, Metadata Provider, Repository, and Message Type ![](../images/2020/12/h19.png) - Outbound adapter ![](../images/2020/12/h20.png) - Mapping: ![](../images/2020/12/h21.png) - Callout: ![](../images/2020/12/h22.png) - As a result of message monitoring, those record has been sent out ![](../images/2020/12/h23.png) Excel file: ![](../images/2020/12/h24.png) **Case 3: Create Outbound Agent File Adapter for CSV format and Protocol: FTP.** - Create an Outbound Agent File adapter - Fill all required field -Name: *any Name* -Type: *Agent File* -Direction: *Outbound* -Status: *Active* -Protocol: *FTP* -Host: *Public IP Address* -Username: *FTP Username* -Password: *FTP password* -Port: *FTP Server Port* -File Type: *CSV* -Folder: *location Folder* -File Name: *Account.csv* -File Handling Mode: *Append* -Outbound File Threshold Size (MB): *5* -Connection Destination: *your destination name* ![](../images/2020/12/h25.png) - Create an Outbound Interface with Message Type. ![](../images/2020/12/h26.png) - Outbound Adapter ![](../images/2020/12/h27.png) - Mapping ![](../images/2020/12/h28.png) - Callout: ![](../images/2020/12/h29.png) - Message Monitor ![](../images/2020/12/h30.png) CSV: ![](../images/2020/12/h31.png) **Case 4: Create Outbound Agent File Adapter for CSV format and Protocol: SFTP.** - Create an Outbound Agent File adapter - Fill all required field Name: any Name -Type: Agent File -Direction: Outbound -Status: Active -Protocol: SFTP -Host: Public IP Address -Username: SFTP Username -Password: SFTP password -Port: SFTP Server Port -File Type: CSV -Folder: C: File_Adapter -File Name: Account.csv -File Handling Mode: Append -Outbound File Threshold Size (MB): 5 -Connection Destination: your destination name ![](../images/2020/12/h32.png) - Create an Outbound Interface with Message Type. ![](../images/2020/12/h33.png) - Outbound adapter ![](../images/2020/12/h34.png) - Mapping ![](../images/2020/12/h35.png) - CallOut: ![](../images/2020/12/h36.png) - Message Monitor ![](../images/2020/12/h37.png) CSV: ![](../images/2020/12/h38.png) **Summary: ** Agent File adapter for Producer uses for writing data from salesforce to file. Finally, we have learned about how to do outbound data from salesforce to file. In Agent adapter for a producer can work with CSV, and Excel data records. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to call Stored Procedure With ORACLE Database Via invokeCalloutV3? Slug: how-to-call-stored-procedure-with-oracle-database-via-invokecalloutv3 URL: https://help.skyvva.com/#article/how-to-call-stored-procedure-with-oracle-database-via-invokecalloutv3 ================================================================================ # How to call Stored Procedure With ORACLE Database Via invokeCalloutV3? #### Introduction A stored procedure is a set of SQL statements with an assigned name, which are stored in an RDBMS as a group, so it can be reused and shared by multiple programs. Stored procedures can access or modify data in a database, but it is not tied to a specific database or object, which offers a number of advantages. In this tutorial, we use the ORACLE database as an example. In here, when we call the Stored Procedure to the Database to do any database operation, we have expected it will respond back the result to the Salesforce. In this case, we need to have the INPUT and OUTPUT parameters in the Stored Procedure and create a Request and Response Interface corresponding to those parameter types. The ORACLE database located on EC2 instance and the Stored Procedure was written to Insert new data if no record present on the Database and update data if the record exists. **Pre-required** - Create Integration and test connection on the new Agent Control Board - Create outbound and inbound Database Adapter - Create Metadata Provider, Repository and generate Message Type from the Database - Create outbound Interface(Request) and inbound Interface (Response) and attach Adapter to each Interface - Linking response Interface to Request Interface - Checking Cache status - Callout V3 **Step-1:** Create Integration and test connection destination For creating new Integration by followed this guide [#article/what-is-an-integration-and-how-to-create-it](#article/what-is-an-integration-and-how-to-create-it) - After Integration created and then navigate to AGENT Control Board ![](../images/2020/12/13.png) - Ping connection to Agent on control board to make sure Agent is online. ![](../images/2020/12/1.png) **Step2: **Create Inbound and Inbound Database Adapter for connection to ORACLE database presented on EC2 instance - Navigate to the Adapter tab after that click the button New ![](../images/2020/12/2.png) - Fill all required field - Name: *any name* - Type: Agent Database - Direction: Outbound/Inbound - Status: Active - Database Type: *Oracle* - Driver: *jdbc.driver.OracleDriver* - Username: (*your user name on database)* - Password: (*your password on database)* - Hostname: *124.40.194 (public ipv4 on EC2 AWS)* - Port: *1522(custom port number)* - SID/Service Name: orcl - Database Name: (*your user name on database)* - Insert Operation Mode: *Internal Key Management* - Connection URI: *jdbc:oracle:thin:@//ec2-3-124-40-194.eu-central-1.compute.amazonaws.com:1522/orcl (Connection URI has followed the systax:* *jdbc:oracle:thin:@::)* - Connection Destination: *your destination name* ![](../images/2020/12/3.png) **Step-3** Generate Message Type from the database - Create Metadata Provider - Create a Repository for using Insert operation - Go to the Repository details page, click the Import Database Metadata button ![](../images/2020/12/4.png) Fill all required information then click the button Retrieve Database - Agent Instance: *instance’s name* - Adapter Name: *adapter’s name* - Object Type: *Stored Procedure* ![](../images/2020/12/7.png) - Choose Stored Procedure’s name and then click Create Message Type ![](../images/2020/12/8.png) - After click Create Message Type, the stored procedure template will be generate as the below example: ![](../images/2020/12/9.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Database Stored Procedure, we have a template for generating Message Type for a single Table - Create a root Message Type within the name same as the Stored Procedure’s name and type as ***Database Stored Procedure Template*** - Create Message Type as a child of the root with name as the Stored Procedure’s name including the postfix *“__Request*” within type as **Stored Procedure Request**. On this Message Type, we have generated the field for INPUT parameter on Stored Procedure - Create Message Type as a child of the root with name as the Stored Procedure’s name including the postfix *“__Request*” within type as **Stored Procedure Response**. Under this node, we have generated the fixed name of Message Type called “**output_parameter**” within type “Plain structure”. On this Message Type, we have generated the field for OUTPUT parameter same as on Stored Procedure[/su_box] **Step 4: **Set up Interface - For creating the Interface need to follow this guide[ #article/1-what-is-an-interface-and-how-to-create-it](#article/1-what-is-an-interface-and-how-to-create-it) - Create an outbound Interface for Synchronous mode, operation(store procedure), choose Adapter, Metadata Provider, Repository and Message Type (*Request*) ![](../images/2020/12/5.png) - Mapping ![](../images/2020/12/10.png) - Create Inbound Interface (Response) Create an inbound Interface for Synchronous mode, operation(upsert), choose Adapter, Metadata Provider, Repository and Message Type (*Response*) ![](../images/2020/12/6.png) - Mapping ![](../images/2020/12/12.png) **Step -5** Linking Response Interface to Request Interface In this example Request Interface is "*ORACLE_StoredProcedure_REQUEST_Account_ATN"* and Response Interface is "*ORACLE_StoredProcedure_Response_Account_ATN"* - Go to the Request Interface detail page then add the Response Interface ![](../images/2020/12/15.png) **Step -6 **Checking Cache status Before sending data from Salesforce to Agent or from Agent to Salesforce, we need to check on Cache Monitor, make sure Cache record present on H2. ![](../images/2020/12/16.png) **Step -7 **Callout V3 Navigate to Setup gear icon => Developer Console => Debug menu => Open Execute Anonymous Window then put code for update Account object then click the Execute button. [aux_code language="javascript" theme="tomorrow" extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011j00000wp7i1AAA'}; skyvvasolutions.Iservices.invokeCalloutV3('StoredProcedure-Integration','ORACLE_StoredProcedure_REQUEST_Account_ATN',ids,'SYNC',c); [/aux_code] **Check the result on Message Monitoring** The Stored Procedure has been executed and response to Salesforce correctly ![](../images/2020/12/14.png) #### Summary Finally, we have learned how to call Stored Procedure from Salesforce to the database, and respond to the Salesforce, we have known how the Message type structure generated from the Database. ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is Streaming API for the new agent? Title: 2. How to use Streaming API with CDC event? Slug: how-to-use-streaming-api-with-cdc-event URL: https://help.skyvva.com/#article/how-to-use-streaming-api-with-cdc-event ================================================================================ # 2. How to use Streaming API with CDC event? we can use Change Events to synchronize changes to the Salesforce records in your ERP(Enterprise resource planning) system. You can subscribe to change events the same way you subscribe to other events, like PushTopic events or platform events. In this case, we don't have a SQL to select which data is needed to be sent. All changed data will be automatically sent as events to the Agent. For the CDC event, we just need to set the flag, select the xxxChangeEvent object in the interface on the field 'Source/Target' field, for example, AccountChangeEvent, or LeadChangeEvent, OpportunityChangeEvent, etc.. In the message type again we put the external message type. Then we can do the mapping from the sObject field to the external message type. The flow is the same that when the user change, insert, delete, or undelete data an event is created and the Agent will receive all the field that has been changed. In Agent, we are checking the mapping and transform the event data to the external structure based on the mapping. This means that when there is no mapping we need to raise an error and write into the log. We don't need to select the operation 'Insert', 'Update', 'Delete' and 'Undelete'. This operation is pre-selected by default setting when the CDC event is used. Therefore there is no need to configure this operation as we do for the CDC Event trigger with apex. Like case 1) we also create a message for the monitoring. Also, this kind of message cannot be reprocessed by the reprocessing job **Use Case:** **Pre-requisite****: ** - Create Integration. - Create metadata provider -> Create Istructure Repository -> Create msg type. - Create Adapter with new agent control board. Here we are using agent file adapter with linux. - Select Object for **Change data capture**:- From Setup, enter Change data capture in the Quick Find box.- Select-Object. ![](../images/2019/10/change1.png) -  Save it. ![](../images/2019/10/change2.png) **Steps:** Here we are elaborating each step with screenshot. **Step1**: We have to create Message Type for Istructure. ![](../images/2020/12/CDC-evt-SA.png) **Step2:** Create Integration. And navigate to New agent control board trough a custom link. ![](../images/2020/12/Capture2.png) Once Agent control board is open. We have to configure agent with config details. ![](../images/2020/12/Untitled3.png) Click on ping agent connection button. ![](../images/2020/12/Untitled4.png) **Step3**: Create Adapter. Here we are using Agent file adapter. You can reffer this tutorial to create file adapter: [How to create file adapter](#article/tutorial-v2-41-lightning) . ![](../images/2020/12/cdc-change-evt-Sp1.png) **Step4:** Go to Integration -> Interface Tab -> Click on New Interface button. We have to create Outbound Interface where: - Interface type="**Event-Interface"**. - source name contains "**ChangeEvent**" e.g. AccountChangeEvent ![](../images/2020/12/cdc-evtSp2.png) - Step 5: Go to New agent control board -> Interface tab On the Interface tab, there is a streaming button on the interface list. click start Streaming Api (make sure you can connect to the agent) ![](../images/2020/12/Untitled3-3.png) Step 6: Change a Salesforce record and you will see the record is pushed to your external system. You can check the message monitoring to see the result. ![](../images/2020/12/Untitled4-2.png) Test.csv file is generated in your system. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use the Agent on a local PC with a public IP-Address? Title: 1. How to use the Agent on a local PC with a public IP-Address? Slug: how-to-use-the-agent-on-a-local-pc-with-a-public-ip-address URL: https://help.skyvva.com/#article/how-to-use-the-agent-on-a-local-pc-with-a-public-ip-address ================================================================================ # 1. How to use the Agent on a local PC with a public IP-Address? #### Write ngrok on Google search #### Expose a local webserver to the internet ngrok allows you to expose a web server running on your local machine to the internet. Just tell ngrok what port your web server is listening on. - Click on Download ![](../images/2021/01/Screenshot-1228.png) - Select button Download for Windows ![](../images/2021/01/Screenshot-1229.png) - Click on the downloaded zip file to extract ![](../images/2021/01/Screenshot-1230.png) - Now click on ngrok Application ![](../images/2021/01/Screenshot-1232.png) - This screen shows Version, Author, Commands ![](../images/2021/01/Screenshot-1233.png) - Go to ngrok website and sign in with your account to take the authtoken ![](../images/2021/01/Screenshot-1234.png) - Scroll down to Authentication - Click on dropdown ![](../images/2021/01/Screenshot-1235.png) - Scroll down to Your Authtoken ![](../images/2021/01/Screenshot-1237.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - **Command Line:** Authenticate your nagrok agent. A user only has to do this once. The Authtoken is saved in the default configuration file. - **Configuration File:** Alternatively, the user can directly edit your configuration file to set your Authtoken. By default, this file is located at -/.ngrok2/ngrok.yml [/su_box] ![](../images/2021/01/Screenshot-1238.png) - Copy Command-Line and paste on the screen ![](../images/2021/01/Screenshot-1239.png) - After installing the Agent file, we will see the icon display on the Windows desktop. The service of Agent is the automatic start, the user no need to start it manually. ![](../images/2021/01/1-1.png) - Now write command ngrok http 9055 on-screen. 9055 is the default port of Agent ![](../images/2021/01/2-1.png) - See session status is online now ![](../images/2021/01/3-1.png) After ngrok generate the URL address then we need to add it into Salesforce remote site **Note: **ngrok free version is not provided a permanent address, it will expire session at any time or expire when the user closes the ngrok screen ![](../images/2021/01/6.png) **Go to Agent Control Board, Now the user has to make an online connection** First, provide the credential to **Connection Destination** - Destination**→**New - Name**→**testNewConnection - Description**→** optional - Type **→**any type, for example, Agent File. If we want to process data with File, so the Type is “Agent File”. We need to create a connection type depends on the working target. - Click on the **Continue** button ![](../images/2021/01/agentFe.png) Second, provide the credential of Agent for ping connection from **Salesforce **to **AGENT** - Host URL**→ http** - Port Forward**→ //b517c38552b8.ngrok.io**(this address is random) - Username**→skyvva** - Password**→skyvva@12!** - Click on the **Ping Agent Connection** button ![](../images/2021/01/5.png) Third, provide the credential of Salesforce for ping connection from **AGENT **to **Salesforce** - Username**→ username of your org** - Password**→ password of your org** - Security Token**→optional, but if the org has been generated the Security Token we need to put it** - Server Environment**→Sandbox** - **Consumer Key and Consumer Secret** user get from the connected app from the **Salesforce side** ![](../images/2021/01/Screenshot-1248.png) - Click on the **Ping Salesforce Connection **button Great now user creates a connection between Salesforce and Agent through ngrok localhost **Summary This tutorial guides us on how to create a connection between the Agent on a local PC with a public IP-Address by using ngrok easiest local tunnel solution.** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to run inbound interface through the manually and scheduler? Title: 115. How to run inbound interface through the manually and scheduler? Slug: 115-how-to-run-inbound-interface-through-the-manually-and-scheduler URL: https://help.skyvva.com/#article/115-how-to-run-inbound-interface-through-the-manually-and-scheduler ================================================================================ # 115. How to run inbound interface through the manually and scheduler? #### Introduction The manual interface execution is a new feature that allows the user to process the interface manually. To use this function need to connect to a database adapter such as an SQL server, Oracle, My SQL Server, etc... We have the SQL statement inside the interface in the new "databaseQuery__c" filed. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Manual processing can only use with inbound database processing. We don't need this function for file, Kafka, or Pulsar. Therefore, they have a consumer for inbound interface already. If the interfaces bind into the interface group, it will be possible to process it with the file adapter.[/su_box] #### Pe-required - Create Integration and configuration on the new Agent Control Board - Create database adapter (for inbound) on new Agent Control Board - Create Metadata Provider, Repository and generate Message Type from the database - Create an inbound Interface (Response) - Checking Cache monitoring status - Do manual process button #### How to do manually data using an inbound Interface? Step1: Create integration and connection destination - Go to the integration detail page and click on Agent Control Board. ![](../images/2021/01/integrationpage.png) - Create Agent connection ![](../images/2021/01/createagentconnection.png) - Create connection Salesforce to Agent =>Fill the agent credential ![](../images/2021/01/agentcredentail.png) - Create connection Agent to Salesforce =>Fill the Salesforce credential ![](../images/2021/01/salesforcecredenail.png) - Save connection ![](../images/2021/01/saveconnection.png) Step 2: Creating adapter in the Agent control board - Navigate to the adapter tap after that click the new button. ![](../images/2021/01/adaptertap.png) - Fill all required field - Name: any name - Type: Agent Database - Direction: Inbound - Status: Active - Database type: oracle - Driver : oracle.jdbc.driver.OracleDriver - Username: Your user name on the database - password: your password on the database - Hostname: 3.124.40.194 - Port:1522 - SID/Service Name: orcl - Insert Operation Mode: Internal Key Management - Connection URI : jdbc:oracle:thin:@//ec2-3-124-40-194.eu-central-1.compute.amazonaws.com:1522/orcl (Connection URI has followed the systax: jdbc:oracle:thin:@::)) - Connection Destination: your destination name ![](../images/2021/01/createdatabaseadapter.png) Step 3: Generate message type from the database - Create Metadata Provider and a repository - Go to the repository detail page then click the Import Database Metadata. ![](../images/2021/01/impot.png) - Fill all required field then click Retrieve Database to get the Table's record - Agent Instance: your instance name - Adapter Name: your adapter name - Object type: Table, View, Procedure - Database Operation: Insert (database's template will be generated based on operation) ![](../images/2021/01/retrivemessagetype-1.png) - Chose Table's name to create a message type ![](../images/2021/01/selectmessagetype.png) - After that, we got the message type that we generate as a template from the database. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Insert operation, we have a template for generating message type for a single table - Create a root message type with the prefix” Database_”+” Table’s name” within type as “Database table template” - Create two messages type as a child of the root with the fixed name. The first one is “Request”, and another one is “Response”. - Under request, create a message type as the child. The Table’s name is used for this Message Type within type as “Database Table”. - Under response, create a message type as a child that has the fixed name” record” within type as “Plain Structure”. - Under “record”, create message type as the child. the table’s name is used for this message type within type as “Plain structure”.(In this message type, was generated the field name like on the table)[/su_box] ![](../images/2021/01/messagetype.png) Step 4: Create an inbound interface - create an inbound interface and link message type into the interface ![](../images/2021/01/interface.png) - Input database query statement to query data from the database. ![](../images/2021/01/querystatement.png) - Do mapping and click the save button. ![](../images/2021/01/mapping.png) - LInk adapter into the inbound interface ![](../images/2021/01/linkadapter-1.png) Step5: Do manual process button - Before you do the manual process you need to check the cache to make sure that the Interface group, Adapter, Integration, Interface, Ichain, mapping, or workflow that we set on an interface is cache retrieved. ![](../images/2021/01/cache-1.png) - Select one inbound interface and click on Manual Process Button. ![](../images/2021/01/selectinterface.png) - You need to check the message monitor to ensure that salesforce received data from the database correctly. ![](../images/2021/01/message.png) #### How to run the inbound interface using the scheduler? In this case, we need the scheduler to synchronize data from the database into salesforce. Step1: Create an inbound interface and link message type to the interface ![](../images/2021/01/schedulerinterface.png) - Input select statement into Database Query's field. ![](../images/2021/01/putquery.png) - Do mapping and click the save button. ![](../images/2021/01/mappingscheduler.png) - Link adapter into the interface. ![](../images/2021/01/linkadapter-2.png) Step 2: Run scheduler - You need to check the cache to make sure that Interface group, Adapter, Integration, Interface, IChain, Mapping, or workflow that we set on an interface is cache retrieved correctly. ![](../images/2021/01/cachescheduler.png) - Agent scheduler will be generated after the user clicks the scheduler tap. ![](../images/2021/01/scheduler.png) - Set the time to run every 1 minute ![](../images/2021/01/shedulerset.png) **Note**: If the machine has small memory, We should not set the time for running every 1 minute because it will block another job. You have to run every 5 or 10 minutes or more is a good recommendation. ![](../images/2021/01/runningtime.png) - You need to check the message monitor tap to ensure that salesforce received data from the database is correct. ![](../images/2021/01/messagetypescheduler.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to run inbound interface group through the manually and scheduler? Title: 116. How to run inbound interface group through the manually and scheduler? Slug: 116-how-to-run-inbound-interface-group-through-the-manually-and-scheduler URL: https://help.skyvva.com/#article/116-how-to-run-inbound-interface-group-through-the-manually-and-scheduler ================================================================================ # 116. How to run inbound interface group through the manually and scheduler? #### Introduction An interface group is a unit to group logical interface together. You can group an interface that is related to each other (Account and contact to one interface group) to the processing at the same time. Interface group is the object user define at configuration time. This processing can read data from Agent database adapter such as Oracle, Ms. SQL, My SQL,..... and it also can read data from Agent file adapter such as SFTP, FTP, and FTPs. We have two type interface group - EO: this group the member of the interface group can be processed in any sequence. We just need to start the execution of the different interfaces in the group after the order. The execution order can follow the sequence of the group, if the user has not defined the sequence then the execution order is random. - EOIO: The interface in this group will have the sequence number. The user must define the sequence number because we are processing the interface based on this sequence. If the group has an error, it will stop the processing of the group. #### Pe-required - Create integration - Configuration Agent control Board - Create agent database adapter - create inbound interface and interface group #### How to do manually an interface group type EO? Step1: Create integration ![](../images/2021/01/a1.png)**Configuration Agent Control Board ** - Go to integration detail and click on Agent Control Board ![](../images/2021/01/a2.png) - Create Agent Connection ![](../images/2021/01/a3.png) - Fill the Agent Credential ![](../images/2021/01/a4.png) - Fill the Salesforce Credential ![](../images/2021/01/a5.png) - Save Connection ![](../images/2021/01/a6.png)Step2: Create Database adapter in Agent Control Board - Navigate to the adapter tab and then click the new button. ![](../images/2021/01/a7.png) **Fill all required field ** - Name: any name - Type: Agent database - Direction: Inbound - Status: Active - Database type: oracle - Driver : oracle.jdbc.friver.OracleDriver - Username: your username on the database - Password: your password on the database - Hostname: 3.124.40.194 - Port: 1522 - SID/Service Name: orcl - Insert Operation Mode: Internal Ky Management - Connection URL : jdbc:oracle:thin:@//ec2-3-124-40-194.eu-central-1.compute.amazonaws.com:1522/orcl (Connection URI has followed the systax: jdbc:oracle:thin:@::)) - Connection Destination: your destination name ![](../images/2021/01/a8.png) **Import Metadata from the database** ![](../images/2021/01/a9.png)Fill all required field then click Retrieve database to get the table's record - Agent Instance: your instance name - Adapter Name: your adapter name - Object type: Table, View, Procedure - Database operation: Select (database's template will be generated base on operation) ![](../images/2021/01/a10.png) - Choose Table's name to create a message type![](../images/2021/01/a11.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For Insert operation, we have a template for generating message type for single table - Create a root message type with the prefix "Database_"+"Table's name" within the type as "Database table template". - Create two message types as a child of the root with the fixed name. The first one is "Request", and another one is "Response". - Under request, create a message type as the child. The table's name is used for this message type within type as "Database Table". - Under response, create a message type as a child that has the fixed name "record" within type as "Plain Structure". - Under "record", create message type as the child. The table's name is used for this message type within type as "Plain structure" . (In this message type, was generated the field name like on the table)[/su_box] - After that, We got the message type that we generate as a template from the database ![](../images/2021/01/a12.png) Step3: Create interafces - Create some inbound interfaces and link metadata into interfaces. ![](../images/2021/01/a13.png) - Input database query statement into interfaces. ![](../images/2021/01/a14.png) - Link adapter into those interfaces ![](../images/2021/01/link.png) - Do mapping ![](../images/2021/01/a15.png)Step4: Agent Control Board - create an inbound interface group ![](../images/2021/01/a16.png) - Add interfaces into an interface group Go to interface group detail and click on the "Add interface" button. ![](../images/2021/01/a17.png) Step5: Do Manual process per-interface group - Before you do the manual process you need to check to make sure that the interface group, Adapter, Integration, IChain, mapping, or workflow that we set on an interface is caches retrieved. ![](../images/2021/01/a18.png) - Select on interface group and click on the Manual Process button. ![](../images/2021/01/a19.png) - After the user click on the Manual Process button. ![](../images/2021/01/a20.png) - You need to check the message monitor to ensure that salesforce received data from the database correctly. ![](../images/2021/01/a21.png) **How to run the scheduler per-interface group type EO?** In this case, We require the following case 1, and we need to create a scheduler, per-interface group. Pre-require - Goto Integration - Configuration Agent control board - Create adapter agent database - Create inbound interface and interface group - Create scheduler per inbound interface group Step1: Agent Control Board - Before you run the schedule you make sure your interface group, Adapter, Integration, Interface, mapping, IChain, Workflow, is cache retrieved correctly. ![](../images/2021/01/a22.png) - The agent will be generated scheduler after the user click the scheduler tab ![](../images/2021/01/a23.png) - Set the time to Run At ![](../images/2021/01/a24.png) - Click on Action Button ![](../images/2021/01/a25.png) - After start the scheduler ![](../images/2021/01/a26.png) - Navigate to message monitor to check the result ![](../images/2021/01/a27.png)**How to do manually per-interface group EOIO?** In this case, we have some requirements from case 1, we just need to create more interfaces to do interface group type EOIO. Step1: Create some inbound interfaces ![](../images/2021/01/a28.png) - Input database query into inbound interfaces ![](../images/2021/01/b1.png) - Link adapter into interfaces ![](../images/2021/01/b2.png) - Do mapping ![](../images/2021/01/b3.png)Step2: Create an interface group Navigate to the Agent control board and click on the interface group tab. ![](../images/2021/01/b4.png) - Create inbound interface group type EOIO ![](../images/2021/01/b5.png) - Add interfaces into an interface group ![](../images/2021/01/b6.png)Step3: Do manual process per-interface group - Before you do the manual process you need to check to make sure your properties are cache retrieved. ![](../images/2021/01/b7.png) - Go to the Interface group tab select one interface group and click the Manual Process button. ![](../images/2021/01/b8.png) - After clicking the Manual Process button. ![](../images/2021/01/b9.png) - Checking the result on message monitor to ensure that database sends data to salesforce correctly. ![](../images/2021/01/b10.png)**How to run the scheduler per-interface group type EOIO?** Pre-require - Go to Integration - Configuration Agent Control Board - Create adapter agent database - create inbound interface and interface group - create scheduler per inbound interface group Step1: Agent Control Board - Before you run the scheduler you need to check to make sure that the interface group, adapter, interface, Ichain, Mapping, or workflow that we set on an interface is cache retrieved. ![](../images/2021/01/b11.png) - The agent will be generated a scheduler after the user clicks the scheduler tab. ![](../images/2021/01/b12.png) - Set the time to Run At ![](../images/2021/01/b13-1.png) - Click on the Action button. ![](../images/2021/01/b14.png) - After you start the scheduler. ![](../images/2021/01/b15.png) - You need to check the message monitor tab to make sure salesforce is received data from the database is correct. ![](../images/2021/01/b16.png) **How to do manual process inbound per-interface group using file adapter?** In this case, the user can use a file adapter to read data from sever to salesforce by group base on the sequence. Pre-require : - Create integration - Create some interfaces - Agent Control Board - Create file adapter - Create interface group - Do manual process Step1: Create integration ![](../images/2021/01/c13.png) - Go to Agent Control Board Configuration Agent control board and click Save ![](../images/2021/01/c14.png) - Create file adapter inbound direction ![](../images/2021/01/c15.png)**Fill all require all field** - Name: any name - Type: Agent File - Direction: Inbound - Protocol: SFTP - Host: Public IP Address - Username: SFTP username - Password: SFTP password - Port: SFTP Server Port - File type: Excel - Folder: SFTP/Inbound/Excel - File Name: Excel.xlsx - What to do with the file after processing?: Delete file - Connection destination: your destination name ![](../images/2021/01/c16.png) - Create an inbound interface and link message type into the interface ![](../images/2021/01/c17.png) - Link adapter to interfaces ![](../images/2021/01/c18.png) - Do mapping ![](../images/2021/01/c19.png)Step2: Agent Control board - G to cache monitor to make sure their properties that the user set on the interface is cache retrieved. ![](../images/2021/01/c20.png) - Navigate to interface group tab on agent control board ![](../images/2021/01/c21.png) - Create a new interface group ![](../images/2021/01/c22.png) - Add interface into an interface group ![](../images/2021/01/c23.png) - Choose one interface group and click **Manual Process** Button. ![](../images/2021/01/c24.png) - After clicking the manual process button. ![](../images/2021/01/c25.png) - You need to check the message monitor to ensure that salesforce received data from the server correctly. ![](../images/2021/01/c26.png) **How to run the scheduler per-interface group using a file adapter?** In this case, We need to create a schedule,per-interface group. Pre-require: - Go to integration - Configuration - Create agent file adapter - Create inbound interface and interface group - Create scheduler per-interface group Step1: Create the scheduler per-interface group - Go to the agent control board, the scheduler will create after the user scheduler tab. ![](../images/2021/01/c27.png) - Set the time to run the scheduler ![](../images/2021/01/c28.png) - Click on the **Action button** to start the scheduler ![](../images/2021/01/c29.png) - After start the scheduler ![](../images/2021/01/c30.png) - After the scheduler run, you will get the job id that processing by the scheduler. ![](../images/2021/01/c31.png) - Go to message monitor to check the message that salesforce received data from the server correctly. ![](../images/2021/01/c32.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How user can import business and attachments that are embedded in one file (Account)? Title: 117. How user can import business and attachments that are embedded in one file (Account)? Slug: 117-how-user-can-import-business-and-attachments-that-are-embedded-in-one-file URL: https://help.skyvva.com/#article/117-how-user-can-import-business-and-attachments-that-are-embedded-in-one-file ================================================================================ # 117. How user can import business and attachments that are embedded in one file (Account)? #### Introduction Base 64 String is a group of binary-to-text encoding schemes representing binary data in an **ASCII** string format by translating into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding. To help customers who want to import SObject and attach a file (base64), we have methods that can solve the problem. Now I would like to show you how to push binary data and SObject in the same XML file, but it will store the attachment in Attachment Object. The binary data is the data that has encoded with base64 string. #### How to import business and Attachments that are embedded Account #### Pre-require **To import SObject and attach a file (base64) to it. The SObject and the file are embedded in the same XML file. See in the picture below.** ![](../images/2021/01/4.png) So to be able to integrate hierarchical data like that, we need to use IntegrateV3 inbound processing. We have to push a file to Attachment and pushing the file to Attachment SObject. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The file is base64 (binary text) not a physic file.[/su_box] - Create a Metadata provider and repository for the upload message type - Connection destination and create an adapter - Create Integration and Inbound Interface ![](../images/2021/01/image_2021_02_01T05_52_37_066Z.png) ![](../images/2021/01/image_2021_02_01T06_01_59_642Z.png) ![](../images/2021/01/image_2021_02_01T06_05_09_628Z.png) - Now we have a Message Type for mapping. Next, create an Integration and Interface - Assign MetaData Provider, Repository, and MessageType (assign the root node) which we have uploaded to the interface ![](../images/2021/01/image_2021_02_01T06_07_47_102Z.png) Now we need to choose the Target SObject to push the file to Attachment SObject based on the mapping. Let’s open the Mapping tool and see how we map in the picture below. **Pushing file to Attachment** ![](../images/2021/01/3.png) - Now we use Agent Control Board (old) to push the data to Salesforce. So first, you need to install the Agent application on your external system.  And then use Agent Control Board to connect and work with it. - Next step let’s create an Agent property by go to Agent Control Board and fill in your information and then click on the Continue button. See in the picture. ![](../images/2021/01/image_2021_02_01T06_22_48_830Z.png) - In-Next Step fills in the information for connecting from Salesforce to the Agent server. For example, my server’ configuration for running the Agent are: - Hostname: [https://skyvva-agent.skyvva.com](https://skyvva-agent.skyvva.com) - Agent’s port: 9091 - Agent’s username: admin - Agent’s password: 12345 Before you are able to connect to the Agent side you need to set up the remote site on Salesforce by going to Setup and search for remote site setting and then create a remote site. ![](../images/2021/01/image_2021_02_01T06_24_58_301Z.png) Now let’s configure the Agent server and click Ping Agent Connection. See in the picture. ![](../images/2021/01/image_2021_02_01T06_26_34_711Z.png) - Next step, configure the connection to connect from the Agent to the Salesforce side and then click Ping Salesforce Connection and then click on the Save button. ![](../images/2021/01/image_2021_02_01T06_28_50_052Z.png) - Now we can connect to the Agent. Next step, we need to create an adapter. By go to the Adapter tab and then click on the New button and fill in your information to connect to your **XML** file and then click Save. See in the picture. ![](../images/2021/01/image_2021_02_01T06_31_19_616Z.png) - The next step, assign the adapter to the interface. ![](../images/2021/01/image_2021_02_01T06_32_29_900Z.png) - Next step, on Agent Control Board, go to the Integration tab and choose your integration and then go to the interface tab and select your interface and click on the Process Interface button and then check the result on Monitor. ![](../images/2021/01/1.png) ![](../images/2021/01/2.png) - Please Find the attachment **Summary** In this tutorial user learns how to import business and attachments that are embedded in one file (Account). ================================================================================ Book: Tutorials Section: Tutorials Subsection: How user can import business and attachments that are embedded in one file (Content Version) ? Title: 118. How user can import business and attachments that are embedded in one file (Content Version) ? Slug: 118-how-user-can-import-business-and-attachments-that-are-embedded-in-one-file-contentversion URL: https://help.skyvva.com/#article/118-how-user-can-import-business-and-attachments-that-are-embedded-in-one-file-contentversion ================================================================================ # 118. How user can import business and attachments that are embedded in one file (Content Version) ? #### Introduction Base 64 String is a group of binary-to-text encoding schemes representing binary data in an **ASCII** string format by translating into a radix-64 representation. The term Base64 originates from a specific MIME content transfer encoding. To help customers who want to import SObject and attach a file (base64), we have methods that can solve the problem. Now I would like to show you how to push binary data and SObject in the same XML file, but it will store the attachment in Attachment Object. The binary data is the data that has encoded with base64 string. #### How to import business and Attachments that are embedded ContentVersion #### Pre-require **To import SObject and attach a file (base64) to it. The SObject and the file are embedded in the same XML file. See in the picture below.** ![](../images/2021/02/image_2021_02_02T05_58_10_238Z.png) So to be able to integrate hierarchical data like that, we need to use IntegrateV3 inbound processing. We have to push a file to Attachment and pushing the file to Attachment SObject. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The file is base64 (binary text) not a physic file.[/su_box] - Create a Metadata provider and repository for the upload message type - Connection destination and create an adapter - Create Integration and Inbound Interface ![](../images/2021/01/image_2021_02_01T05_52_37_066Z.png) ![](../images/2021/01/image_2021_02_01T06_01_59_642Z.png) ![](../images/2021/01/image_2021_02_01T06_05_09_628Z.png) - Now we have a Message Type for mapping. Next, create an Integration and Interface - Assign MetaData Provider, Repository, and MessageType (assign the root node) which we have uploaded to the interface ![](../images/2021/01/image_2021_02_01T06_07_47_102Z.png) Now we need to choose the Target SObject to push the file to Attachment SObject based on the mapping. Let’s open the Mapping tool and see how we map in the picture below. [su_box title="Pushing big size of child node" box_color="#2a8af0" title_color="#000000"]Please note that we have limitation which can push file (based64) around 1.6MB per transaction. So if you want to push many child (the files) per parent you can map only Child node and use the VLOOKUP function to find its parent. And make sure that the parent exists in the Salesforce (We should push the parent first). [/su_box] **Pushing file to ContentVersion** ![](../images/2021/01/image_2021_02_02T06_10_46_016Z.png) - Now we use Agent Control Board (old) to push the data to Salesforce. So first, you need to install the Agent application on your external system.  And then use Agent Control Board to connect and work with it. - Next step let’s create an Agent property by go to Agent Control Board and fill in your information and then click on the Continue button. See in the picture. ![](../images/2021/01/image_2021_02_01T06_22_48_830Z.png) - In-Next Step fills in the information for connecting from Salesforce to the Agent server. For example, my server’ configuration for running the Agent are: - Hostname: [https://skyvva-agent.skyvva.com](https://skyvva-agent.skyvva.com) - Agent’s port: 9091 - Agent’s username: admin - Agent’s password: 12345 Before you are able to connect to the Agent side you need to set up the remote site on Salesforce by going to Setup and search for remote site setting and then create a remote site. ![](../images/2021/01/image_2021_02_01T06_24_58_301Z.png) Now let’s configure the Agent server and click Ping Agent Connection. See in the picture. ![](../images/2021/01/image_2021_02_01T06_26_34_711Z.png) - Next step, configure the connection to connect from the Agent to the Salesforce side and then click Ping Salesforce Connection and then click on the Save button. ![](../images/2021/01/image_2021_02_01T06_28_50_052Z.png) - Now we can connect to the Agent. Next step, we need to create an adapter. By go to the Adapter tab and then click on the New button and fill in your information to connect to your **XML** file and then click Save. See in the picture. ![](../images/2021/01/image_2021_02_01T06_31_19_616Z.png) - The next step, assign the adapter to the interface. ![](../images/2021/01/image_2021_02_01T06_32_29_900Z.png) - Next step, on Agent Control Board, go to the Integration tab and choose your integration and then go to the interface tab and select your interface and click on the Process Interface button and then check the result on Monitor. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Actually, we have package size option but it works only with the root message. E.g. per a parent has 10 child it will send 1 parent and 10 child per transaction (if we set package size=1). We do not support splitting the child message based on package size yet. That’s why we make the child become a root node in mapping. So you will push only child and you can decrease the package size like you wise (when you get heap size error). Please also be sure that we have an External field of a parent for using **VLOOKUP**.[/su_box] ![](../images/2021/02/image_2021_02_02T06_39_11_289Z.png) - Please Find the attachment ![](../images/2021/02/image_2021_02_02T06_41_45_170Z.png) **Summary** In this tutorial user learns how to import business and attachments that are embedded in one file (ContentVersion). ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to add filter condition on "Set context" in mapping? Title: 90.1 How to use the set context function to set filter on field level and in which case do we need it? Slug: 90-1-how-to-use-the-set-context-function-to-set-filter-on-field-level-and-in-which-case-do-we-need-ithow-to-use-the-set-context-function-to-set-filter-on-field-level-and-in-which-case-do-we-need-it URL: https://help.skyvva.com/#article/90-1-how-to-use-the-set-context-function-to-set-filter-on-field-level-and-in-which-case-do-we-need-ithow-to-use-the-set-context-function-to-set-filter-on-field-level-and-in-which-case-do-we-need-it ================================================================================ # 90.1 How to use the set context function to set filter on field level and in which case do we need it? #### Introduction This tutorial explains how to add filter condition on "Set Context" in mapping and how to configure it. #### What is "Set Context" in Mapping? “Set context” in mapping to enable you to map the child node to the same level as you do for the parent. For example, if you have an invoice where you want to map the items to the same target node sObject like the invoice header we just take the first one of the items. The filter function you can add a condition to exactly fetch the item which you really need. E.g. the item with the amount of 25 USD. The condition is used to filter the child records which is to be used to map to the target object along with its parent #### Enhancement of SET FILTER on mapping in v2.47 We have the function to set context on the node level, to fetch data specify by condition value. But the user can pick up the value from one node occurrence only followed by condition input. On the new enhancement of set filter function, we have modified from the node level to the field level. In this way, the user has the possibility to get value from multiple node occurrence to map on target side. **Pre-required ** - Generate MessageType from payload - Create inbound Interface - Mapping and set filter - Post data from V4 Integrate **Steps to see the use of set context** Step-1 create  Integration -> Create Inbound Interface. ![](../images/2020/06/Untitled1.png) Step-2 Do  Mapping ![](../images/2020/06/Untitled2.png) In this case, I have choose **IDOC** as the master node to map on target side. Then I need the field from node** E1EDK14 **to map the target with the same level as master node. But this node is stayed on lower level than **IDOC**. So in this case we need to set context to move node level from lower to higher. - Right click on **E1EDK14 **=> Set Context Level ![](../images/2020/06/Untitled3.png) - Select **IDOC **to move level from lower equal to IDOC level then click Ok ![](../images/2020/06/Untitled4.png) - Choose field from source to map on target In this example below I want to map field **ORGID** to different field on target ![](../images/2020/06/Untitled5.png) - Drag from source to target => Ok for set the condition ![](../images/2020/06/Untitled6.png) - Put the condition. - ORGID to BillingCity if QUALF = 012 - ORGID to AccountNumber if QUALF = 008 - ORGID to Name if QUALF = 016 **Note:** The Condition value must be unique, otherwise the run-time will give the unexpected result ![](../images/2020/06/Untitled7.png) After save the mapping we can validate what the value that we have set on the condition. By right click the field that we have set context => Set/Remove Filter ![](../images/2020/06/Untitled8.png) ** ** **Note:** The node or field that we have set Context or Filter will be remark with blue italic letter ![](../images/2020/06/Untitled9.png) - With this condition **AccountNumber** will get value = 1000 ![](../images/2020/06/Untitled10.png) - With this condition **BillingCity** will get value = TA ![](../images/2020/06/Untitled11.png) - With this condition **Name** will get value = 2000 ![](../images/2020/06/Untitled12.png) Within the condition defined on **QUALF** and **ORGID **has been map to different target field so we can briefly work below: - If **QUALF** = 008 then AccountNumber will get value “1000” - If **QUALF** = 012 then BillingCity will get value “TA” - If **QUALF** = 016 then Name will get value “2000” ![](../images/2020/06/Untitled13.png) Post data from Postman ![](../images/2020/06/Untitled14.png) The data has been insert correctly ![](../images/2020/06/Untitled15.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new Data Loader? Title: Introduction Slug: 119-what-is-the-new-data-loader URL: https://help.skyvva.com/#article/119-what-is-the-new-data-loader ================================================================================ # Introduction #### Introduction SKYVVA's Free Data Loader is a native force.com App that is part of the SKYVVA Integration Cloud. As a true cloud service, data can be uploaded/downloaded over the web without installing any software or hardware. The Data Loader is mainly used for importing and exporting data in CSV, XML, or JSON format. Imports can be initiated from the inbound interface, while exports can be started from the outbound interface. In the export function, If you have a large number of records, you need to process them as a batch.  it will provide a download of the link data file via email. **Where do you find the Data Loader?** You can find the Data Loader on the custom link section of the Integration Detail Page. ![](../images/2021/02/5-9-2023-3-05-00-PM.png) Here is the Data Loader dashboard screen. ![](../images/2021/02/5-9-2023-3-18-00-PM-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. Google Pub/Sub Adapter. Slug: 120-google-pub-sub-adapter URL: https://help.skyvva.com/#article/120-google-pub-sub-adapter ================================================================================ # 1. Google Pub/Sub Adapter. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 120.1 How to develop outbound interface to publish data into Google Pub/Sub topic? Slug: 120-1-how-to-develop-outbound-interface-to-publish-data-into-google-pub-sub-topic URL: https://help.skyvva.com/#article/120-1-how-to-develop-outbound-interface-to-publish-data-into-google-pub-sub-topic ================================================================================ # 120.1 How to develop outbound interface to publish data into Google Pub/Sub topic? **Learning Objectives:-** **This unit describes:-** - How to develop an outbound interface to publish data into Google Pub/Sub topic? #### Introduction: In this tutorial, we will learn how the Google Pub/Sub adapter works for the outbound interface to publish data into the Google Pub/Sub topic. This functionality is available from v2.47 onwards. In simple words, Google Pub/Sub adapter to publish data means Outbound google pub/sub Adapter. We need an Outbound Google Pub/SubAdapter when we want to send data out from salesforce, here We need to create a topic first. Then we can publish data into Google Pub/Sub topic. So now we are going to check the use cases for Outbound Google Pub/Sub Adapter i.e, for Publisher. To configure, firstly we need to learn and follow some steps: **Authorize Google App with Cloud Pub/Sub API and Get Access Token** **Step1: **Now we have to create a project in the Google developer console. So follow the below step to do that. - Go to Google developer console. Hit the link- [https://console.developers.google.com/cloud-resource-manager](https://console.developers.google.com/cloud-resource-manager)and create a project. ![](../images/2021/02/g-3.png) - To create a new project we have to click on the **“Create project link”.** ![](../images/2021/02/g1-2.png) - Click on create button. Once the project is created we have to set credentials to our project. Follow the given steps to set credentials. - Click on the navigation menu. - Go to APIs& services. - Click credentials. ![](../images/2021/02/g2-1.png) - Click on create credentials button. ![](../images/2021/02/g3.png) - Select OAuth client Id from the list. **Client ID**: This is used to identify the application. … As per **oAuth** standard you need both **Client ID** & **Client** Secret along with user credentials to generate an access token. It’s the standard defined by **OAuth**. ![](../images/2021/02/g4.png) - Select Web application and give the name and click on create. ![](../images/2021/02/g5-1.png) ![](../images/2021/02/g6.png) ### Authorization Scopes: **Requires one of the following OAuth scopes:** https://www.googleapis.com/auth/pubsub https://www.googleapis.com/auth/cloud-platform **Step2**: For oAuth2 authentication with Google API, we need to visit developers.google.com. We should click on Link: - [https://developers.google.com/oauthplayground/](https://developers.google.com/oauthplayground/). And Select Drive API v3 and click on Authorize API. ![](../images/2021/02/g7.png) ![](../images/2021/02/g8-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We should have our Google account, If not then create a new Google account. Once we select drive API then authorize it with our Google account.[/su_box] ![](../images/2021/02/g9-1.png) ![](../images/2021/02/g10.png) - When refresh token and Access token are generated then copy it and paste to notepad. (We need it later) ![](../images/2021/02/g11.png) { "access_token": "**ya29.a0AfH6SMB27Fc1tP6vIH7C5lswnK_J15tWMtGLaeb1bvbqQqYPBoRWT3gJbqkbhY8KsCag6tRJdyIJJADCFI3rrI9MmpxEAet2iM5nwiUhSABlQiDVcFsUYm5G9sZs40gsXU9XdDXRDAHzx_A1MRiXkjtWmNuiiwFM1lKzeHQ5Uew**", "scope": "https://www.googleapis.com/auth/pubsub https://www.googleapis.com/auth/cloud-platform", "token_type": "Bearer", "expires_in": 3599, "refresh_token": "**1//04rm5yXZ6MX_vCgYIARAAGAQSNwF-L9IrgBSgkkKY8WQY2dfBYZ_txGpaSjPRs3hORqLnyrySgrgEmzmmK3nm-cGQ_I3ZbdZ_6Ug**" } **Step 2:** Enable API(Follow the link given below) [https://cloud.google.com/pubsub/docs/quickstart-client-libraries?authuser=1](https://cloud.google.com/pubsub/docs/quickstart-client-libraries?authuser=1) - Set up a Cloud Console project. - Set up a project - Create or select a project. - Enable the Pub/Sub API for that project. ![](../images/2021/02/g12.png) ![](../images/2021/02/g13-1.png) 5. [Install and initialize the Cloud SDK](https://cloud.google.com/sdk/docs/install). [su_box title="Note" box_color="#2a8af0" title_color="#000000"]You can run the gcloud tool in the Cloud Console without installing the Cloud SDK. To run the gcloud tool in the Cloud Console, [use Cloud Shell ](https://console.cloud.google.com/home/dashboard?cloudshell=true).[/su_box] **We can use Google cloud shell:** [https://console.cloud.google.com/cloudpubsub/subscription/list?authuser=1&cloudshell=true&project=skyvva-278208](https://console.cloud.google.com/cloudpubsub/subscription/list?authuser=1&cloudshell=true&project=skyvva-278208) **Quickstart using the gcloud command-line tool:** https://cloud.google.com/pubsub/docs/quickstart-cli ![](../images/2021/02/g14.png) **Step: 3 Create New Topic:** **Example:** gcloud pubsub topics create csvOutbound ![](../images/2021/02/g15.png) ![](../images/2021/02/g16.png) - **Create New Subscription:** **Example:** gcloud pubsub subscriptions create csvOutboundSub --topic csvOutbound. ![](../images/2021/02/g17-1.png) **Publish messages:** Publish a message to my-topic: gcloud pubsub topics publish my-topic --message="hello" **Receive messages:** Receive the message from my-sub: gcloud pubsub subscriptions pull my-sub --auto-ack **Publish Messages:** Example: gcloud pubsub topics publish csvOutbound --message="hello world" ![](../images/2021/02/g18-1.png) **Receive Messages:** **Example: **gcloud pubsub subscriptions pull csvOutboundSub --auto-ack ![](../images/2021/02/g19.png) **Step: 4** Create Metadata provider, Repository, and Message type(Pre-Requisite) **Step: 5** Create Integration(Pre-Requisite) **Step: 6** Create Outbound Adapter. ![](../images/2021/02/g20.png) ![](../images/2021/02/g21.png) **Step 7:** Create Outbound Interface [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Adapter must be linked with only 1 inbound or 1 outbound interface.1 topic must be linked with only 1 subscription.[/su_box] **Integration:** Google_Integration [su_box title="Note" box_color="#2a8af0" title_color="#000000"] CSV, JSON, and XML Outbound Examples: In outbound case, we are sending data from Salesforce to Google pub/sub server side.[/su_box] #### CSV Outbound Case: **Outbound Interface Name:** **Cloud_Pub_Sub_CSV_OB** **Outbound Adapter Name:** **Google Cloud Pub/Sub CSV OB** ![](../images/2021/02/g22.png) ![](../images/2021/02/g23.png) **V3 Callout:** skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011x00001ArjkCAAR','0011x00001ArjkDAAR'}; skyvvasolutions.Iservices.invokeCalloutV3('Google_Integration','Cloud_Pub_Sub_CSV_OB',ids,'SYNC',c); **Messages:** ![](../images/2021/02/g24.png)**Google Console:** ![](../images/2021/02/g25.png) #### JSON Outbound Case **Outbound Interface Name:** **Cloud_Pub_Sub_JSON_OB** **Outbound Adapter Name:** **Google Cloud Pub/Sub JSON OB** ![](../images/2021/02/g26.png) ![](../images/2021/02/g27.png) **V3 Callout:** skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011x00001ArjkCAAR','0011x00001ArjkDAAR'}; skyvvasolutions.Iservices.invokeCalloutV3('Google_Integration','Cloud_Pub_Sub_JSON_OB',ids,'SYNC',c); **Messages:** ![](../images/2021/02/g28.png) **Google Console:** ![](../images/2021/02/g29.png) #### XML Outbound Case: **Outbound Interface Name:** **Cloud_Pub_Sub_XML_With_NP_OB** **Outbound Adapter Name:** **Google Cloud Pub/Sub XML OB** ![](../images/2021/02/g30.png) ![](../images/2021/02/g31.png) **V3 Callout:** skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011x00001ArjkCAAR','0011x00001ArjkDAAR'}; skyvvasolutions.Iservices.invokeCalloutV3('Google_Integration','Cloud_Pub_Sub_XML_With_NP_OB',ids,'SYNC',c); **Messages:** ![](../images/2021/02/g32.png) **Google Console:** ![](../images/2021/02/g33.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 120.2 How to develop inbound interface to consume message from Google Pub/Sub topic? Slug: 120-2-how-to-develop-inbound-interface-to-consume-message-from-google-pub-sub-topic URL: https://help.skyvva.com/#article/120-2-how-to-develop-inbound-interface-to-consume-message-from-google-pub-sub-topic ================================================================================ # 120.2 How to develop inbound interface to consume message from Google Pub/Sub topic? **Learning Objectives:-** **This unit describes:-** - How to develop an Inbound interface to publish data into Google Pub/Sub topic? #### Introduction: In this tutorial, we will learn how the Google Pub/Sub adapter works for the Inbound interface to publish data into the Google Pub/Sub topic. This functionality is available from v2.47 onwards. In simple words, Google Pub/Sub adapter to publish data means Inbound google pub/sub Adapter. We need an Inbound Google Pub/SubAdapter when we want to send data out from salesforce, here We need to create a topic first. Then we can publish data into Google Pub/Sub topic. So now we are going to check the use cases for Inbound google Pub/Sub Adapter i.e, for Publisher. To configure, firstly we need to learn and follow some steps: **Authorize Google App with Cloud Pub/Sub API and Get Access Token** **Step1: **Now we have to create a project in the Google developer console. So follow the below step to do that. - Go to Google developer console. Hit the link- [https://console.developers.google.com/cloud-resource-manager](https://console.developers.google.com/cloud-resource-manager)and create a project. ![](../images/2021/02/g-3.png) - To create a new project we have to click on the **“Create project link”.** ![](../images/2021/02/g1-2.png) - Click on create button. Once the project is created we have to set credentials to our project. Follow the given steps to set credentials. - Click on the navigation menu. - Go to APIs& services. - Click credentials. ![](../images/2021/02/g2-1.png) - Click on create credentials button. ![](../images/2021/02/g3.png) - Select OAuth client Id from the list. **Client ID**: This is used to identify the application. … As per **oAuth** standard you need both **Client ID** & **Client** Secret along with user credentials to generate an access token. It’s the standard defined by **OAuth**. ![](../images/2021/02/g4.png) - Select Web application and give the name and click on create. ![](../images/2021/02/g5-1.png) ![](../images/2021/02/g6.png) ### Authorization Scopes: **Requires one of the following OAuth scopes:** https://www.googleapis.com/auth/pubsub https://www.googleapis.com/auth/cloud-platform **Step2**: For oAuth2 authentication with Google API, we need to visit developers.google.com. We should click on Link: - [https://developers.google.com/oauthplayground/](https://developers.google.com/oauthplayground/). And Select Drive API v3 and click on Authorize API. ![](../images/2021/02/g7.png) ![](../images/2021/02/g8-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We should have our Google account, If not then create a new Google account. Once we select drive API then authorize it with our Google account.[/su_box] ![](../images/2021/02/g9-1.png) ![](../images/2021/02/g10.png) - When refresh token and Access token are generated then copy it and paste to notepad. (We need it later) ![](../images/2021/02/g11.png) { "access_token": "**ya29.a0AfH6SMB27Fc1tP6vIH7C5lswnK_J15tWMtGLaeb1bvbqQqYPBoRWT3gJbqkbhY8KsCag6tRJdyIJJADCFI3rrI9MmpxEAet2iM5nwiUhSABlQiDVcFsUYm5G9sZs40gsXU9XdDXRDAHzx_A1MRiXkjtWmNuiiwFM1lKzeHQ5Uew**", "scope": "https://www.googleapis.com/auth/pubsub https://www.googleapis.com/auth/cloud-platform", "token_type": "Bearer", "expires_in": 3599, "refresh_token": "**1//04rm5yXZ6MX_vCgYIARAAGAQSNwF-L9IrgBSgkkKY8WQY2dfBYZ_txGpaSjPRs3hORqLnyrySgrgEmzmmK3nm-cGQ_I3ZbdZ_6Ug**" } **Step 2:** Enable API(Follow the link given below) [https://cloud.google.com/pubsub/docs/quickstart-client-libraries?authuser=1](https://cloud.google.com/pubsub/docs/quickstart-client-libraries?authuser=1) - Set up a Cloud Console project. - Set up a project - Create or select a project. - Enable the Pub/Sub API for that project. ![](../images/2021/02/g12.png) ![](../images/2021/02/g13-1.png) 5. [Install and initialize the Cloud SDK](https://cloud.google.com/sdk/docs/install). [su_box title="Note" box_color="#2a8af0" title_color="#000000"]You can run the gcloud tool in the Cloud Console without installing the Cloud SDK. To run the gcloud tool in the Cloud Console, [use Cloud Shell ](https://console.cloud.google.com/home/dashboard?cloudshell=true).[/su_box] **We can use Google cloud shell:** [https://console.cloud.google.com/cloudpubsub/subscription/list?authuser=1&cloudshell=true&project=skyvva-278208](https://console.cloud.google.com/cloudpubsub/subscription/list?authuser=1&cloudshell=true&project=skyvva-278208) **Quickstart using the gcloud command-line tool:** https://cloud.google.com/pubsub/docs/quickstart-cli ![](../images/2021/02/g14.png) **Step: 3 Create New Topic:** **Example:** gcloud pubsub topics create csvOutbound ![](../images/2021/02/g15.png) ![](../images/2021/02/g16.png) - **Create New Subscription:** **Example:** gcloud pubsub subscriptions create csvOutboundSub --topic csvOutbound. ![](../images/2021/02/g17-1.png) **Publish messages:** Publish a message to my-topic: gcloud pubsub topics publish my-topic --message="hello" **Receive messages:** Receive the message from my-sub: gcloud pubsub subscriptions pull my-sub --auto-ack **Publish Messages:** Example: gcloud pubsub topics publish csvOutbound --message="hello world" ![](../images/2021/02/g18-1.png) **Receive Messages:** **Example: **gcloud pubsub subscriptions pull csvOutboundSub --auto-ack ![](../images/2021/02/g19.png) **Step: 4** Create Metadata provider, Repository, and Message type(Pre-Requisite) **Step: 5** Create Integration(Pre-Requisite) **Step: 6** Create Inbound Adapter. ![](../images/2021/02/ing.png) **Step 7:** Create Inbound Interface [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Adapter must be linked with only 1 inbound or 1 outbound interface.1 topic must be linked with only 1 subscription.[/su_box] **Integration:** Google_Integration [su_box title="Note" box_color="#2a8af0" title_color="#000000"] CSV, JSON, and XML Inbound Examples: In Inbound case, we are sending data from Google pub/sub server side to Salesforce.[/su_box] #### CSV Inbound Case: **Inbound Interface Name:** **Cloud_Pub_Sub_CSV_IB** **Inbound Adapter Name:** **Google Cloud Pub/Sub CSV IB** ![](../images/2021/02/ing1.png) ![](../images/2021/02/ing2.png) **Message Monitoring:** ![](../images/2021/02/ing3.png) #### XML Inbound Case: **Inbound Interface Name:** **Cloud_Pub_Sub_XML_With_NP_IB** **Inbound Adapter Name:** **Google Cloud Pub/Sub XML IB** ![](../images/2021/02/ing6.png) ![](../images/2021/02/ing7.png) **Message Monitoring:** ![](../images/2021/02/ing8.png) #### JSON Inbound Case: **Inbound Interface Name:** **Cloud_Pub_Sub_JSON_IB** **Inbound Adapter Name: Google Cloud Pub/Sub JSON IB** ![](../images/2021/02/ing4.png) ![](../images/2021/02/ing5.png) **Message Monitoring:** ![](../images/2021/02/ing10.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Outbound Attachment SF to Agent (FTP) Title: 1. Outbound Attachment SF to Agent (FTP) Slug: outbound-attachment-sf-to-agent-ftp URL: https://help.skyvva.com/#article/outbound-attachment-sf-to-agent-ftp ================================================================================ # 1. Outbound Attachment SF to Agent (FTP) ![](../images/2021/02/image_2021_02_11T06_56_23_557Z.png) #### Introduction **An agent **can transact data below 6MB per transaction. Now** Agent **can export attachment for 1000 object’s records filtered. A Local File on **Agent** can be used as a target in **SKYVVA**. It must reside on the machine where the **Agent** is installed. Any file type can be used. Commonly-used types for local files are text (.txt), CSV (.csv), XML (.xml), and PDF (.pdf). #### Prerequisite Before a user can use a Local File target, the user must have enabled Local File Location on your **SKYVVA Agent**. See Enabling Local File Location for details. **Creating a Local File Target** Users can choose to create a new local file target on their own, or within an existing operation. For more information on how sources and targets work within operations, see Creating an Operation. The user has to follow the guide carefully it’s so interesting and having a lot of tricks **Agent – SF: FTP Integration** - *** FTP Server Configuration *** As a test, we use an FTP server application, named FileZilla Server and its client tool. In this server, we configure the user and group as below : ![](../images/2021/02/image_2021_02_11T07_08_01_991Z.png) - Create a user named “Akash” and a shared folder ”C\Users\Akash\Desktop\New folder” which contains the data files in XML, CSV, Excel formats - Give full permissions to the folder as shown above [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Always think of file/folder access permissions on the FTP server when doing integration between SF and FTP, and vice versa.[/su_box] Please disable the SSL login. - *** FTP data integration:*** Properties for FTP adapter are URL, Username, Password, File Type, Folder, Filename, and CSV Separator (for CSV file type). Run Integration **Agent UI** ![](../images/2021/02/image_2021_02_11T07_25_37_545Z.png) **Create a New Integration (for SF-Agent integration) as follows: ** - Either click the Integration Wizard link on the above figure or - Integration Properties Setup link as shown in the below figure: ![](../images/2021/02/image_2021_02_11T07_28_17_083Z.png) ![](../images/2021/02/image_2021_02_11T07_29_21_980Z.png) - Supply your Salesforce organization info and environment and click “Test Salesforce Connection” for Testing. **Go to Salesforce Org.** - Create integration and interface (Inbound) ![](../images/2021/02/image_2021_02_11T07_30_43_125Z.png) - Go to Interface Detail Page - Scroll down to SOQL Query for filter sObject section ![](../images/2021/02/image_2021_02_11T07_25_37_545Z-1.png) - Write a simple Query - Save ![](../images/2021/02/image_2021_02_11T07_33_11_390Z.png) - Click on Account Object and pick one record e.g **FTP_Account** - Copy ID **Go back to your Interface Details page which the user already created ** - Click on Open Mapping button ![](../images/2021/02/image_2021_02_11T07_35_49_164Z.png) - Do mapping - **ParentID **is a custom text field which user have to crate which is uniqueID ![](../images/2021/02/image_2021_02_11T07_39_48_573Z.png) - Enable Check box and double click ![](../images/2021/02/image_2021_02_11T07_42_50_874Z.png) - Paste ID of selected Account Record in Formula and Expression - Save **Go to Agent** - Select your Integration Name - Select your Interface ![](../images/2021/02/image_2021_02_11T07_44_20_498Z.png) - Select File Type **Other** - Click on Test Source Connection button - Click on the Test Query button - User can easily see all records in Query Table - Save ![](../images/2021/02/image_2021_02_11T07_47_44_194Z.png) - Select your Interface and click on the process button - A dialogue message is pop up that says Process Completed - OK **Go to Message Monitoring Tab in your Salesforce Org.** - Click on MessageMonitoring Tab - Choose your Integration Name - Select your Interface - Click on the OK button ![](../images/2021/02/image_2021_02_11T07_51_12_971Z.png) - Click on the Search button - Great Creation of Attachment successfully ![](../images/2021/02/image_2021_02_11T07_53_48_212Z.png) **Go to your Account Record see Notes & Attachments uploaded successfully** ![](../images/2021/02/image_2021_02_11T07_55_36_328Z.png) **How to use Outbound Attachment SF to Agent (FTP)** **Case1: Export attachments by integrating through Agent ** - Create integration and interface (outbound) – **Attachment_SF-Agent** ![](../images/2021/02/image_2021_02_11T07_57_06_940Z.png) - Go to Interface Detail Page - Scroll down to SOQL Query for filter sObject section ![](../images/2021/02/image_2021_02_11T07_59_26_212Z.png) - Write a simple Query - Click on the Open Mapping Button ![](../images/2021/02/image_2021_02_11T08_02_13_212Z.png) - Select Name as Ext Id - Do mapping - Save **We need to find an integration for SF-Agent by clicking on Integration Name** ![](../images/2021/02/image_2021_02_11T08_03_54_919Z.png) - Fill in the integration name, adapter name as you wish to name. **Adapter property :** - URL: the URL to your FTP server – here we use localhost(192.168.0.102) ( our FTP server is FileZilla installed in the current agent machine) - Username: Username to log in to FTP server - Password: Password to login to FTP server - File Type: Types of files to be queried the data for the integration process. There are three types: CSV, XML, and Excel (2010 format) - Folder: the path to get the file/files. - In our above FileZilla configuration, we already added a shared folder named which has the path of “C\Users\Akash”. And the value of the property Folder is “Other”. Therefore the full path to get the file/files is “C\Users\Akash\Desktop\New folder - File Name: (Optional) a file name for the agent to query data from. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]When the filename is not specified, the agent will go to the folder and lookup for all files with the type.[/su_box] **Ex**. In the screenshot, we don’t specify the file name, so that the agent will go to folder “C\Users\Akash\FTP test with Other” to query data from all files (Account.csv) with the file type of Other. - CSV Separator: Value separator for another file type. - Click “Test Source Connection” to test the connection to the specified FTP server - Click “Save & Next” to save the Integration and its Adapter and Properties and to create a New Interface and fill in all necessary info as shown in the below figure: ![](../images/2021/02/image_2021_02_11T08_03_54_919Z-1.png) - Fill in the integration name, adapter name as you wish to name. - Adapter property: (same as FTP-SF section) **Unlike, the file name property is not used in SF-FTP Integration  ** - Click “Test Source Connection” to test the connection to the specified FTP server Click “Save & Next” to save the Integration and its Adapter and Properties and to create a New Interface and fill in all necessary info as shown in the below figure ![](../images/2021/02/image_2021_02_11T08_09_52_359Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For SF-FTP Integration, the "Target" field is equal to a target filename of storing data that is queried from SF.[/su_box] **On Query section:** - Input the Salesforce SOQL statement or you can click the button Query Editor to open a Query Editor ![](../images/2021/02/image_2021_02_11T08_03_54_919Z-2.png) - Save ![](../images/2021/02/image_2021_02_11T08_15_05_398Z.png) - Select your Interface - Click on the Process button ![](../images/2021/02/image_2021_02_11T08_17_04_666Z.png) - Process Completed - OK **Go to the Local File folder in PC** - Outbound data store in a File folder successfully ![](../images/2021/02/image_2021_02_11T08_18_56_972Z.png) **Case2: Export salesforce files by integrating through Agent ** - Create integration and interface (outbound) – **ContentVersion_SF-Agent** ![](../images/2021/02/image_2021_02_11T08_20_23_371Z.png) - Go to Interface Detail Page - Scroll down to SOQL Query for filter sObject section ![](../images/2021/02/image_2021_02_11T08_21_54_990Z.png) - Write a simple Query - Click on the Open Mapping Button ![](../images/2021/02/image_2021_02_11T09_01_02_751Z.png) - Map fields **PathOnClient & VersionData** - Select Ext Id as PathOnClient - Save **We need to find an integration for SF-Agent by clicking on Integration Name** ![](../images/2021/02/image_2021_02_11T09_04_08_700Z.png) - Select your Interface - Click on Edit Interface - Test your connection - Click on Test Query ![](../images/2021/02/image_2021_02_11T08_09_52_359Z-1.png) ![](../images/2021/02/image_2021_02_11T09_07_00_007Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Only Manually uploaded files are showed in Query Table For ContentVersion SObject[/su_box] ![](../images/2021/02/image_2021_02_11T09_08_56_333Z.png) - Save ![](../images/2021/02/image_2021_02_11T09_10_49_136Z.png) - Select your Interface - Click on the Process button ![](../images/2021/02/image_2021_02_11T09_38_55_149Z.png) - Congratulations Process Completed Click OK **Go to the Local File folder in PC** ![](../images/2021/02/image_2021_02_11T09_40_57_125Z.png) - The outbound data store in a File folder successfully ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: 3. How to use JSON Payload with V4/integrate? Slug: 3-how-to-use-json-payload-with-v4-integrate URL: https://help.skyvva.com/#article/3-how-to-use-json-payload-with-v4-integrate ================================================================================ # 3. How to use JSON Payload with V4/integrate? #### Introduction: - Our V4/integrate rest variant supports JSON, XML and CSV and therefore it is possible to pass the Rest envelope XML , JSON,CSV to the body of the v4/integrate. This means that for invoking the skyvva API we use only the rest variant ../services/apexrest/skyvvasolutions/v4/Integrate with either XML or JSON payload. - In the URL of V4 API, the query parameter is added in URL only. We have two type of response: 1. standard response 2. custom response using the response (outbound) interface to do the mapping #### 1. standard response **Pre-requisites:-** - Create an Integration - Create Metadata Provider - Create Repository. - Create a Message Type. #### 1. Create Inbound Interface:- a. Enter Metadata Provider. b. Enter Repository. c. Message Type. ![](../images/2020/12/v4.png) #### 2. Do Mapping:- ![](../images/2020/12/v4.1.png) - Save Mapping: ![](../images/2020/12/v4.2.png) #### 3. Configuration on postman side:- ![](../images/2020/12/v4.3.png) #### 1. V4 API:- V4 API pass Integration, Interface, mode, request-format, response-format parameter inside the URL query parameter. #### 2. The URL contains:- - Salesforce classic URL. - Integration name. - Interface name. - mode. - response-format. - request-format. **Please check the sample below:-** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] https://ruby-enterprise-95342-dev-ed.cs102.my.salesforce.com/services/apexrest/skyvvasolutions/V4/integrate?integration=V4_Integration&interface=V4 API&mode=Synchronous&response-format=JSON&request-format=JSON[/aux_code] #### 3. Authorization:- - Select No Auth. ![](../images/2020/12/v4.4.png) #### 4. Header:- - Enter "Bearer+Session ID". ![](../images/2020/12/v4.5.png) #### 5. Body:- - Enter JSON ,CSV or XML payload as per your message type which we have created earlier. ![](../images/2020/12/v4.6.png) #### 6. Send the Request:- - Click on send button. ![](../images/2020/12/v4.6-1.png) #### 7. Check the Result:- ![](../images/2020/12/v4.7.png) #### 8. Check Result on Message monitoring:- ![](../images/2020/12/v4.8.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to develop outbound interface to publish data into the RabitMQ queue? Title: 123. How to develop outbound interface to publish data into the RabitMQ queue? Slug: 123-how-to-develop-outbound-interface-to-publish-data-into-the-activemq-queue URL: https://help.skyvva.com/#article/123-how-to-develop-outbound-interface-to-publish-data-into-the-activemq-queue ================================================================================ # 123. How to develop outbound interface to publish data into the RabitMQ queue? Rabbit MQ differs from Active MQ and other message brokers in a way that we need to post a message to an Exchange provided by it. This Exchange will then forward the message to a queue or topic based on the routing key property. This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** ### Mandatory Properties - exchangeType - Pick List consisting of 4 values i.e. direct, topic, headers, fanOut. direct will be the default value. Its a String type value. - exchangeName - Name of the exchange. Its a String type property. - host- String type. Denotes the IP address of the Rabbit MQ server. - port- String type. Denotes the port number of the Rabbit MQ server. - routingKey - String type. Denotes the key with which an Exchange will bind in order to deliver or consume a message. ### Common Properties - username - String type. Contains the connection username. - password - String type. Contains the connection password. - isSSLRequired - Boolean. Default is false. Denotes whether to use SSL to connect to Message Broker. - filetype - Pick List. Should contain CSV, XML, JSON, Binary & EXCEL - separator - Pick list. Should contain following values , ; | Tab - has_file_header - Boolean - has_quotes - Boolean - xmlRootTag- String type. ![](../images/2021/02/Capture1-1.png) **How to configure New Agent Control Board?** To configure new agent control board follow the given steps: Step1: Create Integration. => Go custom Link => Clickon agent control board. ![](../images/2021/02/Untitled1-11.png) Step2: The custom link (Agent control board) Navigate to Dashboard of new agent control board. ![](../images/2021/02/Untitled2-11.png) Step 3: Create your own " Connection destination file or you can select existing one". Then click on Ping connection button.  Make sure server is running. ![](../images/2021/02/Untitled3-12.png) Step4: Click on ping connection button to make it online. ![](../images/2021/02/Untitled4-11.png) **How to check caching New Agent Control Board:** To check caching first you should create all the data. **Integration:** ![](../images/2021/02/Untitled1-12.png) **Interface Group:** ![](../images/2021/02/Untitled2-12.png) **Interfaces: ** ![](../images/2021/02/Untitled3-13.png) **Mapping****:** ![](../images/2021/02/Untitled4-12.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 123.1 How to use RabbitMQ Outbound Adapter for CSV Payload format? Slug: 123-1-how-to-use-rabbitmq-csv-outbound-adapter URL: https://help.skyvva.com/#article/123-1-how-to-use-rabbitmq-csv-outbound-adapter ================================================================================ # 123.1 How to use RabbitMQ Outbound Adapter for CSV Payload format? Rabbit MQ differs from Active MQ and other message brokers in a way that we need to post a message to an Exchange provided by it. This Exchange will then forward the message to a queue or topic based on the routing key property. This adapter supports 3 types of data formats i.e. **CSV**, **XML,** and **JSON.** [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We can check CSV Data on RabbitMQ Server: ** Link:**http://18.197.54.48:15672/#/queues. Where exchange will be automatically created once you callout code. [/su_box] #### UseCase: Agent RabitMQ Adapter for CSV payload. #### Objective: Test rabbitMQ outbound adapter for CSV Format #### Pre-requisite: - Create Integration. - Create Metadata Provider, IStructure Repository, and Create Flat Message Type. **Example:** - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository:**CSV_Repo - **Message Type:**[MyAccount](https://connect-ruby-833-dev-ed.lightning.force.com/lightning/r/a0c1X0000014eF8QAI/view) ![](../images/2021/02/Untitled1-13.png) #### Steps: **Step1:To Create Agent RabbitMQ CSV Outbound Adapter:** - Go to Integration (Example: Agent_RabbitMQ_Integration) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/02/Untitled2-13.png) ### Input values for Mandatory Properties - exchangeType - Direct - exchangeName - It can be anything. For example: CamelA - host- String type. Denotes the IP address of the Rabbit MQ server. - port- String type. Denotes the port number of the Rabbit MQ server. - routingKey - String type. It can be anything. **Configure Agent RabbitMQ CSV Outbound Adapter**: you need to enter adapter properties base on system requirement and Select Connection Destination (Example:CamelAmazonEC2RabbitMQAgent). **Step2: ****Create Outbound Interface:** Example: - Integration: Agent_RabbitMQ_Integration - Outbound Interface: Camel Agent RabbitMQ CSV OB ![](../images/2021/02/Untitled3-14.png) **step3: Link Outbound Adapter: **[**Camel Agent RabbitMQ CSV **](https://connect-ruby-833-dev-ed.lightning.force.com/lightning/r/a001X000004qwNiQAI/view)**OB** ![](../images/2021/02/Untitled4-13.png) **step4: Do mapping and save it.** ![](../images/2021/02/Untitled5-11.png) **Step5: Go to Developer console and callout:** **Callout:** skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0011j000011qHW8AAM','0011j000011qHW9AAM'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('Agent_RabbitMQ_Integration','Camel Agent RabbitMQ CSV OB',ids,'SYNC',c); **Step5: ****Check result on Message Monitoring:** ![](../images/2021/02/Untitled6-7.png) #### RabbitMQ Server: **Check CSV Data on RabbitMQ Server:** - **Open Link:**http://18.197.54.48:15672/#/queues - Username: admin - Password: admin **Go to Exchange** ![](../images/2021/02/Untitled8-3.png) After V3 Callout new Exchange is generated Example: **CamelAgentRabbitMQCSVOB** **(Note: CamelAgentRabbitMQCSVOBExchange name is coming from adapter configuration)** ![](../images/2021/02/Untitled7-6.png) ** ** **Click on the Exchange name, It will redirect you to the Exchange detail page.** ![](../images/2021/02/Untitled9-3.png) **Click on Queue -1323060771 It will navigate to the get the message section.** ![](../images/2021/02/Untitled10-1.png) - **Go to Get Messages block ** - **and click on Get Messages button.** ![](../images/2021/02/Untitled11-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 123.2 How to use RabbitMQ Outbound Adapter with XML Payload? Slug: 123-2-how-to-use-rabbitmq-for-outbound-adapter-with-json-payload URL: https://help.skyvva.com/#article/123-2-how-to-use-rabbitmq-for-outbound-adapter-with-json-payload ================================================================================ # 123.2 How to use RabbitMQ Outbound Adapter with XML Payload? Rabbit MQ differs from Active MQ and other message brokers in a way that we need to post a message to an Exchange provided by it. This Exchange will then forward the message to a queue or topic based on the routing key property. This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We can check XML Data on RabbitMQ Server: ** Link:**http://18.197.54.48:15672/#/queues. Where exchange will be automatically created once you callout code. [/su_box] #### UseCase: Agent RabitMQ Adapter for xml payload. #### Objective: Test rabbitMQ outbound adapter for xml Format #### Pre-requiste: - Create Integration. - Create Metadata Provider, IStructure Repository and Create Flat Message Type. **Example:** - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: XML**_Repo - **Message Type:**[MyAccount](https://connect-ruby-833-dev-ed.lightning.force.com/lightning/r/a0c1X0000014eF8QAI/view) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to develop inbound interface to consume message from RabitMQ queue? Title: 124. How to develop inbound interface to consume message from RabitMQ queue? Slug: 124-how-to-develop-inbound-interface-to-consume-message-from-rabitmq-queue URL: https://help.skyvva.com/#article/124-how-to-develop-inbound-interface-to-consume-message-from-rabitmq-queue ================================================================================ # 124. How to develop inbound interface to consume message from RabitMQ queue? Rabbit MQ differs from Active MQ and other message brokers in a way that we need to post a message to an Exchange provided by it. This Exchange will then forward the message to a queue or topic based on the routing key property. This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** #### Mandatory Properties - exchangeType - Pick List consisting of 4 values i.e. direct, topic, headers, fanOut. direct will be the default value. Its a String type value. - exchangeName - Name of the exchange. Its a String type property. - host- String type. Denotes the IP address of the Rabbit MQ server. - port- String type. Denotes the port number of the Rabbit MQ server. - routingKey - String type. Denotes the key with which an Exchange will bind in order to deliver or consume a message. #### Common Properties - username - String type. Contains the connection username. - password - String type. Contains the connection password. - isSSLRequired - Boolean. Default is false. Denotes whether to use SSL to connect to Message Broker. - filetype - Pick List. Should contain CSV, XML, JSON, Binary & EXCEL - separator - Pick list. Should contain following values , ; | Tab - has_file_header - Boolean - has_quotes - Boolean - xmlRootTag- String type. ![](../images/2021/02/Capture1-2.png) **How to configure New Agent Control Board?** To configure new agent control board follow the given steps: Step1: Create Integration. => Go custom Link => Clickon agent control board. ![](../images/2021/02/Untitled1-11.png) Step2: The custom link (Agent control board) Navigate to Dashboard of new agent control board. ![](../images/2021/02/Untitled2-11.png) Step 3: Create your own " Connection destination file or you can select existing one". Then click on Ping connection button.  Make sure server is running. ![](../images/2021/02/Untitled3-12.png) Step4: Click on ping connection button to make it online. ![](../images/2021/02/Untitled4-11.png) **How to check caching New Agent Control Board:** To check caching first you should create all the data. **Integration:** ![](../images/2021/02/Untitled1-12.png) **Interface Group:** ![](../images/2021/02/Untitled2-12.png) **Interfaces: ** ![](../images/2021/02/Untitled3-13.png) **Mapping****:** ![](../images/2021/02/Untitled4-12.png) Here we are showing usecase with Flat CSV, Hierarchical XML and Hierarchical JSON payload format. **Usecase with Flat CSV:** **Find the tutorial for "[How to use RabbitMQ Inbound Adapter with CSV Payload?](#article/124-1-how-to-use-rabbitmq-outbound-adapter-with-xml-payload)"** ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 124.1 How to use RabbitMQ Inbound Adapter with CSV Payload? Slug: 124-1-how-to-use-rabbitmq-outbound-adapter-with-xml-payload URL: https://help.skyvva.com/#article/124-1-how-to-use-rabbitmq-outbound-adapter-with-xml-payload ================================================================================ # 124.1 How to use RabbitMQ Inbound Adapter with CSV Payload? Rabbit MQ differs from Active MQ and other message brokers in a way that we need to post a message to an Exchange provided by it. This Exchange will then forward the message to a queue or topic based on the routing key property. This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We can check CSV Data on RabbitMQ Server: ** Link:**http://18.197.54.48:15672/#/queues. Where exchange will be automatically created once you strat route [/su_box] #### UseCase: Agent RabitMQ Adapter for CSV payload. #### Objective: Test rabbitMQ Inbound adapter for CSV Format #### Pre-requiste: - Create Integration. - Create Metadata Provider, IStructure Repository and Create Flat Message Type. - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: RabitMQCSV** - **Message Type:Root** ![](../images/2021/02/Capture2-2.png) #### Steps: **Step1:To Create Agent RabbitMQ CSV Inbound Adapter:** - Go to Integration (Example: [Agent_new _adapter](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0W1j000002FRdWEAW/view)) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/02/Capture3-1.png) **Step2  How to Create Agent RabbitMQ CSV Outbound Adapter:** - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/02/Capture4-1.png)![](../images/2021/02/Capture5-1.png) **Configure Agent RabbitMQ CSV Inbound Adapter**: you need to enter adapter properties base on system requirement and Select Connection Destination (Example:Agent LINUX). **Step3: Create Integration and Inbound Interface:** - Inbound Interface: [RabitMq_Inbound_CSV](https://momentum-agility-3353-dev-ed.lightning.force.com/one/one.app?#/sObject/a0a1j000003f3vHAAQ/view) - Metadata: [AgentRabitMQ_ActiveMQ_JMSCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0d1j000001lA4rAAE/view) - Respository:[RAbitMQCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0R1j000003fCbmEAE/view) - MessageType:[Root](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0c1j0000035tITAAY/view) - Adapter: RabitMQInbound_CSV ![](../images/2021/02/Capture6-1.png) **Step4: Do mapping** ![](../images/2021/02/Capture7-1.png) **[su_box title="Note" box_color="#2a8af0" title_color="#000000"] In Inbound direction we don't need to execute any callout logic because you are sending data RabbitMQ server to Salesforce side. You just need to start route example: go to adapter tab => All adapter will display in list view and you just need to click on start button and your route will be start automatically or you can change adapter status inactive to active and it’s also start route automatically. ****If you will make any changes inside adapter property then you need to stop route and start again after your changes will reflect to server.[/su_box]** ![](../images/2021/02/Capture12-1.png) - click on action button to start route. ![](../images/2021/02/Capture14-1.png) **Step 5:** To Send Data RabbitMQ Server to Salesforce side follow the given step: **Check CSV Data on RabbitMQ Server:** - **Open Link: **http://18.197.54.48:15672/#/queues - Username: admin - Password: admin **Go to Exchange.** ![](../images/2021/02/Capture8-2.png) **Click on Exchange name:****RabitMQ_Inboound_CSV** ![](../images/2021/02/Capture9-1.png) - Enter **RoutingKey** name same as configure inside adapter properties Example:RabitMQ_Inboound_CSV. - Enter CSV data inside Payload textarea. - Click on send button and check result on message monitoring. ![](../images/2021/02/Capture10-2.png) **After data sent successfully, you will get Message Published notification on web page.** ![](../images/2021/02/Capture11-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 124.2 How to use RabbitMQ Inbound Adapter with XML Payload? Slug: 124-2-how-to-use-rabbitmq-inbound-adapter-with-xml-payload URL: https://help.skyvva.com/#article/124-2-how-to-use-rabbitmq-inbound-adapter-with-xml-payload ================================================================================ # 124.2 How to use RabbitMQ Inbound Adapter with XML Payload? Rabbit MQ differs from Active MQ and other message brokers in a way that we need to post a message to an Exchange provided by it. This Exchange will then forward the message to a queue or topic based on the routing key property. This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We can check xml Data on RabbitMQ Server: ** Link:**http://18.197.54.48:15672/#/queues. Where exchange will be automatically created once you callout code. [/su_box] #### UseCase: Agent RabitMQ Adapter for xml payload. #### Objective: Test rabbitMQ Inbound adapter for xml Format #### Pre-requiste: - Create Integration. - Create Metadata Provider, IStructure Repository and Create Flat Message Type. - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: RabitMQXML** - **Message Type:Root** ![](../images/2021/02/Capture1-3.png) #### Steps: **Step1:To Create Agent RabbitMQ xml Inbound Adapter:** - Go to Integration (Example: [Agent_new _adapter](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0W1j000002FRdWEAW/view)) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/02/Capture3-1.png) **Step2  How to Create Agent RabbitMQ Xml Inbound Adapter:** - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/02/Capture2-3.png)![](../images/2021/02/Capture3-2.png) **Configure Agent RabbitMQ xml Inbound Adapter**: you need to enter adapter properties base on system requirement and Select Connection Destination (Example:Agent LINUX). **Step3: Create Integration and Inbound Interface:** - Inbound Interface: RabitMQ_Inbound_xml - Metadata: [AgentRabitMQ_ActiveMQ_JMSCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/one/one.app?#/sObject/a0d1j000001lA4rAAE/view) - Respository:RabitMQXML - MessageType:[Root](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0c1j0000035tITAAY/view) - Adapter: RabitMQInbound_XMl ![](../images/2021/02/Capture4-3.png) **Step4: Do mapping** ![](../images/2021/02/Capture5-2.png) **[su_box title="Note" box_color="#2a8af0" title_color="#000000"] In Inbound direction we don't need to execute any callout logic because you are sending data RabbitMQ server to Salesforce side. You just need to start route example: go to adapter tab => All adapter will display in list view and you just need to click on start button and your route will be start automatically or you can change adapter status inactive to active and it’s also start route automatically. ****If you will make any changes inside adapter property then you need to stop route and start again after your changes will reflect to server.[/su_box]** ![](../images/2021/02/Capture6-2.png) **Step 5:** To Send Data RabbitMQ Server to Salesforce side follow the given step: **Upload XML Data from RabbitMQ Server:** - **Open Link: **http://18.197.54.48:15672/#/queues - Username: admin - Password: admin **Go to Exchange.** ![](../images/2021/02/Capture7-2.png) **Click on Exchange name: ****RabitMQ_Inbound_xml** - Enter **RoutingKey** name same as configure inside adapter properties Example:RabitMQ_Inboound_XML. - Enter XML data inside Payload textarea. - Click on send button and check result on message monitoring. ![](../images/2021/02/Capture8-3.png) **After data sent successfully, you will get Message Published notification on Message monitor.** ![](../images/2021/02/Capture9-2.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 124.3 How to use RabbitMQ Inbound Adapter with JSON Payload? Slug: 124-3-how-to-use-rabbitmq-inbound-adapter-with-json-payload URL: https://help.skyvva.com/#article/124-3-how-to-use-rabbitmq-inbound-adapter-with-json-payload ================================================================================ # 124.3 How to use RabbitMQ Inbound Adapter with JSON Payload? Rabbit MQ differs from Active MQ and other message brokers in a way that we need to post a message to an Exchange provided by it. This Exchange will then forward the message to a queue or topic based on the routing key property. This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We can check JSON Data on RabbitMQ Server: ** Link:**http://18.197.54.48:15672/#/queues. Where exchange will be automatically created once you callout code. [/su_box] #### UseCase: Agent RabitMQ Adapter for Json payload. #### Objective: Test rabbitMQ Inbound adapter for Json Format #### Pre-requiste: - Create Integration. - Create Metadata Provider, IStructure Repository and Create Flat Message Type. - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: RabitMQJSON** - **Message Type: AccountMT** ![](../images/2021/02/capture1-5.png) #### Steps: **Step1:To Create Agent RabbitMQ JSONInbound Adapter:** - Go to Integration (Example: Agent_RabbitMQ_Integration) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 123.3 How to use RabbitMQ Outbound Adapter with JSON Payload? Slug: 123-3-how-to-use-rabbitmq-outbound-adapter-with-json-payload URL: https://help.skyvva.com/#article/123-3-how-to-use-rabbitmq-outbound-adapter-with-json-payload ================================================================================ # 123.3 How to use RabbitMQ Outbound Adapter with JSON Payload? Rabbit MQ differs from Active MQ and other message brokers in a way that we need to post a message to an Exchange provided by it. This Exchange will then forward the message to a queue or topic based on the routing key property. This adapter supports 3 types of data formats i.e. **CSV**, **XML,** and **JSON.** [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We can check JSon Data on RabbitMQ Server: ** Link:**http://18.197.54.48:15672/#/queues. Where exchange will be automatically created once you callout code. [/su_box] #### UseCase: Agent RabitMQ Adapter for JSON payload. #### Objective: Test rabbitMQ outbound adapter for Json Format #### Pre-requisite: - Create Integration. - Create Metadata Provider, IStructure Repository, and Create Hierarchical Message Type. **Example:** - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository:RabitMQJSON** - **Message Type:[AccountMT](https://momentum-agility-3353-dev-ed.lightning.force.com/one/one.app?#/sObject/a0c1j0000036E10AAE/view)** ![](../images/2021/02/capture1-5.png) #### Steps: **Step1:To Create Agent RabbitMQ JSONOutbound Adapter:** - Go to Integration (Example: Agent_RabbitMQ_Integration) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/02/Capture2-4.png)![](../images/2021/02/Capture3-3.png) ### Input values for Mandatory Properties - exchangeType - Direct - exchangeName - It can be anything. For example: RabitMQ_Outbound_JSON - host- String type. Denotes the IP address of the Rabbit MQ server. - port- String type. Denotes the port number of the Rabbit MQ server. - routingKey - String type. It can be anything. **Configure Agent RabbitMQ JSON ** **Outbound Adapter**: you need to enter adapter properties base on system requirement and Select Connection Destination (Example:AgentLinux). **Step2: ****Create Outbound Interface:** - Integration: Agent_RabbitMQ_Integration - Outbound Interface: RabitMQ_outbound_JSON ![](../images/2021/02/capture4-4.png) **step4: Do mapping and save it.** ![](../images/2021/02/Capture5-3.png) **Step5: Go to Developer console and callout:** **Callout:** skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0011j000012KfGvAAK','0011j0000120pa3AAA'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('Agent_new _adapter','RabitMQ_outbound_JSON',ids,'SYNC',c); **Step5: ****Check result on Message Monitoring:** ![](../images/2021/02/Capture6-3.png) #### RabbitMQ Server: **Check JSON Data on RabbitMQ Server:** - **Open Link:**http://18.197.54.48:15672/#/queues - Username: admin - Password: admin **Go to Exchange** After V3 Callout new Exchange is generated Example: [RabitMQ_outbound_JSON](https://momentum-agility-3353-dev-ed.lightning.force.com/one/one.app?#/sObject/a0a1j000003f70TAAQ/view) **(Note: [RabitMQ_outbound_JSON](https://momentum-agility-3353-dev-ed.lightning.force.com/one/one.app?#/sObject/a0a1j000003f70TAAQ/view) Exchange name is coming from adapter configuration)** ![](../images/2021/02/capture7-3.png) **Click on the Exchange name, It will redirect you to the Exchange detail page.** ![](../images/2021/02/capture8-4.png) **Click on Queue ****-2129888673 ****It will navigate to the get the message section.** ![](../images/2021/02/capture9-3.png) - **Go to Get Messages block ** - **and click on Get Messages button.** ![](../images/2021/02/capture10-3.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to develop inbound interface to consume message from ActiveMQ queue? Title: 125. How to develop inbound interface to consume message from ActiveMQ queue? Slug: 125-how-to-develop-inbound-interface-to-consume-message-from-activemq-queue URL: https://help.skyvva.com/#article/125-how-to-develop-inbound-interface-to-consume-message-from-activemq-queue ================================================================================ # 125. How to develop inbound interface to consume message from ActiveMQ queue? ActiveMQ adapter is used to send messages. Messages are just what they sound like, payloads of data that can be shipped between various systems. These payloads can have headers and properties associated with them This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** ### Common Properties Following are mandatory properties: **host** - Specify the activemq host server domain name/ip address e.g. localhost **port** - Specify the activemq port, default or standard port is 61616 **destinationType** - This is a pick list, it can only have the following values i.e. queue or topic. **destinationName** - This is the name of the queue or topic e.g. test-queue, test-topic1 etc. filetype These are optional common properties. **clientId** - String value to specify an id for the client. **durableSubscriptionName** - String value to describe the subscription name **username** - String value to denote the username used to authenticate to ActiveMQ **password** - String value to denote the password for ActiveMQ authentication. **isSSLRequired** - boolean value to denote whether connection has to be configured with SSL or not. separator has_file_header has_quotes adapter_instance ![](../images/2021/02/Capture1-6.png) **How to configure New Agent Control Board:** - Go to Integration (New_Agent_Integration) - Click on link AGENT Control Board ![](../images/2021/02/Untitled1-14.png) It navigate to: ![](../images/2021/02/Untitled2-14.png) - Select Connection destination file or you can create new connection destination. - Click on Continue button. ![](../images/2021/02/Untitled3-15.png) **How to check caching New Agent Control Board:** ** Integration****:**![](../images/2021/02/Untitled4-14.png) **Interface Group:** ![](../images/2021/02/Untitled5-12.png) **Interfaces** ![](../images/2021/02/Untitled6-8.png) **Mapping** ![](../images/2021/02/Untitled7-7.png) **Note: Check other required caches base on your requirement.** As the ActiveMQ supports all the three type of data formats i.e. **CSV**, **XML** and **JSON. **We will see usecase for all payload format. #### UseCAse for CSV payload for Inbound Direction: To find the tutorial for CSV payload please click on the link. [How to use ActiveMQ Inbound Adapter with CSV Payload?](#article/125-1-how-to-use-activemq-inbound-adapter-with-csv-payload) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 125.1 How to use ActiveMQ Inbound Adapter with CSV Payload? Slug: 125-1-how-to-use-activemq-inbound-adapter-with-csv-payload URL: https://help.skyvva.com/#article/125-1-how-to-use-activemq-inbound-adapter-with-csv-payload ================================================================================ # 125.1 How to use ActiveMQ Inbound Adapter with CSV Payload? ActiveMQ adapter is used to send messages. Messages are just what they sound like, payloads of data that can be shipped between various systems. These payloads can have headers and properties associated with them This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** #### UseCase: Agent ActiveMQ Adapter for CSV payload. #### Objective: Test ActiveMQ Inbound adapter for CSV Format #### Pre-requiste: - Create Integration. - Create Metadata Provider, IStructure Repository and Create Flat Message Type. - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: RabitMQCSV** - **Message Type:Root** ![](../images/2021/02/Capture2-2.png) #### **Step1:To Create Agent ActiveMQ CSV Inbound Adapter:** - Go to Integration (Example: [Agent_new _adapter](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0W1j000002FRdWEAW/view)) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/Capture2-1.png) **Step2:  How to Create Agent ActiveMQ CSV Inbound Adapter:** - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/Capture3.png) **Configure Agent RabbitMQ CSV Inbound Adapter**: you need to enter adapter properties base on system requirement and Select Connection Destination (Example:Agent LINUX). **Step3: Create Integration and Inbound Interface:** - Inbound Interface: ActiveMQ_Intbound_xml - Metadata: [AgentRabitMQ_ActiveMQ_JMSCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0d1j000001lA4rAAE/view) - Respository:[RAbitMQCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0R1j000003fCbmEAE/view) - MessageType:[Root](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0c1j0000035tITAAY/view) - Adapter: RabitMQInbound_CSV #### **Step4: Do mapping** ![](../images/2021/02/Capture7-1.png) **[su_box title="Note" box_color="#2a8af0" title_color="#000000"] In Inbound direction we don't need to execute any callout logic because you are sending data RabbitMQ server to Salesforce side. You just need to start route example: go to adapter tab => All adapter will display in list view and you just need to click on start button and your route will be start automatically or you can change adapter status inactive to active and it’s also start route automatically. ****If you will make any changes inside adapter property then you need to stop route and start again after your changes will reflect to server.[/su_box]** ![](../images/2021/03/Capture5.png) **Step 5:** To Send Data ActiveMQ Server to Salesforce side follow the given step: **Check CSV Data on ActiveMQ Server:** - **Open Link: **[http://18.197.54.48:15672/#/queues](http://18.197.54.48:8161/admin/queues.jsp) - Username: admin - Password: admin **Go to Queues:** ![](../images/2021/03/Capture6.png) - click on queues. - check your queue is created. Here Name is ActiveMQ_inbound_csv. ![](../images/2021/03/Capture7.png) To send data click from ActiveMQ server: - click on SEND - Select your Destination - Put your data in Message body section(It should be be minified) - Click on send button to send data. ![](../images/2021/03/Capture8.png) Check data on message monitoring. ![](../images/2021/03/Capture9.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 125.2 How to use ActiveMQ Inbound Adapter with xml Payload? Slug: 125-2-how-to-use-activemq-inbound-adapter-with-xml-payload URL: https://help.skyvva.com/#article/125-2-how-to-use-activemq-inbound-adapter-with-xml-payload ================================================================================ # 125.2 How to use ActiveMQ Inbound Adapter with xml Payload? ActiveMQ adapter is used to send messages. Messages are just what they sound like, payloads of data that can be shipped between various systems. These payloads can have headers and properties associated with them This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** #### UseCase: Agent ActiveMQ Adapter for xml payload. #### Objective: Test ActiveMQ Inbound adapter for xml Format #### Pre-requisite: - Create Integration. - Create Metadata Provider, IStructure Repository and Create Flat Message Type. - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: RabitMQXML** - **Message Type:Root** ![](../images/2021/02/Capture1-3.png) #### Steps: **Step1:To Create Agent ActiveMQ xml Inbound Adapter:** - Go to Integration (Example: [ActiveMQ Adapter](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0W1j000002FRdWEAW/view)) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/Capture2-1.png) **Step2  How to Create Agent ActiveMQ Xml Inbound Adapter:** - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/Capture1.png) **Configure Agent RabbitMQ xml Inbound Adapter**: you need to enter adapter properties base on system requirement and Select Connection Destination (Example:Agent LINUX). **Step3: Create Integration and Inbound Interface:** - Inbound Interface:ActiveMQ_Inbound_xml - Metadata: [AgentRabitMQ_ActiveMQ_JMSCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/one/one.app?#/sObject/a0d1j000001lA4rAAE/view) - Respository:RabitMQXML - MessageType:[Root](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0c1j0000035tITAAY/view) - Adapter: ActiveMQ_Inbound_xml ![](../images/2021/03/Capture2-2.png) **Step4: Do mapping** ![](../images/2021/03/Capture3-1.png) **[su_box title="Note" box_color="#2a8af0" title_color="#000000"] In Inbound direction we don't need to execute any callout logic because you are sending data RabbitMQ server to Salesforce side. You just need to start route example: go to adapter tab => All adapter will display in list view and you just need to click on start button and your route will be start automatically or you can change adapter status inactive to active and it’s also start route automatically. ****If you will make any changes inside adapter property then you need to stop route and start again after your changes will reflect to server.[/su_box]** ![](../images/2021/03/Capture4-1.png) **Step 5:** To Send Data ActiveMQ Server to Salesforce side follow the given step: **Check CSV Data on ActiveMQ Server:** - **Open Link: **[http://18.197.54.48:15672/#/queues](http://18.197.54.48:8161/admin/queues.jsp) - Username: admin - Password: admin **Go to Queues:** ![](../images/2021/03/Capture6.png) - click on queues. - check your queue is created. Here Name is ActiveMQ_inbound_xml ![](../images/2021/03/Capture5-1.png) To send data click from ActiveMQ server: - click on SEND - Select your Destination - Put your data in Message body section(It should be be minified) - Click on send button to send data. ![](../images/2021/03/Capture6-1.png) Check result on message monitor: ![](../images/2021/03/Capture7-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 125.3 How to use ActiveMQ Inbound Adapter with JSON Payload? Slug: 125-3-how-to-use-activemq-inbound-adapter-with-json-payload URL: https://help.skyvva.com/#article/125-3-how-to-use-activemq-inbound-adapter-with-json-payload ================================================================================ # 125.3 How to use ActiveMQ Inbound Adapter with JSON Payload? ActiveMQ adapter is used to send messages. Messages are just what they sound like, payloads of data that can be shipped between various systems. These payloads can have headers and properties associated with them This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** #### UseCase: Agent ActiveMQ Adapter for JSON payload. #### Objective: Test ActiveMQ Inbound adapter for JSON Format #### Pre-requiste: - Create Integration. - Create Metadata Provider, IStructure Repository and Create Flat Message Type. - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: ActiveMQ_JSON** - **Message Type:Root** ![](../images/2021/03/capture1-1.png) **Step1:To Create Agent ActiveMQ Json Inbound Adapter:** - Go to Integration (Example: [Agent_new _adapter](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0W1j000002FRdWEAW/view)) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/Capture2-3.png) **Step2:  How to Create Agent ActiveMQ Json Inbound Adapter:** - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/Capture3-2.png) **Configure Agent RabbitMQ CSV Inbound Adapter**: you need to enter adapter properties base on system requirement and Select Connection Destination (Example:Agent LINUX). **Step3: Create Integration and Inbound Interface:** - Inbound Interface: ActiveMQ_Intbound_xml - Metadata: [AgentRabitMQ_ActiveMQ_JMSCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0d1j000001lA4rAAE/view) - Respository:[RAbitMQCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0R1j000003fCbmEAE/view) - MessageType:[Root](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0c1j0000035tITAAY/view) - Adapter: ActiveMQ_Inbound_JSON ![](../images/2021/03/capture4-2.png) **Step4: Do mapping** ![](../images/2021/03/Capture5-2.png) **[su_box title="Note" box_color="#2a8af0" title_color="#000000"] In Inbound direction we don't need to execute any callout logic because you are sending data RabbitMQ server to Salesforce side. You just need to start route example: go to adapter tab => All adapter will display in list view and you just need to click on start button and your route will be start automatically or you can change adapter status inactive to active and it’s also start route automatically. ****If you will make any changes inside adapter property then you need to stop route and start again after your changes will reflect to server.[/su_box]** ![](../images/2021/03/capture6-2.png) **Step 5:** To Send Data ActiveMQ Server to Salesforce side follow the given step: **Check CSV Data on ActiveMQ Server:** - **Open Link: **[http://18.197.54.48:15672/#/queues](http://18.197.54.48:8161/admin/queues.jsp) - Username: admin - Password: admin **Go to Queues:** ![](../images/2021/03/Capture6.png) - click on queues. - check your queue is created. Here Name is ActiveMQ_Inbound_JSON. ![](../images/2021/03/capture7-2.png) To send data click from ActiveMQ server: - click on SEND - Select your Destination - Put your data in Message body section(It should be be minified) - Click on send button to send data. ![](../images/2021/03/capture8-1.png) Check result on message monitoring: ![](../images/2021/03/Capture9-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to develop outbound interface to publish data into the ActiveMQ queue? Title: 126. How to develop outbound interface to publish data into the ActiveMQ queue? Slug: 126-how-to-develop-outbound-interface-to-publish-data-into-the-activemq-queue URL: https://help.skyvva.com/#article/126-how-to-develop-outbound-interface-to-publish-data-into-the-activemq-queue ================================================================================ # 126. How to develop outbound interface to publish data into the ActiveMQ queue? ActiveMQ adapter is used to send messages. Messages are just what they sound like, payloads of data that can be shipped between various systems. These payloads can have headers and properties associated with them This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** ### Common Properties Following are mandatory properties: **host** - Specify the activemq host server domain name/ip address e.g. localhost **port** - Specify the activemq port, default or standard port is 61616 **destinationType** - This is a pick list, it can only have the following values i.e. queue or topic. **destinationName** - This is the name of the queue or topic e.g. test-queue, test-topic1 etc. filetype These are optional common properties. **clientId** - String value to specify an id for the client. **durableSubscriptionName** - String value to describe the subscription name **username** - String value to denote the username used to authenticate to ActiveMQ **password** - String value to denote the password for ActiveMQ authentication. **isSSLRequired** - boolean value to denote whether connection has to be configured with SSL or not. separator has_file_header has_quotes adapter_instance **How to configure New Agent Control Board:** - Go to Integration (New_Agent_Integration) - Click on link AGENT Control Board ![](../images/2021/02/Untitled1-14.png) It navigate to: ![](../images/2021/02/Untitled2-14.png) - Select Connection destination file or you can create new connection destination. - Click on Continue button. ![](../images/2021/02/Untitled3-15.png) **How to check caching New Agent Control Board:** ** Integration****:**![](../images/2021/02/Untitled4-14.png) **Interface Group:** ![](../images/2021/02/Untitled5-12.png) **Interfaces** ![](../images/2021/02/Untitled6-8.png) **Mapping** ![](../images/2021/02/Untitled7-7.png) **Note: Check other required caches base on your requirement.** As the ActiveMQ supports all the three type of data formats i.e. **CSV**, **XML** and **JSON. **We will see usecase for all payload format. #### UseCAse for CSV payload for Inbound Direction: To find the tutorial for CSV payload please click on the link. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 126.1 How to use ActiveMQ Outbound Adapter with CSV Payload? Slug: 126-1-how-to-use-activemq-outbound-adapter-with-csv-payload URL: https://help.skyvva.com/#article/126-1-how-to-use-activemq-outbound-adapter-with-csv-payload ================================================================================ # 126.1 How to use ActiveMQ Outbound Adapter with CSV Payload? ActiveMQ adapter is used to send messages. Messages are just what they sound like, payloads of data that can be shipped between various systems. These payloads can have headers and properties associated with them This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** #### UseCase: Agent ActiveMQ Adapter for CSV payload. #### Objective: Test ActiveMQ Inbound adapter for CSV Format #### Pre-requiste: - Create Integration. - Create Metadata Provider, IStructure Repository and Create Flat Message Type. - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: ACtiveMQCSV** - **Message Type:Root** ![](../images/2021/03/Capture2-4.png) **Step1:To Create Agent ActiveMQ CSV Inbound Adapter:** - Go to Integration (Example: [Agent_new _adapter](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0W1j000002FRdWEAW/view)) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/Capture1-3.png) **Configure Agent RabbitMQ CSV Inbound Adapter**: you need to enter adapter properties base on system requirement and Select Connection Destination (Example:Agent LINUX). **Step3: Create Integration and Inbound Interface:** - Inbound Interface: ActiveMQ_Intbound_xml - Metadata: [AgentRabitMQ_ActiveMQ_JMSCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0d1j000001lA4rAAE/view) - Respository:[RAbitMQCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0R1j000003fCbmEAE/view) - MessageType:[Root](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0c1j0000035tITAAY/view) - Adapter: ACtiveMQ_outbound_csv ![](../images/2021/03/Capture3-3.png) **Step4: Do mapping** ![](../images/2021/03/Capture4-3.png) **Step5: Go to Developer console and callout:** **Callout:** skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0011X00000nMzy4QAC','0011X00000nMy8jQAC'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('ActiveMQ Adapter','ActiveMQ_outbound_csv',ids,'SYNC',c); **Step5: ****Check result on Message Monitoring:** ![](../images/2021/03/Capture5-3.png) #### ActiveMQ Server: **Check CSV Data on ActiveMQ Server:** - **Open Link: http://18.197.54.48:8161/admin** - [Username: admin](http://18.197.54.48:8161/admin) - Password: admin **Go to Queue:** ![](../images/2021/03/Capture6-3.png) click on the Queue name: ![](../images/2021/03/Capture7-3.png) Click on Message ID generated on server to see message detail: ![](../images/2021/03/Capture8.files_.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 126.3 How to use ActiveMQ Outbound Adapter with JSON Payload? Slug: 126-3-how-to-use-activemq-outbound-adapter-with-json-payload URL: https://help.skyvva.com/#article/126-3-how-to-use-activemq-outbound-adapter-with-json-payload ================================================================================ # 126.3 How to use ActiveMQ Outbound Adapter with JSON Payload? ActiveMQ adapter is used to send messages. Messages are just what they sound like, payloads of data that can be shipped between various systems. These payloads can have headers and properties associated with them This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** #### UseCase: Agent ActiveMQ Adapter for JSON payload. #### Objective: Test ActiveMQ Outbound adapter for JSON Format #### Pre-requiste: - Create Integration. - Create Metadata Provider, IStructure Repository and Create Flat Message Type. - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: ACtiveMQJSON** - **Message Type:Root** ![](../images/2021/03/Capture1-4.png) **Step1:To Create Agent ActiveMQ Json Outbound Adapter:** - Go to Integration (Example: [Agent_new _adapter](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0W1j000002FRdWEAW/view)) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/Capture2-3.png) **Step2:  How to Create Agent ActiveMQ Json Inbound Adapter:** - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/Capture2-5.png) **Configure Agent RabbitMQ CSV Inbound Adapter**: you need to enter adapter properties base on system requirement and Select Connection Destination (Example:Agent LINUX). **Step3: Create Integration and Outbound Interface:** - Inbound Interface: ActiveMQ_Intbound_xml - Metadata: [AgentRabitMQ_ActiveMQ_JMSCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0d1j000001lA4rAAE/view) - Respository:[RAbitMQCSV](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0R1j000003fCbmEAE/view) - MessageType:[Root](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0c1j0000035tITAAY/view) - Adapter: ActiveMQ_Outbound_JSON ![](../images/2021/03/Capture3-4.png) **Step4: Do mapping** ![](../images/2021/03/Capture4-4.png) **Callout:** skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0011X00000nMy8jQAC','0011X00000nO1KoQAK'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('ActiveMQ Adapter','ActiveMQ_outbound_JSON',ids,'SYNC',c); **Step5: ****Check result on Message Monitoring:** ![](../images/2021/03/Capture5-4.png) #### ActiveMQ Server: **Check CSV Data on ActiveMQ Server:** - **Open Link: http://18.197.54.48:8161/admin** - [Username: admin](http://18.197.54.48:8161/admin) - Password: admin **Go to Queue:** ![](../images/2021/03/Capture6-5.png) click on the Queue name: ![](../images/2021/03/Capture7-4.png) Click on Message ID generated on server to see message detail: ![](../images/2021/03/Capture8-2.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 127.1 Inbound JMS Adpater Slug: 127-1-inbound-jms-adpater URL: https://help.skyvva.com/#article/127-1-inbound-jms-adpater ================================================================================ # 127.1 Inbound JMS Adpater **Learning Objectives:-** **This unit describes:-** - How to develop an Inbound interface for an inbound JMS Adapter? #### Introduction: In this tutorial, we will learn How to develop an Inbound interface for an inbound JMS Adapter. This functionality is available from v2.47 onwards. In simple words, **SKYVVA** JMS Adapter, users can easily push data to a topic or queue and perform operations on a schedule or process urgent messages immediately. You can apply priority processing to specific records in queues and topics. Publish data means Inbound JMS Adapter. We need an Inbound JMS Adapter when we want data into salesforce. So now we are going to check the use cases for the Inbound JMS Adapter i.e, for Publisher. To configure, firstly we need to learn and follow some steps: **How to configure New Agent Control Board?** To configure a new agent control board follow the given steps: Step1: Create Integration. => Go custom Link => Clickon agent control board. ![](../images/2021/02/Untitled1-11.png) Step2: The custom link (Agent control board) Navigate to the Dashboard of the new agent control board. - Create your own " Connection destination file or you can select the existing one". Then click on the Ping connection button.  Make sure the server is running. - Select type "Agent JMS" Adapter. ![](../images/2021/03/JMS-1.png) Step3: Fill in all the fields of the agent credential and click on the Ping Agent Connection button. ![](../images/2021/03/jms1.png) Step4: Fill in all the fields of the Salesforce credential and click on the Ping Salesforce Connection button. ![](../images/2021/03/jms2.png) **How to check caching New Agent Control Board:** To check caching first you should create all the data. **Integration:** ![](../images/2021/03/jms3.png) **Interface Group:** ![](../images/2021/03/jms4.png) **Interface:** ![](../images/2021/03/jms5.png) **Mapping:** ![](../images/2021/03/jms6.png) #### Use Cases: - Using file type CSV - Using file type XML - Using file type JSON #### 1. File type CSV: **Pre-requisite:** - Create Integration. - Create Metadata Provider, IStructure Repository, and Create Flat Message Type. - **Metadata Provider: **Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: **CSV_Repo - **Message Type: **MyAccount ![](../images/2021/03/jms7.png) #### Steps: **Step1:To Create Agent JMS CSV Inbound Adapter:** - Go to Integration (Example: Agent_JMS_Integration) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. **Configure Agent JMS CSV Inbound Adapter**: You need to enter adapter properties base on system requirement and Select Connection Destination (Example: CamelAmazonEC2JMSAgent). No need to add a username and password because it is the default admin on the agent side. Here I’m testing Agent JMS adapter with MQ Product Type = ActiveMQ also you can test Agent JMS adapter with other systems like you need to configure adapter property base on your system configuration. Example: host, port, etc. ![](../images/2021/03/jms8.png) ![](../images/2021/03/jms9.png) **Step2: Create Integration and Inbound Interface:** - Integration: Agent_JMS_Integration - Inbound Interface: Camel Agent JMS CSV IB - Metadata: Agent_ActiveMQ_RabbitMQ_JMS_Metadata - Repository: CSV_Repo - MessageType: MyAccount - Adapter: Camel Agent JMS CSV IB ![](../images/2021/03/jms10.png) ![](../images/2021/03/jms11.png) **Step3: Mapping** ![](../images/2021/03/jms12.png) ****[su_box title="Note" box_color="#2a8af0" title_color="#000000"] ****No need to execute any callout logic because you are sending data ActiveMQ server to the Salesforce side. You just need to start route example: Go to adapter tab => All adapter will display in the list view and you need to click on the start button and your route will be started automatically or you can change adapter status inactive to active and it also starts route automatically. If you will make any changes inside the adapter property then you need to stop the route and start again after your changes will reflect server.**[/su_box]** ![](../images/2021/03/jms13.png) **Step4: Send Data ActiveMQ Server to Salesforce side:** ****[su_box title="Note" box_color="#2a8af0" title_color="#000000"] ****When you start the route then ActiveMQ will automatically generate a queue with a Destination name like CamelAgentJMSCSVIB or if it will not create a queue then you can create by manually using ActiveMQ window and click on Send to link on the right-hand side.**[/su_box]** - **Check CSV Data on ActiveMQ Server:** **Open Link: **[http://18.197.54.48:8161/admin/browse.jsp](http://18.197.54.48:8161/admin/browse.jsp) Username: admin Password: admin **Go to queue. Click on queue example: CamelAgentJMSCSVIB**. ![](../images/2021/03/jms14.png) - The next screen is used to send CSV data to the Salesforce server. ![](../images/2021/03/jms15.png) - Click on the send button and check the result on message monitoring. **Step4: Message Monitoring** ![](../images/2021/03/jms16.png) #### 2. File type XML: **Pre-requisite:** - Create Integration. - Create Metadata Provider, IStructure Repository, and Create Flat Message Type. - **Metadata Provider: **Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: **CSV_Repo - **Message Type: **MyAccount #### Steps: **Step1:To Create Agent JMS CSV Inbound Adapter:** - Go to Integration (Example: Agent_JMS_Integration) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/jms17.png) ![](../images/2021/03/jms18.png) **Start Route:** ![](../images/2021/03/jms19.png) **Step2: Create Integration and Inbound Interface:** - Integration: Agent_JMS_Integration - Inbound Interface: Camel Agent JMS XML IB - Metadata: Agent_ActiveMQ_RabbitMQ_JMS_Metadata - Repository: XML_Repo - MessageType: account - Adapter: Camel Agent JMS XML IB ![](../images/2021/03/jms20.png) **Step3: Mapping** ![](../images/2021/03/jms21.png) **Step4: Send Data ActiveMQ Server to Salesforce side:** ****[su_box title="Note" box_color="#2a8af0" title_color="#000000"] ****When you start the route then ActiveMQ will automatically generate a queue with a Destination name like CamelAgentJMSXMLIB or if it will not create a queue then you can create by manually using ActiveMQ window and click on Send to link on the right-hand side.**[/su_box]** - **Check XML Data on ActiveMQ Server:** **Open Link: **[http://18.197.54.48:8161/admin/browse.jsp](http://18.197.54.48:8161/admin/browse.jsp) Username: admin Password: admin **Go to queue. Click on queue example: CamelAgentJMSXMLIB**. ![](../images/2021/03/jms22.png) - The next screen is used to send CSV data to the Salesforce server. ![](../images/2021/03/jms23.png) **Step5: Message Monitoring** ![](../images/2021/03/jms24.png) #### 3. File type JSON: **Pre-requisite:** - Create Integration. - Create Metadata Provider, IStructure Repository, and Create Flat Message Type. - **Metadata Provider: **Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: **JSON_Inbound_Repo - **Message Type:  **rootNode #### Steps: **Step1:To Create Agent JMS JSON Inbound Adapter:** - Go to Integration (Example: Agent_JMS_Integration) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/jms25.png) ![](../images/2021/03/jms26.png) **Start Route:** ![](../images/2021/03/jms27.png) **Step2: Create Integration and Inbound Interface:** - Integration: Agent_JMS_Integration - Inbound Interface: Camel Agent JMS JSON IB - Metadata: Agent_ActiveMQ_RabbitMQ_JMS_Metadata - Repository: JSON_Inbound_Repo - MessageType: rootNode - Adapter: Camel Agent JMS JSON IB ![](../images/2021/03/jms28.png) **Step3: Mapping** ![](../images/2021/03/jms29.png) **Step4: Send Data ActiveMQ Server to Salesforce side:** ****[su_box title="Note" box_color="#2a8af0" title_color="#000000"] ****When you start the route then ActiveMQ will automatically generate a queue with a Destination name like CamelAgentJMSJSONIB or if it will not create a queue then you can create by manually using ActiveMQ window and click on Send to link on the right-hand side.**[/su_box]** - **Check JSON Data on ActiveMQ Server:** **Open Link: **[http://18.197.54.48:8161/admin/browse.jsp](http://18.197.54.48:8161/admin/browse.jsp) Username: admin Password: admin **Go to queue. Click on queue example: CamelAgentJMSJSONIB**. ![](../images/2021/03/jms30.png) - The next screen is used to send CSV data to the Salesforce server. ![](../images/2021/03/jms31.png) **Step5: Message Monitoring** ![](../images/2021/03/jms32.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 127.2 Outbound JMS Adapter Slug: 127-2-outbound-jms-adapter URL: https://help.skyvva.com/#article/127-2-outbound-jms-adapter ================================================================================ # 127.2 Outbound JMS Adapter **Learning Objectives:-** **This unit describes:-** - How to develop an Outbound interface for an Outbound JMS Adapter? #### Introduction: In this tutorial, we will learn How to develop an Inbound interface for an Outbound JMS Adapter. This functionality is available from v2.47 onwards. In simple words, **SKYVVA** JMS Adapter, users can easily push data to a topic or queue and perform operations on a schedule or process urgent messages immediately. You can apply priority processing to specific records in queues and topics. Consume data means Outbound JMS Adapter. We need an Outbound JMS Adapter when we want data out to salesforce. So now we are going to check the use cases for the Outbound JMS Adapter i.e, for Consumer. To configure, firstly we need to learn and follow some steps: **How to configure New Agent Control Board?** To configure a new agent control board follow the given steps: Step1: Create Integration. => Go custom Link => Clickon agent control board. ![](../images/2021/02/Untitled1-11.png) Step2: The custom link (Agent control board) Navigate to the Dashboard of the new agent control board. - Create your own " Connection destination file or you can select the existing one". Then click on the Ping connection button.  Make sure the server is running. - Select type "Agent JMS" Adapter. ![](../images/2021/03/JMS-1.png) Step3: Fill in all the fields of the agent credential and click on the Ping Agent Connection button. ![](../images/2021/03/jms1.png) Step4: Fill in all the fields of the Salesforce credential and click on the Ping Salesforce Connection button. ![](../images/2021/03/jms2.png) **How to check caching New Agent Control Board:** To check caching first you should create all the data. **Integration:** ![](../images/2021/03/jms3.png) **Interface Group:** ![](../images/2021/03/jms4.png) **Interface:** ![](../images/2021/03/jms5.png) **Mapping:** ![](../images/2021/03/jms6.png) #### Use Cases: - Using file type CSV - Using file type XML - Using file type JSON #### 1. File type CSV: **Pre-requisite:** - Create Integration. - Create Metadata Provider, IStructure Repository, and Create Flat Message Type. - **Metadata Provider: **Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: **CSV_Repo - **Message Type: **MyAccount ![](../images/2021/03/jms7.png) #### Steps: **Step1:To Create Agent JMS CSV Outbound Adapter:** - Go to Integration (Example: Agent_JMS_Integration) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. **Configure Agent JMS CSV Outbound Adapter**: You need to enter adapter properties base on system requirement and Select Connection Destination (Example: CamelAmazonEC2JMSAgent). No need to add a username and password because it is the default admin on the agent side. Here I’m testing Agent JMS adapter with MQ Product Type = ACTIVEMQ also you can test the Agent JMS adapter with another system like you need to configure adapter property base on your system configuration. Example: host, port, etc. ![](../images/2021/03/jmsout1.png) ![](../images/2021/03/jmsout2.png) **Step2: Create Integration and Outbound Interface:** - Integration: Agent_JMS_Integration - Inbound Interface: Camel Agent JMS CSV OB - Metadata: Agent_ActiveMQ_RabbitMQ_JMS_Metadata - Repository: CSV_Repo - MessageType: MyAccount - Adapter: Camel Agent JMS CSV OB ![](../images/2021/03/jmsout3.png) ![](../images/2021/03/jmsout4.png) **Step3: Mapping** ![](../images/2021/03/jmsout5.png) **Step4: Callout(When you execute callout then after queue will automatically generate inside ActiveMQ server).** skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0011j000011qHW8AAM','0011j000011qHW9AAM'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('Agent_JMS_Integration','Camel Agent JMS CSV OB',ids,'SYNC',c); **Step5: Message Monitoring** ![](../images/2021/03/jmsout6.png) **Step6: ****Check CSV Data on ActiveMQ Server:** **Open Link: **[http://18.197.54.48:8161/admin/browse.jsp](http://18.197.54.48:8161/admin/browse.jsp) Username: admin Password: admin **Go to queue Click on queue example: CamelAgentJMSCSVOB**. **Click on message example:** ID:ip-172-20-63-98.eu-central-1.compute.internal-35839-1612751473680-17:1:1:1:1. ![](../images/2021/03/jmsout7.png) ![](../images/2021/03/jmsout8.png) ![](../images/2021/03/jmsout9.png) #### 2. File type JSON: **Pre-requisite:** - Create Integration. - Create Metadata Provider, IStructure Repository, and Create Flat Message Type. - **Metadata Provider: **Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: **JSON_Repo - **Message Type: **MyAccount #### Steps: **Step1:To Create Agent JMS JSON Inbound Adapter:** - Go to Integration (Example: Agent_JMS_Integration) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/jmsout11.png) ![](../images/2021/03/jmsjson.png) **Step2: Create Integration and Inbound Interface:** - Integration: Agent_JMS_Integration - Inbound Interface: Camel Agent JMS JSON OB - Metadata: Agent_ActiveMQ_RabbitMQ_JMS_Metadata - Repository: JSON_Repo - MessageType: account - Adapter: Camel Agent JMS JSON OB ![](../images/2021/03/jmsout10-1.png) **Step3: Mapping** ![](../images/2021/03/jms21.png) **Step4: ****Check JSON Data on ActiveMQ Server:** **Open Link: **[http://18.197.54.48:8161/admin/browse.jsp](http://18.197.54.48:8161/admin/browse.jsp) Username: admin Password: admin **Go to queue Click on queue example: CamelAgentJMSJSONOB**. **Click on message example:** ID:ip-172-20-63-98.eu-central-1.compute.internal-35839-1612751473680-17:1:1:1:1. ![](../images/2021/03/jmsout13-1.png) ![](../images/2021/03/jmsout14.png) ![](../images/2021/03/jmsout15.png) **Message Monitoring:** ![](../images/2021/03/jmsout12-1.png) #### 3. File type XML: **Pre-requisite:** - Create Integration. - Create Metadata Provider, IStructure Repository, and Create Flat Message Type. - **Metadata Provider: **Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: **XML_Inbound_Repo - **Message Type:  **rootNode #### Steps: **Step1:To Create Agent JMS JSON Inbound Adapter:** - Go to Integration (Example: Agent_JMS_Integration) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/jmsout17.png) ![](../images/2021/03/jmsout18.png) **Step2: Create Integration and Inbound Interface:** - Integration: Agent_JMS_Integration - Inbound Interface: Camel Agent JMS XML OB - Metadata: Agent_ActiveMQ_RabbitMQ_JMS_Metadata - Repository: XML_Repo - MessageType: account - Adapter: Camel Agent JMS XML OB ![](../images/2021/03/jmsout16.png) **Step3: ****Check XML Data on ActiveMQ Server:** **Open Link: **[http://18.197.54.48:8161/admin/browse.jsp](http://18.197.54.48:8161/admin/browse.jsp) Username: admin Password: admin **Go to queue Click on queue example: CamelAgentJMSXMLOB**. **Click on message example:** ID:ip-172-20-63-98.eu-central-1.compute.internal-35839-1612751473680-17:1:1:1:1. ![](../images/2021/03/jmsout20.png) ![](../images/2021/03/jmsout21.png) ![](../images/2021/03/jmsout22.png) **Step4: Message Monitoring** ![](../images/2021/03/jmsout19.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: 4. How to use Push JSON Payload to Agent Using V4/integrate? Slug: 4-how-to-use-push-json-payload-to-agent-using-v4-integrate URL: https://help.skyvva.com/#article/4-how-to-use-push-json-payload-to-agent-using-v4-integrate ================================================================================ # 4. How to use Push JSON Payload to Agent Using V4/integrate? #### Introduction: - Our V4/integrate rest variant supports JSON and XML and therefore it is possible to pass the Rest envelope XML or JSON to the body of the v4/integrate. This means that for invoking the skyvva API we use only the rest variant ../services/apexrest/skyvvasolutions/v4/Integrate with either XML or JSON payload. - In the URL of V4 API, the query parameter is added in URL only. We have **two** types of **response**: 1. standard response 2. custom response using the response (outbound) interface to do the mapping if we want to get data from the response interface then we need to do mapping for the response interface and link it to the request interface. Only data send from the input will return back as a response. If we want anything other than the input data then we have to use VLOOKUP formulae in the response mapping. #### Difference between two api v4/integrate api to skyvva and to agent: Incase of v4/integrate api to skyvva, data transformation happens on the Salesforce side using skyvva API., and Incase of an agent, Data transformation happens in Agent for the agent side API where agent works as a middleware. we are using agents to push data through the Agent to Salesforce. #### Usecase: **Objective**: custom response using the response (outbound) interface to do the mapping #### Pre-requisites: - Create Integration. refer tutorial to create integration. - Create Message Type: - We have to create metadata for to repository. - In metadata, create a repository. - Then you should create a message type with JSON/XML format. ![](../images/2021/03/capture1-5.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Make sure agent should be started. - Start the instances which you need. - Create your connection destination or you can use existing one. [/su_box] #### Steps: Follow the given steps to use v4/integrate api to agent for standard response: **step1**: Create Agent Inbound Adapter. - Go to an Integration detail page. - Click on the agent control board custom link. ![](../images/2021/03/capture2-6.png) ![](../images/2021/03/capture3-5.png) ![](../images/2021/03/capture4-5.png) ![](../images/2021/03/capture5-5.png) Then Go to the adapter tab and create an Inbound adapter. Here we are using the Rest adapter for the Inbound direction. ![](../images/2021/03/Capture6-6.png) **Step 2:** Create Inbound Interface.  To create an Inbound interface refer tutorial from our website: [How to create Interface?](#article/1-what-is-an-interface-and-how-to-create-it) - Select Metadata which you have created earlier: ex: V4Integrate - Select Istructure Repository - Select Message Type - Select Inbound adapter: agent Rest adapter - Save the Interface. ![](../images/2021/03/capture7-5.png) **Step3**: Do mapping and save it. ![](../images/2021/03/Capture8-3.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Make sure cache should be created - Check to cache for each object: Integration, interface, mapping. [/su_box] ![](../images/2021/03/Capture9-2.png) **step4**: **Configuration on postman side** ![](../images/2021/03/capture10.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Please make sure there is no  unwanted space after value inside query params[/su_box] #### 1. V4 API:- V4 API pass Integration, Interface, mode, request-format, response-format parameter inside the URL query parameter. #### 2. The URL contains:- - Salesforce classic URL. - Integration name. - Interface name. - mode. - response-format. - request-format. **Please check the sample below:-** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]http://3.122.44.62:9055/application/agent/rest/V4/integrate?integration=AgentV4/Integrate&interface=V4IntegrateSkyvva&instance-url=https://momentum-app-8830-dev-ed.cs101.my.salesforce.com&mode=synchronous&response-format=json&request-format=json[/aux_code] #### 3. Authorization: - Select No Auth. ![](../images/2021/03/Capture11.png) #### 4. Header:- - Enter "Bearer+Session ID". [su_box title="Note" box_color="#2a8af0" title_color="#000000"] To generate session id for your org: - Go to Developer console - Execute the code:  System.debug( Userinfo.getOrganizationId()+ Userinfo.getsessionId().substring(15) ); - You will get session-id in debug log only. [/su_box] ![](../images/2021/03/capture12.png) #### 5. Body:- - Enter JSON or XML payload as per your message type which we have created earlier. ![](../images/2021/03/Capture13.png) #### 6. Send the Request:- - Click on the send button. ![](../images/2021/03/Capture15.png) #### 7. Check the Result: ![](../images/2021/03/Capture14.png) #### 8. Check Result on Message monitoring:- ![](../images/2021/03/Capture16.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use custom response using the response (outbound) interface to agent? Title: 1. How to use custom response using the response (outbound) interface to agent? Slug: how-to-use-custom-response-using-the-response-outbound-interface-to-agent URL: https://help.skyvva.com/#article/how-to-use-custom-response-using-the-response-outbound-interface-to-agent ================================================================================ # 1. How to use custom response using the response (outbound) interface to agent? #### Introduction: - Our V4/integrate rest variant supports JSON and XML and therefore it is possible to pass the Rest envelope XML or JSON to the body of the v4/integrate. This means that for invoking the skyvva API we use only the rest variant ../services/apexrest/skyvvasolutions/v4/Integrate with either XML or JSON payload. - In the URL of V4 API, the query parameter is added in URL only. We have **two** types of **response**: 1. standard response 2. custom response using the response (outbound) interface to do the mapping if we want to get data from the response interface then we need to do mapping for the response interface and link it to the request interface. Only data send from the input will return back as a response. If we want anything other than the input data then we have to use VLOOKUP formulae in the response mapping. #### Difference between two api v4/integrate api to skyvva and to agent: Incase of v4/integrate api to skyvva, data transformation happens on the Salesforce side using skyvva API., and Incase of an agent, Data transformation happens in Agent for the agent side API where agent works as a middleware. we are using agents to push data through the Agent to Salesforce. #### Usecase: custom response using the response (outbound) interface to do the mapping **Pre-requisites:** - Create Integration. refer tutorial to create integration. - Create Message Type: - We have to create metadata for to repository. - In metadata, create a repository. - Then you should create a message type with JSON/XML format. ![](../images/2021/03/capture1-5.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Make sure agent should be started. - Start the instances which you need. - Create your connection destination or you can use existing one. [/su_box] #### Steps: Follow the given steps to use v4/integrate api to agent for custom response: **step1**: Create Agent Inbound Adapter. - Go to an Integration detail page. - Click on the agent control board custom link. ![](../images/2021/03/capture2-6.png) ![](../images/2021/03/capture3-5.png) ![](../images/2021/03/capture4-5.png) ![](../images/2021/03/capture5-5.png) Then Go to the adapter tab and create an Inbound adapter. Here we are using the Rest adapter for the Inbound direction. ![](../images/2021/03/Capture6-6.png) **Step 2:** Create Inbound Interface.  To create an Inbound interface refer tutorial from our website: [How to create Interface?](#article/1-what-is-an-interface-and-how-to-create-it) - Select Metadata which you have created earlier: ex: Custom response - Select Istructure Repository - Select Message Type - Select Inbound adapter: agent Rest adapter - Save the Interface. ![](../images/2021/03/capture2-7.png) **Step3**: Do mapping and save it. ![](../images/2021/03/Capture8-3.png) **Step4**: Create Outbound Interface.  To create an Outbound interface refer tutorial from our website: [How to create Interface?](#article/1-what-is-an-interface-and-how-to-create-it) - Select Metadata which you have created earlier: ex: Outbound Interface - Select Istructure Repository - Select Message Type - Select Outbound adapter: agent Rest Outbound - Save the Interface. ![](../images/2021/03/Capture3-6.png) **step 5: Do mapping. Here** In mapping If formula is applied to add constant value. We also can use VLOOK UP formula. for example:** IF(Name="Jullie","TestJulie",Name)** When We post name= **Jullie **as input. In response(Outbound) it should show **TestJulie**. ![](../images/2021/02/Capture6.png) **Step3**: To get data from the response interface we need do mapping in same interface and link it to request interface(Inbound) ![](../images/2021/03/Capture4-6.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Make sure cache should be created. If the cache is not created then you will not get result. - Check to cache for each object: Integration, interface, mapping. [/su_box] ![](../images/2021/03/Capture9-2.png) #### Postman side Configuration ![](../images/2021/03/Capture5-6.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Please make sure there is no  unwanted space after value inside query params[/su_box] #### 1. V4 API:- V4 API pass Integration, Interface, mode, request-format, response-format parameter inside the URL query parameter. #### 2. The URL contains:- - Salesforce classic URL. - Integration name. - Interface name. - mode. - response-format. - request-format. **Please check the sample below:-** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]http://3.122.44.62:9055/application/agent/rest/V4/integrate?integration=AgentV4/Integrate&interface=V4IntegrateSkyvva&instance-url=https://momentum-app-8830-dev-ed.cs101.my.salesforce.com&mode=synchronous&response-format=json&request-format=json[/aux_code] #### 3. Authorization: - Select No Auth. ![](../images/2021/03/Capture6-7.png) #### 4. Header: - Enter "Bearer+Session ID". [su_box title="Note" box_color="#2a8af0" title_color="#000000"] To generate session id for your org: - Go to Developer console - Execute the code:  System.debug( Userinfo.getOrganizationId()+ Userinfo.getsessionId().substring(15) ); - You will get session-id in debug log only. [/su_box] ![](../images/2021/03/capture12.png) #### 5. Body:- - Enter JSON or XML payload as per your message type which we have created earlier. ![](../images/2021/03/Capture7-6.png) #### 6. Send the Request:- - Click on the send button. ![](../images/2021/03/Capture7-7.png) #### 7. Check the Result: When you push data you should get constant value in response. ![](../images/2021/03/Capture1-6.png) #### 8. Check Result on Message monitoring ![](../images/2021/03/Capture8-4.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 127.2 How to use ActiveMQ Outbound Adapter with XML Payload? Slug: 127-2-how-to-use-activemq-outbound-adapter-with-xml-payload URL: https://help.skyvva.com/#article/127-2-how-to-use-activemq-outbound-adapter-with-xml-payload ================================================================================ # 127.2 How to use ActiveMQ Outbound Adapter with XML Payload? ActiveMQ adapter is used to send messages. Messages are just what they sound like, payloads of data that can be shipped between various systems. These payloads can have headers and properties associated with them This adapter supports 3 types of data formats i.e. **CSV**, **XML** and **JSON.** #### UseCase: Agent ActiveMQ Adapter for xml payload. #### Objective: Test ActiveMQ Outbound adapter for xml Format #### Pre-requiste: - Create Integration. - Create Metadata Provider, IStructure Repository and Create hierarchical Message Type. - **Metadata Provider:**Agent_ActiveMQ_RabbitMQ_JMS_Metadata - **IStructure Repository: ACtiveMQJSON** - **Message Type:Root** ![](../images/2021/02/Capture1-3.png) #### Steps: **Step1:To Create Agent ActiveMQ xml Outbound Adapter:** - Go to Integration (Example: [ActiveMQ Adapter](https://momentum-agility-3353-dev-ed.lightning.force.com/lightning/r/a0W1j000002FRdWEAW/view)) - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ![](../images/2021/03/Capture2-1.png) **Step2  How to Create Agent ActiveMQ Xml Outbound Adapter:** - Click on link AGENT Control Board. - Go to Adapter Tab and Click on New Button. ** ** ** ** /td> **Request** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to run the outbound interface through the manually or scheduler? Title: 129. How to run the outbound interface through the manually or scheduler? Slug: 129-how-to-run-the-outbound-interface-through-the-manually-or-scheduler URL: https://help.skyvva.com/#article/129-how-to-run-the-outbound-interface-through-the-manually-or-scheduler ================================================================================ # 129. How to run the outbound interface through the manually or scheduler? #### Introduction This tutorial will explain to you how to do manual and run scheduler outbound processing. Manual outbound processing is a manual process button on the interface tab in an Agent control board. We can use it instead of executing the InvokecalloutV3 apex code. For example, when the user selects fives interfaces, we are executing the interfaces in random order. There is no sequence to follow. You can do the manual processing on the outbound interface of the new agent. To use this function, you need to select the "Manually select the sObject using the Query Builder or Use the SOQL statement interface to select the sObject" option. For example, you use the "Manually select the sObject the Query Builder" option, you will able to query record base on the query builder. You will able to select the records from the execute query result to processing the callout. If, you use the "SOQL statement on the interface to selects the sObject" option. You can select the record from the SOQL Query for the filter sObject base on record id. Pre-require: - Create Integration - Configuration Agent control board - Create adapter agent rest - Create inbound interface Step1: Integration and connection destination - Create Integration ![](../images/2021/03/o1.png) - Go to the integration detail page and click on Agent Control Board ![](../images/2021/03/o2.png) - Create agent connection ![](../images/2021/03/o3-1.png) - Fill the agent credential ![](../images/2021/03/o4.png) - Fill the salesforce credential ![](../images/2021/03/o5.png) - Save connection ![](../images/2021/03/o6.png)Step2: Create an adapter in the agent control board - Navigate to the adapter tab after that click the new button. ![](../images/2021/03/o7.png)**Fill all required field** - Name: any name - Type: Agent Rest - Direction: Outbound - Status: Active - Authentication: Basic - Username: your API username - Password: your API password - Operation: POST - API Service EndPoint URL: - URL Path Parameter: json - Request Format: application.json - Response Format: application/json - Connection Destination: your connection ![](../images/2021/03/o8.png)Step2: Create or upload message type - Go to the Metadata Provider tab ![](../images/2021/03/o9.png) - Click Import Metadata Provider ![](../images/2021/03/o10.png) - Here is the message type after importing ![](../images/2021/03/o11.png) **This case Use the SOQL statement on the interface to select the sObject** Step1: Go to Integration detail - Create Outbound interface ![](../images/2021/03/o12.png) - Go to interface detail Input select statement into Filter Query's field. ![](../images/2021/03/o13.png) - Do mapping ![](../images/2021/03/o14.png)Step2: Agent Control Board - Before you do the manual process you need to check the cache to make sure that interface group, Adapter, Integration, interface, IChain, Mapping, or workflow that we set on an interface is cache retrived. ![](../images/2021/03/o15.png) - Go to interface tab on Agent Control Board choose one interface and click the manual process button. ![](../images/2021/03/o16.png) - Choose to **Use the SOQL statement on the interface to select the sObject** ![](../images/2021/03/o17.png) - Go to message monitor to check the result ![](../images/2021/03/o18.png) **This case do Manually select the sObject using the query builder** Step1: Go to integration detail - Create an outbound interface link adapter and Metadata provider into the interface. ![](../images/2021/03/o19.png) - Do mapping ![](../images/2021/03/o20.png)Step2: Agent Control board - Go to cache monitor to ensure the properties that you set in the interface are cache retrieved. ![](../images/2021/03/o21.png) - Choose one interface and click the Manual button ![](../images/2021/03/o22.png) - Choose **Manually select the sObject using the Query Builder** option ![](../images/2021/03/o23.png) - After you click the **Next** button ![](../images/2021/03/o24.png) - You can choose all records or some of the records that you want to callout and click the **OK button**. ![](../images/2021/03/o25.png) - After clicking the **OK button** it will be previous to the first page and then click **Send button.** ![](../images/2021/03/o26.png) - Go to message monitor to check the result ![](../images/2021/03/o27.png) #### How to run an outbound interface using the scheduler? In this case, We need the scheduler to callout data from salesforce to the external system. Create integration as the first case Step1: Create an outbound interface and link message type into the interface ![](../images/2021/03/r1.png) - Input select statement into Filter Query's field. ![](../images/2021/03/r2.png) - Do mapping and click the **save button**. ![](../images/2021/03/r3.png) Step2: Run scheduler - You need to check the cache to make sure that adapter, Integration, Interface group, Interface, Ichain, Mapping, or workflow that we set on an interface is cache retrieved correctly. ![](../images/2021/03/r4.png) - Agent scheduler will be generated after the user clicks the scheduler tab. ![](../images/2021/03/r5.png) - Set the time to Run At ![](../images/2021/03/r6.png) ![](../images/2021/03/r7.png) - Click on the **Action button **to start scheduler ![](../images/2021/03/r8.png) ![](../images/2021/03/r9.png) - The scheduler is starting ![](../images/2021/03/r10.png) - Go to check the result on monitor tab. ![](../images/2021/03/r11.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Control Board Title: 3. How to use SAP Control Board? Slug: 130-how-to-use-sap-control-borad URL: https://help.skyvva.com/#article/130-how-to-use-sap-control-borad ================================================================================ # 3. How to use SAP Control Board? #### Introduction The SAP control board is a component which can connect different application system. It is basically related to SAP ERP related monitoring and configuration. In the Sap control board, we have different tabs with different functionalities. The user can select the integration which he wants to maintain. If we invoke this SAP control board screen from an integration then the integration is preselected by the integration we have jumped from. But the SAP Control Board can be added as a general entry point to the SKYVVA Admin page. #### How to configure SAP Control Board:- Pre-Requisite - Create Integration Step1: Go to the Integration details page - Click on the "SAP Control board" Tab. ![](../images/2021/03/sapc3.png) Step2: Select the "Configuration" tab on the SAP control board. - Select Connection Destination. - Fill in all the required fields like Name, Type, and Logical system. - You can fill the description field which is optional. ![](../images/2021/03/sapc.png) Step3: Here we need to provide the SAP connection details, Please provide your SAP connection details below. - Host Url: http://xxxx.com - Port: 16xxx - Username: XXXX - Password: ****** - SAPID: System Id - Client: *** - Once we provide the details we need to ping the SAP Connection. ![](../images/2021/03/sapc1.png) Step4: Here we need to provide the salesforce details as shown below. - Username - Password - Security Token - Server Environment - Consumer Key - Consumer Secret - Once we provide the details we need to ping the Salesforce Connection. ![](../images/2021/03/sapc2.png) Step5: Save the Connection Destination. ![](../images/2021/03/sapc4.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: 2. How to use XML payload with /V4/integrate? Slug: 2-how-to-use-xml-payload-with-v4-integrate URL: https://help.skyvva.com/#article/2-how-to-use-xml-payload-with-v4-integrate ================================================================================ # 2. How to use XML payload with /V4/integrate? #### Introduction In this tutorial, we are using Postman as the client for testing the SKYVVA V4 API. The request payload can be XML or JSON and the response can be XML or JSON format. The response formats can be different from the request format, example the request is XML file format but the response can be JSON. Especially, this API we can parse the raw data that is the XML or JSON without convert to any style. **Prerequired** - Create Metadata Provider, Repository and MessageType - Create Integration, Inbound Interface and do mapping - Create a connected app on Salesforce org to get Client-Id and Client-Secret that is needed to generate access token in Postman - Create request on Postman to invoke Salesforce API to get access token and use SKYVVA V4 API to post data to Salesforce **Step-1** create Metadata Provider, Repository and generate MessageType - Navigate to the Metadata Provider tab and click the button New ![](../images/2021/04/5.png) - Fill in all required information then Save ![](../images/2021/04/6.png) - Create new Repository ![](../images/2021/04/7.png) - Fill in all required information then Save ![](../images/2021/04/8.png) - Generate MessageType from the payload We should use the simple payload that is matched the real data structure, if we use the whole data to generate MessageType, sometimes the whole data can contain any special character that is affected by the logic for generating MessageType. - Click the button Open Editor or we use Import Metadata to upload the file ![](../images/2021/04/9.png) - Paste the sample payload here to generate MessageType ![](../images/2021/04/10-1.png) - Now the MessageType has been generated as the example below ![](../images/2021/04/11.png) **Step 2: ** create Integration, inbound Interface, and do mapping Suppose we have created Integration now we need to create Inbound Interface ![](../images/2021/04/NewInterface.png) - Fill required information ![](../images/2021/04/12-Copy.png) On the Interface, we need to choose the MessageType that is matched the payload. Example in my XML file begins with node “testROOT”, so the MessageType should choose “testROOT”. - Do Mapping Here we need to map from the Source node to Target first, and then field to field. We can choose any node as the root to map to target that depends on the business requirement. ![](../images/2021/04/MAPPING-2-Copy.png) **Step 3** Create a connected app on Salesforce Navigate to the Setup gear icon ![](../images/2021/04/0-1.png) - Navigate to the search box and just type “**app…**” for finding the **App Manager** menu then click New Connected App to create a new connected on Salesforce ![](../images/2021/04/2-1.png) - Fill required information ![](../images/2021/04/3.png) - After that click button Save ![](../images/2021/04/3-2.png) - Click continue ![](../images/2021/04/3-3.png) - Here is the Client-Id (Consumer Key) and Client-Secret (Consumer Secret). But we cannot use those keys immediately as Salesforce has a display of a warning in the red line. ![](../images/2021/04/3-4.png) **Step 4** Configuration on Postman Salesforce provides two API depend on the type of Organization: Sandbox and Production. The method that for these API is **POST**. **Sandbox:** [https://test.salesforce.com/services/oauth2/token](https://test.salesforce.com/services/oauth2/token) ![](../images/2021/04/sandbox.png) **Production:** [https://login.salesforce.com/services/oauth2/token](https://login.salesforce.com/services/oauth2/token) ![](../images/2021/04/production.png) - Create a request to invoke Salesforce API for getting Access Token ![](../images/2021/04/project.png) - **username:** org’s username - **password:** org’s user password+security token - **grant_type:** password - **client_id:** consumer key (connected app) - **client_secret:** consumer secret (connected app) - After click the button Send, the Salesforce was responded as the screenshot below that including **access token** and **instance URL** ![](../images/2021/04/Resultproject.png) - Create a request to invoke SKYVVA V4 API for posting data to Salesforce On the endpoint, we need to put Instance URL and SKYVVA V4 API ![](../images/2021/04/v4-1.png) - Instance URL use the URL that is Salesforce Classic version does not use URL from Lighting. That is not supported. We can find the Instance URL on the above step when we invoke Salesforce API. Example: *https://energy-drive-6498-dev-ed.cs101.my.salesforce.com* - SKYVVA V4 API: */services/apexrest/skyvvasolutions/V4/integrate* - On the Parameter, put the key value as below ![](../images/2021/04/v4-2.png) - **integration: **your Integration name - **interface: **your interface name - **mode: **Synchronous/Asynchronous(higher priority than the mode Interface) - **response-format: **XML/JSON - **request-format: **XML/JSON (depend on data file format) - Navigate to Body and then put the data In this example, we are posted XML data and respond as XML too. ![](../images/2021/04/v4-3.png) - After click the button Send, we got the success status. So now we have posted data to Salesforce completely through SKYVVA V4 API. ![](../images/2021/04/v4-4-xml.png) - Go to Message Monitoring to check the result ![](../images/2021/04/MSgMonitoring.png) #### Summary Finally, we have learned how to use SKYYVA API with V4 API that is used Postman as the client-side and also learn about to generate Salesforce access token in Postman. We have understood the Salesforce connected app creation and generating MessageType for do mapping on inbound Interface. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Import SAP Metadata Provider? Title: 132. How to use Import SAP Metadata Provider? Slug: 132-how-to-use-import-sap-metadata-provider URL: https://help.skyvva.com/#article/132-how-to-use-import-sap-metadata-provider ================================================================================ # 132. How to use Import SAP Metadata Provider? #### Introduction In SKYVVA, we have generated a Metadata SAP Business One function called Import SAP Metadata to make the user access to use the template of every module in SAP Business One. This function contains a search button that makes the user quickly find the template he wants to use. Also, this function is contained with the URL or endpoint to use with the module that we are choosing. #### How to use SAP Metadata Pre-required - Create Integration - Go to SAP Control Board - Connection Destination. - Import SAP Metadata. **Step1: Create Integration. ** Click this link below to see more detail about What is Integration [#article/integration](#article/integration) - Go to Integration => click the New button. ![](../images/2021/05/1-1.png) - Fill in the name and click Save Button. see the picture as an example. ![](../images/2021/05/2.png) **Step2:  Connection Destination on Sap Control board.** - Go to Integration and click SAP Control Board. Here’s an Example below. ![](../images/2021/05/3.png) - Create Connection Destination. - Choose Type to SAP Business One, fill in the Name, and click continue. ![](../images/2021/05/5.png) After we click Continue, we need to configure SAP Credential. ![](../images/2021/05/6.png) - **Fill the Host URL:** That’s the URL which SAP Business One Client installed. - **Port Forward:** That’s the Port that we have forwarding of SAP business one client installed application. - **UserName:** That’s the Username to log in to SAP business one client application. - **Password:** That’s the Password to Login to SAP business one client application. - **URL path:** That’s the path of login to SAP Business one client application - **Company Database:** That’s the Company Name of Database [su_box title="Note" box_color="#2a8af0" title_color="#000000"] First, We need to create Remote Site for the URL and Port. Here’s the picture. [/su_box] ![](../images/2021/05/7.png) - When we configured SAP Credential done we need to click the save Button and click the Ping SAP Connection Button to make sure that the credential is correct. ![](../images/2021/05/8.png) **Step 3: Import SAP Metadata.** - To use this function, we need to Create Metadata Provider first, and then we need to create a Repository. - Go to Metadata and click New Button. ![](../images/2021/05/10.png) - Fill in the name of Metadata Provide and click the Save button. ![](../images/2021/05/11.png) - After creating Metadata, we need to Create a Repository. ![](../images/2021/05/12.png) - Fill in the name of the repository and type - Click the Save button. ![](../images/2021/05/13.png) After we create a Repository, we can use the Import SAP Metadata in the Repository. - Go to Repository and click Import SAP Metadata. ![](../images/2021/05/14.png) - Choosing Direction SAP Connection - Select Connection Type - Select Connection Destination. - Choosing to Create Message type to invoke SAP Business One API. - And click Retrieve. Here’s an Example: ![](../images/2021/05/15.png) After we click Retrieve, we can see modules of SAP Business One. - Here’s an example. ![](../images/2021/05/16.png) We can use the template of the module that we want. Example We want to use Order so we can search Order. - Here’s Example. ![](../images/2021/05/17.png) - Select Orders and click Create Message Type. ![](../images/2021/05/18.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] The URL is helpful for put to endpoint in properties SAP Business One Adapter because different Modules have different APIs. [/su_box] - Here’s the result that we create the template of Order in SAP Business One. ![](../images/2021/05/19.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. SAP Business One Adapter Slug: sap-business-one-adapter URL: https://help.skyvva.com/#article/sap-business-one-adapter ================================================================================ # 1. SAP Business One Adapter #### Introduction In Skyvva, we have a new feature to send out data from Salesforce to SAP Business one client application by using SAP business one adapter. This adapter has worked with different SAP business modules such as Business Partner, Sale, Purchasing, and many modules in Sap Business One. This section will show how to use SAP Business One Adapter. To use this Adapter we need to have SAP Business one connection destination and we need to generate SAP Business One Message Type. This Adapter supports Dynamic URLs, PATH Parameter, QueryParamenter, and multiple operations such as POST, GET, PATCH, DELETE. SAP Business One Adapter is used for Request and Response processing by using SAP business one Message type. To generate SAP Business One Message Type follow this link [How to generate SAP  business one message Type](#article/14-9-sap-business-one-message-type-from-metadata). #### Setup: Step1:  Create SAP Business One Destination. - Go to Integration and click SAP Control Board. Here’s an example below. ![](../images/2021/05/3.png) - Create Connection Destination. - Choose Type to SAP Business One, fill in the Name, and click continue. ![](../images/2021/05/5.png) - After we click Continue, we need to configure SAP Credential. ![](../images/2021/05/6.png) - When we configured SAP Credential, we need to click the save button and click the Ping SAP Connection Button to ensure that the credential is correct. ![](../images/2021/05/8.png) Step2: Create SAP Business One Adapter on SAP Control Board. - Click adapter tap on SAP Control Board and click New Button. ![](../images/2021/04/20.png) - Fill in the required fields of properties Adapter, Click the Ping connection button to make sure that it works, and then click the save button. - Here's the example. ![](../images/2021/04/22.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. How to create a business Object SAP BusinessPartner in SAP Business One? Slug: how-to-create-a-business-object-sap-businesspartner-in-sap-business-one URL: https://help.skyvva.com/#article/how-to-create-a-business-object-sap-businesspartner-in-sap-business-one ================================================================================ # 2. How to create a business Object SAP BusinessPartner in SAP Business One? **Learning Objectives:-** **This unit describes:-** - How to create a business object SAP Business Partner in SAP Business One? #### Introduction: In this tutorial, we will learn How to create a Business partner object in SAP Business one using  Operation POST in  SAP business one Adapter. To Send Data from Salesforce to SAP Business partner in the SAP business one application, we need to have SAP Business Partner Message Type and SAP Business one Adapter. We can process data manually and scheduler to know detail about How to run the outbound interface manually or scheduler please follow this link: #article/129-how-to-run-the-outbound-interface-through-the-manually-or-scheduler #### Pre-required: - Create Integration - Create Connection destination on SAP Control Board. - Generate SAP Business one Metadata by using Import SAP Metadata. - Create Outbound Interface and Inbound Interface linked with Metadata SAP Business one. - Create SAP Business one Adapter on SAP Control Board. **Step 1**: Create Integration: To know detail about Integration, please follow this tutorial. [What is Integration, and How to use it? ](#article/what-is-an-integration-and-how-to-create-it) - Here's Integration ![](../images/2021/06/24.png) **Step 2**: Create Connection Destination SAP Control Board. - Click SAP Control Board on Integration. ![](../images/2021/06/76.png) - Fill name choosing type SAP Business One and click Continue. - Here’s an example. ![](../images/2021/06/26.png) - Fill Host URL, Port Forward, Username, Password, URL Path, and Company Database of SAP Business one Application. - Click ping SAP Connection and Click Save Button. - Here’s Example. ![](../images/2021/06/27.png) **Step 3**: Create Metadata SAP by using SAP Import Metadata. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We need to create Metadata Provider and a Repository. [/su_box] Follow this link to see detail about [How to use and create Metadata Provider and Repository](#article/repository). - Go to Repository and click Import SAP Metadata ![](../images/2021/06/28.png) - Choosing Direct SAP Connection? - select Connection Type, - Select Connection Destination, - Choose to Create Message Type to invoke SAP Business One API - click Retrieve. ![](../images/2021/06/29.png) - Search Metadata Name Business Partner, choose a business partner, and click create Message Type. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Copy the URL of module order that we choose for using in API endpoint on Adapter. [/su_box] ![](../images/2021/06/30.png) After that, we will see the message type object Business Partner. - Here’s the message type of business Partner. ![](../images/2021/06/31.png) **Step 4:**  Create Outbound Interface, Inbound Interface, and linked with Message Type that we generated. - Create Outbound Interface as a Request Interface and linked SAP BusinessParner message type. - Here’s Request Interface. ![](../images/2021/06/32.png) - Do mapping and click save. ![](../images/2021/06/33.png) - Create Inbound Interface as Response Interface and linked SAP Business Partner message type. - We are using operation Update to avoid creating a new record. - Here’s Response Interface. ![](../images/2021/06/34.png) - Do mapping ![](../images/2021/06/36.png) **Step 5:** Linked Request and Response Interfaces. - Linked Request Interface and Response Interface. We need to request Interface Detail and scroll down to see Inbound/Outbound set up. - Put Response Interface in field Repone Interface by clicking the pencil and click the Save button. - Here’s Example. ![](../images/2021/06/37.png) **Step 6:** Create SAP Business One adapter. - Go to the SAP control board and click tap Adapter. - Click New Button. ![](../images/2021/06/38.png) - Fill Name, Type: SAP Business one, Deployment: On Premise, Integration Framework: Service Layer, Protocol: Rest, Authentication: Basic, Past the API endpoint that we copy from Create Metadata in the properties API service Endpoint URL, Choosing Operation Post, Request and Response Format Json, and choose connection Destination. - Here we have select the non in Salesforce Id Handling. It means in the response it will not return the salesforce Id back. - Click ping connection to make sure that the configuration adapter is successful. - click save - Here’s Example. ![](../images/2021/06/Untitled-35.png) ![](../images/2021/06/Untitled-33.png) ![](../images/2021/06/Untitled-34.png) ![](../images/2021/06/Untitled-36.png) If we select "Return Salesforce Id into the response" then the Salesforce Id will come in the Response interface. • Go to Request Interface and Linked this adapter. Here’s an example. ![](../images/2021/06/40.png) **Step7**: Callout Data by using Manual Process. - Go to Interface, tap on SAP Control board, select Request Interface, and click Manual Process. ![](../images/2021/06/41.png) - Select Manually Select the subjects using the Query Builder and click Next. ![](../images/2021/06/43.png) - Click Execute SOQL, a select record that we want to send to SAP business one, and click OK. ![](../images/2021/06/44.png) - Click Send. ![](../images/2021/06/45.png) - Go to Message Monitor to see the result. ![](../images/2021/06/46.png) - Here’s the result In SAP Business one Application. ![](../images/2021/06/47.png) #### Summary Finally, we have learned how to create a record from salesforce to SAP Business One Application using operation POST in SAP Business one Adapter.  In the next section, we will learn how to update Business Partner using Operation PATCH in SAP Business One Adapter. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 3. How to Update a business Object SAP BusinessPartner in SAP Business One? Slug: 133-2 URL: https://help.skyvva.com/#article/133-2 ================================================================================ # 3. How to Update a business Object SAP BusinessPartner in SAP Business One? **Learning Objectives:-** **This unit describes:-** - How to Update a business object SAP Business Partner in SAP Business One? #### Introduction: In this tutorial, we will learn How to update a Business partner object in SAP Business one using operation PATCH in SAP business one Adapter. As we knew already, to Update the records of the Business Partner module in the SAP Business One Client Application. Still, in the Business Partner module, we need to know the card code, and we need to using PATH Parameter to Update the record in Business Partner. For Update the record of BusinessPartner in SAP Business One, we need the request Interface. We can process data manually and scheduler to know detail about How to run the outbound interface manually or scheduler please follow this link: #article/129-how-to-run-the-outbound-interface-through-the-manually-or-scheduler #### Pre-required: - Create Integration - Create Connection destination on SAP Control Board. - Generate SAP Business one Metadata by using Import SAP Metadata. - Create Outbound Interface linked with Metadata SAP Business one. - Create SAP Business one Adapter on SAP Control Board. **Step 1:** Create Integration: To know detail about Integration, please follow this tutorial. [What is Integration, and How to use it? ](#article/what-is-an-integration-and-how-to-create-it) - Here's Integration ![](../images/2021/06/24.png) **Step 2:** Create Connection Destination SAP Control Board. - Click SAP Control Board on Integration. ![](../images/2021/06/76.png) - Fill name choosing type SAP Business One and click Continue. - Here’s an example. ![](../images/2021/06/26.png) - Fill Host URL, Port Forward, Username, Password, URL Path, and Company Database of SAP Business one Application. - Click ping SAP Connection and Click Save Button. - Here’s Example. ![](../images/2021/06/27.png) **Step 3**: Create Metadata SAP by using SAP Import Metadata. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We need to create Metadata Provider and a Repository. [/su_box] Follow this link to see detail about [How to use and create Metadata Provider and Repository](#article/repository). - Go to Repository and click Import SAP Metadata. ![](../images/2021/06/28.png) - Choosing Direct SAP Connection - select Connection Type, - Select Connection Destination, - Choose to Create Message Type to invoke SAP Business One API - click Retrieve. ![](../images/2021/06/29.png) - Search Metadata Name Business Partner, choose a business partner, and click create Message Type. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Copy the URL of module order that we choose for using in API endpoint on Adapter. [/su_box] ![](../images/2021/06/30.png) After that, we will see the message type object Business Partner. - Here’s the message type of business Partner. ![](../images/2021/06/31.png) - We need to create field CardCode in QUERY Parameter Message Type. Go to Query Parameter Message Type in URL Message Type of Request Message Type and then click Query Parameter. See the example below. ![](../images/2021/06/Untitled-37.png) - Go to Related and Create Message Type Field Entry by clicking Button New. See the example below. ![](../images/2021/06/Untitled-38.png) - Fill Message type Entry Name and Istructure. This section wants to update the business partner record so we need to create CardCode Message Type field Entry as a PATH Parameter to use for update the business partner record. - We need to fill in Message type Field Entry Name and Istructure and click save Button. See the example below. ![](../images/2021/06/Untitled-39.png) **Step 4: **Create Outbound Interface and Linked with this message type. - Go to Integration detail, click Interface tap, click the New Interface button. - Here's Outbound Interface that is linked with SAP business Partner Message Type. ![](../images/2021/06/51.png) - Do mapping In this step, we can use mapping by  Instance value and Dynamic Value. When salesforce records have a value of card code already, we need to map the field to field in Query Parameter. Here's an example. We have field SAP_ID that stores the value of business partners, so we need to map that field to target fields of CardCode in Query Parameter. - See the picture below. ![](../images/2021/06/Untitled-44.png) **Step 5: **Create SAP Business One Adapter on SAP control Board. - Go to the SAP control board and click tab Adapter. - Click New Button. ![](../images/2021/06/38.png) - Fill Name, Type: SAP Business one, Deployment: On Cloud, Integration Framework: Service Layer, Protocol: Rest, Authentication: Basic, Past the API endpoint that we copy from Create Metadata in the properties API service Endpoint URL, Choosing Operation PATCH , Request and Response Format Json, and choosing connection Destination. - We need to put ('{!CardCode}') in fields URL Query Parameter. - Here we have select the non in Salesforce Id Handling. It means in the response it will not return the salesforce Id back. - Click ping connection to make sure that the configuration adapter is successful. - click save - Here’s Example. ![](../images/2021/06/Untitled-41.png) ![](../images/2021/06/Untitled-42.png) ![](../images/2021/06/Untitled-45.png) ![](../images/2021/06/Untitled-36.png) If we select “Return Salesforce Id into the response” then the Salesforce Id will come in the Response interface. • Go to Request Interface and Linked this adapter. • Here’s an example. ![](../images/2021/06/55.png) - Here's the Record that we need to change in SAP Business One ![](../images/2021/06/56.png) - Here's the salesforce record that was changing the name for Test1 to HelloSAPTest. ![](../images/2021/06/57.png) **Step 6: **Callout data by using Manual Process. - Go to Interface Tap on SAP Control Board. - Select Interface and click Manual Process. See the example below. ![](../images/2021/06/59.png) - Select Manually Select the sObjects using the Query Builder and click Next. ![](../images/2021/06/60.png) - Click Execute SOQL, a select record that we want to send to SAP business one, and click OK. ![](../images/2021/06/61.png) - Click Send ![](../images/2021/06/62.png) - Go to message Monitor to see the result. ![](../images/2021/06/63.png) - Here’s the result In SAP Business one Application. ![](../images/2021/06/64.png) #### Summary Finally, we have learned how to update the record from salesforce to SAP Business One Application using operation PATCH in SAP Business one Adapter. The next section will learn how to Delete Business Partner using Operation Delete in SAP Business One Adapter. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 4. How to Delete a business object SAP Business Partner in SAP Business One? Slug: 133-3-how-to-delete-a-business-object-sap-business-partner-in-sap-business-one URL: https://help.skyvva.com/#article/133-3-how-to-delete-a-business-object-sap-business-partner-in-sap-business-one ================================================================================ # 4. How to Delete a business object SAP Business Partner in SAP Business One? **Learning Objectives:-** **This unit describes:-** - How to Delete a business object SAP Business Partner in SAP Business One? #### Introduction: This tutorial will learn How to Delete a Business partner object in SAP Business one using operation DELETE in SAP business one Adapter. As we knew already, to Delete the records of the Business Partner module in the SAP Business One Client Application, we don't need the body. Still, we need to know the card code, and we need to using PATH Parameter to Delete the record in Business Partner. For Delete the record of BusinessPartner in SAP Business One, we need the request Interface.We can process data manually and scheduler to know detail about How to run the outbound interface manually or scheduler please follow this link: #article/129-how-to-run-the-outbound-interface-through-the-manually-or-scheduler #### Pre-required: - Create Integration - Create Connection destination on SAP Control Board. - Generate SAP Business one Metadata by using Import SAP Metadata. - Create Outbound Interface linked with Metadata SAP Business one. - Create SAP Business one Adapter on SAP Control Board. **Step 1:** Create Integration: To know detail about Integration, please follow this tutorial. [What is Integration, and How to use it? ](#article/what-is-an-integration-and-how-to-create-it) - Here's Integration ![](../images/2021/06/24.png) **Step 2:** Create Connection Destination SAP Control Board. - Click SAP Control Board on Integration. ![](../images/2021/06/76.png) - Fill name choosing type SAP Business One and click Continue. - Here’s an example. ![](../images/2021/06/26.png) - Fill Host URL, Port Forward, Username, Password, URL Path, and Company Database of SAP Business one Application. - Click ping SAP Connection and Click Save Button. - Here’s Example. ![](../images/2021/06/27.png) **Step 3**: Create Metadata SAP by using SAP Import Metadata. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We need to create Metadata Provider and a Repository. [/su_box] Follow this link to see detail about [How to use and create Metadata Provider and Repository](#article/repository). - Go to Repository and click Import SAP Meta ![](../images/2021/06/28.png) - Choosing Direct SAP Connection - select Connection Type, - Select Connection Destination, - Choose to Create Message Type to invoke SAP Business One API - click Retrieve. ![](../images/2021/06/29.png) - Search Metadata Name Business Partner, choose a business partner, and click create Message Type. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Copy the URL of module order that we choose for using in API endpoint on Adapter [/su_box] ![](../images/2021/06/30.png) After that, we will see the message type object Business Partner. - Here’s the message type of business Partner. ![](../images/2021/06/31.png) - We need to create fieldd CardCode in PATH Parameter Message Type. Go to Path Parameter Message Type in URL Message Type of Request Message Type and then click PATH Parameter. See the example below. ![](../images/2021/06/48.png) - Go to Related and Create Message Type Field Entry by clicking Button New. See the example below. ![](../images/2021/06/49.png) - Fill Message type Entry Name and Istructure. This section wants to Delete the business partner record so we need to create CardCode Message Type field Entry as a PATH parameter to use with the business partner record. - We need to fill in Message type Field Entry Name and Istructure and click save Button. See the example below. ![](../images/2021/06/50.png) **Step 4: **Create Outbound Interface and Linked with this message type. - Go to Integration detail, click Interface tap, click the New Interface button. - Here's Outbound Interface that is linked with SAP business Partner Message Type. ![](../images/2021/06/65.png) - Do mapping In this step, we can use mapping by  Instance value and Dynamic Value. When salesforce records have a value of card code already, we need to map the field to field in PATH Parameter. Here's an example. We have field SAP_ID that stores the value of business partners, so we need to map that field to target fields of CardCode in PATH Parameter. - See the picture below. ![](../images/2021/06/66.png) **Step 5: **Create SAP Business One Adapter on SAP control Board. - Go to the SAP control board and click tap Adapter. - Click New Button. ![](../images/2021/06/38.png) - Fill Name, Type: SAP Business one, Deployment: On Cloud, Integration Framework: Service Layer, Protocol: Rest, Authentication: Basic, Past the API endpoint that we copy from Create Metadata in the properties API service Endpoint URL, Choosing Operation Delete, Request and Response Format Json, and choosing connection Destination. - We need to put ('{!CardCode}') in fields URL PATH Parameter. - Click ping connection to make sure that the configuration adapter is successful. - click save - Here’s Example. ![](../images/2021/06/Untitled-46.png) ![](../images/2021/06/Untitled-47.png) ![](../images/2021/06/Untitled-48.png) • Go to Request Interface and Linked this adapter. • Here’s an example. ![](../images/2021/06/Untitled-49.png) - Here's the Record that we need to delete in SAP Business One ![](../images/2021/06/64.png) **Step 6: **Callout data by using Manual Process to delete record business one. - Go to Interface Tap on SAP Control Board. - Select Interface and click Manual Process. See the example below. ![](../images/2021/06/70.png) - Select Manually Select the sObjects using the Query Builder and click Next. ![](../images/2021/06/71.png) - Click Execute SOQL, a select record that we want to send to SAP business one, and click OK. ![](../images/2021/06/72.png) - Click Send ![](../images/2021/06/73.png) - Go to message Monitor to see the result. ![](../images/2021/06/74.png) - Here’s the result In SAP Business one Application. We can't see the record 'G13' in sap business one application because this record deleted. ![](../images/2021/06/75.png) #### Summary Finally, we have learned how to Delete the record from salesforce to SAP Business One Application using operation DELETE in SAP Business one Adapter. In the next section, we will learn how to Query record from Business Partner using Operation  GET in SAP Business One Adapter. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 5. How to Query a single, list, and Execute the SQL Query of business object in SAP Business One? Slug: 133-4-how-to-query-a-business-object-sap-business-partner-in-sap-business-one URL: https://help.skyvva.com/#article/133-4-how-to-query-a-business-object-sap-business-partner-in-sap-business-one ================================================================================ # 5. How to Query a single, list, and Execute the SQL Query of business object in SAP Business One? **Learning Objectives:-** **This unit describes:-** - How to Query a single business record and a list of Business Partners modules in SAP Business One? #### Introduction: This tutorial will learn How to Query a single record of the Business partners module in SAP Business one using operation GET in SAP business one Adapter. As we knew already, to GET  the records of the Business Partner module in the SAP Business One Client Application, we still need to know the card code, and we need to use PATH Parameter to GET the record in Business Partner. For GET the record of BusinessPartner in SAP Business One, we need the request Interface and Response Interface. We can process data manually and scheduler to know details about How to run the outbound interface or scheduler manually. Would you please follow this link: #article/129-how-to-run-the-outbound-interface-through-the-manually-or-scheduler #### Pre-required: - Create Integration - Create Connection destination on SAP Control Board. - Generate SAP Business one Metadata by using Import SAP Metadata. - Create Outbound Interface and Inbound Interface linked with Metadata SAP Business one. - Create SAP Business one Adapter on SAP Control Board. - #### How to query in a single record with BusinessPartner Module. **Step 1**: Create Integration: To know detail about Integration, please follow this tutorial. [What is Integration, and How to use it? ](#article/what-is-an-integration-and-how-to-create-it) - Here's Integration ![](../images/2021/06/24.png) **Step 2**: Create Connection Destination SAP Control Board. - Click SAP Control Board on Integration. ![](../images/2021/06/76.png) - Fill in name, choosing type SAP Business One and click Continue. - Here’s an example. ![](../images/2021/06/26.png) - Fill Host URL, Port Forward, Username, Password, URL Path, and Company Database of SAP Business one Application. - Click ping SAP Connection and Click Save Button. - Here’s Example. ![](../images/2021/06/27.png) **Step 3**: Create Metadata SAP by using SAP Import Metadata. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We need to create Metadata Provider and a Repository. [/su_box] Follow this link to see detail about [How to use and create Metadata Provider and Repository](#article/repository). - Go to Repository and click Import SAP Metadata ![](../images/2021/06/28.png) - Choosing Direct SAP Connection? - select Connection Type, - Select Connection Destination, - Choose to Create Message Type to invoke SAP Business One API - click Retrieve. ![](../images/2021/06/29.png) - Search Metadata Name Business Partner, choose a business partner and click create Message Type. Note: Copy the URL of module order that we choose for using in API endpoint on Adapter. ![](../images/2021/06/30.png) After that, we will see the message type object Business Partner. - Here’s the message type of business Partner. ![](../images/2021/06/31.png) - We need to create field CardCode in QUERY Parameter Message Type. Go to Query Parameter Message Type in the URL Message Type of Request Message Type and click Query Parameter. See the example below. ![](../images/2021/06/Untitled-37.png) - Go to Related and Create Message Type Field Entry by clicking Button New. See the example below. ![](../images/2021/06/Untitled-38.png) - Fill Message type Entry Name and Istructure. This section wants to Query the business partner record so we need to create CardCode Message Type field Entry as a QUery Parameter to Query the business partner record. - We need to fill in Message type Field Entry Name and Istructure and click save Button. See the example below. ![](../images/2021/06/Untitled-39.png) **Step 4:**  Create Outbound Interface, Inbound Interface, and linked with Message Type that we generated. - Create Outbound Interface as a Request Interface and linked SAP BusinessParner message type. - Here’s Request Interface. ![](../images/2021/06/77.png) - Do mapping and click save. ![](../images/2021/06/Untitled-44.png) - Create Inbound Interface as Response Interface and linked SAP Business Partner message type. - We are using operation Update to avoid creating a new record. - Here’s Response Interface. ![](../images/2021/06/79.png) - Do mapping ![](../images/2021/06/80.png) **Step 5:** Linked Request and Response Interfaces. - Linked Request Interface and Response Interface. We need to request Interface Detail and scroll down to see Inbound/Outbound set up. - Put Response Interface in field Repone Interface by clicking the pencil and click the Save button. - Here’s Example. ![](../images/2021/06/81.png) **Step 6:** Create SAP Business One adapter. - Go to the SAP control board and click tap Adapter. - Click New Button. ![](../images/2021/06/82.png) - Fill Name, Type: SAP Business one, Deployment: On Cloud, Integration Framework: Service Layer, Protocol: Rest, Authentication: Basic, Past the API endpoint that we copy from Create Metadata in the properties API service Endpoint URL, Choosing Operation GET, Request and Response Format Json, and choosing connection Destination. - We need to put ('{!CardCode}') in fields URL Query Parameter. - Click ping connection to make sure that the configuration adapter is successful. - click save - Here’s Example. ![](../images/2021/06/56-2.png) • Go to Request Interface and Linked this adapter. • Here’s an example. ![](../images/2021/06/84.png) **Step7**: Callout Data by using Manual Process. - Go to Interface, tap on SAP Control board, select Request Interface, and click Manual Process. ![](../images/2021/06/85.png) - Select Manually Select the subjects using the Query Builder and click Next. ![](../images/2021/06/89.png) - Here's the data Business Partner in SAP Business One that we will query. ![](../images/2021/06/86.png) - Here's the record in Salesforce that has only name and card code. ![](../images/2021/06/87.png) - Click Execute SOQL, a select record that we want to send to SAP business one, and click OK. ![](../images/2021/06/88.png) - Click Send. ![](../images/2021/06/89.png) - Go to Message Monitor to see the result. ![](../images/2021/06/90.png) - Here’s the result in Salesforce after we query from SAP Business partner. ![](../images/2021/06/91.png) ![](../images/2021/06/92.png) #### 2. How to query in list of records with BusinessPartner Module. Step1: We need to modify Message type Body of Response. We need to modify the Message type of Body response in the List value. - Go to Repository of SAP Business Partners. ![](../images/2021/06/28-1.png) - Change type of body request from Rest Request Body to Plaint structure. ![](../images/2021/06/29-1.png) - After changing the type successfully we need to export metadata. ![](../images/2021/06/30-1.png) - Choose a format file XSD and click Export button. ![](../images/2021/06/31-1.png) - Here's the file that we export. ![](../images/2021/06/33-1.png) - Go to Body Message type for delete messageRel. ![](../images/2021/06/32-1.png) - Click related. ![](../images/2021/06/34-1.png) - Scroll down to find MsgTypeRelReferenced and click delete. ![](../images/2021/06/35.png) - Go back to Repository and click Import Metadata. ![](../images/2021/06/36-1.png) - Choosing type XSD and put the fule that we have exported. ![](../images/2021/06/37-1.png) - Now we have import sucessfully. ![](../images/2021/06/38-1.png) - Now go to create a New Message type. ![](../images/2021/06/38-1.png) - Fill the name, Type Rest response Body and put Response as a parent. ![](../images/2021/06/39-1.png) - Go to  Body that we have import and click edit. ![](../images/2021/06/40-1.png) - Edit the name Body to value and put the parent is BodyOfList. ![](../images/2021/06/42-1.png) - Now we have Modify Response message type for the list already. ![](../images/2021/06/43-1.png) Step2:  Create Outbound Interface and Inbound Interface. We need to link both Interfaces with Message Type that we modify. - Here's Request Interface. ![](../images/2021/06/44-1.png) - Do mapping, we need one field of Salesforce to do callout. ![](../images/2021/06/45-1.png) - Here's Response Interface. ![](../images/2021/06/46-1.png) - Do mapping ![](../images/2021/06/47-1.png) - Go to request and put the response Interface in field Response. ![](../images/2021/06/48-1.png) Step 3: Go to the SAP control board and create SAP Business One  Adapter. We put BusinesssPartners in field API service Endpoint meaning that we query all records from Sap business Partner to Salesforce. - Here's the Adapter. ![](../images/2021/06/49-1.png) Step4: link this Adapter with the Request Interface. ![](../images/2021/06/50-1.png) Step 5: Callout by using Manual process on sap control board. ![](../images/2021/06/52.png) - Select one Account to Callout and click OK button. ![](../images/2021/06/53-1.png) - Click send button ![](../images/2021/06/54-1.png) - Go to Message Monitor to see the result. ![](../images/2021/06/55-1.png) **3. Query From SQL Query.** We can query From SQL Query when we already create SQL Query in SAP Business One. For example, if we have Create SQL query from a Business partner so we need to Create Outbound and Inbound Interfaces that are linked with the Business partner's message type that has response message type in the list as the Topic Query in List,  we do mapping as normal and then we just Put API service EndPoint to **SQLQuery **and we need to put the SQL code in SAP Business One that we have. - Here's the adapter ![](../images/2021/06/57-2.png) We do in the same way as the case query in the list. #### Summary Finally, we have learned how to Query a single record and query all records from SAP Business One Application using operation Get in SAP Business one Adapter. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: Enable ODBC on the new Agent Slug: enable-odbc-on-new-agent URL: https://help.skyvva.com/#article/enable-odbc-on-new-agent ================================================================================ # Enable ODBC on the new Agent #### Introduction The JDBC-ODBC Bridge allows applications written in the Java programming language to use the JDBC API with many existing ODBC drivers. The Bridge is itself a driver based on JDBC technology ("JDBC driver") that is defined in the class sun.jdbc.odbc.JdbcOdbcDriver. The Bridge defines the JDBC sub-protocol odbc. Oracle does not support the JDBC-ODBC Bridge from Java 8. Oracle recommends that you use JDBC drivers provided by your database vendor instead of the JDBC-ODBC Bridge. Oracle was removed JDBC-ODBC Bridge since Java 8, but we have enhanced on our new Agent to support ODBC connection although the Agent was used Java 15. This function available from Agent 3.05 and later. We are showing the direction from Salesforce to the Agent for pushing data to insert records to the database, SQL Server is used for example. Currently, we support only this Database. In this tutorial, we showed the INSERT operation only, due to everything is the same as JDBC. So we can check the JDBC tutorial follow to this link [How to push data to the Database using the new Agent](#article/tutorial-v2-41-lightning)![](../images/2021/07/ODBC.png) #### Pre-required - Create a data source - Create ODBC adapter on Agent Control Board - Generate MessageType from Table - Create Integration/Interface - Do mapping - Push data to Database **Step-1: Create a Data source** [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We need to create a data source on the machine which is running the Agent. We need to download the OBDC driver if it not available on your machine[/su_box] - Start => Administrative Tools=>ODBC Data Sources (32-bit) ![](../images/2021/07/o1.png) - Navigate to the System DSN tab and press Add ![](../images/2021/07/o2.png) - Choose the driver and press Finish ![](../images/2021/07/o3.png) - Fill in any Name and Server address then press Next ![](../images/2021/07/3.png) - Choose with SQL Server authentication using a login ID and password entered by the user. And fill the Username and Password of the Database. ![](../images/2021/07/4.png) - Choose default Database ![](../images/2021/07/5.png) - Press Finish, for keeping as the default setting ![](../images/2021/07/6.png) - Press Test Data Source for test connection and press Ok for completing setup Data Source ![](../images/2021/07/10.png) - Then we got Data source name display as an example below ![](../images/2021/07/o4.png) **Step-2: Create an Adapter** - Navigate to Agent Control Board ![](../images/2021/07/12.png) - Verify the connection between Agent and Salesforce - Choose the existing connection destination and press Continue ![](../images/2021/07/13.png) - Ping Agent Connection ![](../images/2021/07/14.png) - Ping Salesforce Connection ![](../images/2021/07/15.png) - After the instance connection is online then navigate to Adapter for creating ODBC Adapter to connect to the Database ![](../images/2021/07/Adapter.png) Fill all required field - Name: *any name* - Type: Agent Database - Direction: Outbound - Status: Active - API: ODBC - Database Type: *SQLServer* - Driver: *jdbc.odbc.JdbcOdbcDriver* - Username: (*your user name on database)* - Password: (*your password on database)* - Hostname: 3.*124.40.194 (public ipv4 on EC2 AWS)* - Port: *1433(default)* - Database Name: your database name - Insert Operation Mode: *Internal Key Management* - Connection URI: *jdbc:odbc:testSQL-ODBC-Native(connection url will be form: jdbc:odbc:[=])* - Connection Destination: *your destination name* ![](../images/2021/07/Internal.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For Agent version 3.05 , on the Connection URI we need to include the username and password.For example: *jdbc:odbc:testSQL-ODBC-Native;user=yourUsername;password=yourPassword*. It is used for generate MessageType. But if we use patch 1 of Agent 3.05, and then we no need to include the user name and password on Connection URI, we need only Datasource name[/su_box] We can test the connectivity to the Database by pressing Ping Connection ![](../images/2021/07/Adapter3.png) **Step-3: Generate Message Type ** - Navigate to the Import Metadata tab - Choose Metadata Provide and Repository then press Import Database Metadata - ![](../images/2021/07/ImportMsgType.png)Fill in required fields and Database Operations like Insert, Update, Delete, and Select. The MessageType will generate differently depend on those operations.![](../images/2021/07/ImportMsgType2.png) - Choose the Table name then press Create Message Type button ![](../images/2021/07/ImportMsgType3.png) Here is the Message Type generating from the Table “*tbl_account_db_ATN*” ![](../images/2021/07/finalMessageType.png) In this example, we show about INSERT operation to send data from Salesforce to the SQL Server Database. We have defined the key auto increment on the table, the key is generated automatically by the database. So we need to define the Response interface for updating the key sent from the Database. For making the data on from Salesforce and the Database the same. The Message Type generating explanation is the same as the JDBC example, we can find out on this link [How to do insert operation using Synchronous and Asynchronous outbound interface](#article/tutorial-v2-41-lightning) **Step-4 Create Interface** - Create an outbound Interface (Request) ![](../images/2021/07/interface.png) - Do mapping ![](../images/2021/07/mapping.png) - Create an inbound Interface (Response) ![](../images/2021/07/InterfaceResponse.png) - Do mapping - ![](../images/2021/07/mappingResponse.png) Before pushing data to the Agent, we need to check the Cache status first, and make sure it displays completely. ![](../images/2021/07/Cache.png) **Step-5 Push data to the Database** - Navigate to Agent Control Board then Interface tab, choose Interface outbound direction, and press button Manual Process ![](../images/2021/07/pushInterface.png) - Choose the option “Manually select the sObject using the Query Builder?” ![](../images/2021/07/manuul.png) - Press Execute SOQL button, it will select the record base on the query statement ![](../images/2021/07/querySelect.png) - Press button Send ![](../images/2021/07/QueryPush.png) - Check the result on Message Monitoring The record insert correctly into the Database and update the database key to the Salesforce ![](../images/2021/07/Msg.png) #### Summary Finally, we have understood the scope of the new Agent that we can push data to the Database by using the ODBC driver. We also know about how to create Data Sources, generate Message Type and push data on the Agent Control Board. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: 1. How to use CSV payload with /V4/integrate? Slug: 1-how-to-use-csv-payload-with-v4-integrate URL: https://help.skyvva.com/#article/1-how-to-use-csv-payload-with-v4-integrate ================================================================================ # 1. How to use CSV payload with /V4/integrate? ### Introduction: ⦁ Our V4/integrate rest variant supports JSON,XML and CSV therefore it is possible to pass the Rest envelope XML or JSON or CSV to the body of the v4/integrate. This means that for invoking the skyvva API we use only the rest variant../services/apexrest/skyvvasolutions/v4/Integrate with either XML or JSON or csv  payload. ⦁ In the URL of V4 API, the query parameter is added in URL only. We have two type of response: 1. standard response 2. custom response using the response (outbound) interface to do the mapping 1. standard response **Pre-requisites:-** ⦁ Create an Integration ⦁ Create Metadata Provider ⦁ Create Repository. ⦁ Create a Message Type. **1. Create Inbound Interface:-** a. Enter Metadata Provider. b. Enter Repository. c. Message Type.![](../images/2021/07/freesnippingtool.com_capture_20210723035253.png) **2. Do Mapping:-![](../images/2021/07/freesnippingtool.com_capture_20210723035736.png)⦁ **Save Mapping:** ** **3. Configuration on postman side:-** **1. V4 API:-** V4 API pass Integration, Interface, mode, request-format, response-format parameter inside the URL query parameter. **2. The URL contains:-** ⦁ Salesforce classic URL. ⦁ Integration name. ⦁ Interface name. ⦁ mode. ⦁ response-format. ⦁ request-format. ![](../images/2021/07/freesnippingtool.com_capture_20210723035108.png) **3. Authorization:-** ⦁ Select Bearer token. ![](../images/2021/07/freesnippingtool.com_capture_20210723035904.png) **4. Header:-** ⦁ Enter “Bearer+Session ID”. ![](../images/2021/07/freesnippingtool.com_capture_20210723040015.png) **5. Body:-** ⦁ Enter  CSV payload as per your message type which we have created earlier. ![](../images/2021/07/freesnippingtool.com_capture_20210723040058.png) **6. Send the Request:-** Click on send button. ![](../images/2021/07/freesnippingtool.com_capture_20210723040129.png) **7. Check the Result:-** ![](../images/2021/07/freesnippingtool.com_capture_20210723040211.png) **8. Check Result on Message monitoring:-** ![](../images/2021/07/freesnippingtool.com_capture_20210723040316.png) **SUMMARY** Finally, we have learned about how to use csv payload with ../V4/integrate. We have understood the MessageType and checking results on postman. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to logg the request and response for debugging purpose? Title: 136.How to logg the request and response for debugging purpose? Slug: 136-how-to-save-raw-xml-or-json-payload-for-debugging-purposes URL: https://help.skyvva.com/#article/136-how-to-save-raw-xml-or-json-payload-for-debugging-purposes ================================================================================ # 136.How to logg the request and response for debugging purpose? **How to save raw XML or json payload for debugging purposes?** #### Introduction: We have added a new feature regarding Generate Raw Payload. This function uses to debug and define the error in case the data is not correctly transformed. It will create a file and link to the API or parent message, and you will see its original state. To use this function, you need to have checked the “Raw logging Payload” field in the inbound and outbound interface. For inbound processing is not support with ASYNC Mode. #### Pre-requisite: ⦁ Upload or create SOAP Message Type. ⦁ Create Integration and two Interfaces for Request and Response. ⦁ Create SOAP Adapter. ⦁ Check box Generate Raw payload on Interfaces. **1**.**How to save raw XML payload for debugging purposes?** **Step1**: **Upload or create SOAP Message Type.** ⦁ Here’s SOAP Message Type. ![](../images/2021/07/freesnippingtool.com_capture_20210726041450.png) **Step2**: **Create Integration and two Interfaces, linked with message type, and check flag Generate Raw payload.** ⦁ Here’s Request Interface. ![](../images/2021/07/freesnippingtool.com_capture_20210726001614.png) Scroll down to see the flag Generate Raw payload? Here’s Example ![](../images/2021/07/freesnippingtool.com_capture_20210726001820.png) **⦁ **Do mapping. Here’s Example ![](../images/2021/07/freesnippingtool.com_capture_20210726002058.png) ⦁ Here’s Response Interface that linked with message type. Here’s Example. ![](../images/2021/07/freesnippingtool.com_capture_20210726001958.png) Linked Response Interfaces with Request Interface. **Step3:** **Now select the manual process.**![](../images/2021/07/freesnippingtool.com_capture_20210726002140.png) Select the Database Query statement as shown in fig. ![](../images/2021/07/136.png) **Step 4: We will get the result as screenshot below. You will get the request and response message to cover the business message.** Here is the result: We will get raw logging payload file link to the request api message. ![](../images/2021/07/freesnippingtool.com_capture_20210726002505.png) Here is the xml payload of log payload file. ![](../images/2021/07/freesnippingtool.com_capture_20210726002534.png) **2.How to save raw json payload for debugging purposes?** **Pre-requisite:** **Step 1:** ⦁ Create Integration and Request/Response Interface ⦁ Outbound adapter “REST” and link with request interface. ⦁ Message type for REST for request and Response. ⦁ Create REST adapter using with mock service. ![](../images/2021/07/freesnippingtool.com_capture_20210726050247.png) Linked Response Interfaces with Request Interface. ![](../images/2021/07/freesnippingtool.com_capture_20210726050333.png) Scroll down to see the flag Generate Raw payload? Here’s Example ![](../images/2021/07/freesnippingtool.com_capture_20210726050400.png) **Step 2:Do mapping and save it.** ![](../images/2021/07/freesnippingtool.com_capture_20210726050448.png) **Step 3:create new rest adapter** ![](../images/2021/07/5-1.png) ![](../images/2021/07/6-1.png) **Step 4:check on message monitoring and Click on Message name of API Message.** ![](../images/2021/07/7-1.png) **Step 5:Click Raw Logging Payload.** ![](../images/2021/07/freesnippingtool.com_capture_20210726050535.png) Here’s the raw payload of Request Interface ![](../images/2021/07/9.png) **SUMMARY** So in this we have learnt the purpose is to log the request and response for debugging of the api call. The 'generate raw payload' should not always be activated because it generate to much file storage.We should not always set this mode to run only if it is needed in error analyze use case. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use the init-operation 'Delete + Upsert' to handle delta changes for parent-child interface? Title: 137.How to use the init-operation 'Delete + Upsert' to handle delta changes for parent-child interface? Slug: 137-how-to-use-the-init-operation-delete-upsert-to-handle-delta-changes-for-parent-child-interface URL: https://help.skyvva.com/#article/137-how-to-use-the-init-operation-delete-upsert-to-handle-delta-changes-for-parent-child-interface ================================================================================ # 137.How to use the init-operation 'Delete + Upsert' to handle delta changes for parent-child interface? ## **Learning Objectives :-** This unit describes:- - Create Integration. - How to use the init-operation 'Delete + Upsert' to handle delta changes for parent-child interface? #### Introduction: In this tutorial, we will learn How to use the init-operation 'Delete + Upsert' to handle delta changes for parent-child interface? We have added a new mode into our chained processing so that now we can handle delta changes from the external client. Before we always delete first all child records and then insert all again. This is very simple and easy and works perfectly when the sender always sends the complete data again. For example, an order contains 5 items. When for the next times it sends 5 items again for the same order 4711 then we delete first and then insert again. Thus we always have consistent data for the sending application. But in some situations, the sender cannot send the complete 5 items again. It can send only the delta e.g. 3 of 5. When we use our old mode we will get only 3 items because these 3 were changed on the sender side. So we delete all 5 in Salesforce and insert 3 new ones. Finally, we have 3 items in Salesforce but 5 in the sending application. Now the data is inconsistent between the sending application and Salesforce. The new mode with the value ' Delete + Upsert' can handle this situation where the sender sends only changed data. This example cannot handle as well with our new mode. Our new mode can help to keep the data of the existing record correctly when we don't delete anymore but update the record. But the sender needs to send 5 items #### Pre-required: - Create Integration - Create Outbound and Inbound Interface - Create iChained-Interface **Step 1**: Create Integration: To know detail about Integration, please follow this tutorial. [What is Integration, and How to use it? ](#article/what-is-an-integration-and-how-to-create-it) ![](../images/2021/07/bismillah-4.png) **How to create iChained Interface?** **Step 2:** **In which create an new two Interface as shown below in the picture.** ![](../images/2021/07/2-1.png) - To create an iChained Interfaceyou need to have at least two interfaces. However, you can create the iChained Interface on Contact Interface. Please go to Interface Related page Contact, scroll down on iChained Interface section and Click the New iChained Interface. ![](../images/2021/07/3-1.png) - **Fill the fields and click on the save button.** ![](../images/2021/07/4-1.png) - Fill the Parent Interface - Select Sequence - Select Child Interface - Select Parent Relationship Name/Foreign Field - Select **Int Operation** **As shown in below picture:** ![](../images/2021/07/5-2.png) In Below picture Shows **“ How to use the init-operation 'Delete + Upsert**” ![](../images/2021/07/6-2.png) **Save it:** ![](../images/2021/07/7-2.png) #### Summary Finally, we have learned about How to use the init-operation 'Delete + Upsert' to handle delta changes for parent-child interface? Here we have added a new mode into our chained processing so that now we can handle delta changes from the external client. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to transfer Salesforce business data to store in OneDrive. Title: 138.How to transfer Salesforce business data to store in OneDrive. Slug: 138-how-to-transfer-salesforce-business-data-to-store-in-onedrive URL: https://help.skyvva.com/#article/138-how-to-transfer-salesforce-business-data-to-store-in-onedrive ================================================================================ # 138.How to transfer Salesforce business data to store in OneDrive. Learning Objectives :- This unit describes:- - About Microsoft OneDrive. - Microsoft Microsoft OneDrive. #### Introduction This tutorial is to show our new OneDrive connector to save data from Salesforce into a OneDrive file.With Microsoft OneDrive, you can easily and securely store and access your files from all your devices. You can work with others regardless of whether they're inside or outside your organization and terminate that sharing whenever you want. OneDrive helps protect your work through advanced encryption while the data is in transit and at rest in data centers. #### Pre-required: - Create Integration. - Create Microsoft OneDrive connection by using Microsoft control board. **Introduction:**- **Microsoft OneDrive:** - **Microsoft's**cloud storage service, **OneDrive**, **can** back up your personal and **work** files online. - With it you **can**sync files on your Windows 10 PC to the cloud and to your other Windows PCs, smartphone or tablet (with the **OneDrive** app for **Android** or iOS installed on either). - We can easily transfer **Salesforce **Business data to store in **Microsoft OneDrive.** **How to configure Adapter in Microsoft Control Board:** **Step 1**: Create Integration: To know detail about Integration, please follow this tutorial. [What is Integration, and How to use it? ](#article/what-is-an-integration-and-how-to-create-it) ![](../images/2021/07/1-3.png) ![](../images/2021/07/2-2.png) **Save it.** Step 2: Click on Microsoft Control Board link. ![](../images/2021/07/3-2.png) Step 3: Click on the adapter tab. ![](../images/2021/07/4-2.png) Step 4: Click on New button and select adapter type as a Microsoft OneDrive and fill all information base on your configuration and save. ![](../images/2021/07/5-3.png) **Save it.** **Microsoft One Drive CSV Outbound Adapter :** **1) Create Metadata Provider, IStructure Repository and Create Flat Structure.** **2) How to Create Microsoft One Drive CSV Outbound Adapter:** Go to Integration (Example: Microsoft_OneDrive_Integration) Create Outbound Adapter : MODrive_CSV_Request_Adp(Please follow above steps for create adapter. ![](../images/2021/07/6-3.png) **Save it.** **Create Integration and Outbound Interface:** Integration: Microsoft_OneDrive_Integration Outbound Interface: MODrive_CSV_Request ![](../images/2021/07/7-3.png) **Link Outbound Adapter: MODrive_CSV_Request_Adp** ![](../images/2021/07/8-1.png) **Mapping:** #### What is SKYVVA Mapping Tool? SKYVVA’s Mapping tool is a tool to map other system objects and fields with the SFDC object field. A mapping is a collection of key-value pairs where each unique key maps to a single value. Here we will map source fields with target object fields. Source fields are nothing but our Istructure. We can create Istructure as: - Manually - Uploading file in source definition. - Using the Message type feature. **You can refer below link for more details about Mapping:** #article/how-to-use-mapping ![](../images/2021/07/9-1.png) **The above picture show the Source to Target:** **Callout:** skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0011j000015ikjBAAQ','0011j000015ikjCAAQ'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('Microsoft_OneDrive_Integration','MODrive_CSV_Request',ids,'SYNC',c); **Message Monitoring:** ![](../images/2021/07/10..png) **Check CSV Data on Microsoft One Drive Server:** ![](../images/2021/07/11-1.png) **Note: **when you are creating csv file then you can use , ; Tab And | operator with Microsoft one drive outbound adapter. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use execute outbound interface group ? Title: How to use execute outbound interface group ? Slug: how-to-use-execute-outbound-interface-group URL: https://help.skyvva.com/#article/how-to-use-execute-outbound-interface-group ================================================================================ # How to use execute outbound interface group ? ### Learning Objectives - Explain what is interface group. - How to create it and how to use it. - We can now execute the group consisting of many interfaces. ### Introduction **What is an interface group?** An interface group is a unit to groups logical interfaces together. For example, you can group interfaces that are related to each other e.g. Account and Contact into one interface group. The interface group is the object the user defines at configuration time. #### Interface Execution Scheduler? This scheduler is only used with the outbound interface and is generated automatically for any outbound interface inside an integration. It uses the SOQL in the field “SOQL Query for filter sObject”. In this field, the user can write the SOQL statement which filters sObject to be passed on the method invokeCallout2(). The scheduler uses the method invokeCallout2() to execute the outbound interface. If the SOQL is not powerful enough to solve the requirement of a customer then they can use apex class to write their own logic for data selection. Then the flag “Use Apex Class” has to be set and in the field “Apex Class for Filter sObject” an apex class has to be specified. **Step 1:** We have to create the following data for inbound processing: - Create Metadata for message type -> Create I structure Repository in it -> Create appropriate message type. - The next step is to create Integration. - Then Create an Inbound Interface where we have to select your Metadata, Repository, and message type. ![](../images/2021/07/freesnippingtool.com_capture_20210727033449.png) **Step 2:** Do mapping and save it. ![](../images/2021/07/freesnippingtool.com_capture_20210727033617.png) **Step 3:** Select the interface and select the manual process as shown in Fig. ![](../images/2021/07/freesnippingtool.com_capture_20210727034036.png) **Step 4:** Select the execute option and select send button. ![](../images/2021/07/freesnippingtool.com_capture_20210727034222.png) #### Create Outbound Interface:- - **Select Operation type- ** Query/ PullQuery. - **Processing mode-** Asynchronous. - **Select Outbound Adapter.** - **In Section “SOQL Query for filter sObject”** - **Filter Query****:- **SELECT Id FROM Account WHERE BillingCity = ‘PhnomPenh’ AND SAP_Sales_Org__c =” - **Interface to change condition:- **Enter Inbound Interface ID. - **In the section “SOQL Query to select sObject data” or by using “Query Editor” we can write the query:-** SELECT Id,BillingCity,BillingCountry,Name,SAP_Sales_Org__c FROM Account. ![](../images/2021/07/freesnippingtool.com_capture_20210727034302.png) ![](../images/2021/07/freesnippingtool.com_capture_20210727034344.png) #### Check Result on Message Monitoring : ![](../images/2021/07/7-4.png) #### Step 6: Select the interface group and manually process it. ![](../images/2021/07/freesnippingtool.com_capture_20210727034444.png) Check on message monitoring. ![](../images/2021/07/9-2.png) #### Run the scheduler:- ![](../images/2021/07/10-1.png) ![](../images/2021/07/11-2.png) ![](../images/2021/07/12-1.png) ### How to Execute Outbound Interface? **SKYVVA** application support for outbound interface execution scheduling and manual processing with parameter expressions based on the last run date or creation date. - **Scheduling Outbound Interface Execution**: **SKYVVA** application allows users to schedule outbound interface executions based on specified time intervals (e.g., hourly, daily, weekly) or custom schedules. - The user can configure the outbound interface in the **SKYVVA** application to run at the desired schedule as per the business requirement. - **Manual Processing**: Manual processing involves allowing users to trigger interface executions manually when needed as per the business requirement. - **SKYVVA** application provides a user interface or API for initiating manual runs. - **Parameter Expressions**: Parameter expressions dynamically pass values to the outbound interface based on certain conditions. - In the context of the last run date or creation date, Integrate the calculated parameters into the outbound processing. This depends on the specifics of your system. The user needs to configure them in the interface configuration. - **Last Run Date/Creation Date**: To utilize the last run date, the user stores this information in the configuration file and retrieves it as needed to calculate the date range for the interface. - On the other hand, the creation date might refer to the date when a specific record was created, and the user can filter data based on this date.** ** **Description:** We have added two parameter expressions such as  **{!_SKYVVA__RecordCreationDate}** and **{!_SKYVVA__RecordModificationDate}**. The **{!_SKYVVA__RecordCreationDate}** is used for the latest records creation datetime. **{!_SKYVVA__RecordModificationDate}** is used for the latest records modification datetime. It will check the last records changed to be sent by the InterfaceExecution scheduler. For example, **SOQL** as **SELECT Id FROM** Account **WHERE** LastModifiedDate > **{!_SKYVVA__RecordModificationDate}**. Two parameter expressions in the system: **{!_SKYVVA__RecordCreationDate}** and **{!_SKYVVA__RecordModificationDate}**. These expressions are used to capture and reference date and time information related to records in the system. Here's a breakdown of how these parameter expressions are being used: - **{!_SKYVVA__RecordCreationDate}**: This expression is used to capture the datetime of the latest record creation in the **SKYVVA** application. - It likely holds the timestamp when the most recent record was created. - **{!_SKYVVA__RecordModificationDate}**: This expression is used to capture the datetime of the latest record modification in your **SKYVVA** application. - It likely holds the timestamp when the most recent record was modified. #### How to Execute Outbound Interface By Scheduler? **Business Scenario:** Test with 1000 records to send data out by InterfaceExecute. To perform a test with 1000 records to send data out using InterfaceExecute. Here's a general outline of steps the user has to follow for testing with 1000 records: - **Data Preparation**: First, ensure that the user has the 1000 records want to send out ready in a suitable data format (e.g., CSV, JSON, database, etc.). Make sure that the data is properly formatted and clean for testing. - **InterfaceExecute**: Identify the interface method the user wants to use to send the data out using InterfaceExecute. This depends on the **SKYVVA** application. - **Data Validation**: After sending the data, validate that it has been processed correctly and that the results match user expectations. [su_box title="Expectation: " box_color="#2a8af0" title_color="#000000"]When the InterfaceExecute scheduler runs, it will take 1000 records with NewCreateDate or LastModifyDate to send data out. [/su_box] The scheduler "InterfaceExecute" that the user wants to run. The user expectation is that when this scheduler runs, it should process or take 1000 records based on either "**NewCreateDate**" or "**LastModifyDate**" and send that data out. Here's a breakdown of what this expectation means: - **Scheduler:** "InterfaceExecute" is the scheduler or process the user needs to run. - **Number of Records:** The user expects it to process or select 1000 records. - **Criteria for Record Selection:** The records are to be selected based on either "NewCreateDate" or "LastModifyDate." It seems like the user wants to filter records based on the values in these date fields. The user might be looking for records that were created or modified within a certain time frame. - **Data Sending:** After selecting these 1000 records, you expect the scheduler to send this data out. The method and destination for sending the data are not specified, so it could involve various forms of data transmission like sending it to another system or exporting it to a file. ***Required step:*** - SAP CPI Outbound Adapter ![](../images/2021/07/j.png) - Created the Outbound Interface ![](../images/2021/07/j-1.png) - Mapping ![](../images/2021/07/j-2.png) - Go to SOQL Query for filter sObject section ![](../images/2021/07/j-3.png) - Please add the query condition {!_SKYVVA__RecordCreationDate}: use for latest records creation date time {!_SKYVVA__RecordModificationDate}: use for latest records modification time ![](../images/2021/07/j-4.png) - Then go to the Integration -> Scheduler Button let's start the InterfaceExecution scheduler ![](../images/2021/07/j-5.png) - After the Scheduler Process is Completed it will send a message monitoring **Message Monitoring** ![](../images/2021/07/j-6.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]After the InterfaceExecute scheduler run is completed, it will take 1000 records with NewCreateDate or the LastModifyDate to send data out.[/su_box] A scheduler and record selection criteria based on either the "NewCreateDate" or the "LastModifyDate" fields. After the "InterfaceExecute" scheduler run is completed, the process will select 1000 records that meet the specified criteria to send data out. Here's a breakdown of the key components: - **Scheduler**: There is a scheduler called "InterfaceExecute" that runs periodically or as part of a specified workflow. - **Record Selection**: The process involves selecting records based on two date-related fields: "NewCreateDate" and "LastModifyDate." - **Criteria**: It is the process of selecting records that either have a "NewCreateDate" or a "LastModifyDate" that meets certain criteria. - **Data Sending**: Once the 1000 records meeting the criteria are selected, they are prepared for sending data out. This could involve sending them to another destination which the user defines as per business scenario. [su_box title="Note" box_color="#33FF77" title_color="#000000"]If there is no record new or update then nothing to do for the scheduler.[/su_box] #### How to Execute Outbound Interface By Manual Process? The business scenario where an integrated **SKYVVA** application. The user experienced a record update due to a manual process. This is a common practice for data updates. Here's a breakdown of the information you provided: - **Record Update**: A record within the **SKYVVA** application has been updated. This means that some information associated with a particular data entry or transaction has been modified. - **LastModifiedDate**: "LastModifiedDate" is a date field that indicates when the record was last modified. It helps keep track of changes made to the data. - **Manual Process**: The update to the record is done manually by a user. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]We use the manual process to transfer records that have the latest updated[/su_box] - Now I will change one record for the test ![](../images/2021/07/j-8.png) - Then go to integration click interface and select manual process ![](../images/2021/07/j-9.png) - After the Manual Process is Completed it will send a message monitoring Message Monitoring ![](../images/2021/07/j-10.png) The results related to transferring records based on their LastModifiedDate field. Data processing means that the user has to send out data that has been updated most recently. Here's a breakdown of the statement: - "It will transfer records": This part indicates that there is a process that is responsible for transferring or sending records/data. - "that have the latest updated (LastModifiedDate)": This specifies the criteria for selecting records. Records that have the most recent updates are being targeted for transfer. - "to send data out": The ultimate goal of this process is to send the selected records/data to some destination. [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will transfer records that have the latest updated (LastModifiedDate) to send data out.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to read data from OneDrive and push to Salesforce? Title: 140.How to read data from OneDrive and push to Salesforce? Slug: 140-how-to-read-data-from-onedrive-and-push-to-salesforce URL: https://help.skyvva.com/#article/140-how-to-read-data-from-onedrive-and-push-to-salesforce ================================================================================ # 140.How to read data from OneDrive and push to Salesforce? **Learning Objectives:- **This unit describes:- - Overview of Microsoft OneDrive. - How to read data and push data to Salesforce. - Overview of Mapping. **Introduction:** In this tutorial is to show how we can read data from OneDrive and push it to Salesforce using our new OneDrive connector. To create inbound adapter in Microsoft control board. And use to schedule functionality in control board. #### Pre-required: - Create Integration - Create Adapter connection by using Microsoft control board. Create Integration: To know detail about Integration, please follow this tutorial. [What is Integration, and How to use it? ](#article/what-is-an-integration-and-how-to-create-it) **What is Adapter?** SKYVVA Adapter is a connector/device which store the property configuration of external system. Adapter is important, without it you can’t transfer the data. It provides the interface between a computer and a network connection. Before creating Adapter you have to create Integration or interface. Below are the steps of How to read data from OneDrive and push to Salesforce. Step 1: Create new Adapter Go to Integration Detail Select **Microsoft Control Board** ![](../images/2021/07/1-4.png) Go to Adapter Tab: ![](../images/2021/07/2-3.png) Select New  as shown in below picture: ![](../images/2021/07/3-3.png) Fill the Information as shown in below picture![](../images/2021/07/4-3.png) ![](../images/2021/07/5-4.png) **Save it.** **Link Outbound Adapter: MODrive_XML_Request_Adp** ![](../images/2021/07/6-4.png) ** Mapping:** SKYVVA’s Mapping tool is a tool to map other system objects and fields with the SFDC object field. A mapping is a collection of key-value pairs where each unique key maps to a single value. Here we will map source fields with target object fields. Source fields are nothing but our Istructure. We can create Istructure as: - Manually. - Uploading file in source definition. - Using the Message type feature. ![](../images/2021/07/7-5.png) **            Callout:** skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0011j000015ikjBAAQ','0011j000015ikjCAAQ'}; List result = skyvvasolutions.Iservices.invokeCalloutV3 ('Microsoft_OneDrive_Integration','MODrive_XML_Request',ids,'SYNC',c); **Massage Monitoring:** ![](../images/2021/07/10.-1.png) **Check CSV Data on Microsoft One Drive Server:** ![](../images/2021/07/11-1.png) **Note: **when you are creating csv file then you can use , ; Tab And | operator with Microsoft one drive outbound adapter. ** ** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to post complex objects with transactional support? Title: 141.How to post complex objects with transactional support? Slug: 141-how-to-post-complex-objects-with-transactional-support URL: https://help.skyvva.com/#article/141-how-to-post-complex-objects-with-transactional-support ================================================================================ # 141.How to post complex objects with transactional support? ### 141. How to post complex objects with transactional support? **Learning Objectives:-  ** This unit describes:- - Overview of Integration or Interface - Overview of Workflow and it's Transaction - How to post complex object with transactional support? **Introduction:** In this tutorial shows the ways of post complex object with transactions.We have added to our v3 inbound processing the transactional processing meaning that for example when an order cannot be posted completely we rollback. We will not produce partial orders to be posted in Salesforce when this flag is set e.g. when we are running in the transactional processing mode. This mode is a new mode to our normal mode where we post the object in a non-transactional mode. This cause problem that we have partial orders we created in Salesforce. **What is Workflow and Workflow transaction?** Workflow is used to push the database on the condition, and the condition bases on Interfaces. Such as the Message that belongs to Account Interface will push into Account, and the Message that belongs to Contact Interface will push into Contact by Workflow. Workflow Transaction lets users automate standard/Custom internal procedures and processes to save time across our SKYVVA App. A workflow transaction is the main container for a set of workflow instructions. **Required Step:** **Step 1**: Create Integration: To know detail about Integration, please follow this tutorial. [What is Integration, and How to use it? ](#article/what-is-an-integration-and-how-to-create-it) - Here’s Integration ![](../images/2021/07/1-15-2024-11-31-34-AM.png) **Step 2: **Create Metadata and Repository as shown in below: - Create Metadata - Create Istructure Repository - Create Message type ![](../images/2021/07/1-15-2024-11-58-22-AM.png) **Step 3: **Create an inbound interface and link it with the message type, then specifically check the 'Transitional Handling' option. ![](../images/2021/07/to.png) **Step 3**: Do mapping select External Id. ![](../images/2021/07/1-16-2024-10-59-51-AM.png) **Step 4: **Open the Postman to Configuration. Copy the URL from **Salesforce Classic** and paste the parameters in Postman. Input the following: **integration name, interface name, mode=Synchronous, response-format=json, request-format=json.** ![](../images/2021/07/1-16-2024-11-18-23-AM.png) **Step 5: **Open the developer console in your Salesforce org to execute the script. Then, copy the selected log line and paste it into Bearer. ![](../images/2021/07/1-16-2024-11-31-24-AM.png) **Step 6:** Input the JSON payload in the Body header. - Our payload has a non-value of field Name. ![](../images/2021/07/1-16-2024-1-56-14-PM.png) - Go to message monitoring to view the message Note: When the Transactional Mode flag is ON, if a record fails in one of the messages, all messages within the entire tree will be rolled back. Let’s take an example: we have two levels of messages – account and contact. When an Account fails, it will be canceled throughout the entire tree, and its child nodes will show as ‘New’ as follow: ![](../images/2021/07/1-16-2024-2-05-32-PM.png) > ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 142.How to transfer Salesforce business data to store in Dropbox? Slug: 142-how-to-transfer-salesforce-business-data-to-store-in-dropbox URL: https://help.skyvva.com/#article/142-how-to-transfer-salesforce-business-data-to-store-in-dropbox ================================================================================ # 142.How to transfer Salesforce business data to store in Dropbox? ## 142.How to transfer Salesforce business data to store in Dropbox? **Learning Objectives :-** This unit describes:- - About Dropbox. **Introduction** This tutorial is used to show user how the business data is transferred from salesforce and stored in the dropbox. **Dropbox:-** Dropbox is a file hosting service, often referred to as a "cloud storage" service. Dropbox is one of the oldest and most popular cloud storage services in use today, though there are many alternatives, including Microsoft OneDrive, Box, Sync, and Google Drive. This adapter will be used to create CSV, EXCEL, XML, and JSON files inside the dropbox drive folder. **Dropbox Configuration:** We need to configure dropbox to use an adapter. Here is a link from where you can configure dropbox: [https://www.dropbox.com/developers/documentation/http/documentation](https://www.dropbox.com/developers/documentation/http/documentation) **Pre-Requisite:-** 1. Create Integration. 2. Create Adapter. ### Step 1 :- We have to create the following data for inbound processing: - Create Metadata for message type -> Create I structure Repository in it -> Create appropriate message type. - The next step is to create Integration. - Then Create an Inbound Interface where we have to select your Metadata, Repository, and message type. Then Select your adapter. ![](../images/2021/07/freesnippingtool.com_capture_20210728012041.png) ### Step 2 :- Click on open mapping ![](../images/2021/07/freesnippingtool.com_capture_20210728012123.png) We need to drag fields from Source and drop it to Target and save it. ### Step 3 :- Create the adapter ![](../images/2021/07/3-5.png) ![](../images/2021/07/4-5.png) fill all the fields and save it. ### Step 4 :- Ping the connection.![](../images/2021/07/freesnippingtool.com_capture_20210728012216.png) ![](../images/2021/07/6-6.png) as shown in figure it shows if its succesfull. ### Step 5 :- Dropbox Create new folder in dropbox. ![](../images/2021/07/7-7.png) The file has been send from salesforce to dropbox. ![](../images/2021/07/8-3.png) The content of the file is as shown in figure. ![](../images/2021/07/9-4.png) ### Step 6 :- Check on message monitoring. ![](../images/2021/07/10-3.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 143.How to read data from Dropbox and push to Salesforce? Slug: 143-how-to-read-data-from-dropbox-and-push-to-salesforce URL: https://help.skyvva.com/#article/143-how-to-read-data-from-dropbox-and-push-to-salesforce ================================================================================ # 143.How to read data from Dropbox and push to Salesforce? ## 143.How to read data from Dropbox and push to Salesforce? **Learning Objectives :-** This unit describes:- - About Dropbox. **Introduction** This tutorial is used to show user how the business data is transferred from salesforce and stored in the dropbox. **Dropbox:-** Dropbox is a file hosting service, often referred to as a “cloud storage” service. Dropbox is one of the oldest and most popular cloud storage services in use today, though there are many alternatives, including Microsoft OneDrive, Box, Sync, and Google Drive. This adapter will be used to create CSV, EXCEL, XML, and JSON files inside the dropbox drive folder. **Dropbox Configuration:** We need to configure dropbox to use an adapter. Here is a link from where you can configure dropbox: https://www.dropbox.com/developers/documentation/http/documentation **Step 1:** Dropbox InBound Adapter configure Example create JSON adapter: ![](../images/2021/07/1-6.png) ![](../images/2021/07/2-5.png) Ping Connection ![](../images/2021/07/freesnippingtool.com_capture_20210729025501.png) **Step 2:** Create InBound interface metadata, messageType and Do Mapping ![](../images/2021/07/freesnippingtool.com_capture_20210729025658.png) **Step 3:** Select open mapping ![](../images/2021/07/5-6.png) Click the save button. **Step 4:** Now Execute InBound There are two way to execute Manual Process on integration, or scheduler. ![](../images/2021/07/freesnippingtool.com_capture_20210729032307.png) ![](../images/2021/07/freesnippingtool.com_capture_20210729032348.png) **Step 5:** Message Monitor ![](../images/2021/07/9-5.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use the skyvva API to push data from Nav to Salesforce? Title: 144.How to use the skyvva API to push data from Nav to Salesforce? Slug: 144-how-to-use-the-skyvva-api-to-push-data-from-nav-to-salesforce URL: https://help.skyvva.com/#article/144-how-to-use-the-skyvva-api-to-push-data-from-nav-to-salesforce ================================================================================ # 144.How to use the skyvva API to push data from Nav to Salesforce? ## 144.How to use the skyvva API to push data from Nav to Salesforce? **Learning Objectives :-** This unit describes:- - This unit describe Microsoft Dynamic NAV #### Introduction This tutorial should show our new connector to push data to Dynamics e.g. create a Customer or other business object inside Nav. This tutorial is the first step and the basic to understand the concept of the SKYVVA integration Cloud. It describes the main SKYVVA object called “Integration”. You can follow the Link for Integration and Interface #article/what-is-an-integration-and-how-to-create-it #### What is Microsoft Dynamic NAV? Microsoft Dynamics 365 is a set of interconnected, modular Software-as-a-Service (SaaS) applications and services designed to both transform and enable your core customers, employees, and business activities. It combines CRM and ERP capabilities, integrating your data, business logic, and processes. So, instead of having separate, siloed sales and marketing functions, Dynamics 365 offers automated, integrated, and intelligent sales and marketing capabilities that efficiently connect, prioritize, and convert leads into paying customers. It is built on Microsoft Azure, which offers both a trusted platform and a broad ecosystem of services. And it is natively integrated with Microsoft 365’s productivity apps, giving you a unified way to manage users and services. **Pre-requisites:-** • Create an Integration • Create Metadata Provider • Create Repository. • Create a Message Type. ![](../images/2021/07/freesnippingtool.com_capture_20210723035253-1.png) **2. Do Mapping:-** ![](../images/2021/07/freesnippingtool.com_capture_20210723035736-1.png) • Save Mapping. **3. Configuration on postman side:** ![](../images/2021/07/freesnippingtool.com_capture_20210723035108-2.png) **1. V4 API:-** V4 API pass Integration, Interface, mode, request-format, response-format parameter inside the URL query parameter. 2. The URL contains:- 1. Salesforce classic URL. 2. Integration name. 3. Interface name. 4. mode. 5. response-format. 6. request-format. **3. Authorization:-** • Select Bearer token. ![](../images/2021/07/freesnippingtool.com_capture_20210723035904-1.png) **4. Header:-** • Enter “Bearer+Session ID”. ![](../images/2021/07/freesnippingtool.com_capture_20210723040015-1.png) **5. Body:-** • Enter JSON ,csv or XML payload as per your message type which we have created earlier. ![](../images/2021/07/freesnippingtool.com_capture_20210723040058-1.png) **6. Send the Request:-** • Click on send button. ![](../images/2021/07/freesnippingtool.com_capture_20210723040129-1.png) **7. Check the Result:-** ![](../images/2021/07/freesnippingtool.com_capture_20210723040211-1.png) **8. Check Result on Message monitoring:-** ![](../images/2021/07/freesnippingtool.com_capture_20210723040316-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 145.How to connect to Microsoft Dynamics NAV? Slug: 145-how-to-connect-to-microsoft-dynamics-nav URL: https://help.skyvva.com/#article/145-how-to-connect-to-microsoft-dynamics-nav ================================================================================ # 145.How to connect to Microsoft Dynamics NAV? ** Learning Objectives :-** This unit describes:- - This unit describe Microsoft Dynamic NAV - Configuration of Microsoft Dynamic NAV #### Introduction Dynamics CRM is a piece of business software, made by Microsoft. It's a **customer relationship management software** that helps businesses manage their customer database, generate new leads, engage with their customers, and resolve customer service issues. The Microsoft Dynamic NAV adapter is defined in the Microsoft Control Board. This means that the on-cloud and on-premise variant that doesn't use the agent as the middleware is defined in the Microsoft Control Board. When the Agent should be used as the middleware for the on-premise deployment for Dynamics 365 xx, NAV, and AX then we are using the Agent Control Board and the Agent Microsoft Dynamics 365xx, NAV, and AX adapter from there. we can see that NAV can provide an Odata and soap API. Thus we can access these APIs using our soap and OData adapter. So that For 'Dynamics NAV' we can use the soap or rest adapter because 'Dynamics NAV' provides both flavors of API. Microsoft Dynamics NAV Server supports a range of different client types. This includes the Microsoft Dynamics NAV Windows client and the Microsoft Dynamics NAV Web client and two types of web services. Before that we need to create Integration and Interface below are the link . #article/what-is-an-integration-and-how-to-create-it #### What is Microsoft Dynamic NAV? Microsoft Dynamics 365 is a set of interconnected, modular Software-as-a-Service (SaaS) applications and services designed to both transform and enable your core customers, employees, and business activities. It combines CRM and ERP capabilities, integrating your data, business logic, and processes. So, instead of having separate, siloed sales and marketing functions, Dynamics 365 offers automated, integrated, and intelligent sales and marketing capabilities that efficiently connect, prioritize, and convert leads into paying customers. It is built on Microsoft Azure, which offers both a trusted platform and a broad ecosystem of services. And it is natively integrated with Microsoft 365’s productivity apps, giving you a unified way to manage users and services. ![](../images/2021/08/1.png) **Microsoft Dynamic Nav is supporting 3 types of authentication:** - Basic: It requires a username and password. - Web Service Key: It's a required API Key. - Office 365 Authentication. ![](../images/2021/08/clipboard-202103181755-bpt0e.png) **Adapter Screen:** ![](../images/2021/08/Capture1.png) **Pre-requisite**: - Create Integration and Request/Response Interface - Outbound adapter “SOAP” and link with request interface. - Message type for SOAP for request and Response. - Create SOAP adapter using with mock service ![](../images/2021/08/2.png) **Linked Response Interfaces with Request Interface.** ![](../images/2021/08/3.png) **Scroll down to see the flag Generate Raw payload? Here’s Example** ![](../images/2021/08/4.png) **Do mapping and save it.** ![](../images/2021/08/5.png) **Create new  Rest adapter** ![](../images/2021/08/6.png) **Check on message monitoring and Click on Message name of API Message** ![](../images/2021/08/7.png) **Click Raw Logging Payload.** ![](../images/2021/08/8.png) **Here’s the raw payload of Request Interface** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use v2 processing with New Agent? Title: 1. How to use v2 processing with New Agent? Slug: how-to-use-v2-processing-with-new-agent URL: https://help.skyvva.com/#article/how-to-use-v2-processing-with-new-agent ================================================================================ # 1. How to use v2 processing with New Agent? ** Learning Objectives :-** This unit describes:- - This unit describes how to use v2 processing with New Agent - Configuration of v2 processing with New Agent #### Introduction Skyvva has an enhanced New Agent to work with processing v2.  For users who want to use New Agent instead of Old Agent, They can keep the old Interfaces, workflows, and mapping or the rules that they had set before but they need to change the old adapter to new Agent Adapter. In this tutorial, we will learn how to enable the v2 processing with the New Agent. #### How to do Inbound Integration v2 with New Agent. We can do Inbound Integration v2  CSV, Excel and flat XML with the new Agent by just configuration the Agent file Adapter instead of the File Adapter. It supports normal mode, batch mode, bulk mode and Auto Switch mode. **[su_box title="Note" box_color="#2a8af0" title_color="#000000"]In this case, we just show about Integration Inbound CSV. If the user wants to use excel or XML, the user can follow the same step like Integration Inbound CSV . [/su_box]** Pre-required - Integration and two inbound Interface to make a chain. - Connection Agent Control board. - Create Agent file Adapter. - Linked adapter with interface **Step1: **Go to Interfaces Inbound processing v2. - Here’s the V2  Account Interface. ![](../images/2021/08/1-2.png) - Here's the mapping ![](../images/2021/08/2-1.png) - Here's V2  Contact Interface. ![](../images/2021/08/3-1.png) - Here's the mapping ![](../images/2021/08/4-1.png) We need to using Ichain to connect Account and Contact has relationship. - Go to Interface account related and configuration ichain. ![](../images/2021/08/5-2.png) - Click new Ichained Interface. ![](../images/2021/08/6-1.png) - See the example below. ![](../images/2021/08/7-1.png) **Step2:** Connection Destination. We need to create a Connection Destination on New Agent Control Board to using Agent File Adapter. ![](../images/2021/08/8-1.png) Then we connected the destination successfully we need to create Agent File Adapter. - Create Agent File Adapter. ![](../images/2021/08/9.png) **Step3:** Linked Adapter with Interface Account. ![](../images/2021/08/10.png) **Step4:** Go to the Adapter on the agent control board and click the button Start. ![](../images/2021/08/11.png) - Go to monitor to check the result. ![](../images/2021/08/12.png) #### How to do Outbound Integration v2 with New Agent. We can do Outbound Integration v2  CSV, Excel and flat XML with the new Agent by just configuration the Agent file Adapter instead of the File Adapter. **[su_box title="Note" box_color="#2a8af0" title_color="#000000"]In this case, we just show about Integration Outbound CSV. If the user wants to use excel or XML, the user can follow the same step like Integration Outbound CSV . [/su_box]** Pre-required - Integration and Outbound Interface - Connection Agent Control board. - Create Agent file Adapter. - Linked adapter with interface **Step1**: Go to Interfaces Inbound processing v2. - Here’s Outbound Interface. ![](../images/2021/08/13.png) - Here's mapping ![](../images/2021/08/14.png) **Step 2:** Connect destination with Agent control board new. Go to Integration and click Agent control board. - Here’s the destination. ![](../images/2021/08/15.png) - Create Agent file Adapter. - Here’s Adapter. ![](../images/2021/08/16.png) - Checking caches ![](../images/2021/08/17.png) - Go to Interface to process outbound. - Select Interface that we want to do outbound and click manual process. ![](../images/2021/08/18.png) - Select Manually select the sObject using the query builder. ![](../images/2021/08/19.png) - Click Execute SOQL ![](../images/2021/08/21.png) - Select Account that we want to do outbound and click ok. ![](../images/2021/08/23.png) - Click Send button. ![](../images/2021/08/24.png) - Go to monitor to see the result. ![](../images/2021/08/26-1.png) - Here are the records that we do outbound. ![](../images/2021/08/25.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 6. How to Create SQL Query in SAP Business One ? Slug: 133-5-how-to-create-sql-server-in-sap-business-one URL: https://help.skyvva.com/#article/133-5-how-to-create-sql-server-in-sap-business-one ================================================================================ # 6. How to Create SQL Query in SAP Business One ? **Learning Objectives:-** **This unit describes:-** - How to create SQL Query in SAP Business One? SKyvva has created a new function that helps the user who wants to use SAP Business One to create SQL Query in their System. To create SQL Query in SAP Business One we need to create a connection destination in the SAP control board. #### Pre-required: - Create Integration - Create Connection Destination SAP business one in SAP Control Board. **Step 1**: Create Integration - Go to Integration Tap and click New Button. ![](../images/2021/09/73.png) - Fill in the name and click the save Button. ![](../images/2021/09/74.png) **Step 2:  **Create Connection destination SAP business one in the SAP control board. - Go to Integration and click SAP control board. ![](../images/2021/09/75.png) - Choosing type:  SAP BusinessOne and fill in the name. - Click Continue. ![](../images/2021/09/76.png) - Fill Host URL, Port Forward, Username, Password, URL Path, and Company Database of SAP Business one Application. - Click ping SAP Connection and Click Save Button. - Here’s Example. ![](../images/2021/09/77.png) **Step 3: **Go to SQL Query Tab. - Fill the SQLCode, SqlName, SqlText and click Create button. ![](../images/2021/09/79.png) - After click creates a button, it will show in the SQL Query List. - Here's the result. ![](../images/2021/09/80.png) #### Summary Finally, we have learned how to create SQL Query in SAP BusinessOne, This function is very helpful for users who want to create SQL Query in sap business one system. To create SQL Query we need to have Integration and connection Destination with SAP Control Board. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: Introduction Slug: introduction-google-drive-adapter URL: https://help.skyvva.com/#article/introduction-google-drive-adapter ================================================================================ # Introduction #### Introduction Google Drive is a cloud storage service that allows users to save files and access them from anywhere. From SKYVVA v2.48, we have the capability to allow the users to back up their data directly from Salesforce to keep on Google Drive. Besides sending data to google drive we can also read data from Google drive back to Salesforce. The user can transform their data to any file format such as CSV, XML, or JSON. They can save their data to Google Drive manually or automatically from our Control Board. ![](../images/2019/11/Introduction1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: How to export Data from Salesforce to Google drive? Slug: how-to-export-data-from-salesforce-to-google-drive URL: https://help.skyvva.com/#article/how-to-export-data-from-salesforce-to-google-drive ================================================================================ # How to export Data from Salesforce to Google drive? #### Introduction From now the User is easier to synchronize their data to Google Drive from our new SKYVVA connector. Google connector, allowed Users to back up their data from Salesforce to Google Drive directly. That before they are spent time to back up their data by copying and paste the file to Google Drive. Within the new connector, they can back up their data automatically or do it manually from the Control Board. The user can transform their data to any file format such as CSV, XML, or JSON. **Pre-required** - Generate MessageType - Create Google Adapter for outbound direction - Create Outbound Interface and do mapping - Manual process on Google Control Board - **Generate Message Type** We need to define the structure of the file before generating it from Salesforce. In our v3, the User needs to use the MessageType to define their structure. If they want to generate the field name same as sObject then they just create MessageType type as Salesforce Object. In the example below, we used the structure from CSV File to generate the MessageType. We can also generate from the XML or JSON file format depends on your structure requirement. *Account_ID,Name,BillingCountry,Email,AccountNumber,Description* *1001,TestAccountB11,CambodiaB11,Test1,A-001,Test description ACCOUNT object* ![](../images/2021/09/generateMsgType.png) - **Create an Adapter on Google Control Board** Navigate to Google Control Board link ![](../images/2021/09/googleControlBoard.png) Go to Adapter tab then click New button for creating new Adapter ![](../images/2021/09/AdapterTb.png) Create a new outbound Adapter with type Google Drive ![](../images/2021/09/csv-outbound.png) For getting Client ID, Client Secret and Token please follow this guide: [#article/147-3-how-to-get-token-for-oauth2](#article/147-3-how-to-get-token-for-oauth2) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] File Handling Mode - New: create a new file for each API call to Google drive - Override: Overwrite content of the file base on file-Id on Google drive[/su_box] We can find the Id of the Folder in Google Drive, by looking at the URL address when we go to that folder. For finding the “Id” of the File, we need to right-click on that file then choose    "Get Link" after that we will see the “Id” of the File as an example below: ![](../images/2021/09/ID.png) - Create an outbound Interface for Asynchronous mode, operation(upsert), choose Adapter, Metadata Provider, Repository, and Message Type ![](../images/2021/09/interface.png) Do mapping ![](../images/2021/09/mapping.png) - **Adding remote site** Navigate to Setup gear icon => Remote Site Settings=> New Remote Site Add this endpoint below into remote site *https://www.googleapis.com* - **Process data** Navigate to the Interface tab then press Manual Process ![](../images/2021/09/PushData.png) Choose Manually select the sObject using the Query Builder ![](../images/2021/09/ChooseData.png) Click Execute SOQL button, it will fetch the record base on the query statement and then choose the record for sending to Google Drive after that press button OK ![](../images/2021/09/query-2.png) Press button Send for pushing the record to Google drive ![](../images/2021/09/send.png) After click Send then navigate to Message Monitor tab on the Google control board to check the result ![](../images/2021/09/Result_Outbound2.png) Checking the file on Google drive, the file was generated correctly. ![](../images/2021/09/Result.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - CSV file transformation was generated follow the MessageType structure. It generates the field that we have to do the mapping. For which field we did not map, it will not generate. Like on the example above, we have 6 fields but we map only 3 fields, and then the other field that we did not map will not generate into the File. - The number of records created inside of the file was dependent on the field “Transfer Package Size” on the Interface. By default, this field is blank means that the value is “1”. The calculation of API call is depending on this field. For example, in case we are sending 3 records Account’s id: -    If “Transfer Package Size=1”, it will execute 3 API calls and create 3 files each file contain one record -    If “Transfer Package Size=10”, it will execute 1 API call and create 1 file each file contain 3 records [/su_box] #### Summary Finally, we have learned about how to save data to Google Drive. We have understood the MessageType generating from the file, create Google Adapter, create Interface, processing data, and checking results on Google Control Board. We have also known how to how to get the folder id and file id that is needed in the Google Adapter property. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 147.2 How to read data from Google drive and push to Salesforce? Slug: 147-2-how-to-read-data-from-google-drive-and-push-to-salesforce URL: https://help.skyvva.com/#article/147-2-how-to-read-data-from-google-drive-and-push-to-salesforce ================================================================================ # 147.2 How to read data from Google drive and push to Salesforce? #### Introduction We can transfer data directly from Google Drive to Salesforce by using the SKYVVA Google connector. This connector, the Users be able to push data from Google Drive automatically or doing manually from our Google Control Board. The Users can push their data to Salesforce from any file format such as CSV, XML, and JSON, moreover, they can push files as an Attachment such as PDF, Image, or Video. **Pre-required** -  Generate MessageType -  Create Google Adapter for the inbound direction -  Create Inbound Interface and do mapping -  Manual process on Google Control Board - **Generate Message Type** For generating the MessageType, we should use the sample structure that is the same as the file that we need to push into Salesforce for generating as the MessageType. For example: if we would like to push XML files, so we should use that sample file structure for generating the MessageType. If the MessageType did not match with the file structure then the runtime will not work properly. Use the sample CSV below to generate the MessageType. We can also generate from the XML or JSON file format depends on your business file. *Account_ID,Name,BillingCountry,Email,AccountNumber,Description* *1001,TestAccountB11,CambodiaB11,Test1,A-001,Test description ACCOUNT object* ![](../images/2021/09/generateMsgType.png) - **Create an Adapter on Google Control Board** Navigate to the Google Control Board link ![](../images/2021/09/googleControlBoard.png) Go to Adapter tab then click New button for creating new Adapter ![](../images/2021/09/AdapterTb.png) Create a new inbound Adapter with type Google Drive ![](../images/2021/09/CsvInbound2.png) For getting Client ID, Client Secret and Token please follow this guide: [#article/147-3-how-to-get-token-for-oauth2](#article/147-3-how-to-get-token-for-oauth2) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] What to do with the file after Processing? - **Delete File:** remove file after processing from the Drive. But we move this file to the Trash folder, we do the same behavior like the User delete file directly from the Drive so it will move to the Trash folder temporally. - **Backup File:** keep the file after processing. ** Polling Time Interval In Minute:** Automatic calling the Google API to read data from the Drive after the User click button start route. It will be called in which every minute depends on the value that we put on this field. For example, if we put “5” then it will be read data every 5 minutes. The minimum should be “2”.[/su_box] - **Create Interface** Create an inbound Interface for Asynchronous mode, operation (upsert), choose Adapter, Metadata Provider, Repository, and Message Type ![](../images/2021/09/interface-in.png) Do mapping ![](../images/2021/09/mapping-1.png) - **Adding remote site** Navigate to Setup gear icon => Remote Site Settings=> New Remote Site Add this endpoint below into remote site *https://www.googleapis.com* - **Start consumer** Go to Google Control Board then navigate to the Adapter tab. ![](../images/2021/09/Start.png) Navigate to the Message Monitor tab to check the result. The data from Google Drive has been push successfully. ![](../images/2021/09/monitoring.png) #### Summary Finally, we have learned how to read data from Google Drive. We have understood the MessageType generating from the file, Adapter creation, and understand the behavior of property after processing, create Interface, processing data, and checking results on Google Control Board. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 7. How to use query parameter to get last data changed from SAP Business One? Slug: 133-6-how-to-get-the-last-run-date-and-time-data-from-sap-business-one-using-skyvva-sap-business-one-adapter URL: https://help.skyvva.com/#article/133-6-how-to-get-the-last-run-date-and-time-data-from-sap-business-one-using-skyvva-sap-business-one-adapter ================================================================================ # 7. How to use query parameter to get last data changed from SAP Business One? **Learning Objectives:-** **This unit describes:-** - How to get the last modified business object data of  SAP Business Partner in SAP Business One using SKYVVA SAP Business one adapter. #### Introduction: In this tutorial, we will learn How to get the last modified Business partner object in SAP Business one using  Operation GET in  SAP business one Adapter. To get the data from  SAP Business partner in the SAP business one application to Salesforce. we need to have SAP Business Partner Message Type and SAP Business one Adapter. We can process data manually and scheduler to know detail about How to run the outbound interface manually or scheduler please follow this link: #article/129-how-to-run-the-outbound-interface-through-the-manually-or-scheduler #### Pre-required: - Create Integration - Create Connection destination on SAP Control Board. - Generate SAP Business one Metadata by using Import SAP Metadata. - Create Outbound Interface and Inbound Interface linked with Metadata SAP Business one. - Create SAP Business one Adapter on SAP Control Board. **Step 1**: Create Integration: To know detail about Integration, please follow this tutorial. [What is Integration, and How to use it? ](#article/what-is-an-integration-and-how-to-create-it) - Here's Integration ![](../images/2021/09/1-3.png) **Step 2**: Create Connection Destination SAP Control Board. - Click SAP Control Board on Integration. ![](../images/2021/09/2-1.png) - Enter the Name, Description and choose the type SAP Business One then click on continue. - Here’s an example. ![](../images/2021/09/3-2.png) - Fill Host URL, Port Forward, Username, Password, URL Path, and Company Database of SAP Business one Application. - Click ping SAP Connection and Click Save Button. - Here’s Example. ![](../images/2021/09/4-1.png) **Step 3**: Create Metadata SAP by using SAP Import Metadata. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] We need to create Metadata Provider and a Repository. [/su_box] Follow this link to see detail about [How to use and create Metadata Provider and Repository](#article/repository). - Go to Repository and click Import SAP Metadata ![](../images/2021/09/5-2.png) - Choosing Direct SAP Connection - select Connection Type, - Select Connection Destination, - Choose to Create Message Type for retrieval of list object - Click Retrieve. ![](../images/2021/09/6-2.png) - Search Metadata Name Business Partner, choose a business partner and click create Message Type. ![](../images/2021/09/2.png) After that, we will see the message type object Business Partner. - Here’s the message type of business Partner. ![](../images/2021/09/7.png) We need to create two new fields in the message type Request for QUERY Parameter. Which are Date and Time. - Here's the picture. ![](../images/2021/09/8-1.png) We also need to create Apex code for get the time. Go to setup and search Apex and click Apex Classes ![](../images/2021/09/17.png) - Click new ![](../images/2021/09/18.png) **Step 4:**  Create Outbound Interface, Inbound Interface, and linked with Message Type that we generated. - Here’s Request Interface. ![](../images/2021/09/9-2.png) - Here's the mapping. We need to using formular to map the apex code with date and time. ![](../images/2021/09/11-1.png) ![](../images/2021/09/12-2.png) ![](../images/2021/09/13.png) - Create Inbound Interface as Response Interface and linked Response of SAP Business Partner message type. ![](../images/2021/09/14.png) - Do mapping ![](../images/2021/09/15.png) **Step 5:** Linked Request and Response Interfaces. - Linked Request Interface and Response Interface. We need to request Interface Detail and scroll down to see Inbound/Outbound set up. - Put Response Interface in field Response Interface by clicking the pencil and clicking the Save button. - Here’s Example. ![](../images/2021/09/16.png) **Step 6:** Create SAP Business One adapter. - Go to the SAP control board and click tap Adapter. - Click New Button. ![](../images/2021/09/19.png) - Fill Name, Type: SAP Business one, Deployment: On Premise, Integration Framework: Service Layer, Protocol: Rest, Authentication: Basic, API Service EndPoint: BusinessPartners,URL Query Parameter :** ?$filter=UpdateDate ge {!SKYVVA_Last_Run_Date} and UpdateTime ge {!SKYVVA_Last_Run_Time}**, Choosing Operation GET, Request and Response Format Json, Data query Mode:  Query only changed Data,and choose connection Destination. - Here we have select the non in Salesforce Id Handling. It means in the response it will not return the salesforce Id back. - Click ping connection to make sure that the configuration adapter is successful. - click save - Here’s Example. ![](../images/2021/09/20.png) ![](../images/2021/09/21.png) ![](../images/2021/09/22.png) • Go to Request Interface and Linked this adapter. Here’s an example. ![](../images/2021/09/23.png) **Step7**: Executing by Scheduler To know the what is scheduler and how to using it please follow this tutorail. Go to Sap Control Board, click Scheduler ![](../images/2021/09/24.png) - Go to Message Monitor to see the result. ![](../images/2021/09/25.png) #### Summary Finally, we have learned how to create a record from salesforce to SAP Business One Application using operation POST in SAP Business one Adapter.  In the next section, we will learn how to update Business Partner using Operation PATCH in SAP Business One Adapter. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Flow to call our invokeCallOutV3() API? Title: 148. How to use Flow to call our invokeCallOutV3() API? Slug: 148-how-to-use-flow-to-call-our-invokecalloutv3-api URL: https://help.skyvva.com/#article/148-how-to-use-flow-to-call-our-invokecalloutv3-api ================================================================================ # 148. How to use Flow to call our invokeCallOutV3() API? #### How to use Flow to call our invokeCallOutV3() API ? A flow is the part of Salesforce Flow that collects data and performs actions in your Salesforce org or an external system. Salesforce Flow provides two types of flows: screen flows and Autolaunched flows. To automate a business process that collects data from people, use a screen flow. To launch a flow internally when a record changes or when a user clicks a button, use an Autolaunched flow. **Case 1:  Flow executes SKYVVA apex to create change pointer** **Description**: Provide the possibility to invoke **SKYVVA** Api to create changed pointer or process outbound interface from  Flow (record triggered flow). **Create Change Pointer Record ** [su_box title="Note" box_color="#2a8af0" title_color="#000000"]User must have outbound interface and check flag *Use **SKYVVA Outbound Scheduler*** on that interface [/su_box] **Expectation: **When we update Billing City, Flow will be creating CP record that show on CDC Control Board - Click on Setup gear icon #### - Enter Flow in the Quick Find Box, and select Flow ![](../images/2021/10/image_2021_11_08T12_00_24_761Z.png) - Click New Flow button ![](../images/2021/10/image_2021_11_08T12_02_55_882Z.png) - Select *Record-Triggered Flow* -> Click Next ![](../images/2021/10/image_2021_11_08T12_04_51_485Z.png) - Choose object: **e.g.** Account ![](../images/2021/10/image_2021_11_08T12_06_33_659Z.png) - Drag *Action* into Flow - Action: Create Change Pointer - ID: - Integration Name: - Interface Name: - Click Done ![](../images/2021/10/image_2021_11_08T12_08_12_718Z.png) - Click Save ![](../images/2021/10/image_2021_11_08T12_10_20_002Z.png) - At the end click** Activate** button on the right side ![](../images/2021/10/image_2021_11_08T12_11_45_862Z.png) - Now we change Billing City value on Account object then Save ![](../images/2021/10/image_2021_11_08T12_13_08_092Z.png) - **Result: **After update Billing City Process Builder will be create CP record and show in CDC Control Board ![](../images/2021/10/image_2021_11_08T12_14_31_065Z.png) **Case 2: Flow executes skyvva apex to execute callout** Execute invoke callout old version by default. However, user can execute outbound V3 by specify the version number (3) by including the input value for **Expectation:  **When we update Billing City, Flow will be sent to external system. #### - At the end click** Activate** button on the right side ![](../images/2021/10/image_2021_11_08T12_21_15_102Z.png) - Now we change Billing City value on Account object then Save ![](../images/2021/10/image_2021_11_08T12_22_29_018Z.png) **Result:** After update Billing City Process Builder will be sent to external system ![](../images/2021/10/image_2021_11_08T12_24_12_079Z.png) **Summary **Now user learn how to invoke SKYVVA Api to create changed pointer or process outbound interface from  Flow (record triggered flow). #### ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Process Builder to call our invokeCallOutV3() api? Title: 149. How to use Process Builder to call our invokeCallOutV3() api? Slug: 149-how-to-use-process-builder-to-call-our-invokecalloutv3-api URL: https://help.skyvva.com/#article/149-how-to-use-process-builder-to-call-our-invokecalloutv3-api ================================================================================ # 149. How to use Process Builder to call our invokeCallOutV3() api? Process Builder is a Salesforce’s point-and-click tool that lets you easily automate if/then business processes and see a graphical representation of your process as you build. Every process consists of a trigger, at least one criteria node, and at least one action. You can configure immediate actions or schedule actions to be executed at a specific time. To keep things simple, this unit focuses on the most common process type: Record Change, which means the process, will start when the records are created or edited. Provide the possibility to invoke skyvva Api to create changed pointer or process outbound interface from Process Builder or Flow (record triggered flow). ### Pre-requiste: - Create Integration - Create Outbound adapter - Create Interface -> add adapter - Do mapping **Case#1: Create Change Pointer Record ** Note: At first, we must have an outbound interface and check the flag “Use Skyvva Outbound Scheduler” on that interface **Expectation:** When we update Billing City, Process Builder will be creating CP record that show on CDC Control Board. ![](../images/2021/10/Untitled1.png) - Enter Process Builder in the Quick Find box, and select Process Builder ![](../images/2021/10/Untitled2.png) - Click New button ![](../images/2021/10/Untitled2-1.png) - Put Process Name then select A record changed for the process starts when ![](../images/2021/10/Untitled3-1.png) - Click **Add Object** - Choose object e.g. Account - To start, the process, select **when a record is created or edit** ![](../images/2021/10/Untitled4-1.png) **Note:**User can specify the version number by setting variable - At the end click Activate button on the right side then click Confirm button when popup message - Now we change Billing City value on Account object then Save ![](../images/2021/10/Untitled4-2.png) **Result:** After update Billing City Process Builder will be sent to external system ![](../images/2021/10/Untitled5.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to call SKYVVA API from Stored Procedure in SQL Server Title: 150. How to call SKYVVA API from Stored Procedure in SQL Server Slug: 150-how-to-call-skyvva-api-from-stored-procedure-in-sql-server URL: https://help.skyvva.com/#article/150-how-to-call-skyvva-api-from-stored-procedure-in-sql-server ================================================================================ # 150. How to call SKYVVA API from Stored Procedure in SQL Server #### Introduction We can call SKYVVA API via Stored Procedure in SQL Server database to push data into Salesforce. Therefore we need to create an inbound Interface at SKYVVA. There are many entities for making HTTP request call such as request Method, request URI, Query Parameter, Authentication, HTTP header, and Body. We need to implement those things in the Stored Procedure to make the HTTP request. Before we can make a REST call from Stored Procedure, we need to enable the OLE automation procedures. By default it was disabled. #### Pre-required - Create a connected app on Salesforce to get Client-Id and Client-secret key for generating token used OAuth 2.0 authentication - Generate Message Type from the payload - Create inbound Interface - Get access token by calling Salesforce API - Call SKYVVA API from Stored Procedure **Step -1: Create Salesforce Connected app** Navigate to the search box and just type “**app…**” for finding the **App Manager** menu then click New Connected App to create a new connected app on Salesforce ![](../images/2021/11/con-1.png) Fill required information ![](../images/2021/11/con-2.png) After that click button Save ![](../images/2021/11/con-3.png) Click continue ![](../images/2021/11/con-4.png) Here are the Client-Id (Consumer Key) and Client-Secret (Consumer Secret). But we cannot use those keys immediately as Salesforce has a display of a warning in the red line ![](../images/2021/11/con-5.png) **Step 2- Create a Message Type to get the structure for do mapping** ** **We need to create Metadata Provider, Repository, and Message Type by generating from payload or creating manually Create Metadata Provider and Repository, if they are not there. - Create Metadata Provider Navigate to the Metadata Provider tab then click New ![](../images/2021/11/meta.png) Fill require field and Save ![](../images/2021/11/createMeta.png) - Create Repository Go to Metadata Provider details and click New to create a new Repository ![](../images/2021/11/createRepo.png) Fill required field then Save ![](../images/2021/11/createNewRepo.png) - Generate message from the payload We need the structure for doing mapping in SKYVVA, the structure must be the same as the incoming payload if it does not match then the run-time will not work properly. So we need to use the incoming payload to generate the Message Type. In this example, we have used the function “**Open Editor**” to generate Message Type from JSON payload or we can use the function **Import Metadata** by uploading the file. ![](../images/2021/11/importJSON.png) **Step-3 Create inbound Interface** Go to Integration then create a new inbound Interface ![](../images/2021/11/NewInterface.png) Fill all required fields and also choose Metadata Provider, Repository, and Message Type ![](../images/2021/11/CreateInterface.png) After that, we can do mapping ![](../images/2021/11/mapping.png) **Step-4 Generate Token** In this example, we use the Postman to call Salesforce API to get an access token. Use the Salesforce endpoint URL to the relevant Salesforce Org Sandbox Org = https://test.salesforce.com/services/oauth2/token Production Org = https://login.salesforce.com/services/oauth2/token ![](../images/2021/11/requestToken2-1.png) **username** :     your salesforce login name **password** :     your salesforce password and security token **grant_type**:     password **client_secret **: the "Consumer Secret" found on Connect App **client_id** :        the "Consumer Key" found on Connect App After we send the request success, then the Salesforce will return the Access Token and Instance URL that is needed to do the authentication request in the Stored Procedure. ![](../images/2021/11/tokenResponse.png) **Step-5 Execute Stored Procedure** If we have built the Stored Procedure to call SKYVVA API correctly and then when executing the Stored Procedure then the API will return the response as below: ![](../images/2021/11/response.png) Here is the sample Stored Procedure to call SKYVVA API: Create procedure SKYYVA_POST as DECLARE @SkyvvaAPI NVARCHAR(500)='services/apexrest/skyvvasolutions/V4/integrate' DECLARE @InstanceURL NVARCHAR(500) ='https://sobject-dyno-1746-dev-ed.cs100.my.salesforce.com' /*** Salesforce base URL***/ DECLARE @IntegrationName NVARCHAR(255)='Test Integration' DECLARE @InterfaceName NVARCHAR(255)='Account Repo' DECLARE @Mode NVARCHAR(32)='Synchronous' DECLARE @RequestFormat NVARCHAR(32)='JSON' DECLARE @ResponeFormat NVARCHAR(32)='JSON' DECLARE @Endpoint NVARCHAR(max) DECLARE @Object INT DECLARE @ResponseText VARCHAR (8000) DECLARE @Status NVARCHAR(32) DECLARE @StatusText NVARCHAR(32) DECLARE @AuthHeader NVARCHAR(500) DECLARE @ContentType NVARCHAR(64) DECLARE @Body NVARCHAR(max) SET @Endpoint =CONCAT(@InstanceURL,'/',@SkyvvaAPI,'?integration=',@IntegrationName,'&interface=',@InterfaceName,'&mode=', @Mode,'&response-format=',@ResponeFormat,'&request-format=',@RequestFormat) SET @AuthHeader = 'Bearer 00D1x0000002ed4!ARAAQEk6MwZGDTzQ_7lB2PzhtSucIVlJm8A58fF5pXcVgCEDyk9nlmAZI3oeXaWbvG3RHi2OV6IdVHfBaaSAvgzAZEFOqmbj'; /*** Bearer +token ***/ SET @ContentType = 'application/json'; SET @Body = /*** Data sent to Salesforce. Use this structure for create Message Type for doing mapping in SKYVVA ***/ '{ "AccountTestV3": { "AccountNumber": "20002", "Name": "TestAccount2-SB", "BillingCountry": "Cambodia2", "BillingCity": "PhnomPenh2", "Account_ID": "101", "Description": "Test description ACCOUNT object" } }' EXEC sp_OACreate 'MSXML2.ServerXMLHTTP', @Object out; EXEC sp_OAMethod @Object, 'open', NULL, 'POST', @Endpoint, 'false'; EXEC sp_OAMethod @Object, 'SetRequestHeader', NULL, 'Authorization', @AuthHeader; EXEC sp_OAMethod @Object, 'setRequestHeader', NULL, 'Content-type', 'application/json'; /*** Print response ***/ EXEC sp_OAMethod @Object, 'send', NULL, @Body; EXEC sp_OAGetProperty @Object, 'status', @status OUT; EXEC sp_OAGetProperty @Object, 'statusText', @statusText OUT; exec sp_OAMethod @Object,'responseText',@ResponseText output PRINT 'Status: ' + @status + ' (' + @statusText + ')'; PRINT 'Response text: ' + @responseText; EXEC sp_OADestroy @Object; #### Summary Finally, we have learned how to call SKYVVA API from Stored Procedure in SQL Server Database, we understand how to create Salesforce connected app, generate Message Type from payload for doing mapping, create the interface, generate an access token, and we know the sample Stored Procedure for calling SKYVVA API. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Batch processing with new agent control board? Title: 1. How to use Batch processing with new agent control board? Slug: how-to-use-batch-processing-with-new-agent-control-board URL: https://help.skyvva.com/#article/how-to-use-batch-processing-with-new-agent-control-board ================================================================================ # 1. How to use Batch processing with new agent control board? **Learning Objectives** After completing this unit, you’ll be able to: - Describe what is Batch processing? - Comfortably use the Agent control board. - Server Configuration in Agent #### Introduction A job runs to process batches that use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. All processed batches are managed on the batch control board. **What is Batach Processing?** Batch Processing is used for running a batch job. It has more capability than synchronous and we can check job monitoring. The job must contain more than 200 and less than 5000 records, or we can utilize it with batch processing. It can store many records in one batch, and we can set time interval in batch processing scheduler of Skyvva to run anytime that you operate. Batch class in Skyvva is used to run large jobs (think thousands or millions of records!) that would exceed normal processing limits. ![](../images/2021/11/b.png) **What is Agent Control Board?** The new agent control board is a component which can connect different application system. Besides the component connect that we build on salesforce already.  But some protocol we cannot build on salesforce which technically not possible. That’s why we build a new component called “Any Connect” which is based on apache camel is open source around the world. **Server configuration in Agent** To be able to access to Agent Control Board, there are things you need to know. You have to configure the server in Agent by doing that it allows you to set up the Agent credential for **SKYVVA** Agent Control Board. - Navigate to AgentUI and enter Server Configuration - Fill in Username => Password => Port Application => Click Save To configure the Agent Control Board You have to configure this step in order to connect to AgentUI. To configure this, there are steps you must follow: **Create Remote Site Setting** To create Remote Site Setting you can follow the steps below: - Navigate Setup => Type Remote Site Setting in Quick Find => click Remote Site Settings - Click on the New Remote Site Setting button - Fill in Remote Site Name => Remote Site URL ( Public IP+ “:”Forward Port) => click Save Pre-requisite - We should create integration. Please this tutorial to create integration->  [What is an integration and how to create it?](#article/what-is-an-integration-and-how-to-create-it) - Next step is to create the interface. Please this tutorial to create interface-> [What is an interface and how to create it?](#article/1-what-is-an-interface-and-how-to-create-it) ![](../images/2021/11/11.png) Below Screen showing the Interface ![](../images/2021/11/22-1.png) ![](../images/2021/11/33.png) ![](../images/2021/11/44.png) Now Select the New Agent Control Board as shown in below Screen ![](../images/2021/11/55.png) Now configure the New Agent Board as shown in below Screen ![](../images/2021/11/66.png) Fill the Mandatory Details ![](../images/2021/11/77.png) ![](../images/2021/11/88.png) ![](../images/2021/11/99.png) ![](../images/2021/11/100.png) In the above picture our Salesforce Connection is successful. **Summary:** Finally, we have learned about How to use Batch processing with new agent control board and how to server configuration agent also know about Batch processing as well as configuration with new agent board. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Bulk processing? Title: 1. How to use Bulk processing with new agent control board? Slug: how-to-use-bulk-processing-with-new-agent-control-board URL: https://help.skyvva.com/#article/how-to-use-bulk-processing-with-new-agent-control-board ================================================================================ # 1. How to use Bulk processing with new agent control board? **Learning Objectives** After completing this unit, you’ll be able to: - Describe what is Bulk processing? - Comfortably use the Agent control board. - Server Configuration in Agent #### Introduction A job runs to process batches that use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. All processed batches are managed on the bulk control board. **What is Bulk Processing?** Bulk Processing uses for running attachment as batch too. It has more ability than synchronous, batch and running with huge records at high speed. The Records have more than **5000**, so user uses with bulk processing. It can contain many records in an attachment, and the user can set the time interval in bulk processing scheduler of **SKYVVA** or **Agent Scheduler** to run anytime that you want. However, there are two options of bulk processing which is including **SKYVVA** bulk and **SFDC** bulk. ![](../images/2021/11/freesnippingtool.com_capture_20211123213637.png) **What is Agent Control Board?** The new agent control board is a component which can connect different application system. Besides the component connect that we build on salesforce already.  But some protocol we cannot build on salesforce which technically not possible. That’s why we build a new component called “Any Connect” which is based on apache camel is open source around the world. **Server configuration in Agent** To be able to access to Agent Control Board, there are things you need to know. You have to configure the server in Agent by doing that it allows you to set up the Agent credential for **SKYVVA** Agent Control Board. - Navigate to AgentUI and enter Server Configuration - Fill in Username => Password => Port Application => Click Save To configure the Agent Control Board You have to configure this step in order to connect to AgentUI. To configure this, there are steps you must follow: **Create Remote Site Setting** To create Remote Site Setting you can follow the steps below: - Navigate Setup => Type Remote Site Setting in Quick Find => click Remote Site Settings - Click on the New Remote Site Setting button - Fill in Remote Site Name => Remote Site URL ( Public IP+ “:”Forward Port) => click Save **Pre-requisite** - We should create integration. Please this tutorial to create integration->  [What is an integration and how to create it?](#article/what-is-an-integration-and-how-to-create-it) - Next step is to create the interface. Please this tutorial to create interface-> [What is an interface and how to create it?](#article/1-what-is-an-interface-and-how-to-create-it) Below Screen showing the  Integration and Interface![](../images/2021/11/freesnippingtool.com_capture_20211123214542.png) ![](../images/2021/11/freesnippingtool.com_capture_20211123214923.png) Now Select the New Agent Control Board as shown in below Screen![](../images/2021/11/freesnippingtool.com_capture_20210909052806-1.png) Now configure the New Agent Board as shown in below Screen ![](../images/2021/11/freesnippingtool.com_capture_20210909052852.png) Fill the Mandatory Details ![](../images/2021/11/freesnippingtool.com_capture_20210910022624.png) ![](../images/2021/11/freesnippingtool.com_capture_20210910023209.png) In the above picture our Salesforce Connection is successful. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to get Token for OAuth2? Title: 147.3 How to get Token for OAuth2? Slug: 147-3-how-to-get-token-for-oauth2 URL: https://help.skyvva.com/#article/147-3-how-to-get-token-for-oauth2 ================================================================================ # 147.3 How to get Token for OAuth2? #### Follow these steps to get token for OAuth2 - Go to Google API Console to get Client Id and Client Secret - Enable Google Drive API - Go to Google OAuth2 Playground to get Refresh Token **Step-1 Generate Client Id and Client Secret** Go to Google API Console: [https://console.developers.google.com](https://console.developers.google.com) - Create a new cloud Project if you don’t have ![](../images/2021/11/googleDrive.png) - Provide the required information then click CREATE ![](../images/2021/11/googleDrive2.png) - Click APIs & Services => OAuth consent screen ![](../images/2021/11/googleDrive4.png) - Choose External then click CREATE ![](../images/2021/11/googleDrive5.png) Enter the information that is required then click SAVE AND CONTINUE until step 4: Summary Now navigate to Credentials for generating Client Id and Client Secret Create new Create Credentials and choose OAuth client ID ![](../images/2021/11/googleDrive11.png) - Enter required information - URIs: https://developers.google.com/oauthplayground ![](../images/2021/11/playground.png) Now we get Client Id and Client Secret. Keep these keys for another next step ![](../images/2021/11/googleDrive13.png) **Step - 3: Enable Google API** Go to Library to enable google drive API ![](../images/2021/11/Sammury.png) - Click Google Drive API ![](../images/2021/11/googleDrive15.png) - Click ENABLE ![](../images/2021/11/googleDrive16.png) **Step -3 Generate token** Go to Google OAuth2 Playground [https://developers.google.com/oauthplayground/](https://developers.google.com/oauthplayground/) Fill in the Client Id and Client Secret that we got from step 1. Choose Google API then click Authorize APIs ![](../images/2021/11/playground2.png) - Choose your email address ![](../images/2021/11/playground3.png) - Click Continue ![](../images/2021/11/continue.png) - Click Allow ![](../images/2021/11/allowed.png) - Click button Allow ![](../images/2021/11/alloed2e.png) - Click Exchange authorization code for tokens ![](../images/2021/11/exchange2.png) After that, we get Refresh token for using on **Google Drive Adapter** ![](../images/2021/11/refresh-token.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to send only change field with Apex Trigger for Outbound Message? Title: 153. How to send only change field with Apex Trigger for Outbound Message? Slug: 153-how-to-send-only-change-field-with-apex-trigger-for-outbound-message URL: https://help.skyvva.com/#article/153-how-to-send-only-change-field-with-apex-trigger-for-outbound-message ================================================================================ # 153. How to send only change field with Apex Trigger for Outbound Message? **Introduction:** Here you can now use the apex trigger to send only fields that are changed through the outbound interface. You need to do this from Salesforce. Here also describes how to work with CDC Trigger and CDC control board. **Objectives:** This document describes us administrative work which is required to send only change field with Apex trigger and with CDC. **What is Change Data Control (CDC)** With CDC we provide an ability to record all data changes you create on any business object. It will be automatically push to your external system at any time you scheduled. In comparison to the streaming API, you can overcome the limit of sending changes record by record. Here we can bulk and collect changes to be callout in packages meaning that you leverage the best usage of your Salesforce resources. Don’t disturb your online business user while operation hours. For configuration please hit this link ↓ – [ What is CDC and how to configure it?](#article/how-to-use-cdc-control-board) In the above link all basic things about CDC are mention. Pre-require: - Upload Message Type - Create Integration - Outbound Interface - Create SOPA Adapter - Create Trigger and put in Object Account. Below are the steps how it's Work: Step 1: Upload SOAP Message Type ![](../images/2021/11/01-1.png) Step 2: Create Integration ![](../images/2021/11/02-1.png) Step3: Create Outbound Interface and linked with Message Type ![](../images/2021/11/03.png) After this Need to Do Mapping To use trigger, we need to have external Id. Here’s example below. ![](../images/2021/11/04.png)Step 4: Create SOAP Adapter ![](../images/2021/11/05.png) Step 5: Linked this Adapter with Outbound Interface. ![](../images/2021/11/06.png) Step 6: Create trigger and put in Object that’s we using. - Go to Setup and click Object manager. Check example below. ![](../images/2021/11/07.png) Using Account Object, we need to go Account. Click Account. ![](../images/2021/11/08.png) Go to Triggers. Here’s example ![](../images/2021/11/09.png) - Click new button. ![](../images/2021/11/10.png) - Here’s the trigger for change records to send all fields and send only fields change with External ID. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] trigger CDC on Account (after update) { if (Trigger.isAfter && Trigger.isUpdate) { skyvvasolutions.CDCChangeData.createCPandCData(Trigger.oldMap, Trigger.newMap,'CPI Integrate','Interface_Trigger'); } } [/aux_code] - Copy the trigger above and past it. - Click Save button ![](../images/2021/11/kkk.png) - Here’s the trigger cdc for using options send all fields from mapping and send only fields changed. that we created in Account objects. ![](../images/2021/11/012.png) Step 7: Go to Outbound Interface and check flag use Skyvva outbound Scheduler. - Go to Outbound Interface. ![](../images/2021/11/013.png) - Scroll down to see CDC and check flag use Skyvva outbound Scheduler. ![](../images/2021/11/014.png) Now we have configuration trigger for **CDC** that has two options Send all fields that we mapped and send only fields that we changed with external Id.  There are two options for **CDC** first for manually and second is scheduler. - For processing Manually. Changed fields Account and send all fields. ![](../images/2021/11/015.png) - So, this record will send to Change pointer. - Go to CDC Control board. ![](../images/2021/11/016.png) - Click search button to see the record changed. ![](../images/2021/11/017.png) - Check Interface and click send button.![](../images/2021/11/018.png) - There are two options such as send all fields based on mapping and send only changed fields. In this case we send all fields based on mapping. - Choose send all fields based on mapping and click Reprocess. ![](../images/2021/11/019.png) - Go to monitor to see the result. ![](../images/2021/11/020.png) - Here’s the result show all fields. ![](../images/2021/11/021.png) In this case we send field changed. - Here’s we change Billing Street. ![](../images/2021/11/022.png) - Go to CDC control board. ![](../images/2021/11/023.png) - Click search button, select interface and click send button. ![](../images/2021/11/024.png) choosing send only changed field and click reprocess. ![](../images/2021/11/025.png) - Go to message monitor to see the result. ![](../images/2021/11/026.png) - Here’s the result send only field changed and external Id. ![](../images/2021/11/027.png) We can send data with **Scheduler** after we changed fields and there are two options in Scheduler first send all fields base on mapping and second is send only field changed In this case we send data base mapping with scheduler when record changed. We have configuration already in case one so now we just do with scheduler. - Go to CDC control board. ![](../images/2021/11/028.png) - Go to scheduler and set time with scheduler CDT per Interface. ![](../images/2021/11/029.png) In this case if we want to send all field based on mapping by using scheduler, we need to choose send all fields. See the picture below. ![](../images/2021/11/030.png) - After we config already we need to click save button. - Then go to click Start button scheduler. ![](../images/2021/11/031.png) - Go to change Account Records.![](../images/2021/11/032.png) - Go to message monitor to see the result ![](../images/2021/11/033.png) - Here’s the result. ![](../images/2021/11/034.png) In this case we send changed fields and external **ID** with scheduler. ![](../images/2021/11/035.png) - After we config already we need to click save button. - Then go to click Start button scheduler. ![](../images/2021/11/036.png) - Go to change Account Records. ![](../images/2021/11/037.png) - Go to message monitor to see the result. ![](../images/2021/11/038.png) - Here’s the result. ![](../images/2021/11/039.png) **Summary:** Finally here we able to understand the process how to send change fields only callout? We support only with this **CDC** Apex Trigger.User can use with any adapter as per his/her understanding also We can send data with scheduler after we changed fields and there are two options in scheduler first send all fields base on mapping and second is send only field changed as shown in our above case. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Salesforce ID Handling Request and Response Title: 154. Salesforce ID Handling Request and Response Slug: 154-salesforce-id-handling-request-and-response URL: https://help.skyvva.com/#article/154-salesforce-id-handling-request-and-response ================================================================================ # 154. Salesforce ID Handling Request and Response #### Introduction In this tutorial, we will learn about what is Salesforce ID Handling with request and response?  Why do we use this feature? and how to use this feature?  This function is the new feature that allows to use in Skyvva version 2.47.11 and go on. #### What is Salesforce ID Handling with request and response? Salesforce Id Handling is a feature that Skyvva enhances in adapter that uses the response of the system to update the records that are sent. As a field property in all adapters, Salesforce ID handling with request and response is new functionality. This is a picklist field, and there are two options: "None," which is the default behavior and does not return the Salesforce ID into the response, and "Return Salesforce ID into the response," which does return the Salesforce ID into the responses. #### Why do we use this feature? When a user requests records from Salesforce and requires the response to update the record on Salesforce, this functionality comes in useful. Example: In Sap Business One Client Server, a user requests records from Salesforce to the BusinessPartners module. As a result, when a user makes a request to the BusinessPartners module, the response will be returned, and the user will require some values from BusinessPartners that are contained in the Response in order to update the records for which the user made the request. #### How to use this feature? **Pre- Required:** - Create Integration - Create Connection destination on SAP Control Board. - Generate SAP Business one Metadata by using Import SAP Metadata. - Create Outbound Interface and Inbound Interface linked with Metadata SAP Business one. - Create SAP Business one Adapter on SAP Control Board. **Step1: Create Integration** - Here’s the Integration ![](../images/2021/11/1.png) **Step2:Create Sap business one Connection** - Click SAP Control Board on Integration - Here’s an example. ![](../images/2021/11/2.png) - Fill Host URL, Port Forward, Username, Password, URL Path, and Company Database of SAP Business one Application. - Click ping SAP Connection and Click Save Button. - Here’s Example. ![](../images/2021/11/3.png) **Step3: Create Metadata SAP by using SAP Import Metadata. ** Note: We need to create Metadata and a Repository. - Go to Repository and click Import SAP Meta ![](../images/2021/11/4.png) - Choosing Direct SAP Connection? select Connection Type, Select Connection Destination, Choose to Create Message Type to invoke SAP Business One API, and click Retrieve. ![](../images/2021/11/5.png) - Search Metadata Name Business Partner, choose business partner, and click create Message Type. ![](../images/2021/11/6.png) After that, we will see the message type object Business Partner. - Here’s the message type of business Partner. ![](../images/2021/11/7.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] To Update the records from response we need to mapping the request Interface and the response Interface as the same level. Example: If we want to get response Account contact and case, we need to map both Interface Account contact and case too.  [/su_box] **Step 4:  Create Outbound Interface, Inbound Interface, and linked with Message Type that we generated.** - Create Outbound Interface as a Request Interface and linked SAP BusinessParner message type. - Here’s Request Interface. ![](../images/2021/11/8.png) - Do mapping and click save. ![](../images/2021/11/96.png) - Create Inbound Interface as Response Interface and linked SAP Business Partner message type. - We use operation Updates to avoid creating a new record. Here’s Response Interface ![](../images/2021/11/10-1.png) - Do mapping [su_box title="Note" box_color="#2a8af0" title_color="#000000"] To use the response salesforce ID to update the records, Each level of mapping need fomula Id from Business object object to Salesforce ID. [/su_box] - See the example, ![](../images/2021/11/106.png) - We need to put Id manually. ![](../images/2021/11/107.png) - Each Node needs to map Id like above if we want to update their children. ![](../images/2021/11/97.png) - Go to Request Interface to link the response Interface. ![](../images/2021/11/104.png) - Scroll down and put the response Interface. ![](../images/2021/11/105.png) **Step5: Create SAP Business One adapter.** - Go to the SAP control board and click tap Adapter. - Click New Button. ![](../images/2021/11/11-2.png) - Fill Name, Type: SAP Business one, Deployment: On-Premise, Integration Framework: Service Layer, Protocol: Rest, Authentication: Basic, API service Endpoint Url: Business Partners, Choosing Operation Post, Request and Response Format Json, salesforce ID Handling and choosing connection Destination. - Click ping connection to make sure that we configuration adapter is success and click save Here’s Example. ![](../images/2021/11/12.png) - Go to Request Interface and Linked this adapter. - Here’s example ![](../images/2021/11/13.png) **Step 6: Callout Data by using Manual Process.** - Go to Interface tap on SAP Control board, select Request Interface, and click Manual Process. ![](../images/2021/11/98.png) - Select Manually Select the subjects using the Query Builder and click Next. ![](../images/2021/11/99-1.png) - Click Execute SOQL, select record that we want to send to SAP business one, and click OK. ![](../images/2021/11/101.png) - Click Send ![](../images/2021/11/102.png) - Go to message Monitor to see the result. ![](../images/2021/11/103.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: How to use /V4/IntegrateWithIMessage? Slug: how-to-use-v4-integratewithimessage URL: https://help.skyvva.com/#article/how-to-use-v4-integratewithimessage ================================================================================ # How to use /V4/IntegrateWithIMessage? #### Introduction Our V3 version of this **API** needs to mix the **SKYVVA** system parameters as integration, interface, and mode into the body with the **iMessage** record. This is not good. Therefore we want to change similar to the V4/Integrate to move the SKYVVA system parameter into the query parameter. The **V3** version encounters challenges with the integration of **SKYVVA**  parameters as an integration, interface, and mode into the body alongside **iMessage** records. Recognizing the inability of this approach, we aim to enhance the system in line with the V4/Integrate model. The proposed solution involves relocating **SKYVVA** parameters to the query parameter, aligning with improved practices. This optimization is facilitated through the utilization of the **SKYVVA** integration application, ensuring a more streamlined and effective integration process for enhanced performance and user experience. [su_box title="Note" box_color="#ff0000" title_color="#000000"] Because in V4 user-built only iMessage structure and all configuration move to URL parameters Easy to understand than V3[/su_box] **Pre-requisites:-** ⦁ Create an Integration ⦁ Create Metadata Provider ⦁ Create Repository. ⦁ Create a Message Type. **1. Create Inbound Interface:-** a. Enter Metadata Provider. b. Enter Repository. c. Message Type. **Here is the sample URL:** ` https://customer-customer-4908-dev-ed.cs89.my.salesforce.com/services/apexrest/skyvvasolutions/V4/IntegrateWithIMessage?integration=V4_Integration&interface=2_JSON_Contains_Fields_Only&mode=Synchronous&response-format=JSON&numberOfTree=5` [su_box title="Note" box_color="#ff0000" title_color="#000000"]numberOfTree is required when mode=Batch request: body can json or XML[/su_box] ` json: { "requestBody": { "messages": [ "msg": { "Name": "IM#2020-08-28 23:46:32.492004", "skyvvasolutions__ProcessMode__c": "Hierarchical", "skyvvasolutions__isRoot__c": "true", "skyvvasolutions__ExternalId__c": "YOL1T4-KEEGXDT8", "skyvvasolutions__ExternalId2__c": "YOL1T4-KEEGXDT8", "skyvvasolutions__Type__c": "Inbound", "skyvvasolutions__Integration__C": "a0W1x000001a1RtEAI", "skyvvasolutions__Interface__c": "a0a1x000001BLuzAAG", "skyvvasolutions__Status__c": "New", "skyvvasolutions__ModificationDate__c": "2020-08-28T16:46:32.000Z", "skyvvasolutions__CreationDate__c": "2020-08-28T16:46:32.000Z", "skyvvasolutions__MessageType__c": "sObject Message", "skyvvasolutions__HLevel__c": "1", "skyvvasolutions__Data__c": "{\"Name,Type,Industry,AccountNumber,Phone,Fax,Website,Site,Description\":\"Testing Kafka InBound Account4,Prospect,Agriculture,A04,1001203213,123456789,https:\\/\\/www.google.com,https:\\/\\/www.google.com,Testing Kafka InBound Account4 Description.\"}" } ] } }` - **How to import iMessage record with JSON** - **Configuration Requirement in SKYVVA side** - Create message type - Create Integration and inbound interface - Do mapping – [ How to create message type from different file format?](#article/tutorial-v2-41-lightning) ![](../images/2021/12/clipboard-202109151538-fxr13.png) **Configuration Requirement on PostMan side** - Create request page - Select operation POST - Fill out with Instance URL and V4 IntegrateWithIMessage API `/services/apexrest/skyvvasolutions/V4/IntegrateWithIMessage?` ![](../images/2021/12/clipboard-202109151539-wfswz.png) - Click the Body tab and raw and then past **iMessage** record like the sample below ![](../images/2021/12/clipboard-202109151544-xuysc.png) **Here is a soft iMessage record** `{ "requestBody":{ "messages":[ { "msg":{ "Name":"IM#2019-10-24 14:20:04.291001", "skyvvasolutions__Type__c":"InBound", "skyvvasolutions__Status__c":"New", "skyvvasolutions__HasChild__c":true, "skyvvasolutions__HLevel__c":0, "skyvvasolutions__isRoot__c":true, "skyvvasolutions__TransferId__c":"4F7E-JZWCYWVB", "skyvvasolutions__ProcessMode__c":"Hierarchical", "skyvvasolutions__Data__c":"{\"Account_Number\":\"10001\",\"Account_Name\":\"TestAccount1\",\"BillingCountry\":\"Cambodia1\",\"BillingCity\":\"Phnom Penh1\",\"Account_ID\":\"A-001\"}", "skyvvasolutions__External_Id2__c":"RSAZ-JZWCYZ0M", "skyvvasolutions__Integration__c":"a0W3N000001ejndUAA", "skyvvasolutions__Interface__c":"a0a3N000001ocF6QAI" } }, { "rootId":"RSAZ-JZWCYZ0M", "parentId":"RSAZ-JZWCYZ0M", "msg":{ "Name":"IM#2019-10-24 14:20:04.343002", "skyvvasolutions__Type__c":"InBound", "skyvvasolutions__Status__c":"New", "skyvvasolutions__HasChild__c":false, "skyvvasolutions__HLevel__c":1, "skyvvasolutions__isRoot__c":false, "skyvvasolutions__TransferId__c":"4F7E-JZWCYWVB", "skyvvasolutions__ProcessMode__c":"Hierarchical", "skyvvasolutions__Data__c":"{\"Cont_ID\":\"C001\",\"Last_Name\":\"Dara1\",\"First_Name\":\"Contact1\",\"Email\":\"test.2019_1111@gmail.com\",\"Phone\":\"1111\"}", "skyvvasolutions__External_Id2__c":"HOIK-JZWCYZ1Z", "skyvvasolutions__Integration__c":"a0W3N000001ejndUAA", "skyvvasolutions__Interface__c":"a0a3N000001ocgDQAQ" } } ] } }` - Go to Headers - Create Authorization for Session Id - Create Content-Type with application/json ![](../images/2021/12/clipboard-202109151548-uyj4f.png) - Go to the Params tab to create Query Params - In this case, we sent an **iMessage** record with **Mode** = Synchronous don’t Batch mode ![](../images/2021/12/clipboard-202109151548-fu9cs.png) **Now the user is configured already so we can send the iMessage record to Salesforce.** ![](../images/2021/12/clipboard-202109151549-3md2r.png) **Here is the message result on message monitoring after we sent** ![](../images/2021/12/clipboard-202109151553-a04ge.png) **Here is a case sending an iMessage record to salesforce with Mode=Batch** - We just change the mode Synchronous to Batch and add the keyword numberOfTree=1 ![](../images/2021/12/clipboard-202109151554-vwbcy.png) Here is the result on the **Batch Control Board** after sending iMessage record from **PostMan** ![](../images/2021/12/clipboard-202109151555-yev0a.png) [su_box title="Note" box_color="#ff0000" title_color="#000000"] If we set the number of **iMessage** records in numberOfTree is incorrect the basket can’t process data successfully.[/su_box] **How to import iMessage record with XML format** - Everything we configure like the **JSON** step - User changes application/json to application/XML in Content-Type ![](../images/2021/12/clipboard-202109151558-xuat2.png) **Here is the iMessage record XML format in the Body** ![](../images/2021/12/clipboard-202109151559-zavfp.png) **Here is a soft iMessage record** ` IM#2019-10-24 14:20:04.291001 Inbound New true true 4F7E-JZWCYWVB Hierarchical {"Account_Number":"10001","Account_Name":"TestAccount1","BillingCountry":"Cambodia1","BillingCity":"Phnom Penh1","Account_ID":"A-001"} RSAZ-JZWCYZ0M a0W3N000001ejndUAA a0a3N000001ocF6QAI RSAZ-JZWCYZ0M RSAZ-JZWCYZ0M IM#2019-10-24 14:20:04.343002 Inbound New false 1 false 4F7E-JZWCYWVB Hierarchical {"Cont_ID":"C001","Last_Name":"Dara1","First_Name":"Contact1","Email":"test.2019_1111@gmail.com","Phone":"1111"} HOIK-JZWCYZ1Z a0W3N000001ejndUAA a0a3N000001ocgDQAQ ` **Summary **Now the user learned that the V4 user built only the **iMessage** structure and all configurations moved to URL parameters Easy to understand than V3. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Overview of SKYVVA Scheduler Title: 21.1 DoMaintenance Scheduler Slug: 21-1-domaintenance-scheduler URL: https://help.skyvva.com/#article/21-1-domaintenance-scheduler ================================================================================ # 21.1 DoMaintenance Scheduler #### DoMaintenance Scheduler DoMaintenance is another global scheduler which locates among others in the Scheduler tab. It provides all the functionalities to keep the data storage clean. In simple words it deletes pending, failed and completed records  You have to activate and run this scheduler otherwise no data cleaning activities are carried out. It exists only 1 in SKYVVA process all integrations. There are two ways to find DoMaintenance Scheduler:- - Using the Scheduler tab in the Admin page. - Using the Separate tab 'Scheduler' in the integration detail page. - **Using Scheduler Tab in Admin page to find DoMaintenace:-** Get into Integration Admin and select on Scheduler Tab. Try to find the “Others” section and set the time for DoMaintenance. **Case:** ![](../images/2021/12/image_2021_12_09T08_58_58_473Z.png) - Go to Integration detail page - Scroll down to **Message Setup** - Check (Flag) **Delete Message** ![](../images/2021/12/image_2021_12_09T08_48_40_000Z.png) - Now Go to Interface Detail page ![](../images/2021/12/image_2021_12_09T09_09_48_666Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]User can choose **Number of Days to Keep Messages** both on Integration & Interface Detail Page as per Business requirement. [/su_box] - Now Go to Scheduler Tab - Scroll Down to **Others **Section - Save ![](../images/2021/12/image_2021_12_09T09_24_02_940Z.png) - Set Scheduler time as per user requirement ![](../images/2021/12/image_2021_12_09T09_28_04_609Z.png) - Now Go to Setup on User Org. - Click on Scheduled Jobs ![](../images/2021/12/image_2021_12_09T09_32_45_619Z.png) - Use can see **Skyvva_DoMaintenance** job here as per the Set time Scheduler ![](../images/2021/12/image_2021_12_09T07_40_26_584Z-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The **Skyvva_DoMaintenance** automatically vanished/delete when job is done. The process that runs scheduled Apex quite regularly as a Scheduler job. This process runs on a  schedule, and looks into a  job table (**object**). If it finds work to do, it kicks off a Scheduler job.[/su_box] **Summary** : Now user learned how to create a DoMaintenance job by setting Scheduler Time ================================================================================ Book: Tutorials Section: Tutorials Subsection: Control Board Title: 2. How to use Amazon Control Board Slug: 156-amazon-control-board URL: https://help.skyvva.com/#article/156-amazon-control-board ================================================================================ # 2. How to use Amazon Control Board #### Introduction The Amazon Control Board is containing 5 tabs: - Interface - Interface Group - Adapter - Scheduler - Message Monitor **Adapter screen** ![](../images/2022/01/image_2022_01_11T06_56_49_052Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - On Agent, Amazon, Google and Microsoft control board (v2.48) now I have added interface and Interface Group (OutBound) validation be for start (old function like scheduler on integration tab) - If the interface is in the other group and that group is in-progress so we can not start the interface. and also if the interface is in-progress and we start the group so the interface will be stop. [/su_box] **Interface ** ![](../images/2022/01/image_2022_01_11T06_57_46_956Z.png) **Scheduler** ![](../images/2022/01/image_2022_01_11T07_19_18_983Z.png) **Amazon Adapter template** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] { "Amazon Service":{ "Request":{ "URL":{ "Path Parameter":{ //flat Structure }, "Query Parameter":{ //flat Structure } }, "Header":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } } “response”:{ “root”:{ //json payload } } } } [/aux_code] [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Here user have used the REST message type template.[/su_box] ![](../images/2022/01/image_2022_01_11T08_58_41_762Z.png) ![](../images/2022/01/image_2022_01_11T09_03_16_987Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: API -Key Authentication Title: 156.1 API -Key Authentication Slug: 156-1-api-key-authentication URL: https://help.skyvva.com/#article/156-1-api-key-authentication ================================================================================ # 156.1 API -Key Authentication **Integration Name : Raj-REST-Integration** **Outbound Interface : AWS API Outbound** ![](../images/2022/01/image_2022_01_11T09_17_55_763Z.png) **Open Mapping** ![](../images/2022/01/image_2022_01_11T09_19_01_030Z.png) **Inbound interface : AWS-API-Inbound** ![](../images/2022/01/image_2022_01_11T12_20_22_857Z.png) **Select External Id** ![](../images/2022/01/image_2022_01_11T12_21_50_497Z.png) Go to Adapter screen ![](../images/2022/01/image_2022_01_11T12_24_28_949Z.png) Edit Adapter ![](../images/2022/01/image_2022_01_11T12_25_47_577Z.png) Click on search button ![](../images/2022/01/image_2022_01_11T12_27_31_064Z.png) Go to Dev Console and see all Details - V3OutboundAmazonAPIGateway:Request Body Generation End - V3OutboundAmazonAPIGateway:docallOut Web Service Start - Request Method:: POST ![](../images/2022/01/image_2022_01_14T07_15_04_118Z.png) **Callout Script :** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0031j000013c0M7AAI'}; skyvvasolutions.Iservices.invokeCalloutV3('Raj_REST_Integration','AWS API outbound',ids,'SYNC',c); [/aux_code] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Salesforce Authentication Provider (AWS – Signature) Title: 156.2 Salesforce Authentication Provider (AWS - Signature) Slug: 156-2-salesforce-authentication-provider-aws-signature URL: https://help.skyvva.com/#article/156-2-salesforce-authentication-provider-aws-signature ================================================================================ # 156.2 Salesforce Authentication Provider (AWS - Signature) **Integration Name : Raj-REST-Integration** **Outbound Interface : AWS API Outbound** **![](../images/2022/01/image_2022_01_11T12_45_32_551Z.png)** ![](../images/2022/01/image_2022_01_11T12_49_39_538Z.png) **Inbound interface : AWS-API-Inbound** ![](../images/2022/01/image_2022_01_11T12_51_47_935Z.png) **Select an External  id** ![](../images/2022/01/image_2022_01_11T12_52_35_325Z.png) **Using ****GET Method** Select Type **AmazonAPIGateway** ![](../images/2022/01/image_2022_01_11T12_54_46_093Z.png) Select Operation **GET** ![](../images/2022/01/image_2022_01_11T12_56_36_512Z.png) - Now go to Salesforce - Click on security - Provide Name Credentials - URL - AWS Access Key ID - AWS Secret Access Key - AWS Regions - AWS Service ![](../images/2022/01/image_2022_01_11T12_58_22_218Z.png) **Using POST Method** Select Operation **POST** ![](../images/2022/01/image_2022_01_11T13_03_01_807Z.png) **User have to Specify the callout endpoints URL and the authentication settings that are requires for Salesforce to make callouts to the remote System** ![](../images/2022/01/image_2022_01_12T07_07_06_926Z.png) Go to Dev Console and see all Details - V3OutboundAmazonAPIGateway:Request Body Generation End - V3OutboundAmazonAPIGateway:Resquest Body Generation End - Request Method:: POST ![](../images/2022/01/image_2022_01_12T07_14_14_060Z.png) Go to message monitor board and click on search button ![](../images/2022/01/image_2022_01_12T07_19_28_556Z.png) **Callout Script :** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0031j000013c0M7AAI'}; skyvvasolutions.Iservices.invokeCalloutV3('Raj_REST_Integration','AWS API outbound',ids,'SYNC',c); [/aux_code] **Hierarchical Message Type** ![](../images/2022/01/image_2022_01_12T13_12_59_701Z.png) **Request** ![](../images/2022/01/image_2022_01_12T13_14_44_004Z.png) **Response** ![](../images/2022/01/image_2022_01_12T13_14_44_004Z-1.png) **Open Mapping and select Ext Id and Save for Inbound** ![](../images/2022/01/image_2022_01_12T13_20_16_656Z.png) **Open Mapping and Map Name(text) to MyContact and Save for Outbound** ![](../images/2022/01/image_2022_01_12T13_22_08_725Z.png) **Go to Message Monitor and click on search button ** ![](../images/2022/01/image_2022_01_12T13_24_47_829Z.png) **Callout script** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011j00001FyP0xAAF'}; skyvvasolutions.Iservices.invokeCalloutV3('Raj_REST_Integration','AWS API outbound',ids,'SYNC',c);[/aux_code] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: How to use the API invokeCallout3() to pass data from the screen with Developer Console? Slug: 157-how-to-use-the-api-invokecallout3-to-pass-data-from-the-screen-with-developer-console URL: https://help.skyvva.com/#article/157-how-to-use-the-api-invokecallout3-to-pass-data-from-the-screen-with-developer-console ================================================================================ # How to use the API invokeCallout3() to pass data from the screen with Developer Console? After completing this unit, you’ll be able to: - How to pass data from a screen and apex class to invokes callout v3 #### Introduction We can pass data from the screen and apex class where the data is going into the mapping instead of coming from the database through the select statement in the interface. The caller is an apex class and uses the class method invokes callout3(). Inside this method, we have a map parameter where the user can pass the  Parameter, Query parameter name/value pair to the method. The map with the key/value he has to build in the apex caller program. #### Why and when to use Screen pass data? We always need to pass the subject Id to select the data from the database. Here the requirement is that the user doesn't want to select data from the database. The data is coming from a screen and they want to make a call to other systems with that data. We have to pass the data which the user enters into a screen to invokeCallout3() They don't want to have the data to be written into a table in Salesforce. Just whatever user enters the screen needs to be put a request for the HTTP callout through the other adapters. In this tutorial, we will use SAP business one adapter to send data by the screen to SAP Business one. #### How to use the API invookeCallout 3() to pass data from the screen? **Pre-required** - Create connect destination of SAP Business One. - Create Metadata SAP, business Partners. - Create SAP business one Adapter - Create Outbound Interface. **Step1:**  Create the Connection destination of Sap Business one. - Go to Integration => click SAP Control Board. ![](../images/2022/01/1.png) - Select Destination New,  Choose Type: Sap Business one, Fill Name, version, click Continue button. see the example below. ![](../images/2022/01/3.png) - Fill Host Url, Port Forward, Username, Password, Url Path, Company DataBase, and click Ping Connection, see the example below. ![](../images/2022/01/4.png) **Step2:  **Generate message type of SAP business partners module. - Create Metadata and create Repository. ![](../images/2022/01/5.png) - Go to Repository and click Import SAP Metadata ![](../images/2022/01/6.png) - Select Direct SAP Connection =>  select Connection  Type: SAP Business One => Select Connection Destination: => select Create Message Type for retrieval of List object and click Retriev Button. ![](../images/2022/01/7.png) - Select Entities, type Business Partner keyword and click Search and then select Business Partner.  Click Create Message Type. ![](../images/2022/01/8.png) - Here's Business One Message Type. ![](../images/2022/01/9.png) Step3: Create Outbound Interface. - Create Outbound Interface and linked with Message Type. ![](../images/2022/01/10.png) - do mapping. ![](../images/2022/01/11.png) **Step4 **Create SAP business one Adapter. - Go to Sap Control Board => Click Adapter =>  Click Button New. ![](../images/2022/01/12.png) - Here's Adapter SAP Business One. ![](../images/2022/01/13.png) **Step5: **Linked this Adapter with Interface. ![](../images/2022/01/14.png) **Step 6: **Callout v3 with a developer console. - Here's the format callout. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; Map queryParam = new Map(); Map pathParam = new Map(); Map m=new Map(); pathParam.put('SourceField','Value'); queryParam.put('SourceField','Value'); m.put('SourceField','Value'); c.setPayLoad(m); c.queryParam = queryParam; c.pathParam=pathParam; Listresult=skyvvasolutions.Iservices.invokeCalloutV3('IntegrationName','InterfaceName',NULL,'SYNC',c);[/aux_code] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 158. How to use Microsoft Dynamics 365 Adapter ? Slug: 158-how-to-use-microsoft-dynamics-365-adapter URL: https://help.skyvva.com/#article/158-how-to-use-microsoft-dynamics-365-adapter ================================================================================ # 158. How to use Microsoft Dynamics 365 Adapter ? #### Introduction The 'Dynamics 365 Business Central' is based on '**Dynamics Nav**' and is the cloud variant of Dynamics Nav. The 'Dynamics 365 for Finance and Operations' or now rebranded to 'Dynamics 365 for Operations' is the cloud variant of 'Dynamics AX'. Microsoft has rebranded the product to the 365 families as Dynamics 365 xx. The old name that doesn't have the 3 numbers 365 is the old name and mostly used for the on-premise offering. Microsoft Dynamics 365 (Microsoft Dynamics 365 Adapter) enables integration with the Microsoft Dynamics 365 Cloud API. This connector enables you to perform operations to: - Authorize or unauthorize server access - Create, update, and delete entities - Retrieve a single entity or query multiple entities - Associate and disassociate entities - Execute actions #### Prerequisites - **SKYVVA** app have access to the **Microsoft Dynamics 365** target resource . User also must understand how to create a **SKYVVA** app integration using Design Center. - Obtain a client ID and secret for your app by logging in to the Microsoft Azure Active Directory portal at [portal.azure.com](https://login.microsoftonline.com/organizations/oauth2/v2.0/authorize?redirect_uri=https%3A%2F%2Fportal.azure.com%2Fsignin%2Findex%2F&response_type=code%20id_token&scope=https%3A%2F%2Fmanagement.core.windows.net%2F%2Fuser_impersonation%20openid%20email%20profile&state=OpenIdConnect.AuthenticationProperties%3DmpXdPIYmlgTIc-DWntfV_18Pl1XPzSRfIsRGuZJ-yXm-X1288Nk2lhWLRsNUEer3prpVrgfxUU4YIIDi2IkVGBc6LOyB328Vkv1t4m7Zd3UHht_WAfBeFIpi1SIvqwHUGcsJ0prJFmlPb7JeB-Jru0u6NHd7wG9xgJ4ljkHi9U4jZcva83MW2Zt2I65nenfrhkqkhMj7PDHg1Q_1xqKtVWANeLF55HNMaX2-5rf7mZ3zCliKzQlBFye17Uj-0KXGS_zcW1Bi2vmQDMtPeGTpmBXoApzXGa2dj7ryb-hQKbOu3E3Asw2oTm-J-3WLAwkq_7iT3EsXFnF3NszwTo7dowYNEa4pr9m9iuPwaLgzOzF4CFaC_Ukxk1i2FCz7nzJnCZKaVI5kkrIMNt768hgWVw&response_mode=form_post&nonce=637782677829681030.YTZiZjAxMWMtY2E0NC00MjI5LTk1NWItNjE5YTlmNTg3ODMyMmMxZmUyYmItYmVmZS00MWRmLTkxNDYtNGViOTdkMjBhNDRl&client_id=c44b4083-3bb0-49c1-b47d-974e53cbdf3c&site_id=501430&client-request-id=19ecb2fc-282f-40e9-8bf8-be0286973a27&x-client-SKU=ID_NET472&x-client-ver=6.12.2.0&sso_reload=true). - Before starting User need access to a **Microsoft Dynamics 365** instance for which Azure Active Directory is the Identity Provider that provides access to **SKYVVA**. **How to configure Microsoft Dynamics 365 Adapter in Microsoft Control Board:** - Create Integration. - Microsoft_Dynamics_365_Integration and click on Microsoft Control Board link. ![](../images/2022/01/image_2022_01_20T12_00_36_212Z.png) - Click on the adapter tab. ![](../images/2022/01/image_2022_01_20T12_03_31_732Z.png) - Click on New button and select adapter type as a Microsoft OneDrive and fill all information base on your configuration. ![](../images/2022/01/image_2022_01_20T12_05_41_528Z.png) #### Microsoft Dynamics 365 Outbound Adapter - **Create Rest Template (Metadata,Repository, MsgType) using Microsoft dynamics 365 service request payload.** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "Microsoft_Dynamics_365_Sales_Post_Accounts":{ "Request":{ "URL":{ "PATH Parameter":{ //flat Structure }, "QUERY Parameter":{ //flat Structure } }, "Header":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } }, "Response":{ "root":{ //json payload } } } } [/aux_code] #### Test Case: 1 ** How to Create Account in Microsoft Dynamics 365 using Outbound Adapter:** - Go to Integration (Example: Microsoft_Dynamics_365_Integration) - Create Outbound Adapter : Microsoft_Dynamics_365_Sales_Post_Accounts_OB - (Please follow above steps for create adapter) ![](../images/2022/01/image_2022_01_20T12_12_37_739Z.png) - Metadata: Microsoft_Metadata - Repository: Microsoft_Dynamics_365_Repo ![](../images/2022/01/image_2022_01_20T12_26_09_349Z.png) **Create Integration and Outbound Interface:** - Integration: Microsoft_Dynamics_365_Integration - Outbound Interface: Microsoft_Dynamics_365_Sales_Post_Accounts_OB ![](../images/2022/01/image_2022_01_20T12_27_49_396Z.png) - **Link Outbound Adapter: Microsoft_Dynamics_365_Sales_Post_Accounts** ![](../images/2022/01/image_2022_01_20T12_29_19_840Z.png) - **Mapping** ![](../images/2022/01/image_2022_01_20T12_30_35_482Z.png) - **Callout** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0013N00000iusLTQAY'}; Listresult=skyvvasolutions.Iservices.invokeCalloutV3('Microsoft_Dynamics_365_Integration','Microsoft_Dynamics_365_Sales_Post_Accounts_OB',ids,'SYNC',c); [/aux_code] - **Message Monitoring** ![](../images/2022/01/image_2022_01_20T12_34_13_325Z.png) #### Test Case: 2 **How to Get Account in Microsoft Dynamics 365 using Outbound Adapter:** - Go to Integration (Example: Microsoft_Dynamics_365_Integration) - Create Outbound Adapter: Microsoft_Dynamics_365_Sales_GET_Accounts_OB - (Please follow above steps for create adapter) ![](../images/2022/01/image_2022_01_20T12_37_55_751Z.png) **Create Rest Template (Metadata,Repository, MsgType) using Microsoft dynamics 365 service request payload.** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "Microsoft_Dynamics_365_Sales_GET_Accounts":{ "Request":{ "URL":{ "PATH Parameter":{ //flat Structure }, "QUERY Parameter":{ //flat Structure } }, "Header":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } }, "Response":{ "root":{ //json payload } } } } [/aux_code] - Metadata: Microsoft_Metadata - Repository: Microsoft_Dynamics_365_Repo ![](../images/2022/01/image_2022_01_20T12_41_19_592Z.png) **Create Integration and Outbound Interface:** - Integration: Microsoft_Dynamics_365_Integration - Outbound Interface: Microsoft_Dynamics_365_Sales_GET_Accounts_OB ![](../images/2022/01/image_2022_01_20T12_42_53_826Z.png) - **Link Outbound Adapter: Microsoft_Dynamics_365_Sales_Post_Accounts** ![](../images/2022/01/image_2022_01_20T12_44_53_545Z.png) - **Mapping: here I’m using dynamic path parameter and account id is coming from sObject custom field.** ![](../images/2022/01/image_2022_01_20T12_46_25_476Z.png) - **Link Inbound Interface with Outbound Interface: **Microsoft_Dynamics_365_Sales_GET_Accounts_IB![](../images/2022/01/image_2022_01_20T12_56_42_152Z.png) - **Inbound Interface: **Microsoft_Dynamics_365_Sales_GET_Accounts_IB ![](../images/2022/01/image_2022_01_20T12_58_04_669Z.png) - **Mapping** ![](../images/2022/01/image_2022_01_20T12_59_41_806Z.png) - **Callout** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0013N00000iusLSQAY'}; Listresult=skyvvasolutions.Iservices.invokeCalloutV3('Microsoft_Dynamics_365_Integration','Microsoft_Dynamics_365_Sales_GET_Accounts_OB',ids,'SYNC',c); [/aux_code] - **Message Monitoring** ![](../images/2022/01/image_2022_01_20T13_02_26_361Z.png) #### Test Case: 3 **How to Create Contact in Microsoft Dynamics 365 using Outbound Adapter:** - Go to Integration (Example: Microsoft_Dynamics_365_Integration) - Create Outbound Adapter : Microsoft_Dynamics_365_Sales_Post_Contacts_OB - (Please follow above steps for create adapter) ![](../images/2022/01/image_2022_01_20T13_06_59_169Z.png) **Create Rest Template (Metadata, Repository, MsgType) using Microsoft dynamics 365 service request payload.** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "Microsoft_Dynamics_365_Sales_Post_Contacts":{ "Request":{ "URL":{ "PATH Parameter":{ //flat Structure }, "QUERY Parameter":{ //flat Structure } }, "Header":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } }, "Response":{ "root":{ //json payload } } } } [/aux_code] - Metadata: Microsoft_Metadata - Repository: Microsoft_Dynamics_365_Repo ![](../images/2022/01/image_2022_01_20T13_10_33_841Z.png) **Create Integration and Outbound Interface:** - Integration: Microsoft_Dynamics_365_Integration - Outbound Interface: Microsoft_Dynamics_365_Sales_Post_Contacts_OB ![](../images/2022/01/image_2022_01_20T13_11_58_509Z.png) - **Link Outbound Adapter: Microsoft_Dynamics_365_Sales_Post_Contacts** ![](../images/2022/01/image_2022_01_20T13_13_03_042Z.png) - **Mapping** ![](../images/2022/01/image_2022_01_20T13_14_15_020Z.png) - **Callout** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0033N00000axUXkQAM'}; Listresult=skyvvasolutions.Iservices.invokeCalloutV3('Microsoft_Dynamics_365_Integration','Microsoft_Dynamics_365_Sales_POST_Contacts_OB',ids,'SYNC',c); [/aux_code] - **Message Monitoring** ![](../images/2022/01/image_2022_01_20T13_17_40_939Z.png) #### Test Case: 4 ** How to Get Contact in Microsoft Dynamics 365 using Outbound Adapter:** - Go to Integration (Example: Microsoft_Dynamics_365_Integration) - Create Outbound Adapter: Microsoft_Dynamics_365_Sales_GET_Contacts_OB - (Please follow above steps for create adapter) ![](../images/2022/01/image_2022_01_20T13_20_07_097Z.png) **Create Rest Template (Metadata,Repository, MsgType) using Microsoft dynamics 365 service request payload.** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "Microsoft_Dynamics_365_Sales_GET_Contacts":{ "Request":{ "URL":{ "PATH Parameter":{ //flat Structure }, "QUERY Parameter":{ //flat Structure } }, "Header":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } }, "Response":{ "root":{ //json payload } } } } [/aux_code] - Metadata: Microsoft_Metadata - Repository: Microsoft_Dynamics_365_Repo ![](../images/2022/01/image_2022_01_20T13_23_10_889Z.png) **Create Integration and Outbound Interface:** - Integration: Microsoft_Dynamics_365_Integration - Outbound Interface: Microsoft_Dynamics_365_Sales_GET_Contacts_OB ![](../images/2022/01/image_2022_01_20T13_24_35_463Z.png) - **Link Outbound Adapter: Microsoft_Dynamics_365_Sales_GET_Contacts** ![](../images/2022/01/image_2022_01_20T13_25_49_360Z.png) - **Mapping: here I’m using dynamic path parameter and account id is coming from sObject custom field.** ![](../images/2022/01/image_2022_01_20T13_27_13_521Z.png) - **Link Inbound Interface with Outbound Interface: **Microsoft_Dynamics_365_Sales_GET_Contacts_IB ![](../images/2022/01/image_2022_01_20T13_28_24_721Z.png) - **Inbound Interface: **Microsoft_Dynamics_365_Sales_GET_Contacts_IB ![](../images/2022/01/image_2022_01_20T13_29_48_565Z.png) - **Mapping** ![](../images/2022/01/image_2022_01_20T13_31_13_744Z.png) - **Callout** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0033N00000axUXkQAM'}; Listresult=skyvvasolutions.Iservices.invokeCalloutV3('Microsoft_Dynamics_365_Integration','Microsoft_Dynamics_365_Sales_GET_Contacts_OB',ids,'SYNC',c); [/aux_code] - **Message Monitoring** ![](../images/2022/01/image_2022_01_20T13_33_20_379Z.png) #### Test Case: 5 ** How to Get Account, Contacts, Tasks in Microsoft Dynamics 365 using Outbound Adapter:** - Go to Integration (Example: Microsoft_Dynamics_365_Integration) - Create Outbound Adapter: Microsoft_365_Sales_GET_Account_Contact_Tasks_OB - (Please follow above steps for create adapter) ![](../images/2022/01/image_2022_01_20T13_36_44_156Z.png) **Create Rest Template (Metadata,Repository, MsgType) using Microsoft dynamics 365 service request payload.** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "Microsoft_Dynamics_365_Sales_GET_Account_Contact_Tasks":{ "Request":{ "URL":{ "PATH Parameter":{ //flat Structure }, "QUERY Parameter":{ //flat Structure } }, "Header":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } }, "Response":{ "root":{ //json payload } } } } [/aux_code] - Metadata: Microsoft_Metadata - Repository: Microsoft_Dynamics_365_Repo ![](../images/2022/01/image_2022_01_20T13_41_18_390Z.png) **Create Integration and Outbound Interface:** - Integration: Microsoft_Dynamics_365_Integration - Outbound Interface: Microsoft_365_Sales_GET_Account_Contact_Tasks_OB ![](../images/2022/01/image_2022_01_20T13_42_40_266Z.png) - **Link Outbound Adapter: Microsoft_365_Sales_GET_Account_Contact_Tasks** ![](../images/2022/01/image_2022_01_20T13_43_37_813Z.png) - **Mapping: here I’m using dynamic path parameter and account id is coming from sObject custom field.** ![](../images/2022/01/image_2022_01_20T13_44_38_786Z.png) - **Link Inbound Interface with Outbound Interface: **Microsoft_365_Sales_GET_Account_Contact_Tasks_IB ![](../images/2022/01/image_2022_01_20T13_45_36_814Z.png) - **Inbound Interface: **Microsoft_365_Sales_GET_Account_Contact_Tasks_IB ![](../images/2022/01/image_2022_01_20T13_46_32_522Z.png) - **Mapping** ![](../images/2022/01/image_2022_01_20T13_47_51_557Z.png) - **Callout** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0013N00000jFRydQAG'}; Listresult = skyvvasolutions.Iservices.invokeCalloutV3('Microsoft_Dynamics_365_Integration','Microsoft_365_Sales_GET_Account_Contact_Tasks_OB',ids,'SYNC',c); [/aux_code] - **Message Monitoring** ![](../images/2022/01/image_2022_01_20T13_50_10_620Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 159. How to use OData Adapter ? Slug: 159-how-to-use-odata-adapter URL: https://help.skyvva.com/#article/159-how-to-use-odata-adapter ================================================================================ # 159. How to use OData Adapter ? #### OData Adapter Template [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]{ "OData Service":{ "Request":{ "URL":{ "PATH Parameter":{ //flat Structure }, "QUERY Parameter":{ //flat Structure } }, "Header":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } } } } [/aux_code] ![](../images/2022/01/image_2022_01_27T09_20_43_839Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Here, the "Google Service" name can be anything. But Node Request, URL, PATH Parameter, QUERY Parameter, Header, Body should be exactly like these.[/su_box] **Test Case 1 : Public OData API** - **Integration Name:** OData Api Testing - **Outbound Interface: **OdataApI Outbound Interface ![](../images/2022/01/image_2022_01_27T09_26_56_677Z.png) **Inbound Interface: **Odata_Api_Inbound_Interface ![](../images/2022/01/image_2022_01_27T09_30_28_413Z.png) - Select Ext Id - Save ![](../images/2022/01/image_2022_01_27T09_33_44_520Z.png) **Adapter: **OData API test ![](../images/2022/01/image_2022_01_27T09_37_17_231Z.png) Here, we perform Select query option with get operation using OData Service Endpoint URL. ![](../images/2022/01/image_2022_01_27T09_43_19_739Z.png) **Callout:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011X00000tlbs5QAA'}; skyvvasolutions.Iservices.invokeCalloutV3('OData Api Testing','OdataApI Outbound Interface',ids,'SYNC',c); [/aux_code] ![](../images/2022/01/image_2022_01_27T09_48_52_091Z.png) ![](../images/2022/01/image_2022_01_27T09_52_48_208Z.png) Here, we selected multiple query options in single request like select, skip, top, orderby, etc. ![](../images/2022/01/image_2022_01_27T09_54_33_936Z.png) - Open Dev Console - Check Debug Only ![](../images/2022/01/image_2022_01_27T09_56_22_929Z.png) - Go to Message Monitoring - Click on Search button ![](../images/2022/01/image_2022_01_27T10_01_17_029Z.png) ![](../images/2022/01/image_2022_01_27T10_06_19_726Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: What to do with failed messages when processing a new message with the same external Id? Title: 160.What to do with failed messages when processing a new message with the same external Id? Slug: what-to-do-with-failed-messages-when-processing-a-new-message-with-the-same-external-id URL: https://help.skyvva.com/#article/what-to-do-with-failed-messages-when-processing-a-new-message-with-the-same-external-id ================================================================================ # 160.What to do with failed messages when processing a new message with the same external Id? #### Introduction: In Skyvva , We have a feature that called what to do with failed message ? This feature is using with Inbound processing and the the located is in the Runtime Configuration - Inbound which is in Interface details.    There are six picklist value such as: - If we set to None, It will create  a new message with the same external Id. - If we set to Overwrite failed message , it will overwrite with the same external Id. - If we set to Overwrite failed message and delete pending, it will overwrite the existing message and delete pending. - If we set to Merge failed message,  it will merge the old with the new payload and process again - If we set to Merge failed message and delete pending, it will merge the old with the new payload message and delete pending. - If we set to Delete failed message , it will delete all failed message". #### Why we use this feature ? This feature is using when the payload missing some fields or user want to add more column without edit message type or structure and it is useful,  when we do with workflow meaning that If the message is failed that means message match condition some workflows, the message will pass to the next workflow to processing. We can set some field on interface force deletion, but the user will lose monitoring the message of processing other interface processing In this case we don't delete the current message which we are processing. We want to keep the current processing, not delete it. But we want to delete the older messages with the same external Id which are red or pending. Only these two status. If the user want to have like that then user doesn't want to have the monitoring for the old failed or pending message with the same external Id. But the other messages with other external Ids are still there and we don't delete them, Except when user choose delete failed message. So the condition is only the messages with the same external Id. **Pre-required: ** - Upload Istructure or message type - Create Integration - Create Inbound Interface - Here's message type. ![](../images/2022/03/1.png) 2. Here's Inbound Interface which is link with message type. ![](../images/2022/03/2.png) - Do Mapping.  See the example bellow . ![](../images/2022/03/3-1.png) #### How to use this feature ? As we known that this feature is in the Runtime Configuration -Inbound so now we go on. Go to Interface details. ![](../images/2022/03/4-1.png) - Scroll down to see the section Runtime Configuration- Inbound ![](../images/2022/03/5-1.png) Now we can see the place to configuration so we will see the details about the six picklist . **First is** ,  What to with failed message when we set "None"  . It will create  a new message with the same external Id. ![](../images/2022/03/6-1.png) - Here's the first  failed message. ![](../images/2022/03/7-1.png) - When we do process inbound again it will create the new message because we choose picklist "None". Here's the result after processing again. ![](../images/2022/03/8-1.png) Second  is, What to with failed message when we set "Overwrite failed message" , it will overwrite with the same external Id. - Here's the example. ![](../images/2022/03/9-1.png) - Here's the failed and pending that we have done. ![](../images/2022/03/8-1.png) - When we processing the right payload that match the structure,  it will overwrite the failed message from failed to complete and it still keep the pending we can see the both message is the same id. Here's the example. ![](../images/2022/03/10-1.png) **Third  is,** What to with failed message when we set "Overwrite failed message and delete pending", it will overwrite the existing message and delete pending. - Here's the example ![](../images/2022/03/11-1.png) - Here's the failed and pending messages . ![](../images/2022/03/12.png) - When we processing the right payload that match the structure, it will deleting the pending and overwrite the failed  message to complete . see the message after processing Inbound below. ![](../images/2022/03/13.png) **Forth  is,** What to do with failed message when we set " Merge failed message",  it will merge the old with the new payload and process again. This meaning that when the payload is failed and then we want to keep the old payload message  and want to add new the fields so it will merge the old payload with the new payload. In this case we need more field to show so now we can add  5 fields more. Here's the first mapping which we will make it failed message. ![](../images/2022/03/18.png) - Here's the example ![](../images/2022/03/14.png) - Here's the failed message. ![](../images/2022/03/20.png) Now we want to keep the value that failed and want to merge the new payload with the failed payload by changing mapping . - Here's the new mapping ![](../images/2022/03/21.png) - Here's the payload new and it will merge the old failed payload with the new failed payload. ![](../images/2022/03/22.png) **Fifth is** , If we set to Merge failed message and delete pending, it will merge the old with the new payload message and delete pending. - Here's the pending message ![](../images/2022/03/31.png) ![](../images/2022/03/32.png) **Sixth is** ,If we set to Delete failed message , it will delete all failed message" - Here's the interface. ![](../images/2022/03/23.png) - Here's the callout v4 from postman that we push only 2 old fields and new one fields and the result will merge the old payload with the new payload. ![](../images/2022/03/33.png) - When we processing it will merge the old payload and with the new payload and delete the pending payload see the message monitor below. ![](../images/2022/03/35-1.png) ![](../images/2022/03/34.png) **Summary ** Now we have already learn about sixth difference picklists for what to do with failed message.  It is very helpful for user who want to use which picklist that match his business. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 161. How to use Microsoft One Drive Adapter Slug: 162-microsoft-one-drive-adapter URL: https://help.skyvva.com/#article/162-microsoft-one-drive-adapter ================================================================================ # 161. How to use Microsoft One Drive Adapter #### Introduction **SKYVVA** Microsoft control board allows user to perform extract, transform, and load  tasks in the cloud. With the  Microsoft OneDrive, user get live access to Microsoft OneDrive data, directly within **SKYVVA **Microsoft control board . In this chapter, we talk connecting to Microsoft OneDrive through the SKYVVA and generating a mapping that can be used in any **SKYVVA** Microsoft control board process. This tutorial is to show our new OneDrive connector to save data from Salesforce into a OneDrive file. With Microsoft OneDrive, you can easily and securely store and access your files from all your devices. User can work with others regardless of whether they’re inside or outside your organization and terminate that sharing whenever you want. OneDrive helps protect your work through advanced encryption while the data is in transit and at rest in data centers. - **Create:** Creates an object on a **SKYVVA**  and is used as a target in an operation Microsoft control board server - **Update:** Updates an object on a **SKYVVA ** and is used as a target in an operation Microsoft control board server - **Upsert:** Upserts an object on a **SKYVVA **and is used as a target in an operation Microsoft control board server - **Delete:** Deletes an object from a **SKYVVA **and is used as a target in an operation Microsoft control board server #### Pre-required: - Create Integration. - Create Metadata Provider, IStructure Repository and Create Flat Structure. - CSV Outbound Adapter - JSON Outbound Adapter/ Inbound Adapter - XML Outbound Adapter/ Inbound Adapter - JSON Outbound Adapter/ /Inbound Adapter - Create Microsoft OneDrive connection by using Microsoft control board. #### Microsoft OneDrive Integration [su_box title="Note" box_color="#2a8af0" title_color="#000000"]New Microsoft One Drive Adapter is working with following 3 file structure.[/su_box] - CSV File is working with flat structure. - XML and JSON file is working with hierarchical structure. **How to configure Adapter in Microsoft Control Board:** - Create Integration. **Ex**: Microsoft_OneDrive_Integration - Click on Microsoft Control Board link ![](../images/2022/03/image_2022_03_09T07_04_46_752Z-1.png) - Click on the adapter tab ![](../images/2022/03/image_2022_03_09T07_06_53_475Z-1.png) - Click on New button and select adapter type as a Microsoft OneDrive and fill all information base on your configuration. ![](../images/2022/03/image_2022_03_09T07_08_02_057Z-1.png) #### Microsoft One Drive CSV Outbound Adapter **1) Create Metadata Provider, IStructure Repository and Create Flat Structure.** **2) How to Create Microsoft One Drive CSV Outbound Adapter:** - Go to Integration (Example: Microsoft_OneDrive_Integration) - Create Outbound Adapter : MODrive_CSV_Request_Adp (Please follow above steps for create adapter) ![](../images/2022/03/image_2022_03_10T11_29_52_500Z-1.png) **3) Create Integration and Outbound Interface:** - Integration: Microsoft_OneDrive_Integration - Outbound Interface: MODrive_CSV_Request ![](../images/2022/03/image_2022_03_10T11_31_46_436Z.png) - **Link Outbound Adapter: MODrive_CSV_Request_Adp** ![](../images/2022/03/image_2022_03_10T11_33_36_016Z.png) - **Mapping** ![](../images/2022/03/image_2022_03_10T11_31_46_436Z.png) - **Callout** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0011j000015ikjBAAQ','0011j000015ikjCAAQ'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('Microsoft_OneDrive_Integration','MODrive_CSV_Request',ids,'SYNC',c); [/aux_code] - **Message Monitoring** ![](../images/2022/03/image_2022_03_10T11_39_32_660Z.png) - **Check CSV Data on Microsoft One Drive Server** ![](../images/2022/03/image_2022_03_10T11_42_42_450Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]When user creating csv file then use , ; Tab And | operator with Microsoft one drive outbound adapter.[/su_box] #### Microsoft One Drive JSON Outbound **1) Create Metadata Provider, IStructure Repository and Create Hierarchical Structure.** **2) How to Create Microsoft One Drive JSON Outbound Adapter:** - Go to Integration (Example: Microsoft_OneDrive_Integration) - Create Outbound Adapter : MODrive_JSON_Request_Adp(Please follow above steps for create adapter) ![](../images/2022/03/image_2022_03_10T11_47_16_870Z.png) **3) Create Integration and Outbound Interface:** - Integration: Microsoft_OneDrive_Integration - Outbound Interface: MODrive_JSON_Request #### - **Link Outbound Adapter: MODrive_JSON_Request_Adp** ![](../images/2022/03/image_2022_03_10T11_51_05_166Z.png) - **Mapping** ![](../images/2022/03/image_2022_03_10T11_52_28_192Z.png) - **Callout** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0011j000015ikjBAAQ','0011j000015ikjCAAQ'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('Microsoft_OneDrive_Integration','MODrive_JSON_Request',ids,'SYNC',c); [/aux_code] #### Microsoft One Drive XML Outbound Adapter **1) Create Metadata Provider, IStructure Repository and Create Hierarchical Structure.** **2) How to Create Microsoft One Drive JSON Outbound Adapter:** - Go to Integration (Example: Microsoft_OneDrive_Integration) - Create Outbound Adapter : MODrive_XML_Request_Adp (Please follow above steps for create adapter) ![](../images/2022/03/image_2022_03_10T11_58_16_862Z.png) **3) Create Integration and Outbound Interface:** - Integration: Microsoft_OneDrive_Integration - Outbound Interface: MODrive_XML_Request ![](../images/2022/03/image_2022_03_10T12_00_03_597Z.png) - **Link Outbound Adapter: MODrive_XML_Request_Adp** ![](../images/2022/03/image_2022_03_10T12_01_52_900Z.png) - **Mapping** ![](../images/2022/03/image_2022_03_10T12_03_55_888Z.png) - **Callout** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0011j000015ikjBAAQ','0011j000015ikjCAAQ'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('Microsoft_OneDrive_Integration','MODrive_XML_Request',ids,'SYNC',c); [/aux_code] #### Microsoft One Drive CSV Inbound Adapter **1) Create Metadata Provider, IStructure Repository and Create Flat Structure.** **2) How to Create Microsoft One Drive CSV Inbound Adapter:** - Go to Integration (Example: Microsoft_OneDrive_Integration) - Create Inbound Adapter : MODrive_CSV_Comma_Inbound (Please follow above steps for create adapter) ![](../images/2022/03/image_2022_03_10T12_09_01_639Z.png) **3) Create Integration and Inbound Interface:** - Integration: Microsoft_OneDrive_Integration - Outbound Interface: MODrive_CSV_Comma_Inbound ![](../images/2022/03/image_2022_03_10T12_10_24_833Z.png) - **Link Inbound Adapter: MODrive_CSV_Comma_Inbound** ![](../images/2022/03/image_2022_03_10T12_11_45_768Z.png) - **Mapping** ![](../images/2022/03/image_2022_03_10T12_12_49_485Z.png) **Callout:** - **Start Schedule**: Go to Microsoft control board -> Click on adapter tab -> click on start button with **green** color. - **Stop Schedule**: Go to Microsoft control board -> Click on adapter tab -> click on stop button with **red** color. ![](../images/2022/03/image_2022_03_10T12_17_34_874Z.png) - **Message Monitoring: (Get records of .csv file from the Microsoft one drive)** ![](../images/2022/03/image_2022_03_10T12_19_45_688Z.png) - **Uploaded CSV file on Microsoft One Drive Server** ![](../images/2022/03/image_2022_03_10T12_24_16_112Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If adapter property What to do with the file after Processing? Is Delete File and Item Id means fileid of .csv file in Microsoft one drive example: CF45F67E90466AE7%21187 so after processing, it will be delete file from Microsoft one drive.[/su_box] #### Microsoft One Drive JSON Inbound Adapter **1) Create Metadata Provider, IStructure Repository and Create Hierarchical Structure.** **2) How to Create Microsoft One Drive JSON Inbound Adapter:** - Go to Integration (Example: Microsoft_OneDrive_Integration) - Create Inbound Adapter : MODrive_JSON_Response_Adp (Please follow above steps for create adapter) ![](../images/2022/03/image_2022_03_10T12_28_43_452Z.png) **3) Create Integration and Inbound Interface:** - Integration: Microsoft_OneDrive_Integration - Inbound Interface: MODrive_JSON_Inbound ![](../images/2022/03/image_2022_03_10T12_30_35_370Z.png) - **Link Outbound Adapter: MODrive_JSON_Response_Adp** ![](../images/2022/03/image_2022_03_10T12_32_31_361Z.png) - **Mapping** ![](../images/2022/03/image_2022_03_10T12_33_38_845Z.png) **Callout:** - **Start Schedule**: Go to Microsoft control board -> Click on adapter tab -> click on start button with **green** color. - **Stop Schedule**: Go to Microsoft control board -> Click on adapter tab -> click on stop button with **red** color. ![](../images/2022/03/image_2022_03_10T12_34_59_436Z.png) - **Message Monitoring: (Get records of .json file from the Microsoft one drive)** ![](../images/2022/03/image_2022_03_10T12_36_04_850Z.png) - **.Json File is containing 2 account data with sub child object data like contact and asset.** ![](../images/2022/03/image_2022_03_10T12_37_58_470Z.png) - **Uploaded JSON file on Microsoft One Drive Server** ![](../images/2022/03/image_2022_03_10T12_40_15_948Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If adapter property What to do with the file after Processing? Is Delete File and Item Id means fileid of .json file in Microsoft one drive example: CF45F67E90466AE7%21187 so after processing, it will be delete file from Microsoft one drive.[/su_box] #### Microsoft One Drive XML Inbound Adapter **1) Create Metadata Provider, IStructure Repository and Create Hierarchical Structure.** **2) How to Create Microsoft One Drive XML Inbound Adapter:** - Go to Integration (Example: Microsoft_OneDrive_Integration) - Create Inbound Adapter : MODrive_XML_Response_Adp (Please follow above steps for create adapter) ![](../images/2022/03/image_2022_03_10T12_43_59_323Z.png) **3) Create Integration and Inbound Interface:** - Integration: Microsoft_OneDrive_Integration - Inbound Interface: MODrive_XML_Inbound ![](../images/2022/03/image_2022_03_10T12_45_03_572Z.png) - **Link Outbound Adapter: MODrive_XML_Response_Adp** ![](../images/2022/03/image_2022_03_10T12_46_12_983Z.png) - **Mapping** ![](../images/2022/03/image_2022_03_10T12_47_31_521Z.png) **Callout:** - **Start Schedule**: Go to Microsoft control board -> Click on adapter tab -> click on start button with **green** color. - **Stop Schedule**: Go to Microsoft control board -> Click on adapter tab -> click on stop button with **red** color. ![](../images/2022/03/image_2022_03_10T12_48_36_021Z.png) - **Message Monitoring: (Get records of .xml file from the Microsoft one drive)** ![](../images/2022/03/image_2022_03_10T12_49_33_974Z.png) - **.XML file is containing 2 account data with sub child object data like contact and asset.** ![](../images/2022/03/image_2022_03_10T12_51_39_579Z.png) - **Uploaded .XML file on Microsoft One Drive Server** ![](../images/2022/03/image_2022_03_10T12_54_32_583Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If adapter property What to do with the file after Processing? Is Delete File and Item Id means fileid of .xml file in Microsoft one drive example: CF45F67E90466AE7%21187 so after processing, it will be delete file from Microsoft one drive.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: What is Skyvva Bulk Data Loader? Title: 162.What is Skyvva Bulk Data Loader? Slug: 162-what-is-skyvva-bulk-data-loader URL: https://help.skyvva.com/#article/162-what-is-skyvva-bulk-data-loader ================================================================================ # 162.What is Skyvva Bulk Data Loader? **Introduction:** We have now two product which can be used as a free version e.g. - Skyvva Data Loader. This is running on Salesforce Org. without any installation on an OS **(Mac or Windows)** - Skyvva Bulk Data Loader. This need the installation for **Mac OS** or **Windows** and is only used to load mass volume data. The technique we use here is pure Salesforce bulk Api. You cannot use mapping with formula feature. You can only move field to map 1:1. No other mapping feature like set context or filter is possible. It is only pure data loading tool where the data is prepared and mapped already**.** This tool allows you to bulk import data in a few simple steps. Featuring a more robust engine than import wizards, you can use it to **insert, update,** **delete,** or **upsert** Salesforce records for both standard and custom objects. **Objectives:** This document describes administrative tasks required to manage the data integration from your system to salesforce. With the Bulk Data Loader, we support 3 payloads as well e.g. - csv - xml - Json [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Currently we are supporting - Protocol: Local - Integration Mode: SFDCBulkV2/SFDCBulkV1 - File Type: CSV, JSON, XML - License key: not required - Direction: Inbound - Processing: Manually Below are the following steps How it’s work : Step 1: Open the Skyvva Data Loader Window ![](../images/2022/03/1-1.png) Step 2: Select the domain and Login with your user name password or security token as shown in below picture. ![](../images/2022/03/2-1.png) Step 3: Select the Integration In this step you are going to choose an integration that contains the interface you want to load the data. ![](../images/2022/03/3.png) In Below image you can see Integration name. ![](../images/2022/03/4.png) Step 4: Select Interface In this step you have to choose the Inbound Interface. Inbound interface is used to import data into Salesforce. You can select only interface from the selected integration. Click. Next ![](../images/2022/03/5.png) Click. Next Step 5: Select Format. In this step you can choose the different file format such as CSV, XML and Json. Select the format that is represented in the file you want to import or create. ![](../images/2022/03/6.png) Click. Next Step 6: Select file Name or File Format Name which is show in below picture. ![](../images/2022/03/7.png) Click. Open. Step 7: Now you see your selected file In this step you have to choose the file from your local folder to be uploaded. When you are exporting data here you can enter your file name and select the local you want to save the file. ![](../images/2022/03/8.png) ![](../images/2022/03/9.png) In the Above image shows the Process Completed! Summary: In the Above chapter we are now able to understand “What is Skyvva Bulk Data Loader and how it work”. SKYVVA´s Bulk Data loader is perfectly suited for a business analyst and administrator to manage the import of critical business information such as accounts, contacts, assets products, leads or orders on time without being reliant on limited IT resources. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use INFOR ION Adapter? Title: 163. How to use INFOR ION Adapter? Slug: 163-how-to-use-infor-ion-adapter URL: https://help.skyvva.com/#article/163-how-to-use-infor-ion-adapter ================================================================================ # 163. How to use INFOR ION Adapter? ** INTRODUCTION** Infor describes ION as “a technology which builds on a flexible and powerful integration framework to create an end-to-end solution for improving your entire business process”.  Other descriptions include “ION is a lightweight middleware layer built into the software that helps to ease any integration challenges customers would otherwise face”. Here is a high level summary of the ION platform along with a feel for how it could be implemented alongside other Infor and non-Infor solutions to deliver benefits in terms of improved integration and streamlined processes. **Infor ION Suite** To summarise, the Infor ION platform comprises a number of distinct components, which can be deployed as part of an ION implementation.  Not all components need to be implemented at the same time.  The table below gives a brief explanation of each. On reviewing the functionality available within ION it is very likely that some of the software applications currently in use across your organisation already possess some/all elements of this functionality. For example, existing software applications may already have built in workflow/authorisation, exception alerting and notification capabilities.  Interface capabilities may already exist between legacy expense management and finance systems. **  INFOR ION Adapter template** ![](../images/2022/03/inforion.png) **Pre-Requisite:-** 1. Create Integration. 2. Create Adapter. ### Step 1 : We have to create the following data for inbound processing: - Create Metadata for message type -> Create I structure Repository in it -> Create appropriate message type. - The next step is to create Integration. - Then Create an Inbound Interface where we have to select your Metadata, Repository, and message type. Then Select your adapter. ![](../images/2022/03/infor1.png) ![](../images/2022/03/infor2.png) **NOTE** a. Here, the "InforION Service" name can be anything. But Node Request, URL, PATH Parameter, QUERY Parameter, Header, Body       should be exactly like these. b. Here we use basically two types of file JSON and XML for sending the data. **Test Case 1:** Basic Authentication Integration Name: infor_skyvva Outbound Interface: infor_ob_1 ![](../images/2022/03/infor3.png) ### Step 2 : Click on open mapping We need to drag fields from Source and drop it to Target and save it. ![](../images/2022/03/infor4.png) Request ![](../images/2022/03/infor5.png) response ![](../images/2022/03/infor6.png) Click on open mapping We need to drag fields from Source and drop it to Target and save it. ![](../images/2022/03/infor7.png) ### Step 3 : Create the adapter ![](../images/2022/03/infor10.png) ### Step 4 :- Check on message monitoring. ![](../images/2022/03/infor8.png) ![](../images/2022/03/infor9.png) #### SUMMARY In this chapter we have learnt how to to inbound and outbound processing using infor ion adapter. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. Introduction Slug: 1-introduction URL: https://help.skyvva.com/#article/1-introduction ================================================================================ # 1. Introduction **Introduction:** An Amazon S3 bucket is a public cloud storage resource available in Amazon Web Services (AWS) Simple Storage Service (S3), an object storage offering. Amazon S3 buckets, which are similar to file folders, store objects, which consist of data and its descriptive metadata. Therefore, we provide the AWS S3 adapter to connect to the Amazon S3 service in order to send and retrieve data from Salesforce to Amazon S3 and Amazon S3 to Salesforce. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 165. How to use google cloud storage adapter? Slug: 165-how-to-use-google-cloud-storage-adapter URL: https://help.skyvva.com/#article/165-how-to-use-google-cloud-storage-adapter ================================================================================ # 165. How to use google cloud storage adapter? #### INTRODUCTION loud Storage is a service for storing your *objects* in Google Cloud. An object is an immutable piece of data consisting of a file of any format. You store objects in containers called *buckets*. All buckets are associated with a [*project*](https://cloud.google.com/docs/overview#projects), and you can group your projects under an [*organization*](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy#organizations). After you create a project, you can [create Cloud Storage buckets](https://cloud.google.com/storage/docs/creating-buckets), [upload objects](https://cloud.google.com/storage/docs/uploading-objects) to your buckets, and [download objects](https://cloud.google.com/storage/docs/downloading-objects) from your buckets. You can also grant permissions to make your data accessible to principals you specify, or - for certain use cases such as hosting a website - [accessible to everyone on the public internet](https://cloud.google.com/storage/docs/access-control/making-data-public). The Cloud Storage structure looks like this: ![Diagram of Cloud Storage infrastructure](https://cloud.google.com/storage/images/gcs-intro.svg) GOOGLE CLOUD STORAGE TEMPLATE ![](../images/2022/04/1-1.png) **Pre-Requisite:-** 1. Create Integration. 2. Create Adapter. ### Step 1 : We have to create the following data for inbound processing: - Create Metadata for message type -> Create I structure Repository in it -> Create appropriate message type. - The next step is to create Integration. - Then Create an Inbound Interface where we have to select your Metadata, Repository, and message type. Then Select your adapter. ![](../images/2022/04/2-1.png) ![](../images/2022/04/3-1.png) **NOTE** a. Here, the “Google Cloud Service” name can be anything. But Node Request, URL, PATH Parameter, QUERY Parameter, Header, Body       should be exactly like these. b. Here we use basically three types of file JSON ,XML and CSV and we can store the data in that formation in the google cloud storage      from the SF. Test Cases 1: - Oauth2.0 Authentication Type Integration Name: Raj_REST_Integration Outbound Interface: GCS_OB ![](../images/2022/04/4.png) ### Step 2 : Click on open mapping We need to drag fields from Source and drop it to Target and save it. ![](../images/2022/04/5.png) Click on open mapping We need to drag fields from Source and drop it to Target and save it. ### Step 3 : Create the adapter. ![](../images/2022/04/6.png) - Open Dev Console. - Check Debug Only. - ![](../images/2022/04/8.png) **Execute From Manually: -** ![](../images/2022/04/9.png)![](../images/2022/04/10.png) ![](../images/2022/04/11.png)![](../images/2022/04/12.png)![](../images/2022/04/13.png)![](../images/2022/04/14.png) ### Step 4 :- Check on message monitoring. ![](../images/2022/04/15.png)![](../images/2022/04/16.png) **SUMMARY** In this chapter we have learnt how to to inbound and outbound processing using google cloud storage adapter. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to import CSV using Agent File Adapter in Protocol: Local? Slug: how-to-import-csv-using-agent-file-adapter-in-protocol-local URL: https://help.skyvva.com/#article/how-to-import-csv-using-agent-file-adapter-in-protocol-local ================================================================================ # 1. How to import CSV using Agent File Adapter in Protocol: Local? **Introduction ** In this tutorial, we will learn how to import CSV using the Agent File Adapter to work for consumer. Agent File Adapter for consumer means Inbound Agent File Adapter. To use an agent file for consumer, we need to configure the Agent Control Board, and we need to create an Agent File adapter. **Pre-required** - Create Integration - Do configuration on the new Agent Control Board - Create Agent File Adapter(inbound) on the new Agent Control Board - Create Metadata Provider, Repository, and Message Type - Create Inbound Interface - Check Cache monitoring status **How to import CSV using Agent File Adapter in the protocol: local? ** Step-1: Create Integration and test connection destination Create new Integration by following the guide, the link is given below: [#article/what-is-an-integration-and-how-to-create-it](#article/what-is-an-integration-and-how-to-create-it) - Navigate to AGENT Control Board as shown below. ![](../images/2022/05/a1-1.png) - In the Configuration tab enter the connection destination name and click on the button “Continue” ![](../images/2022/05/a2.png) - Fill in all the required details - Click the button Ping Agent Connection ![](../images/2022/05/a3.png) - Fill in all the required details - Click the button Ping Salesforce Connection ![](../images/2022/05/a4.png) Step-2: Create an Inbound Agent File Adapter on the new Agent Control Board - Navigate to the Adapter tab after that click the button New ![](../images/2022/05/a5.png) - Name: *any Name* - Type: *Agent File * - Direction: *Inbound* - Protocol: *Local* - File Type: *CSV* - Folder: *(your folder location)* - File Name: *(your file name)* - What to do with the file after Processing*? Delete File* - Connection Destination: *(your destination name)* ![](../images/2022/05/a6.png) Step-3: Create Message Type - Create Metadata Provider - Create Repository - Go to the Repository details page then click the New Message Type button ![](../images/2022/05/a7.png) - Fill all required fields then click the Save button ![](../images/2022/05/a8.png) - Navigate to the Related tab and select the Message Type field Entry ![](../images/2022/05/a9.png) - After that, we got the Message Type ![](../images/2022/05/a10.png) Step 4: Create an Interface - For creating the interface need to follow this guide [ #article/1-what-is-an-interface-and-how-to-create-it]( https:/apsara-consulting.com/docs/tutorial-v2-41-lightning/what-is-an-interface-and-how-to-create-it/) - Create an Inbound Interface for Synchronous mode, Operation(upsert), Choose Adapter, Metadata Provider, Repository, and Message Type ![](../images/2022/05/a11.png) - Mapping ![](../images/2022/05/a17.png) - Upload CSV file on consumer folder. Example: a.csv ![](../images/2022/05/a13.png) - Start the Adapter route by clicking the start route button on the Adapter Detail tab on Agent Control Board ![](../images/2022/05/a14.png) ![](../images/2022/05/a15.png) You will get a success message when the route starts successfully [su_box title="Note" box_color="#2a8af0" title_color="#000000"] You need to link the inbound adapter with the inbound interface otherwise route will not start.[/su_box] - As a result of message monitoring, the record has been sent to Salesforce correctly ![](../images/2022/05/a18.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to import XML using Agent File Adapter in Protocol: FTP? Slug: how-to-import-xml-using-agent-file-adapter-in-protocol-ftp URL: https://help.skyvva.com/#article/how-to-import-xml-using-agent-file-adapter-in-protocol-ftp ================================================================================ # 1. How to import XML using Agent File Adapter in Protocol: FTP? **Introduction ** In this tutorial, we will learn how to import XML using the Agent File Adapter work for consumer. Agent File Adapter for consumer means Inbound Agent File Adapter. To use an agent file for consumer, we need to configure the Agent Control Board, and we need to create an Agent File adapter. **Pre-required** - Create Integration - Do configuration on the new Agent Control Board - Create Agent File Adapter(inbound) on the new Agent Control Board - Create Metadata Provider, Repository, and Message Type - Create Inbound Interface - Check Cache monitoring status **How to import XML using Agent File Adapter in the protocol: FTP? ** Step-1: Create Integration and test connection destination Create new Integration by following the guide, link is given below: [#article/what-is-an-integration-and-how-to-create-it](#article/what-is-an-integration-and-how-to-create-it) - Navigate to AGENT Control Board as shown below. ![](../images/2022/05/b1.png) - In the Configuration tab enter the connection destination name and click on the button “Continue” ![](../images/2022/05/b2.png) - Fill in all the required details - Click the button Ping Agent Connection ![](../images/2022/05/b3.png) - Fill in all the required details - Click the button Ping Salesforce Connection ![](../images/2022/05/b4.png) Step-2: Create an Inbound Agent File Adapter on the new Agent Control Board - Navigate to the Adapter tab after that click the button New ![](../images/2022/05/b5.png) - Name: *any Name * - Type: *Agent File * - Direction: *Inbound* - Protocol: *(your FTP)* - Host: *(your Public IP Address)* - Username: *(your FTP Username)* - Password: *(your FTP password) * - Port:*( your FTP Server Port) * - File Type: *XML* - Folder: *(your folder location FTP)* - File Name: *(your File Name)* - What to do with the file after Processing? Delete File - Connection Destination: *(your destination name)* ![](../images/2022/05/b6.png) Step-3: Generate Message Type from file - Create Metadata Provider - Create Repository - Go to the Repository details page then click the Open Editor button ![](../images/2022/05/b7.png) - Input a XML format ![](../images/2022/05/b8.png) - After that, we got the Message Type generated as a template from the file ![](../images/2022/05/b10.png) Step 4: Create Interface - For creating the interface need to follow this guide [ #article/1-what-is-an-interface-and-how-to-create-it]( https:/apsara-consulting.com/docs/tutorial-v2-41-lightning/what-is-an-interface-and-how-to-create-it/) - Create an Inbound Interface for Synchronous mode, Operation(upsert), Choose Adapter, Metadata Provider, Repository, and Message Type ![](../images/2022/05/b11.png) - Mapping ![](../images/2022/05/b12.png) - Upload XML file on consumer folder. Example: MyAccount.xml ![](../images/2022/05/b13.png) - Start the Adapter route by clicking the start route button on the Adapter Detail tab on Agent Control Board ![](../images/2022/05/b14.png) ![](../images/2022/05/b15.png) You will get a success message when the route starts successfully [su_box title="Note" box_color="#2a8af0" title_color="#000000"] You need to link the inbound adapter with the inbound interface otherwise route will not start.[/su_box] - As a result of message monitoring, the record has been sent to Salesforce correctly ![](../images/2022/05/b16.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. How to use Amazon SQS adapter? Slug: 168-how-to-use-amazon-sqs-adapter URL: https://help.skyvva.com/#article/168-how-to-use-amazon-sqs-adapter ================================================================================ # 2. How to use Amazon SQS adapter? **INTRODUCTION** With the Amazon SQS or Amazon Simple Queue Service adapter, a user can access Amazon Simple Queue Services. The adapter connects to the fully managed Amazon Simple Queue Service system, using AWS keys. The SQS adapter can send and fetch messages to and from the queues to which a user has access. This document provides an overview and the functional specifications of the Amazon SQS Adapter. The Amazon Simple Queue Service (SQS) is a distributed message-queuing service supporting programmatic sending of messages via web service applications. This message-queuing service is entirely manageable and scalable and can dissociate microservices, distributed systems, and server-less applications. The function of an Amazon SQS adapter is to access queues located at various Amazon Web Services-served geographic regions to fetch messages from standard queues and also store messages in standard queues in Amazon SQS. IAM users can access SQS messages if they have the correct AWS access key and secret key, and also the queue-access permission. The SQS Adapter supports the sending and fetching of message attributes along with the message texts. SQS adapter supports standard queues having at-least-once delivery. The Amazon SQS adapter does not support the predefined-schema-import option. An AWS Identity and Access Management (IAM) user can be created in AWS for accessing the SQS services. This user represents a person or application that will interact with AWS. It is not the same as the AWS account root user. **Pre-Requisite:-** 1. Create Integration. 2. Create Adapter. **1)** Create Metadata Provider, IStructure Repository and Create Flat Message Type. Upload CSV file and create flat message type. **2)** How to Create Amazon SQS Outbound CSV Adapter: Go to Integration Click on link Amazon Control Board. Go to Adapter Tab and Click on New Button. Configure adapter base on your setting: ![](../images/2022/05/Capture-1.png) ![](../images/2022/05/1.png) **3)** Create Integration and Outbound Interface Example: Integration: Api_gateway Outbound Interface: Test CSV Outbound Interface ![](../images/2022/05/2.png) ![](../images/2022/05/3.png) ![](../images/2022/05/4.png) **4)**Link Outbound Adapter: Amazon SQS Outbound CSV Adapter ![](../images/2022/05/5-1.png) **5)**Mapping:- ![](../images/2022/05/6.png) ![](../images/2022/05/7.png) **6)**Check on message monitoring. ![](../images/2022/05/infor8.png) ![](../images/2022/05/8.png) **SUMMARY** In this chapter we have learnt how to to inbound  processing using amazon sqs adapter. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Search by the Business External Id in outbound message (Interface) Title: 169. Search by the Business External Id in outbound message (Interface) Slug: 169-search-by-the-business-external-id-in-outbound-message-interface URL: https://help.skyvva.com/#article/169-search-by-the-business-external-id-in-outbound-message-interface ================================================================================ # 169. Search by the Business External Id in outbound message (Interface) #### Introduction For new enhancement, the** BUSINESS EXTERNAL ID** on message monitoring will show the external id value when the user checks the flag external id in the mapping of the Outbound interface. #### Pre-required –  [How to create an integration ?](#article/what-is-an-integration-and-how-to-create-it)           –  [What is hierarchical interface ?](#article/1-what-is-hierarchical-interface)           –  [How to do Hierarchical mapping ?](#article/how-to-do-hierachical-mapping) #### How it works ? - Create integration and Interface ![](../images/2022/05/image_2022_05_05T12_57_22_158Z.png) - Go to Interface and scroll down tp Outbound Setup Section - Select Outbound Adapter ![](../images/2022/05/image_2022_05_05T13_05_07_470Z.png) - Select MetaData Provider - Select Repository - Source/ Target Message Type ![](../images/2022/05/image_2022_05_05T12_52_38_751Z-1.png) - Click on Open Mapping Tab ![](../images/2022/05/image_2022_05_05T13_08_00_200Z.png) - Select Ex Id for both Account & Contact - Save **Now go to Message monitoring Tab** - Select Integration & Interface - Click on search button ![](../images/2022/05/image_2022_05_05T13_15_20_647Z.png) - Here user can see both External Ids with Outbound Interface - Coca Business External Id (Account) **Name** - John Business External Id (Contact) **LastName** [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Message Content(Data) can filter only the value of data in the message, not the field. - E.g. in below example we search with External Business Id LastName John (Contact) [/su_box] ![](../images/2022/05/image_2022_05_04T13_43_43_430Z.png) - Apart from that the Business External Id is shown like that without filter when user click on search button (Coca & John) in hierarchical format - Coca Business External Id (Account) Name - John Business External Id (Contact) LastName ![](../images/2022/05/image_2022_05_05T13_23_37_563Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Different ways to add custom logic for the inbound processing. Title: 65.4 How to use Salesforce Auto Launched flow to do custom processing? Slug: 65-4-how-to-use-salesforce-auto-launched-flow-to-do-custom-processing URL: https://help.skyvva.com/#article/65-4-how-to-use-salesforce-auto-launched-flow-to-do-custom-processing ================================================================================ # 65.4 How to use Salesforce Auto Launched flow to do custom processing? #### Learning Objectives - About Auto launched - Flows **What is Auto launched?** **Auto-launched Flow** is leveraged to automate complex business processes without writing code. It can be auto-launched from Apex class or Process Builder when a record is changed while inserting, updating, or deleting. This flow type doesn’t require any user interaction to start. They won’t include steps, screens, or dynamic choices in the flow. **What are Flows?** A flow is the part of Salesforce Flow that collects data and performs actions in your Salesforce org or an external system. Salesforce Flow provides two types of flows: screen flows and auto-launched flows. To automate a business process that collects data from people, use a screen flow. For example, create a guided tutorial or wizard with screens. To launch a flow internally when the record changes or when a user clicks a button, use an auto-launched flow. For example, add automation to your page or app to perform an action to a record when a user clicks a button. **Prerequisite:** Before creating the Salesforce Auto Launched flow, there are some properties you must know: - Create Integration - Create Interface - Mapping What is Integration and how to create it? [https://apsara-consulting.com/docs/tutorial-v2-41-lightning/what-is-an-integration-and-how-to-create-it/](https://apsara-consulting.com/docs/tutorial-v2-41-lightning/what-is-an-integration-and-how-to-create-it/) Here is the step to use the Operation Auto launched Flow: **Step 1:** Create a Flow with type auto launched Go to Setup and search flow in the Quick Find box: ![](../images/2022/07/1.png) Step 2: Select New Flow: ![](../images/2022/07/2.png) Step 3: Select AutoLaunched Flow (No Trigger) ![](../images/2022/07/3.png) Step 4: Create a new flow with the name customer flow ![](../images/2022/07/4.png) Step 5: Create an apex class for invoking from flow (customerflow) This apex class is used to update the status and comment messages after the processing flow is finished. ![](../images/2022/07/5.png) global with sharing class TestInvokeWorkflow { @InvocableMethod global static void updateMessage(List myDto){ try{ List lstAcc = new List(); List lstMsg = new List(); List lstUpdate= new List(); for(ClassProperties dto: myDto){ lstAcc.addAll(dto.myListAcc); lstMsg.addAll(dto.myListMSG); } for(Integer i=0;i< lstAcc.size(); i++){ if(lstAcc[i].Id !=null){ lstMsg[i].skyvvasolutions__Status__c = 'Completed'; lstMsg[i].skyvvasolutions__Comment__c = 'Success from flow'; lstUpdate.add(lstMsg[i]); }else{ lstMsg[i].skyvvasolutions__Status__c = 'Failed'; lstMsg[i].skyvvasolutions__Comment__c = 'Failed from flow'; lstUpdate.add(lstMsg[i]); } } update lstUpdate; }catch(Exception ex){} } global class ClassProperties{ @InvocableVariable(Required = true) global List myListAcc; @InvocableVariable(Required = true) global List myListMSG; } } **Step 6: ** **Create new integration and interface** We create a new interface with: - Operation type: Auto launched Flow - Source/Target Name: Account - Custom Flow: customer flow - Do mapping (Account) ![](../images/2022/07/6.png) Go to interface details: ![](../images/2022/07/7.png) Scroll down the page to the mapping section: ![](../images/2022/07/8.png) Step 7: Push data by Manual Load: We choose the account as sample data. ![](../images/2022/07/9.png) Push the selected data and click on the message board button. ![](../images/2022/07/10.png) Step 8: We can check on the message board: When we push uploaded data, we can see the result on the message monitoring page. ![](../images/2022/07/11.png) #### Summary: Now we are able to understand and able implement the Auto launched flow and how to use the salesforce auto-launched flow in custom inbound processing in detail. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to create hierarchical interface using Foreign Key? Title: 1. How to create hierarchical interface using Foreign Key? Slug: how-to-create-hierarchical-interface-using-foreign-key-2 URL: https://help.skyvva.com/#article/how-to-create-hierarchical-interface-using-foreign-key-2 ================================================================================ # 1. How to create hierarchical interface using Foreign Key? **Learning Objectives** After completing this unit, you’ll be able to: - Describe what Custom field  is . - Also Can describe foreign key, Tree mapping - Comfortably use how to link parent interface to its child interface using foreign key and tree mapping. #### Introduction We can link two different object with each other using foreign key or tree mapping. #### What Are Hierarchical Interfaces? - To arrange interfaces in order means hierarchical interface. It is structure in which interfaces are ranked according to levels of importance. - In hierarchical Interfaces, one interface is a  parent’s of another interface. It means that child interface inherited External ID from its parent's interface. For example, Account interface is parent’s contact interface because of Contact inherited External ID from Account. - Also One parent interface can have many child account but child interface has only single parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts. #### What is the foreign key? A FOREIGN KEY is a field (custom fields) in one Interface that refers to the PRIMARY KEY . The Interface containing the foreign key is called the child Interface, and the Interface containing the candidate key is called the parent Interface. #### How to create a Foreign key? This is also called an object field in the account object. Follow the given steps to create the object field: - Go to Set up->Object Manager->Account-> Fields & Relationships->Click New Button. ![](../images/2019/01/14.1.jpg) - Choose the field type: Please tick Text data type and click Next - Enter the details: Please Field Label: AccountId->Fill Length: 50->Field Name gets Auto->tick External ID->Click Save. - Establish field-level Security: Please tick visible and click the next button. - Add to page layouts: Click only Save button. here we get the object field on the Target Account Salesforce object. #### we can  create a Hierarchical interface in two ways: - **Manually creation of hierarchical interfaces:** - We define manually two interfaces e.g. Account (parent) and Contact (child) and do mapping manually. Here we need to create the chain definition in the parent interface manually. Also in the child interface, we need to create the foreign key manually. **2. Tree Mapping**: - By using the "Tree Mapping" capability of Skyvva tool and the parent and child interface are generated automatically. Also, the chained interface for the parent interface is generated, and also the foreign key for the child interface is generated automatically. #### Create hierarchical Interface using foreign key: #### Objective: To create a parent-child relation between the account interface and contact interface using the foreign key. #### Pre-requisite: - We have to create  Integration -> Go to integration tab -> fill name field -> Save it. - We need two inbound interfaces. I,e Account, contact. #### Follow the given steps : - Account Interface Mapping:  Go to Account Interface ->Cross down to Source definition Section->Click choose file button to browse the file that wants to mapping->choose file->Click Open button->Click button Save. ![](../images/2019/01/FKey_08.png) Please drag source field to Target field->look at Data Mapping->Tick Ext ID->Click Save button. ![](../images/2019/01/FKey_09.png) - Create IChain: Go to related tab -> Scroll down page to IChainedInterface -> Click New IChained Interface ![](../images/2019/01/FKey_016.png) ![](../images/2019/01/FKey_017.png) - Contact interface Mapping: Go to interface Contact->Cross down to Source definition Section->Click choose file button to browse file that want to mapping->choose file->Click Open button->Click button Save. ![](../images/2019/01/FKey_10.png) Please drag source field to Target field->look at Data Mapping->Tick Ext ID->Click Save button. ![](../images/2019/01/FKey_012.png) - D**efine foreign key on** the contact interface which link to account object. lookup field link to account object. We are searching salesforce id by external account Id which is the primary key of external sys. - Please go to Contact Interface -> Click on Related -> Cross down on Foreign Key section->Click New Foreign Key Button. ![](../images/2019/01/FKey_013.png) - Choose Lookup Field Name is AccountId in Combo box->Chose External Id Field is AccountId__c in Combo box->Click Save button. ![](../images/2019/01/FKey_014.png) Now you get a Foreign key. ![](../images/2019/01/FKey_015.png) - **Load Account data CSV using Manual Load:** Go to integration->Details->Manual Laod->Chose Inbound Interface (Active) is Account in Combo box->Choose Data Type is CSV->Click Choose File Button and Browse to choose file->Click Open Button->Click Upload Button ![](../images/2019/01/FKey_018.png) ![](../images/2019/01/FKey_019.png) Cross down Total Records Found Section in Manual Load level-> Tick Records that want to load to salesforce->Click Push Button->Click Message Board to check monitory Message ![](../images/2019/01/FKey_020.png) Choose Interface Name to check message depend on Name and Click Search button to show message. ![](../images/2019/01/FKey_021.png) Finally, you can get Account has relationship with contact like screen shot below. Account Name is Test01 has five contact such as Ra1 Dr1....... ![](../images/2019/01/fk1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to upload account, contact and asset data in a CSV file in a step according to Salesforce? Title: 1. How to upload account, contact and asset data in a CSV file in a step according to Salesforce? Slug: how-to-upload-account-contact-and-asset-data-in-a-csv-file-in-a-step-according-to-salesforce-2 URL: https://help.skyvva.com/#article/how-to-upload-account-contact-and-asset-data-in-a-csv-file-in-a-step-according-to-salesforce-2 ================================================================================ # 1. How to upload account, contact and asset data in a CSV file in a step according to Salesforce? SKYVVA´s Free Dataloader is part of the SKYVVA´s Integration Cloud App and is a native force.com App. As a true Cloud Service - data can be uploaded over the Web without the need to install any software or hardware. SKYVVA´s Free Dataloader is perfectly suited for business analyst and administrator to manage the import of critical business information such as accounts, contacts, assets products, leads or orders in a timely manner without being reliant on limited IT resources. Based on an intuitive (Salesforce Look & Feel) Web interface - SKYVVA´s Free Dataloader is very easy to configure (No Coding) and maintain. The Free Dataloader is installed as a tab 'Integration' directly in the Salesforce menu bar. Fields are mapped by a visual editor, data are transformed using a formula editor. All operations are executed in the familiar Salesforce Look & Feel. Business analysts or administrator get alerted about failure in the service and are enabled to resolute data transforming or process logic without IT help via a message board. **Complex Use Case:** User wants to Import Account, Contact and Asset data at the same time into Salesforce Account, Contact and Asset object. #### Solution: We use our IChained Interface functionality. Since Account Object is parent and Contact and Asset is child and data of Account, Contact and Asset are sent at the same time. In this use case we need to create an integration and three interfaces -Account, Contact and Asset - with different data mappings and use two Chained Interfaces to bind between Account Interface, Contact Interface and Asset Interface. Where Account is the parent interface and Contact and Asset are the child interfaces. #### Configuration of SKYVVA Data Loader for parent-child interfaces Here our manual load function is used in conjunction with IChained Interface. Please follow the given steps to upload account, contact and asset data in a CSV file in a step according to Salesforce. #### Step 1. The first step is to create a new Integration to import our csv file./ - On the Menu Bar, you see the Integration tab -> clicks on the tap Integration. - Click On New button. ![](../images/2019/01/Book2-1.png) - Fill in the Name Field (Give a meaningful name that identify your integration.) We give our Integration a name and a short description of the use case for this integration. - All other fields can remain as default… - Click on Save button  and we have created an Integration to upload our csv file. ![](../images/2019/01/Book2-2.png) #### Step 2.  The next step is to create the Interface for the Account Object. To upload account, contact and asset data in a CSV file according to Salesforce we have to create three-level hierarchical interfaces. We can create it using vlookup but this case is not fast and good enough because when an object has master/detail relationship or has parent/child relationship which can be identified by an external Id then it is not good to use vlookup but better to use the built-in foreign key and chain interface concept. Each vlookup consume 1 soql query and in one transaction you have only 100 free. Therefore it is not good technique. And foreign key technique consumes no query limit. Here we are using ** Skyvva tree mapping** concept to create three-level hierarchical interfaces.  Skyvva tree mapping feature is built to reduce the complexity of manual work. When we use tree mapping, It automatically generated all set: - chained interface - Foreign Key - Mapping the fieldId to special field SKYVVA__PARENTID In this, we have to create only one interface which is parent interface i,e Account. Child interface created automatically Contact Interface and Asset Interface. follow the given steps to create the Account interface: - Go to your Integration page. - Click on Interface tab (near to detail tab). - Click On New Interface button. ![](../images/2019/01/Book2-3.png) #### Create Account Interface: We give our Interface a Name as **Account** and change the Status to Deploy and choose in Source Name the proper SObject -> Account All other fields can remain as default… ![](../images/2019/01/Book2-4.png) We click on ‘Save’ and created our Account Interface. ![](../images/2019/01/Book2-5-1.png) The page is navigate to: ![](../images/2019/01/book_xml4.png) We start with the account interface and click on the account interface link… ![](../images/2019/01/book_xml5.png) ![](../images/2019/01/book_xml6.png) Cross down to Source definition Section->Click choose file button to browse file that want to mapping->choose file->Click Open button->Click button Save. ![](../images/2019/01/Book2-7-1.png) Your uploaded CSV file structure looks like: ![](../images/2019/01/Book2-10.png) You see the Message that the csv file upload was successful and then click on OK button. ![](../images/2019/01/Book2-11.png) In the reloaded Mapping area we see now our source structure with all fields. ![](../images/2019/01/Book2-12-1.png) We choose the SObject Account and start with the data mapping. This simply goes with drag and drop and we start with the AccountNumber field. ![](../images/2019/01/Book2-13-1.png) Note: for each object, it is required to have an External Id (1) field which is to be used for synchronization with external system. This external id field must be unique in order to avoid duplicate records on each object. Continue with same mapping section, Source Object is Account  and  scroll down the target object section till contact object ->start with the data mapping. This simply goes with drag and drop and we start with the Email field. ![](../images/2019/01/Book2-14-1.png) Continue with same mapping section, Source Object is Account  and  scroll down the target object section till Asset object ->start with the data mapping. This simply goes with drag and drop and we start with the Email field. ![](../images/2019/01/Book2-15-1.png) Mapping is looks like: ![](../images/2019/01/Book2-19.png)![](../images/2019/01/Book2-20.png) - Mapping with all field that include Account, Contact and asset with sObject tree and then create foreign key account with Contact and Account with Asset. - We need to double click on the mapping line with the node-2-node mapping e.g. the line with the '#' sign. Create foreign key for Account&contact: ![](../images/2019/01/Book2-22.png) It should navigate to: ![](../images/2019/01/Book2-23-1.png) Create Foreign key for Account&Asset: ![](../images/2019/01/Book2-24.png) It should navigate to: ![](../images/2019/01/Book2-25.png) Finally, We Save our data mapping and confirm the message. ![](../images/2019/01/Book2-26.png) - As we used our tree mapping concept then Ichained Interface  is automatically created in account interface(parent interface). - We should select Related tab of parent interface to check our  Ichained Interface. And scroll down the page till IChained Interface section. ![](../images/2019/01/Book2-27.png) To check the child interface click on Account_contact interface ID. It should navigate to: ![](../images/2019/01/Book2-28.png) We can check our foreign key. Select related option of contact Interface and scroll down the page till foreign key section. ![](../images/2019/01/Book2-29.png) To check the child interface(Asset) click on Account_Asset interface ID. It should navigate to: ![](../images/2019/01/Book2-30.png) We can check our foreign key. Select related option of AssetInterface and scroll down the page till foreign key section. ![](../images/2019/01/Book2-31.png) Now we are ready to upload our csv file. **Step 3: Upload CSV data using Manual Load** We go to our Integration Detail page and click on the Manual Load link. ![](../images/2019/01/Book2-32.png) On the Manual Load page we choose our CSV Separator (1) and click on Search (2) and choose your proper csv file and then open it and then click on the Upload (3) Button. ![](../images/2019/01/Book2-33.png) In the Data area we see the structure of our csv file and in the Total Records Found area you can choose now which data you want to upload. ![](../images/2019/01/Book2-35.png) You can select either 'Select All' (1) or choose different records on the left side (1). Then we click on the Push (2) Button to upload the data into Salesforce and you get message that the process has started. Click on the Message Board (3) Button and you come to the Message Board Overview. ![](../images/2019/01/Book2-36.png) In the Message Board you can see on the Storage Usage area a short overview about your storage usage. ![](../images/2019/01/Book2-37.png) In the Filters (2) area you can search for different criteria e.g. Integrations, Interfaces, Message Status or Date. Click on search button. ![](../images/2019/01/Book2-38.png) In the Message area you can see the messages and see if it got posted. ![](../images/2019/01/Book2-39.png) Double click on Comment to see it. ![](../images/2019/01/Book2-40.png) As example you can jump into the detail of a message.Click on a Message Name link and you see the Message Details.You see the different Account field names (Name) and its content (Value). ![](../images/2019/01/Book2-41.png) Besides you can jump directly to a Related Account. Click on one of the Related To Link. ![](../images/2019/01/Book2-43.png) and verify the uploaded Account Data in the Account Detail ![](../images/2019/01/Book2-44.png) Now we have finished our Integration to import Account, Contact and Asset Data into Salesforce with a csv-file at the same time. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new Data Loader? Title: How to Import XML Using the Data Loader? Slug: how-to-import-xml-using-the-data-loader URL: https://help.skyvva.com/#article/how-to-import-xml-using-the-data-loader ================================================================================ # How to Import XML Using the Data Loader? #### Introduction In this tutorial, you will learn how to import XML files into Data Loader using both Flat and Hierarchical formats. Flat XML files contain data with only one level, while Hierarchical XML files have multiple levels of data. Our mapping will be handled using both data templates, and both formats utilize V3 processing. In this tutorial, we are showing usecase with different XML formats: - **Flat XML** - **Hierarchical XML** - ******Attribute XML** #### 1. Import Flat CSV File with Inbound Interface. What is flat XML? Flat XML in this context means a single level of elements wrapped in the root element with no other structuring. #### Pre-requisite: - Create or upload Message Type. - Create Integration and Inbound Interface - Do mapping **Here are the steps to import XML file with the inbound interface:** - If you have not yet configured CSP Trusted Sites and CORS, you will not be able to import hierarchical CSV, XML, and JSON files. An error message will be displayed as shown in the screenshot below. ![](../images/2022/11/5-30-2023-11-13-15-AM-1.png) ***Note:*** Before importing data, you need to create CORS and CSP Trusted Sites to enable the data loader to use the REST API for import files . If you have already completed this step, please ignore this reminder: Here is the link for creating  [(link not available)](#article/the-configuration-enables-to-use-new-data-loader-2) Step 1: Create or Upload Message Type - Go to Metadata provider => create Repository => Upload or create Message Type. - Here’s Message Type. ![](../images/2022/11/5-12-2023-3-39-02-PM.png) Step 2: Create Integration. Step 3: Create Inbound Interface and Linked with Message Type.  - Fill Name - Select Delopyed Status - Select Account Source Name - Select Inbound Direction - Select V3 Interface API Version - Select MetaData Provider, Repository, and Source/Target Message Type - Click Save Button ![](../images/2022/11/5-12-2023-3-43-23-PM.png) Step4: Do mapping. ![](../images/2022/11/5-12-2023-3-44-31-PM.png) Step 5: Go to Integration -> Click the Details page -> Then click the Data Loader link on the Custom Section. ![](../images/2022/11/5-12-2023-3-45-46-PM.png) - Choosing Import Data Function. - Select Interface and click next. - Select Format Data Type and click next. - Click Upload file to choose a file and click the upload button. - Select record and click push button. ![](../images/2022/11/5-12-2023-3-50-47-PM.png) - Here's the Payloads. ![](../images/2022/11/5-25-2023-10-17-45-AM.png) - Here’s the result on the message monitor. ![](../images/2022/11/5-12-2023-3-53-22-PM.png) #### 2. How to Import Hierarchical XML Using the Data Loader. What is the Hierarchical? In a hierarchical Interface, one interface is a parent of other interfaces. It means that the child interfaces a relationship with a parent. For example, the Account interface is a parent of the contact. Also, One parent interface can have many child, but the child interface has only a single-parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts #### Pre-requisite: - Create or upload Message Type. - Create Integration. - Create Inbound Interface. - Do mapping **Here are the steps to import a ****Hierarchical ****XML ****file with the inbound interface:** Step 1: Create or Upload Message Type. - Go to Metadata provider => create Repository => Upload or create Message Type. - Here’s the Message Type. ![](../images/2022/11/5-12-2023-4-41-20-PM.png) Step 2: Create Integration. Step 3: Create an Inbound Interface link with Message Type. - Fill Name - Select Deployed Status - Select Account Source Name - Select Inbound Direction - Select V3 Interface API Version - Select Metadata Provider, Repository, and Source/Target Message Type - Click Save Button ![](../images/2022/11/5-12-2023-4-43-55-PM.png) Step 4: Do mapping. ![](../images/2022/11/5-12-2023-4-46-47-PM.png)Step 5: Go to Integration -> Click the Details page -> Then click the Data Loader link on the Custom Section. ![](../images/2022/11/5-12-2023-4-50-23-PM.png) - Choosing Import Data Function. - Select Interface and click next. - Select Format Data Type and click next. - Click Upload file to choose a file and click the upload button. ![](../images/2022/11/5-12-2023-6-21-24-PM.png) - Here's the Payloads. ![](../images/2022/11/5-25-2023-11-07-36-AM.png) - Here’s the result on the message monitor. ![](../images/2022/11/5-12-2023-4-57-00-PM.png) #### #### #### 3.How to Import Attribute XML using the Data Loader ##### Pre-requisite: - Create or upload Message Type. - Create Integration. - Create Inbound Interface. - Do mapping **Here are the steps to import Attribute XML File with Inbound Interface: ** Step 1: Create or Upload Message Type. - Go to create Metadata provider => create Repository => Upload or create Message Type. - Here’s the Message Type. ![](../images/2022/11/5-18-2023-9-56-25-AM.png) - Message Type Contact has a message type field entry as Attribute because the data I will upload has an attribute field. ![](../images/2022/11/5-18-2023-9-57-54-AM.png) Step 2: Create Integration Step 3: Create Inbound Interface link with the message type. - Fill Name - Select Delopyed Status - Select Account Source Name - Select Inbound Direction - Select V3 Interface API Version - Select MetaData Provider, Repository, and Source/Target Message Type - Click Save Button ![](../images/2022/11/5-18-2023-10-10-15-AM.png) Step 4: Do mapping. ![](../images/2022/11/5-18-2023-10-12-41-AM.png) Step 5: Go to Integration -> Click the Details page -> Then click the Data Loader link on the Custom Section. ![](../images/2022/11/5-18-2023-10-14-18-AM.png) - Choosing Import Data Function. - Select Interface and click next. - Select Format Data Type and click next. - Attach file to choose a file and click the upload button. - Select the records and click push button. ![](../images/2022/11/5-18-2023-10-26-02-AM-1.png) - Here's the Payloads. ![](../images/2022/11/5-25-2023-11-09-52-AM.png) - Here’s the result on the message monitor. ![](../images/2022/11/5-18-2023-10-31-01-AM.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new Data Loader? Title: How to Export CSV Data Using the Data Loader? Slug: how-to-export-csv-data-using-the-data-loader-2 URL: https://help.skyvva.com/#article/how-to-export-csv-data-using-the-data-loader-2 ================================================================================ # How to Export CSV Data Using the Data Loader? #### Introduction In this tutorial, you will learn how to export CSV data using outbound interface from Data Loader and handled using between v2 and v3 processing. ##### 1.Export CSV File with Outbound Interface without Message Type. ##### Pre-requisite: - Create Integration. - Create Outbound Interface. - Upload IStructure. - Do mapping. Here are the steps to Export CSV file with the outbound interface: Step 1: Create Integration. Step 2: Create Outbound Interface. - Fill Name - Select Delopyed Status - Select Account Source Name - Select Outbound Direction - Select V2 Interface API Version - Click Save Button ![](../images/2022/11/export.png) Step 3:  Upload Istructure to create mapping. - Enter to Interface Detail page -> Scroll down Interface to find -> Source Definition section -> click choose file CSV ->click Save. ![](../images/2022/11/upload.png)Step 4: Do mapping. ![](../images/2022/11/do-mapping-1.png)Step 5: Go to the Integration -> Click Detail page -> click data loader. ![](../images/2022/11/data.png) - Choose on Export Data function and click next. - Select the Interface name and click next. - Select Format Data Type and click next. - Input the File Name and click Export File. ![](../images/2022/11/attach.png) - After export, it will download automatically. ![](../images/2022/11/result.png) ##### ##### 2.How to Export Flat CSV File with Outbound Interface. ##### Pre-requisite: - Create Integration. - Create Inbound Interface. - Upload or Create a Message Type. - Do mapping. Here are the steps to Export flat CSV file with the outbound interface: Step 1: Create or Upload Message Type flat JSON. - Create Metadata Provider  => Create Repository =>Upload or create a message type. - Here’s the message type. ![](../images/2022/11/5-15-2023-4-08-08-PM.png) Step 2:  Create Integration. Step 3: Create Outbound Interface linked with message type. - Fill Name - Select Delopyed Status - Select Account Source Name - Select Outbound Direction - Select V3 Interface API Version - Select MetaData Provider, Repository, and Source/Target Message Type - Click Save Button ![](../images/2022/11/5-15-2023-4-14-03-PM.png) Step 4: Do mapping. ![](../images/2022/11/5-15-2023-4-16-47-PM.png) Step 5: Go to the Integration detail page and click data loader. ![](../images/2022/11/5-15-2023-4-18-53-PM-1.png) - Choose on Export Data function and click next - Select the Interface name and click next - Select Format Data Type and click next - Input the File Name and click the Export File. ![](../images/2022/11/5-15-2023-4-43-44-PM.png) - After export, it will download automatically. ![](../images/2022/11/5-15-2023-4-43-59-PM.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new Data Loader? Title: How to Export XML Data Using the Data Loader? Slug: how-to-export-xml-data-using-the-data-loader URL: https://help.skyvva.com/#article/how-to-export-xml-data-using-the-data-loader ================================================================================ # How to Export XML Data Using the Data Loader? Introduction In this tutorial, you will learn how to export XML files from Data Loader using both Flat and Hierarchical formats. Flat XML files contain data with only one level, while Hierarchical XML files have multiple levels of data. Our mapping will be handled using both data templates, and both formats utilize V3 processing. In this tutorial, we are showing usecase with different XML formats: - **Flat XML with Message Type** - **Hierarchical XML with Message Type** - **Hierarchical XML without the message type** - ##### Export Flat XML File with XML Root Tag and XML Root Tag Namespace Pre-requisite: - Create or upload Message Type. - Create Integration. - Create an Outbound Interface. - Do mapping. What is flat XML? Flat XML in this context means a single level of elements wrapped in the root element with no other structuring. **Here are the steps to import XML file with the inbound interface:** Step 1: Create or Upload Message Type. - Go to Metadata provider => create Repository => Upload or create Message Type. - Here’s Message Type. ![](../images/2022/11/5-16-2023-2-14-41-PM.png) Step 2: Create Integration. Step 3: Create an Outbound Interface link with the message type. - Here’s the Outbound Interface. ![](../images/2022/11/inter.png) Step 3: Do mapping. ![](../images/2022/11/test.png)Step 4: Go to the Integration detail page and click data loader. ![](../images/2022/11/data-1.png) - Choose on Export Data function and click next - Select the Interface name and click next - Select Format data type and click next - Please input the XML Root Tag name that you want - Input the attachment file name and click the export file button ![](../images/2022/11/1-15-2024-3-51-41-PM.png) - After export, it will download automatically. ![](../images/2022/11/ready.png) - Here’s the result, after the Export Data. ![](../images/2022/11/1-15-2024-3-48-08-PM.png) ##### 2. How to Export Hierarchical XML File with XML Root Tag and XML Root Tag Namespace What is the Hierarchical? In a hierarchical Interface, one interface is a parent of other interfaces. It means that the child interfaces a relationship with a parent. For example, the Account interface is a parent of the contact. Also, One parent interface can have many child, but the child interface has only a single-parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts Pre-requisite: - Create or upload Message Type. - Create Outbound Interface - Do mapping **Here are the steps to Export a Hierarchical XML file with the outbound interface:** Step 1: Create or Upload Message Type. - Here’s the Message Type. ![](../images/2022/11/messange.png) Step 2:  Create Integration. Step 3: Create an Outbound Interface. - Here’s the Outbound Interface link with the message type. ![](../images/2022/11/inter-1.png) Step 3: Do mapping. ![](../images/2022/11/mm.png)Step 4: Go to the Integration detail tab and click data loader. ![](../images/2022/11/dd.png) - Please input the **XML Root Tag** and **XML Root Tag Namespace** that you want - Input the attachment file name and click the export file button ![](../images/2022/11/1-15-2024-2-39-26-PM.png) - After export, it will download automatically. ![](../images/2022/11/re.png) - Here’s the result. ![](../images/2022/11/1-15-2024-3-30-21-PM.png) ##### 3. How to Export an XML file to generate a Root Tag and XML Root Tag Namespace without specifying the message type Requisite Step: Step1: Create Outbound Interface with API V3 ![](../images/2022/11/1-15-2024-5-25-58-PM.png) Step2: Do mapping with sObject. ![](../images/2022/11/1-15-2024-5-30-14-PM.png) Step3: Go to the Integration detail tab and click data loader. - Not input** XML Root Tag** and **XML Root Tag Namespace.** - Input the attachment file name and click the export file button. ![](../images/2022/11/1-15-2024-5-38-10-PM.png) - Here's the result, Since we did not input the tag and XML root tag namespace manually, they will be generated from the Skyvva namespace. ![](../images/2022/11/1-15-2024-5-46-22-PM.png) ##### Summary - We can export an XML file with an interface that has a message type and without a message type (API V3). Currently, our newly generated XML payload with the XML Root Tag and XML Root Tag Namespace that the user inputs on the screen. - If the user did not input the XML Root Tag and XML Root Tag Namespace manually on the screen, they will be generated XML Root Tag Namespace from the Skyvva namespace. - e.g:  xmlns:ns1="http://soap.sforce.com/schemas/class/skyvvasolutions/IServices"> ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new Data Loader? Title: How to Import JSON Using the Data Loader? Slug: how-to-import-json-data-using-the-data-loader URL: https://help.skyvva.com/#article/how-to-import-json-data-using-the-data-loader ================================================================================ # How to Import JSON Using the Data Loader? #### Introduction In this tutorial, you will learn how to import JSON files into Data Loader using both Flat and Hierarchical formats. Flat JSON files contain data with only one level, while Hierarchical JSON files have multiple levels of data. Our mapping will be handled using both data templates, and both formats utilize V3 processing. In this tutorial, we are showing usecase with different JSON formats: - **Flat JSON** - **Hierarchical JSON** #### 1.How to import flat JSON file using the Data Loader. What is flat JSON? Flat JSON in this context means a single level of elements wrapped in the root element with no other structuring #### Pre-requisite: - Upload or Create Message Type. - Create Integration. - Create Inbound Interface. - Do mapping. ** Here are the steps to import a Flat JSON file with the Inbound Interface:** - If you have not yet configured CSP Trusted Sites and CORS, you will not be able to import hierarchical CSV, XML, and JSON files. An error message will be displayed as shown in the screenshot below. ![](../images/2022/11/5-30-2023-11-33-11-AM.png) ***Note:*** Before importing data, you need to create CORS and CSP Trusted Sites to enable the data loader to use the REST API for import files . If you have already completed this step, please ignore this reminder: Here is the link for creating  [(link not available)](#article/the-configuration-enables-to-use-new-data-loader-2) Step 1: Create a Metadata Provider and Repository - Go to Metadata provider => create Repository => Upload or create Message Type. - Here’s Message Type. ![](../images/2022/11/6-9-2023-3-10-13-PM.png) Step 2: Create Integration. Step 3: Interface and linked with message type. - Fill Name - Select Delopyed Status - Select Account Source Name - Select Inbound Direction - Select V3 Interface API Version - Select MetaData Provider, Repository, and Source/Target Message Type - Click Save Button ![](../images/2022/11/6-9-2023-3-18-30-PM.png) Step4: Do mapping. ![](../images/2022/11/6-9-2023-3-22-24-PM.png) Step 5: Step 5: Go to Integration -> Click the Details page -> Then click the Data Loader link on the Custom Section. ![](../images/2022/11/5-14-2023-1-18-25-PM.png) - Choosing Import Data Function. - Select Interface and click next. - Select Format Data Type and click next. - Click Upload file to choose a file and click the upload button. - Select record and click push button. ![](../images/2022/11/6-9-2023-3-32-04-PM.png) - Here's the Payload ![](../images/2022/11/6-9-2023-3-34-00-PM.png) - Here’s the result on the message monitor. ![](../images/2022/11/6-9-2023-3-45-46-PM.png) #### 2. How to import Hierarchical JSON using the Data Loader. What is the Hierarchical? In a hierarchical Interface, one interface is a parent of other interfaces. It means that the child interfaces a relationship with a parent. For example, the Account interface is a parent of the contact.  Also, One parent interface can have many child accounts but the child interface has only a single parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts. #### Pre-requisite: - Create or upload Message Type. - Create Integration. - Create Inbound Interface. - Do mapping **Here are the steps to import a Hierarchical JSON file with the inbound interface:** Step 1: Create a Metadata Provider and Repository   - Create or upload Message Type. - Here’s the message Type ![](../images/2022/11/6-9-2023-3-49-12-PM.png) Step 2: Create Integration Step 3: Create Inbound Interface linked with the message type. - Fill Name - Select Delopyed Status - Select Account Source Name - Select Inbound Direction - Select V3 Interface API Version - Select MetaData Provider, Repository, and Source/Target Message Type - Click Save Button ![](../images/2022/11/6-9-2023-3-52-02-PM.png) Step 4: Do mapping. ![](../images/2022/11/6-9-2023-4-07-13-PM.png)Step 5: Go to Integration -> Click the Details page -> Then click the Data Loader link on the Custom Section. ![](../images/2022/11/5-14-2023-1-18-25-PM-1.png) - Choosing Import Data Function. - Select Interface and click next. - Select Format Data Type and click next. - Click Upload file to choose a file and click the upload button. - Select record and click push button. ![](../images/2022/11/6-9-2023-4-13-40-PM.png) - Here's the Payload. ![](../images/2022/11/6-9-2023-4-15-08-PM.png) - Here’s the result on the message monitor. ![](../images/2022/11/6-9-2023-4-17-10-PM.png) #### Summary Finally, we have learned about how to import JSON data using a data loader. We have understood the MessageType, create the Interface and data loader, and check the results on the message monitor. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new Data Loader? Title: How to Export JSON Data Using the Data Loader? Slug: how-to-export-json-data-using-the-data-loader URL: https://help.skyvva.com/#article/how-to-export-json-data-using-the-data-loader ================================================================================ # How to Export JSON Data Using the Data Loader? #### Introduction In this tutorial, you will learn how to export JSON files from Data Loader using both Flat and Hierarchical formats. Flat JSON files contain data with only one level, while Hierarchical JSON files have multiple levels of data. Our mapping uses both template v2 and v3 processing. In this tutorial, we are showing usecase with different XML formats: - **Without Message Type** - **Flat JSON** - **Hierarchical JSON** #### 1.Export JSON File with outbound Interface without message type. #### Pre-requisite: - Create Integration. - Create Outbound Interface. - Upload Istructure. - Do mapping Here are the Steps to export JSON files using an Outbound Interface **without **the message type. Step 1: Create Integration. Step 2: Outbound Interface - Fill Name - Select Delopyed Status - Select Account Source Name - Select Outbound Direction - Select V2 Interface API Version - Click Save Button ![](../images/2022/11/v2.png) Step 3:  Upload Istructure to create mapping. - Enter to Interface Detail page -> Scroll down Interface to find -> Source Definition section -> click choose file CSV ->click Save. ![](../images/2022/11/5-16-2023-3-56-57-PM.png) Step 4: Do Mapping. ![](../images/2022/11/5-16-2023-3-58-43-PM.png)Step 5: Go to the Integration detail page and click data loader. ![](../images/2022/11/5-12-2023-4-50-23-PM-3.png) - Choosing on Export Data function and click next - Select the Interface name and click next - Select Format Data Type and click next - Input the File Name and click the Export file. ![](../images/2022/11/jsin.png) - After export, it will download automatically. ![](../images/2022/11/ex.png) - Here’s the result, after exporting file. ![](../images/2022/11/5-16-2023-4-19-25-PM.png) #### 2.Export Flat JSON File using Outbound Interface with the message type. ##### Pre-requisite: - Create Integration. - Create Outbound Interface. - Upload message Type flat JSON. - Do mapping. Here are the steps to export flat JSON file using the outbound interface **with **message type. Step 1: Create or Upload Message Type flat JSON. - Create Metadata Provider => Create Repository =>Upload or create a message type. - Here’s the message type. ![](../images/2022/11/5-16-2023-5-11-38-PM.png) Step 2: Create Integration Step 3: Create an Outbound Interface with the message type. - Fill Name - Select Delopyed Status - Select Account Source Name - Select Outbound Direction - Select V3 Interface API Version - Select MetaData Provider, Repository, and Source/Target Message Type - Click Save Button ![](../images/2022/11/5-16-2023-5-36-26-PM.png) Step 4: Do mapping. ![](../images/2022/11/5-16-2023-5-39-20-PM.png)Step 5: Go to the Integration detail page and click data loader. #### - Choose on Export Data function and click next - Select the Interface name and click next - Select Format Data Type and click next - Input the File Name and click the Export File. ![](../images/2022/11/5-16-2023-5-42-54-PM.png) - It will download automatically. ![](../images/2022/11/5-16-2023-5-44-17-PM.png) - Here’s the Result. ![](../images/2022/11/5-16-2023-5-45-32-PM.png) #### #### #### 3.How to Export Hierarchical JSON Files with Outbound Interface. ##### Pre-requisite: - Create or upload Message Type. - Create Integration. - Create Outbound Interface - Do mapping Here are the steps to export Hierarchical JSON file using outbound interface **with** message type: Step 1: Create or Upload Message Type flat JSON. - Create Metadata Provider => Create Repository =>Upload or create a message type. - Here’s the message type. ![](../images/2022/11/5-17-2023-3-48-55-PM.png) Step 2: Create Integration. Step 3: Create an Outbound Interface link with Message Type. - Fill Name - Select Delopyed Status - Select Account Source Name - Select Outbound Direction - Select V3 Interface API Version - Select MetaData Provider, Repository, and Source/Target Message Type - Click Save Button ![](../images/2022/11/5-17-2023-3-18-04-PM.png) Step 4: Do mapping. ![](../images/2022/11/5-17-2023-3-19-53-PM.png) Step 5: Go to Integration and select the detail page, then click data loader. ![](../images/2022/11/5-17-2023-3-25-15-PM.png) - Choose on Export Data function and click next - Select the Interface name and click next - Select Format Data Type and click next - Input the File Name and click the Export File. ![](../images/2022/11/5-17-2023-3-22-51-PM.png) - After export, it will download automatically. ![](../images/2022/11/5-17-2023-3-24-06-PM.png) - Here’s the Result. ![](../images/2022/11/5-17-2023-3-10-46-PM.png) #### Summary Finally, we have learned how to export JSON data using Data Loader. And we have understood about creating MessageType, creating Interface, and checking results on the message monitor ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new Data Loader? Title: How to Import CSV Using the Data Loader ? Slug: how-to-import-csv-using-the-data-loader URL: https://help.skyvva.com/#article/how-to-import-csv-using-the-data-loader ================================================================================ # How to Import CSV Using the Data Loader ? #### Introduction In this tutorial, you will learn how to import files from Data Loader using flat and hierarchical mapping of CSV files. In flat mapping API V2 and hierarchical mapping API V3 processing. In this tutorial, we are showing usecase with different CSV formats: - **Flat CSV mapping ** - **Hierarchical CSV mapping** - **sObject Hierarchical without Message Type.** #### 1. Import Flat CSV File with inbound Interface. #### Pre-requisite: - Create Integration and inbound Interface. - Upload Istructure. - Do mapping. **Here are the steps to import a CSV file with the inbound interface:** Step 1: Create Integration. Step 2: Create Inbound Interface. - Fill Name - Select Delopyed Status - Select Account Source Name - Select Inbound Direction - Select V2 Interface API Version - Click Save Button ![](../images/2022/11/5-10-2023-2-24-22-PM.png) Step 3:  Upload Istructure to create a flat mapping. - Enter to Interface Detail page -> Scroll down Interface to find -> Source Definition section -> click choose file CSV ->click Save. ![](../images/2022/11/5-10-2023-2-53-49-PM.png) Step 4: Do mapping ![](../images/2022/11/5-10-2023-2-55-14-PM.png) Step 5: Go to Integration -> Click Details page ->Click Data Loader link on Custom Links Section. ![](../images/2022/11/5-10-2023-2-56-09-PM.png) - Choose Import Data Function and click the next button. - Select Interface and click the next button. - Format data type **CSV**, separate **Comma, **and click the next button. - Click on the Upload File button to choose a file and click the upload file button. - Select all and click the push button. ![](../images/2022/11/5-10-2023-2-56-20-PM.png) - We can search on the message monitor to see the result. ![](../images/2022/11/5-10-2023-2-56-27-PM.png)**** #### 2. Import Hierarchical CSV  File with Inbound Interface with message type. #### Pre-requisite - Create Integration. - Create Inbound Interface. - Upload or Create a Message Type. - Do mapping. **Here are the steps to import a ****Hierarchical ****CSV file with the inbound interface:** - If you have not yet configured CSP Trusted Sites and CORS, you will not be able to import hierarchical CSV, XML, and JSON files. An error message will be displayed as shown in the screenshot below. ![](../images/2022/11/5-30-2023-10-47-03-AM.png) ***Note***: Before importing data, you need to create CORS and CSP Trusted Sites to enable the data loader to use the REST API for import files . If you have already completed this step, please ignore this reminder: Here is the link for creating [(link not available)](#article/the-configuration-enables-to-use-new-data-loader-2) Step 1: Create or upload Message Type hierarchical CSV. - Here’s message Type. ![](../images/2022/11/5-22-2023-3-04-32-PM.png) Step 2: Create Integration. Step 3: Create an Inbound Interface link with the message type. - Fill Name - Select Delopyed Status - Select Account Source Name - Select Inbound Direction - Select V3 Interface API Version - Click Save Button ![](../images/2022/11/5-22-2023-3-05-53-PM.png)Step 4:  Do mapping. ![](../images/2022/11/5-22-2023-3-07-29-PM.png) Step 5: Go to Integration -> Click Details page ->Click Data Loader. - Choose Import Data Function and click the next button. - Select Interface and click the next button. - Format data type **CSV**, separate **Comma, **and click the next button. - Click on the Upload File button to choose a file and click the upload file button. - Select all and click the push button. ![](../images/2022/11/5-22-2023-3-21-35-PM.png) - Here's the Payload. ![](../images/2022/11/5-22-2023-4-06-54-PM.png) - Here’s the Result on the message monitor. ![](../images/2022/11/5-22-2023-3-23-30-PM.png) #### 3. Import Hierarchical CSV file with sObject Hierarchical without Message Type. #### Pre-requisite - Create Integration. - Create Inbound Interface. - Upload or Create a Message Type. - Do mapping. **Here are the steps to import a ****Hierarchical ****CSV file with sObject hierarchical** Step 1: Create Integration. Step 2: Create an Inbound Interface. - Fill Name - Select Delopyed Status - Select Account Source Name - Select Inbound Direction - Select V3 Interface API Version - Click Save Button ![](../images/2022/11/5-22-2023-3-36-04-PM.png) Step 2:  Do mapping. ![](../images/2022/11/5-22-2023-3-38-06-PM.png) Step 3: Go to Integration -> Click Details page ->Click Data Loader. - Choose Import Data Function and click the next button. - Select Interface and click the next button. - Format data type **CSV**, separate **Comma, **and click the next button. - Click on the Upload File button to choose a file and click the upload file button. - Select all and click the push button. ![](../images/2022/11/5-22-2023-3-46-27-PM.png) - Here's the Payload. ![](../images/2022/11/5-22-2023-4-04-57-PM.png) - Here’s the Result on the message monitor. ![](../images/2022/11/5-22-2023-3-47-37-PM.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to call stored procedure with SQL Server on Agent? Slug: how-to-call-stored-procedure-with-sql-server-on-agent URL: https://help.skyvva.com/#article/how-to-call-stored-procedure-with-sql-server-on-agent ================================================================================ # How to call stored procedure with SQL Server on Agent? #### Introduction A store procedure is a set of SQL statements with an assigned name, stored in an RDBMS as a group so that multiple programs can reuse and share it. Stored procedures can access or modify data in a database, but it is not tied to a specific database or object, which offers a number of advantages. In this tutorial, we use the SQL Server database as an example. Here, when we call the Stored Procedure to the Database to do any database operation, we expect it will respond back the result to Salesforce. In this case, we need to have the INPUT and OUTPUT parameters in the Stored Procedure and create a Request and Response Interface corresponding to those parameter types. The SQL Server database is located on an EC2 instance and the Stored Procedure was written to Insert new data if no record is present on the Database and update data if the record exists. **Pre-required** - Create Integration and test connection on the Agent Control Board - Create outbound and inbound Database Adapter - Create Metadata Provider, Repository and generate Message Type from the Database - Create an outbound interface (Request) and inbound interface (Response) and attach Adapter to each Interface - Linking response interface to Request interface - Checking Caches status - Manual Process **How to call Stored Procedure with SQL Server on Agent? ** **Step1**: Create Integration and test connection destination Create new Integration by following the guide, the link is given below: [https://apsara-consulting.com/docs/tutorial-v2-41-lightning/what-is-an-integration-and-how-to-create-it/](https://apsara-consulting.com/docs/tutorial-v2-41-lightning/what-is-an-integration-and-how-to-create-it/) - After Integration created and then navigate to AGENT Control Board as shown below. ![](../images/2023/01/tttttest.png) - Ping connection to Agent on control board to make sure Agent is online ![](../images/2023/01/2.png) **Step2: **Create Outbound and Inbound Database Adapter for connection to the SQL Server database presented on the EC2 instance - Navigate to the Adapter tab after that click the button New ![](../images/2023/01/tt3.png) - Fill in all required field Name: any name - Type: Agent Database - Direction: Outbound/Inbound - Status: Active - Database Type: SQL Server - Driver: com.microsoft.sqlserver.jdbc.SQLServerDriver - Username: (your username on database) - Password: (your password on database) - Hostname: 3.124.40.194 (public ipv4 on EC2 AWS) - Port: 1433 (custom port number) - Server instance: SQLEXPRESS - Insert Operation Mode: Internal Key Management - Connection URL: jdbc:sqlserver://3.124.40.194:1433;databaseName=chetvi_db1;encrypt=false (connection URL has followed the systax: jdbc:sqlserver::;databaseName=;encrypt=false ) - Connection Destination: your destination name ![](../images/2023/01/tt4.png) **Step3**: generate Message Type from the database - Create Metadata Provider - Create a Repository for using the Insert operation - Go to the Repository detail page, click the Import Database Metadata button ![](../images/2023/01/tt5.png) Fill in all required information then click the button Retrieve Database - Agent Instance: Instance’s name - Adapter Name: adapter’s name - Object type: Stored procedure - Choose the stored Procedure’s name and then click Create Message Type ![](../images/2023/01/tt6.png) - After clicking Create Message Type, the stored procedure template will be generated as the below example: ![](../images/2023/01/tt7.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Database Stored Procedure, we have a template for generating Message Type for a single Table - Create a root Message type within the name same as the Stored Procedure’s name and type as Database Stored Procedure Template - Create Message Type as a child of the root with name as the Stored Procedure’s name including the postfix “_Request” within the type as Stored Procedure Request. On this Message Type, we have generated the field for the INPUT parameter on Stored Procedure - Create Message Type as a child of the root with name as the Stored Procedure’s name including the postfix” _Response” within the type as Stored Procedure Response. Under this node, we have generated the fixed name of the Message Type called “output parameter” within the type “Plain structure”. On this Message Type, we have generated the field for the OUTPUT parameter same as on the Stored Procedure. [/su_box] **Step4**: Set up the Interface - For creating the Interface need to follow this guide: [https://apsara-consulting.com/docs/tutorial-v2-41-lightning/what-is-an-interface-and-how-to-create-it/](https://apsara-consulting.com/docs/tutorial-v2-41-lightning/what-is-an-interface-and-how-to-create-it/) - Create an outbound interface for synchronous mode, operation (stored procedure), choose Adapter, Metadata Provider, Repository, and Message Type (Request) ![](../images/2023/01/tt8.png) - Mapping ![](../images/2023/01/tt9.png) - Create an inbound Interface (Response) Create an inbound interface for synchronous mode, operation(upsert), choose Adapter, Metadata Provider, Repository, and Message Type (Response) ![](../images/2023/01/tt10.png) - Mapping ![](../images/2023/01/tt11.png) **Step5:** Linking Response Interface to Request Interface In this example Request Interface name is “Request Interface” and Response Interface name is “Request Interface” - Go to the Request Interface detail page then add the Response Interface ![](../images/2023/01/tt12.png) **Step6:** Checking Cache status Before sending data from salesforce to Agent or from Agent to salesforce, we need to check on Cache Monitor and make sure the Cache record is present on H2. ![](../images/2023/01/tt13.png) **Step7:** Manual Process - Navigate to the Interface tab and select the interface ![](../images/2023/01/tt14.png) - Click on the Manual Process button and choose the second radio - Click send ![](../images/2023/01/tt15.png) **Check the result on Message Monitoring ** The Stored Procedure has been executed and responded to Salesforce correctly ![](../images/2023/01/tt16-1.png) Here is the result on SQL Server ![](../images/2023/01/tt17.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. Named Credentials to access the AWS S3 Slug: 2-named-credentials-to-access-the-aws-s3 URL: https://help.skyvva.com/#article/2-named-credentials-to-access-the-aws-s3 ================================================================================ # 2. Named Credentials to access the AWS S3 #### Introduction In Salesforce, users can access AWS S3 using Named Credentials in both the old way and the new way. The old way typically involves using Named Credentials with a custom endpoint and a remote site setting, while the new way leverages the "Amazon S3" provider for Named Credentials introduced in a Salesforce update. - The old way of using Named Credentials for AWS S3 involved creating a custom endpoint, storing AWS credentials in Salesforce, and configuring a Remote Site Setting. - The new way, introduced by Salesforce, uses the "Amazon S3" provider, which leverages IAM roles and eliminates the need to store AWS credentials in Salesforce, making it more secure and straightforward to set up. It is recommended to use the new way whenever possible to enhance security and reduce the risk of credential exposure. ### New way It would help if you defined an External Credential and a Named Credential. First, create an external credential to specify an authentication protocol and permission set or profile when authenticating to an external system. Second, for External Services to authenticate, create a named credential and specify it as the callout endpoint. #### Create the External Credentials - Enter to setup - Type Named Credentials on the Quick Find box - Click New Create Named Credentials - Click the External Credentials Tab - Click New button ![](../images/2023/02/image_2023_11_01T14_21_58_532Z.png) - Fill Label Name - Fill Name - Choose AWS Signature Version 4 on Authentication Protocol ![](../images/2023/02/image_2023_11_01T14_27_28_328Z.png) - Click Save button ![](../images/2023/02/image_2023_11_01T14_33_25_676Z.png) Scroll down to the Principals section - Click on the new button - Provide Parameter Name - Access Key - Access Secret - Click save button ![](../images/2023/02/image_2023_11_01T14_31_13_194Z.png) #### Create the Named Credentials - Go Back to Named Credentials - Click the Named Credentials Tab - Click the New button ![](../images/2023/02/image_2023_11_01T14_41_16_715Z.png) - Fill Label - Fill Name - Fill URL => https:// + backetName + .service(ex: s3) + region(ex: eu-central-1 check it on s3 bucket) + .amazonaws.com - Select the External Credential that we have created above - Check the Generate Authorization Header - Save Go to Permission Sets - Select SkyvvaAllPermissions - Click on External Credential Principal Access - Click on the Edit button - Add and assign **awsExternal-Principal **access - Save ![](../images/2023/02/image_2023_11_01T14_48_19_263Z.png) Finally, you have created the Named Credentials in a new way. ### Old way You named Credentials to simplify the process of connecting to external services, including AWS, securely. However, suppose you need to access AWS S3 using the "old way," without Named Credentials. In that case, you can do so by directly making HTTP requests to the AWS S3 REST API with the appropriate AWS Signature Version 4 authentication. #### Create the Named Credentials - Go Back to Named Credentials - Click the Named Credentials Tab - Click the New button ![](../images/2023/02/image_2023_11_01T15_05_20_507Z.png) - **Name**: TestNamedCredential - **URL** : https:// + backetName (ex: skyvva)+ .service(ex: s3) + region(ex: eu-central-1 check it on s3 bucket) + .amazonaws.com. Here is an example: https://skyvva.s3.eu-central-1.amazonaws.com - **Identity Type**: Named Principal - **Authentication Protocol**: AWS Signature Version 4 - **AWSAccessKeyId**: XXXXXXXXXXXXXXXXXX - **AWSSecretKey**: xxxxxxxxxxxxxxxxxxxxxxxx - **AWS Region**: eu-central-1 - **AWS Service**: s3 - **Generate Authorization Header**: checked ![](../images/2023/02/image_2023_11_01T15_11_45_311Z.png) - Save Finally, you have created the Named Credentials in a old way. #### Summary - The new way is preferred, especially for enhanced security and to align with AWS best practices. It uses the AWS Signature Version 4 authentication method, which is recommended by AWS for accessing S3 and provides better security compared to storing the AWS Access Key ID and Secret Access Key directly in Salesforce. It is recommended for many AWS use cases, especially for services like EC2 instances. - The old way of using Named Credentials for AWS S3 involved creating a custom endpoint, storing AWS credentials in Salesforce, and configuring a Remote Site Setting. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. Import CSV file using Amazon s3 adapter Slug: 1-import-csv-file-using-amazon-s3-adapter URL: https://help.skyvva.com/#article/1-import-csv-file-using-amazon-s3-adapter ================================================================================ # 1. Import CSV file using Amazon s3 adapter In this tutorial, you will learn how to do a Manual Process to import a CSV file via an Amazon S3 adapter. This adapter supports four separators such as comma, semi-colon, Tab, and Bar of CSV format. **Note:** We have made changes to the message structure starting from version 2.50.13. We have added the File Message to cover business messages created from files. Everything else remains the same. For more details on the File Message, please refer to this document link: (link not available)) - #### Manual Process with CSV comma separator for inbound processing **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/csvcomma.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Inbound as the direction - Status - Choose Salesforce Type = Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select CSV on File Type - Select "," on Separator - Fill Folder Path - Fill File Name - Source Encoding UTF-8 ![](../images/2023/02/CreateAWSAdapter.png) - Click Save Button - Link this adapter to the interface Here is the sample payload ![](../images/2023/02/CSVCommaPayload.png) Here is the screenshot of the CSV file in the folder of the AWS S3 service ![](../images/2023/02/AWSFolder.png) - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check the Read files from amazon s3 and push record to salesforce. ![](../images/2023/02/DoManualProcess.png) - Click Read button The record of the CSV file will import to Salesforce and create the completed message as screenshot below ![](../images/2023/02/CSVcommamessagepng.png) #### 2. Manual Process with CSV Tab separator **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/MappingCSVTab.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Inbound as the direction - Status - Choose Salesforce Type = Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select CSV on File Type - Select Tab on Separator - Fill Folder Path - Fill File Name - Source Encoding UTF-8 ![](../images/2023/02/CSVTabAdapter.png) - Click Save Button - Link this adapter to the interface Here is the sample payload ![](../images/2023/02/PayloadCSVTab.png) Here is the screenshot of the CSV file in the folder of the AWS S3 service ![](../images/2023/01/CSVTABinAWS.png) - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check the Read files from amazon s3 and push the record to salesforce. ![](../images/2023/02/ManualExecuteCSVTab.png) The records of the CSV file will import to Salesforce and create the completed message as screenshot below ![](../images/2023/02/SucessMessageforCSVTab.png) #### 3. Manual Process with CSV Semicolon separator **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/MappingSemiColonCSV.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Inbound as the direction - Status - Choose Salesforce Type = Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select CSV on File Type - Select ";" on Separator - Fill Folder Path - Fill File Name - Source Encoding UTF-8 ![](../images/2023/02/AdapterCSVSemiColon.png) - Click Save Button - Link this adapter to the interface Here is the sample payload ![](../images/2023/02/payloadCSVsemicolon.png) Here is the screenshot of the CSV file in the folder of the AWS S3 service ![](../images/2023/02/FolderCSVSemiColonOnAWSFolder.png) - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check the Read files from amazon s3 and push the record to salesforce. ![](../images/2023/02/ManualProcesscsvSemiColon.png) - Click Read button The record of the CSV file will import to Salesforce and create the completed message as screenshot below ![](../images/2023/02/RecordsAfterPushCSVSemiColon.png) #### 4. Manual Process with CSV Bar separator **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/BarSeperatorCSVMapping.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Inbound as the direction - Status - Choose Salesforce Type = Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select CSV on File Type - Select "|" on Separator - Fill Folder Path - Fill File Name - Source Encoding UTF-8 ![](../images/2023/02/AdapterCSVBar.png) - Click Save Button - Link this adapter to the interface Here is the sample payload ![](../images/2023/02/CSVBarPayloadSample.png) Here is the screenshot of the CSV file in the folder of the AWS S3 service ![](../images/2023/02/folderCSVBarAWSS3.png) - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check the Read files from amazon s3 and push the record to salesforce. ![](../images/2023/02/ManualProcessCSVBarSperator.png) - Click Read button The record of the CSV file will import to Salesforce and create the completed message as screenshot below ![](../images/2023/02/MessageOfCSVBarSeperator.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. Import XML File Using Amazon s3 Adapter Slug: 2-import-xml-file-using-amazon-s3-adapter URL: https://help.skyvva.com/#article/2-import-xml-file-using-amazon-s3-adapter ================================================================================ # 2. Import XML File Using Amazon s3 Adapter In this tutorial, you will learn how to do a Manual Process with an XML file via an Amazon S3 adapter. **Note:** We have made changes to the message structure starting from version 2.50.13. We have added the File Message to cover business messages created from files. Everything else remains the same. For more details on the File Message, please refer to this document link: (link not available)) **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/MappingJSONAWSS3.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Inbound as the direction - Choose Status - Choose Salesforce Type = Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select XML on File Type - Fill Folder Path - Fill File Name - Source Encoding UTF-8 ![](../images/2023/02/XMLAdapterOfAWSS3.png) - Click Save Button - Link this adapter to the interface Here is the sample payload ![](../images/2023/02/payloadXMAWSS3.png) Here is the screenshot of the XML file in the folder of the AWS S3 service ![](../images/2023/02/XMLONAWSFolder.png) - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check the Read files from amazon s3 and push record to salesforce. ![](../images/2023/02/ManualProcesswithXMLAWSS3.png) - Click Read button The record of the XML file will import to Salesforce and create the completed message as screenshot below ![](../images/2023/02/MessageCompeledOfXMLAWSS3.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 3. Import JSON File Using Amazon s3 Adapter Slug: 3-import-json-file-using-amazon-s3-adapter URL: https://help.skyvva.com/#article/3-import-json-file-using-amazon-s3-adapter ================================================================================ # 3. Import JSON File Using Amazon s3 Adapter In this tutorial, you will learn how to do Manual Process with a JSON file via an Amazon S3 adapter. **Note:** We have made changes to the message structure starting from version 2.50.13. We have added the File Message to cover business messages created from files. Everything else remains the same. For more details on the File Message, please refer to this document link: (link not available)) **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/JSONMappingAWSS3.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Inbound as the direction - Choose Status - Choose Salesforce Type = Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select JSON on File Type - Fill Folder Path - Fill File Name - Source Encoding UTF-8 ![](../images/2023/02/AdapterJSONAWSS3.png) - Click Save Button - Link this adapter to the interface Here is the sample payload ![](../images/2023/02/JSONPayloadAWSS3.png) Here is the screenshot of the CSV file in the folder of the AWS S3 service ![](../images/2023/02/CSVFolderAtAWS.png) - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check the Read files from amazon s3 and push record to salesforce. ![](../images/2023/02/ManualProcessofJSONAWSS3.png) - Click Read button The record of the XML file will import to Salesforce and create the completed message as screenshot below ![](../images/2023/02/JSONCompeletedAWSS3.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 4. Import Attachment to Salesforce Using Amazon s3 Adapter Slug: 4-import-attachment-to-salesforce-using-amazon-s3-adapter URL: https://help.skyvva.com/#article/4-import-attachment-to-salesforce-using-amazon-s3-adapter ================================================================================ # 4. Import Attachment to Salesforce Using Amazon s3 Adapter You properly have many files to import into salesforce. For example, you have an account, and you need to attach documents as supporting documents for your Account. In this tutorial, you will learn how to do Manual Process to import attachments to Salesforce via an AWS S3 adapter. #### 1. Import attachment with existing records **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type The Messagetype field Entries must have as below: FILE_Name - FILE_EXTENTION - FILE_TYPE - FILE_BODY - FILE_LENGTH - Link a message type for the inbound interface - Mapping We do VLOOKUP Formula to attach attachment on Account where name equal D-1 ![](../images/2023/02/MappingWithExistingAWS.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Inbound as the direction - Choose Status - Choose Salesforce Authentication Provider on Salesforce Type - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select Binary on the File Type - Fill Folder Path - Fill File Name - Source Encoding UTF-8 ![](../images/2023/02/AdapterBinaryAWSS3.png) - Click Save Button - Link this adapter to the interface Here is the sample file ![](../images/2023/02/SampleFileAWSS3.png) Here is the screenshot of the pdf file in the folder of the AWS S3 service ![](../images/2023/02/PDFFileFolderAWSS3.png) - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check the Read files from amazon s3 and push the attachment to salesforce. ![](../images/2023/02/ManualProcessOfBinaryFile.png) - Click Read button Finally, it will upload your file in an attachment, and is attached with Account Parent that has a name equal to D-1. ![](../images/2023/02/AccountWithAttachmentAWSS3.png) #### 2. Import attachment with Reference Field using CSV format **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/MappingReference.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Inbound as the direction - Status - Choose Salesforce Type = Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select CSV on File Type - Select "," on Separator - Fill Folder Path - Fill File Name - Check Binary File Mode - Fill Binary Folder - Fill Reference Field - Source Encoding UTF-8 ![](../images/2023/02/BinaryReferenceFieldAdapter.png) Here is the sample payload ![](../images/2023/02/ReferenceFieldBinaryPayload.png) Here is the sample file ![](../images/2023/02/SampleFileAWSS3.png) - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check the Read files from amazon s3 and push record to salesforce. ![](../images/2023/02/ReadFileFromAWSS3.png) - Click Read button The record of the CSV file will import to Salesforce and the attachment will link to the Account where the name is equal to Test. ![](../images/2023/02/AccountRecordReferenceField.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. Export CSV file using Amazon s3 Adapter Slug: 1-export-csv-file-using-amazon-s3-adapter URL: https://help.skyvva.com/#article/1-export-csv-file-using-amazon-s3-adapter ================================================================================ # 1. Export CSV file using Amazon s3 Adapter In this tutorial, you will learn how to do Manual Process to export a CSV file via an AWS S3 adapter. This adapter supports four separators such as comma, semi-colon, Tab, and Bar of CSV format. - #### Manual Process with CSV comma separator for outbound processing **Pre-requisite** - Create Integration and outbound interface with operation query - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/CommaCSVOutboundAWSS3.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Outbound as the direction - Choose Status - Choose Salesforce Type as a Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select CSV on File Type - Select "," on Separator - Checked Has File Header if you have a header on your CSV File. - Fill Folder Path - Fill File Name - Choose File Handling Mode (It means that you want to create a new file on AWS s3 or you want to override the existing file) ![](../images/2023/02/AdapterOutboundCSVComma.png) - Click Save Button - Link this adapter to the interface - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check Use the SOQL statement on the interface to select the sObject? (if you wish to select sObject based SOQL statement on the interface setting) ![](../images/2023/02/SelectToExportCSVComma.png) - Click Read button It creates the completed message as screenshot below ![](../images/2023/02/MessageCompeletedCSVFormatOutbound.png) The records are saved into a CSV file and it will export to the AWS S3 service on the/Dahuy/CSV/Camma/ path folder. The file name will be File Name value + Date + Time + .csv ![](../images/2023/02/ExportFilecsvfileFormat.png) Here are the records that have been exported ![](../images/2023/02/CSVExportRecord.png) #### 2. Manual Process with CSV Tab separator for outbound processing **Pre-requisite** - Create Integration and outbound interface with operation query - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/CSVTabOutboundAWSS3.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Outbound as the direction - Choose Status - Choose Salesforce Type = Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select CSV on File Type - Select the Tab on Separator - Checked Has File Header if you have a header on your CSV File. - Fill Folder Path - Fill File Name - Choose File Handling Mode (It means that you want to create a new file on AWS s3 or you want to override the existing file) ![](../images/2023/02/adapterOutboundCSVTabOutbound.png) - Click Save Button - Link this adapter to the interface - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check Use the SOQL statement on the interface to select the sObject? (if you wish to select sObject based SOQL statement on the interface setting) ![](../images/2023/02/ManualExexuteCSVTabOutbound.png) - Click Read button It creates the completed message as screenshot below ![](../images/2023/02/CreateMessageCompeledCSVTabOutbound.png) The records are saved into a CSV file and it will export to the AWS S3 service on the/Dahuy/CSV/Tab/ path folder. The file name will be File Name value + Date + Time + .csv ![](../images/2023/02/CSVTabFolderAWSS3.png) Here are the records that have been exported ![](../images/2023/02/DataExportFromCSVTab.png) #### 3. Manual Process with CSV Semicolon separator for outbound processing **Pre-requisite** - Create Integration and outbound interface with operation query - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/Screen-Shot-2023-02-26-at-3.07.07-PM.png) ![](../images/2023/02/CSVSemiColonOutboudAWSS3.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Outbound as the direction - Choose Status - Choose Salesforce Type = Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select CSV on File Type - Select the ";" on Separator - Checked Has File Header if you have a header on your CSV File. - Fill Folder Path - Fill File Name - Choose File Handling Mode (It means that you want to create a new file on AWS s3 or you want to override the existing file) ![](../images/2023/02/AdapterCSVSemicolonoutbound.png) - Click Save Button - Link this adapter to the interface - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check Use the SOQL statement on the interface to select the sObject? (if you wish to select sObject based SOQL statement on the interface setting) ![](../images/2023/02/ManualProcessingCSVOutboundProcessing.png) - Click Read button It creates the completed message as screenshot below ![](../images/2023/02/MessageCompeletedCSVSemiColon.png) The records are saved into a CSV file and it will export to the AWS S3 service on the/Dahuy/CSV/Semicolon/ path folder. The file name will be File Name value + Date + Time + .csv ![](../images/2023/02/SemicolonFolderCSVAWSS3.png) Here are the records that have been exported ![](../images/2023/02/DataOutboundCSV.png) #### 4. Manual Process with CSV Bar separator for outbound processing **Pre-requisite** - Create Integration and outbound interface with operation query - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/Screen-Shot-2023-02-26-at-3.07.07-PM.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Outbound as the direction - Choose Status - Choose Salesforce Type = Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select CSV on File Type - Select the "|" on Separator - Checked Has File Header if you have a header on your CSV File. - Fill Folder Path - Fill File Name - Choose File Handling Mode (It means that you want to create a new file on AWS s3 or you want to override the existing file) ![](../images/2023/02/BarAdapterCSVOutboundAWSS3.png) - Click Save Button - Link this adapter to the interface - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check Use the SOQL statement on the interface to select the sObject? (if you wish to select sObject based SOQL statement on the interface setting) ![](../images/2023/02/ManualExecuteOutboundAWSS3Adpater.png) - Click Read button It creates the completed message as screenshot below ![](../images/2023/02/MessageCompleteAWSS3Outbound.png) The records are saved into a CSV file and it will export to the AWS S3 service on the/Dahuy/CSV/separator/ path folder. The file name will be File Name value + Date + Time + .csv ![](../images/2023/02/CSVBarFolderAWSS3.png) Here are the records that have been exported ![](../images/2023/02/CSVDataBarFormat.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. Export XML file using Amazon s3 Adapter Slug: 2-export-xml-file-using-amazon-s3-adapter URL: https://help.skyvva.com/#article/2-export-xml-file-using-amazon-s3-adapter ================================================================================ # 2. Export XML file using Amazon s3 Adapter In this tutorial, you will learn how to do Manual Process to export an XML file via an AWS S3 adapter. **Pre-requisite** - Create Integration and outbound interface with operation query - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/XMLOutboundAWSS3Adapter.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Outbound as the direction - Choose Status - Choose Salesforce Type as a Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select XML on File Type - Fill XML Root Tag - Fill Folder Path - Fill File Name - Choose File Handling Mode (It means that you want to create a new file on AWS s3 or you want to override the existing file) ![](../images/2023/02/XMLAdapterOutboundAWSS3Adapter.png) - Click Save Button - Link this adapter to the interface - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check Use the SOQL statement on the interface to select the sObject? (if you wish to select sObject based SOQL statement on the interface setting) ![](../images/2023/02/ManualProcessXMLOutboundAWSS3.png) - Click Read button It creates the completed message as screenshot below ![](../images/2023/02/XMLMesssageSuccessful.png) The records are saved into an XML file and it will export to the AWS S3 service on the/Dahuy/XML/ path folder. The file name will be File Name value + Date + Time + .xml ![](../images/2023/02/FolderXMLOutboundAWSS3.png) Here are the records that have been exported ![](../images/2023/02/XMLPayloadOutboundAWSS3.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 3. Export JSON file using Amazon s3 Adapter Slug: 3-export-json-file-using-amazon-s3-adapter URL: https://help.skyvva.com/#article/3-export-json-file-using-amazon-s3-adapter ================================================================================ # 3. Export JSON file using Amazon s3 Adapter In this tutorial, you will learn how to do Manual Process to export a JSON file via an AWS S3 adapter. **Pre-requisite** - Create Integration and outbound interface with operation query - Create a message type - Link a message type for the inbound interface - Mapping ![](../images/2023/02/MappingJSONMapping.png) - Click save mapping - Enter to integration detail page - Click the link Amazon Control Board on the Custom Link section - You will arrive at the Amazon Control Board - Click Adapter tab - Click the New button to create the adapter Fill Name adapter - Choose Amazon S3 on Type - Choose Outbound as the direction - Choose Status - Choose Salesforce Type as a Salesforce Authentication Provider - Fill Named_Credentials (Note: Please follow the link to create the Named_Credentials [#article/2-named-credentials-to-access-the-aws-s3)](#article/2-named-credentials-to-access-the-aws-s3) - Select JSON on File Type - Fill Folder Path - Fill File Name - Choose File Handling Mode (It means that you want to create a new file on AWS s3 or you want to override the existing file) ![](../images/2023/02/AdapterAWSS3OutbundProcessing.png) - Click Save Button - Link this adapter to the interface - Click the interface Tab on Amazon Control Board - Select an interface - Click the Manual Process Button - It will display the Manual Execute Option pop-up screen - Check Use the SOQL statement on the interface to select the sObject? (if you wish to select sObject based SOQL statement on the interface setting) ![](../images/2023/02/ManualProcessOutboundJson.png) - Click Read button It creates the completed message as screenshot below ![](../images/2023/02/CompeletedMessageJSONOutboundProcess.png) The records are saved into an XML file and it will export to the AWS S3 service on the/Dahuy/XML/ path folder. The file name will be File Name value + Date + Time + .xml ![](../images/2023/02/PayloadJSONOutboundAWSS3.png) Here are the records that have been exported ![](../images/2023/02/JSONPAYLoadOutboundAWSS3.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: 170. Update the parent record while processing the child Title: Introduction Slug: update-the-parent-record-while-processing-the-child-introduction URL: https://help.skyvva.com/#article/update-the-parent-record-while-processing-the-child-introduction ================================================================================ # Introduction Skyvva provides inbound processing that is an *external system called Skyvva APIs. *We have enhanced our inbound processing feature of *Integrate/V3, and Integrate/V4* to be able to navigate using the mapping tool to the parent and map some parent fields. With this enhancement, you can update the parent records. For example, You can update the contact record and also its parent (Account). In the previous version, you must build a hierarchical interface or two separate interfaces to handle this requirement. Now you do not need to do this anymore. It supports the operation of update/delete/insert/upsert operation of the child interface. ![](../images/2023/03/OutboundMappingUpdate.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: 170. Update the parent record while processing the child Title: 1. Update the Parent Record while Upsert the Child of Inbound Integrate V4 Slug: 1-update-the-parent-record-while-upsert-the-child-of-inbound-integrate-v4 URL: https://help.skyvva.com/#article/1-update-the-parent-record-while-upsert-the-child-of-inbound-integrate-v4 ================================================================================ # 1. Update the Parent Record while Upsert the Child of Inbound Integrate V4 In this section, you will understand to do inbound processing of integrate V4 by upserting the child records and also updating parents' records. Our mapping will allow you to append the parent reference field to be mapped. #### Pre-requisite - Create Integration and Inbound interface with operation Upsert ![](../images/2023/03/InterfaceUpdateParentChildUpsert.png) - Create a message type - Link a message type for the inbound interface - Mapping Note: You can append any parent reference field. Therefore, you will able to map the parent fields. For example, if you append on AccountId(reference), you will see the parent's field as screenshot below. You can map the AccountNumber to the AccountNumber of Account field in order to update the AccountNumber field on the Account of the case's parent. ![](../images/2023/03/MappingUpdateParent.png) - Click save mapping - Enter to postman Fill in the URL of your org concat with /services/apexrest/skyvvasolutions/V4/integrate - Fill Query Params integration Name - interface Name - mode Processing - response-format - request-format ![](../images/2023/03/QueryParamsSkyvvaV4UpdateParent.png) - Fill Token of Authorization ![](../images/2023/03/TokenPostmanUpdateParent.png) Here is the sample XML payload ![](../images/2023/03/PayloadPostManUpdateParent.png) - Click Send button It will create a completed message as below ![](../images/2023/03/CompeletedMessageCreateCase.png) The case record has been created then the link account and contact Payload field Value Description accId 0011X000018ymwiQAA Link this account id to the case contactId 0031X00000wpWYLQA2 Link this Contact id to the case Description Create Case and link to Account and Contact and update parent fields  The value will pass to the Description field of case sObject Subject Upsert Case  The value will pass to the Subject field of case sObject ![](../images/2023/03/CreateTheCase.png) Update the Account's field of Case Parent Payload field Value Description AccountNumber UpdateAcc001 Update the AccountNumber field of the Account that is the case's parent DescriptionAccount Insert Case and Update AccountNumber Update the description field of Account sObject that is the parent of the case ![](../images/2023/03/UpdateAccountRecordofCaseParent.png) Update the Contact's field of Case Parent Payload field Value Description CompanyName Skyvva Update CompanyName to createby user of contact parent of case LastName Pisey Update the description field of Account sObject that is the parent of the case DescriptionContact Insert Case and Update LastName Update the description field of contact sObject that is the parent of the case ![](../images/2023/03/UpdateContactRecordscaseparent.png) ![](../images/2023/03/QueryPiseyContactUpdateParent.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: 170. Update the parent record while processing the child Title: 2. Update the Parent Record while Insert the Child of Inbound Integrate V4 Slug: 2-update-the-parent-record-while-insert-the-child-of-inbound-integrate-v4 URL: https://help.skyvva.com/#article/2-update-the-parent-record-while-insert-the-child-of-inbound-integrate-v4 ================================================================================ # 2. Update the Parent Record while Insert the Child of Inbound Integrate V4 In this section, you will understand to do inbound processing of integrate V4 by inserting the child records and also updating parents' records. Our mapping will allow you to append the parent reference field to be mapped. #### Pre-requisite - Create Integration and Inbound interface with operation insert ![](../images/2023/03/InterfaceUpdateParentInsert.png) - Create a message type - Link a message type for the inbound interface - Mapping Note: You can append any parent reference field. Therefore, you will able to map the parent fields. For example, if you append on AccountId(reference), you will see the parent's field as screenshot below. You can map the AccountNumber to the AccountNumber of Account field in order to update the AccountNumber field on the Account of the case's parent. ![](../images/2023/03/MappingUpdateParent.png) - Click save mapping - Enter to postman Fill in the URL of your org concat with /services/apexrest/skyvvasolutions/V4/integrate - Fill Query Params integration Name - interface Name - mode Processing - response-format - request-format ![](../images/2023/03/QueryParamsSkyvvaV4UpdateParent.png) - Fill Token of Authorization ![](../images/2023/03/TokenPostmanUpdateParent.png) Here is the sample XML payload ![](../images/2023/03/PayloadInsertCaseUpdateParent.png) - Click Send button It will create a completed message as screenshot below ![](../images/2023/03/InsertCaseCompeletedMessage.png) The case record has been inserted then the link account and contact Payload field Value Description accId 0011X000018ymwiQAA Link this account id to the case contactId 0031X00000wpWYLQA2 Link this Contact id to the case Description Insert Case and link to Account and Contact and update parent fields such as Account, DescriptionAccount,Description of case, DescriptionContact, LastName.....  The value will pass to the Description field of case sObject Subject Insert Case  The value will pass to the Subject field of case sObject ![](../images/2023/03/CreateTheCase.png) Update the Account's field of Case Parent Payload field Value Description AccountNumber Acc002 Update the AccountNumber field of the Account that is the case's parent DescriptionAccount Insert the Case and Update AccountNumber to Acc002 Update the description field of Account sObject that is the parent of the case ![](../images/2023/03/UpdateAccountParentOfCase.png) Update the Contact's field of Case Parent Payload field Value Description CompanyName Skyvva Update CompanyName to createby user of contact parent of case LastName Sophea Update the description field of Account sObject that is the parent of the case DescriptionContact Insert Case and Update LastName to Sophea Update the description field of contact sObject that is the parent of the case ![](../images/2023/03/UpdateContactOfCaseParent.png) ![](../images/2023/03/QueryfieldUserUpdateParent.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: 170. Update the parent record while processing the child Title: 3. Update the Parent Record While Update the Child of Inbound integrate V4 Slug: 3-update-the-parent-record-while-update-the-child-of-inbound-integrate-v4 URL: https://help.skyvva.com/#article/3-update-the-parent-record-while-update-the-child-of-inbound-integrate-v4 ================================================================================ # 3. Update the Parent Record While Update the Child of Inbound integrate V4 In this section, you will understand to do inbound processing of integrate V4 by updating the child records and also updating parents' records. Our mapping will allow you to append the parent reference field to be mapped. #### Pre-requisite - Create Integration and Inbound interface with operation Update ![](../images/2023/03/UpdateParentandupdateChild.png) - Create a message type - Link a message type for the inbound interface - Mapping Note: You can append any parent reference field. Therefore, you will able to map the parent fields. For example, if you append on AccountId(reference), you will see the parent's field as screenshot below. You can map the AccountNumber to the AccountNumber of Account field in order to update the AccountNumber field on the Account of the case's parent. ![](../images/2023/03/MappingUpdateParent.png) - Click save mapping - Enter to postman Fill in the URL of your org concat with /services/apexrest/skyvvasolutions/V4/integrate - Fill Query Params integration Name - interface Name - mode Processing - response-format - request-format ![](../images/2023/03/QueryParamsSkyvvaV4UpdateParent.png) - Fill Token of Authorization ![](../images/2023/03/TokenPostmanUpdateParent.png) Here is the sample XML payload ![](../images/2023/03/PayloadUpdateParentAndUpdateChild.png) - Click Send button It will create a completed message as below ![](../images/2023/03/CompeledMessageUpdateParentUpdateChild.png) The case record has been created then the link account and contact Payload field Value Description accId 0011X000018ymwiQAA Link this account id to the case contactId 0031X00000wpWYLQA2 Link this Contact id to the case Description Update Case where subject equal Create Case and Update parent fields such as AccountNumber, DescriptionAccount,Description of case, DescriptionContact, and LastName  The value will pass to the Description field of case sObject Subject Create Case  The value will pass to the Subject field of case sObject ![](../images/2023/03/CaseRecordsofUpdateChildOperation.png) Update the Account's field of Case Parent Payload field Value Description AccountNumber Acc003 Update the AccountNumber field of the Account that is the case's parent DescriptionAccount Update the Case and Update AccountNumber to Acc003 Update the description field of Account sObject that is the parent of the case ![](../images/2023/03/AccountUpdateofUpdateCase.png) Update the Contact's field of Case Parent Payload field Value Description CompanyName Skyvva Update CompanyName to createby user of contact parent of case LastName Pisey Update the description field of Account sObject that is the parent of the case DescriptionContact Update case where subject equal Create Case and Update LastName to Ros Sothea Update the description field of contact sObject that is the parent of the case ![](../images/2023/03/ContactUpdateofUpdateCase.png) ![](../images/2023/03/QueryCompanyNameofUpdateParentandUpdateChild.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: 170. Update the parent record while processing the child Title: 4. Update the Parent Record while Delete the Child of Inbound Integrate V4 Slug: 4-update-the-parent-record-while-delete-the-child-of-inbound-integrate-v4 URL: https://help.skyvva.com/#article/4-update-the-parent-record-while-delete-the-child-of-inbound-integrate-v4 ================================================================================ # 4. Update the Parent Record while Delete the Child of Inbound Integrate V4 In this section, you will understand to do inbound processing of integrate V4 by deleting the child records and also updating parents' records. Our mapping will allow you to append the parent reference field to be mapped. #### Pre-requisite - Create Integration and Inbound interface with operation delete ![](../images/2023/03/DeleteChildOperationInterface.png) - Create a message type - Link a message type for the inbound interface - Mapping Note: You can append any parent reference field. Therefore, you will able to map the parent fields. For example, if you append on AccountId(reference), you will see the parent's field as screenshot below. You can map the AccountNumber to the AccountNumber of Account field in order to update the AccountNumber field on the Account of the case's parent. ![](../images/2023/03/MappingUpdateParent.png) - Click save mapping - Enter to postman Fill in the URL of your org concat with /services/apexrest/skyvvasolutions/V4/integrate - Fill Query Params integration Name - interface Name - mode Processing - response-format - request-format ![](../images/2023/03/QueryParamsSkyvvaV4UpdateParent.png) - Fill Token of Authorization ![](../images/2023/03/TokenPostmanUpdateParent.png) Here is the sample XML payload ![](../images/2023/03/PayloadofDeleteCaseandUpdateParent.png) - Click Send button It will create a completed message as screenshot below ![](../images/2023/03/MessageCompeletedDeleteChildAndUpdateParent-1.png) The case record has been deleted then the link account and contact ![](../images/2023/03/CaseRecordHaveBeenDelete.png) Update the Account's field of Case Parent Payload field Value Description AccountNumber Acc004 Update the AccountNumber field of the Account that is the case's parent DescriptionAccount Delete the Case where subject equal Create Case and Update AccountNumber to Acc004 Update the description field of Account sObject that is the parent of the case ![](../images/2023/03/AccountUpdateChildCaseDelete.png) Update the Contact's field of Case Parent Payload field Value Description CompanyName Skyvva Company (Delete) Update CompanyName to createby user of contact parent of case LastName Sasa Update the description field of Account sObject that is the parent of the case DescriptionContact elete case where subject equal Create Case and Update LastName to Sasa Update the description field of contact sObject that is the parent of the case ![](../images/2023/03/DeleteCaseUpdateContactParent.png) ![](../images/2023/03/QueryCompanyNameDeleteChildUpdateParent.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 5. How to do Select operation using Synchronous and Asynchronous outbound interface? Slug: how-to-do-select-operation-using-synchronous-and-asynchronous-outbound-interface URL: https://help.skyvva.com/#article/how-to-do-select-operation-using-synchronous-and-asynchronous-outbound-interface ================================================================================ # 5. How to do Select operation using Synchronous and Asynchronous outbound interface? #### Introduction This tutorial will guide you on how to send data in multiple objects from Salesforce to the multi-table in the database synchronously and asynchronously through Agent V3 to Select record from the database using an outbound Interface. MYSQL Database is used for example to retrieve data from the existing records in the database and it located on EC2 instance. #### Pre-required - Create a Repository and generate Message Type from the database - Modify message type for adding a field in WHERE-Clause - Using Mapping tool in WHERE condition - Checking Cache monitoring status - Callout v3 to new Agent #### How to Select operation using a Synchronous outbound interface? In this example, we use the same Database Adapter in the previous section as it used for **INSERT** operation. Now we use that Adapter with **SELECT** operation. **Step 1:** create another Repository for Select operation and then generate Message Type from the database Fill all required field then click Retrieve Database to get the Table’s record -   Agent Instance: *your instance name* -   Adapter Name: *your adapter name* -   Object Type: Table, View, Procedure -    Database Operation: Select* (database’s template will be generated base on operation*) ![](../images/2020/10/15.png) - Choose the Table’s name for creating Message Type![](../images/2020/10/17.png) After that, we got the Message Type generated from the database Here the example for Table called: “**tbl_account_db_atn**” ![](../images/2020/10/50-2.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Select operation, we have a template for generating Message Type for a single Table - Create a root Message Type with prefix “Database_” + “Table’s name” within type as “Database Table Template” - Create two Message Type as a child of the root with the fixed name. The first one is “Request”, type as “Database Request”. And the other one is “Response”, type as “Database Response” - Under “Request”, create a Message Type as the child. The Table’s name is used for this Message Type within type as “Database Table”. i.e: tbl_account_db_atn. In this Message Type, was generated the field name like on Table - Under “Response”, create a Message Type as the child with the fixed name “records” within type as “Plain structure” - Under “records”, create a Message Type as the child. The Table’s name is used for this Message Type within type as “Plain structure”. In this Message Type, was generated the field name like on Table [/su_box] ![](../images/2020/10/50-3-Copy.png) Currently, we need to manual re-order Message Type as the parent and child following to Request and Response. As the example below, we have three Message Type refer to three Tables on the database. Under “**Request”** we take “*tbl_account_db_*atn” as the parent of “*tbl_contact_db_atn*”* and *“*tbl_case_db_atn*” as the child of “*tbl_contact_db_atn”, these Message Type are Database Table type. On “**Response”**, and under “**records**” *we take “*tbl_account_db_*atn” as the parent of “*tbl_contact_db_atn*”* and *“*tbl_case_db_atn*” as the child of “*tbl_contact_db_atn”, these Message Type are Plain structure type.* ![](../images/2020/10/44-3-Copy.png) - In WHERE-Clause Message Type, we did not generate any field from the Table because we never use all the fields on the Table in the condition. The user needs to add a field on WHERE-Clause for using in the condition by going to WHERE-Clause which relevant to its parent Message Type then navigate to Related tab => Select Field From Repository In this example below is showing WHERE-Clause on *tbl_account_db_atn. *For another Message Type like *tbl_contact_db_atn *and* tbl_case_db_atn *is* *the same step scenario for adding the field on* *WHERE-Clause. ![](../images/2020/07/54.png) At this point, we need to choose the Metadata provider and Repository name and then select the field that we need to put in the condition. ![](../images/2020/10/57.png) After click Save, we have got the field below ![](../images/2020/10/27.png) **Step 3: Set up Interface** For creating the Interface need to follow this guide[ #article/1-what-is-an-interface-and-how-to-create-it](#article/1-what-is-an-interface-and-how-to-create-it) **Define the Request Interface** - Create an outbound Interface for Synchronous mode, operation(query), choose Adapter, Metadata Provider, Repository and Message Type (*Request*) ![](../images/2020/10/select2-Copy.png) - On the Interface details, click the button Open Mapping![](../images/2020/10/select-2-Copy.png) - In the mapping tool, we map it followed to the standard SELECT statement with WHERE-Clause.SELECT *column1*,* column2, ...* FROM *table_name* WHERE *condition*; - Example: We map “Account” sObject to node “tbl_account_db_atn”: to define which Table use for the Select operation. If we did not map any field of node “tbl_account_db_atn” then the Select statement will be query all the fields, otherwise, it will query only the field that we have a map. Select statements will be generated into the field called “Database Query” on Interface or the user can put Select statement manually. - “skyvvasolutions__Account_ExID” to “DB_AccountId” of node WHERE-Clause: to define the condition field’s name. - “Functions” to “Expression” of node WHER-Expression: to define the condition field’s value. After map, this field, the Formula and Expression’s form will be pop up. We can also map another field to Expression, then check the Formula flag [su_box title="Note" box_color="#2a8af0" title_color="#000000"] In WHERE-Expression, we need to put the question mark (?) for getting dynamic value from the field that presents in the WHERE-Clause. We can put the static value in WHERE-Expression unless that field did not present in WHERE-Clause. If we put the static value for the field that comes from WHERE-Clause then we will be getting the incorrect expected result. The static value must be inside the quote symbol. If we do hierarchical mapping for SELECT operation, at least the Primary key field must be map to WHERE-Clause on parent level. The Agent will fetch the record base on the value put on Database Query and use condition from the mapping tool. [/su_box] - **Define the response Interface ** We do SELECT operation using outbound Interface means that we want to get data from the database to Salesforce. So in this case, we need the response Interface to do inbound V3. - Create inbound Interface, choose Metadata provider, Repository, and Message type (Response) In the example below is used the response from Agent to do an upsert operation on ![](../images/2020/10/53.png) Mapping ![](../images/2020/10/responseSelect.png) Adding Response Interface (Inbound) to Request Interface (Outbound) In this example, the Request interface was named “*MYSQL_Database_InternalKEY_Insert_SYNC_multiple table*” and the Response interface is “*Response Insert SYNC*” ![](../images/2020/10/select1-Copy.png) **Step- 4: Checking Cache record to ensure it synchronized to new Agent. ** Go to Agent control board then click Cache Monitor![](../images/2020/07/21-3.png)[su_box title="Note" box_color="#2a8af0" title_color="#000000"] We are using cache on a new Agent for storing the SKYVVA object and its setting, so the new Agent will be looking at Cache record on its local database to get the SKYVVA object setting before transfer data. It is different from the old Agent that is always read the SKYVVA object setting from Salesforce again and again that makes too much time before transfer data. The cache is built automatically when you save the interface with an adapter destination. [/su_box] **Step-5:  Callout v3** Navigate to Setup gear icon => Developer Console => Debug menu => Open Execute Anonymous Window then put sample code below and click the Execute button. [aux_code language="javascript" theme="tomorrow"  extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0014E00001C8fAwQAJ'};//Account Id skyvvasolutions.Iservices.invokeCalloutV3('Test MYSQL-Database Integration', MYSQL_Database_InternalKEY_SELECT_SYNC_multiple table',ids,'SYNC',c); [/aux_code] - After callout, the record has been retrieved from the database to do inbound V3. As shown the result on Message monitoring below: ![](../images/2020/10/SelectSYNC.png) #### How to do Select operation using an Asynchronous outbound interface? In this example, we use the same Interface as we have practiced for the Synchronous scenario, just change the processing mode to Asynchronous on Interface then Callout v3. **On Request Interface** ![](../images/2020/10/select1-Copy-2.png) **On Response Interface** we need also need to add an inbound Database Adapter. In this example below, we used the same Adapter as the previous section for the Insert operation ![](../images/2020/10/selectResponse.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Asynchronous mode with Outbound Interface is a dependency on the field “Transfer Package Size” on the Interface. By default, this field is blank mean that the value “1”. The calculation of API call is depending on this field. For example, in case we are sending 3 records Account’s id: - If “Transfer Package Size=2”, it will execute 2 API call. - If “Transfer Package Size=1”, it will execute 3 API call. [/su_box] **Callout v3** Navigate to Setup gear icon => Developer Console => Debug menu => Open Execute Anonymous Window then put code for update Account object then click the Execute button. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0014E00001C8fAwQAJ'};//Account Id skyvvasolutions.Iservices.invokeCalloutV3('Test MYSQL-Database Integration', MYSQL_Database_InternalKEY_SELECT_SYNC_multiple table',ids,'Auto',c); [/aux_code] [su_box title="Note" box_color="#2a8af0" title_color="#000000"] if your data contain much more, so you cannot process it by Synchronous call due to the request time out error, we need an Asynchronous. In the Asynchronous call, multi-task does at the same time in the background job, the user no need to wait to see the response back. In this case, Agent will be responding to the update message Complete or Failed for a while. [/su_box] After callout, the record has been retrieved from the database to do inbound V3. As shown the result on Message monitoring below: ![](../images/2020/10/SelectMonitroing-1.png) #### Summary ** **Finally, we have learned about how to do select operation using Synchronous and Asynchronous outbound interface. We have understood about Message Type in WHERE-Clause, knowing about putting value in WHERE condition in mapping tool, Database Query’s field, and callout v3 to Agent. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 4. How to do delete operation using Synchronous and Asynchronous outbound interface? Slug: how-to-do-delete-operation-using-synchronous-and-asynchronous-outbound-interface URL: https://help.skyvva.com/#article/how-to-do-delete-operation-using-synchronous-and-asynchronous-outbound-interface ================================================================================ # 4. How to do delete operation using Synchronous and Asynchronous outbound interface? #### Introduction This tutorial will guide you on how to send data in multiple objects from Salesforce to the multi-Table in the database as synchronously and asynchronously through Agent V3. We will know about Transactional and Non-Transaction mode during processing. MYSQL Database is used for example to delete the existing records in the database and it located on EC2 instance. **Pre-required** - Create a Repository and generate Message Type from the database - Modify Message Type for adding a field in WHERE-Clause - Using Mapping tool in WHERE condition - Create outbound Interface and checking cache monitoring status - Callout v3 to new Agent - Transactional and None-Transactional mode #### How to do delete operation using a Synchronous outbound interface? In this example, we use the same Database Adapter in the previous section as it used for INSERT operation. Now we use that Adapter with DELETE operation. **Step 1:** create another Repository for Delete operation and then generate Message Type from the database. ![](../images/2020/10/46.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Update and Delete operation are generated in the same template. We can use one of them to do both database operations. [/su_box] Fill all required field then click Retrieve Database to get the Table’s record - Agent Instance: *your instance name* - Adapter Name: *your adapter name* - Object Type: Table, View, Procedure - Database Operation: Delete* (database’s template will be generated  base on operation*) ![](../images/2020/10/14.png) - Choose the Table’s name for creating Message Type ![](../images/2020/10/16.png) After that, we got the Message Type generated from the Table’s record Here the example for Table called: “**tbl_account_db_atn**” ![](../images/2020/07/35-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Update/Delete operation, we have a template for generating Message Type for a single Table - Create Messages Type as a child of the root with fixed name “Request” within type as “Database Request”. - Under “Request”, create a Message Type as the child. The Table’s name is used for this Message Type within type as “Database Table”. i.e: tbl_account_db_atn. In this Message Type, was generated the field name like on Table. Two Message Type has been generated for this Message Type as the child with the fixed name: WHERE-Clause type as “Database WHERE Clause” and WHERE-Expression type as “Database WHERE Expression”. In WHERE-Expression has been generated the fixed field name that is “Expression” for putting condition value. [/su_box] ![](../images/2020/07/delete-template.png) Currently, we need to manual re-order Message Type as the parent and child. As the example below, we have three Message Type refer to three Tables on the database. Under “**Request”** we take “*tbl_account_db_*atn” as the parent of “*tbl_contact_db_atn*”* and *“*tbl_case_db_atn*” as the child of “*tbl_contact_db_atn”, these Message Type are Database Table type. * ![](../images/2020/07/43-3.png) In WHERE-Clause Message Type, we did not generate any field from the Table because we never use all the fields on the table in the condition. The user needs to add a field on WHERE-Clause for using in the condition by going to WHERE-Clause which relevant to its parent Message Type then navigate to Related tab => Select Field From Repository In this example below is showing WHERE-Clause on tbl_account_db_atn. For other Message Type like tbl_contact_db_atn and tbl_case_db_atn is the same step scenario for adding the field on WHERE-Clause. ![](../images/2020/07/54.png) At this point, we need to choose the Metadata provider and Repository name and then select the field that we need to put in the condition. ![](../images/2020/10/56.png) After click Save, we have got the field below ![](../images/2020/10/27.png) **Step 3:** **Set up Interface** - For creating the Interface need to follow this guide[ #article/1-what-is-an-interface-and-how-to-create-it](#article/1-what-is-an-interface-and-how-to-create-it) **Define the Request Interface** - Create an outbound Interface for Synchronous mode, operation(delete), choose Adapter, Metadata Provider, Repository and Message Type (*Request*) ![](../images/2020/10/deleet1-Copy.png) - On the Interface details page, click the button Open Mapping![](../images/2020/10/delete-2-Copy-2.png) In the mapping tool, we map it followed to the standard DELETE statement with WHERE-Clause. DELETE FROM *table_name *WHERE *condition*; Example: - We map “Account” sObject to node “tbl_account_db_atn”: to define which Table for delete - “Id” to “SF_AccountId” of node WHERE-Clause: to define the condition field’s name. - “Functions” to “Expression” of node WHER-Expression: to define the condition field’s value. After map, this field, the Formula and Expression’s form will be pop up. We can also map another field to Expression, then check the Formula flag After do mapping, the SQL Delete statement is to look like the example below: - DELETE FROM tbl_account_db_atn WHERE SF_AccountId = ….. - DELETE FROM *tbl_contact_db_atn* WHERE SF_ContactId = ….. - DELETE FROM* tbl_case_db_atn* WHERE SF_CaseId = … AND DB_CaseID = ‘834’ [su_box title="Note" box_color="#2a8af0" title_color="#000000"] In WHERE-Expression, we need to put the question mark (?) for getting dynamic value from the field that presents in the WHERE-Clause. We can put the static value in WHERE-Expression unless that field did not present in WHERE-Clause. If we put the static value for the field that comes from WHERE-Clause then we will be getting the incorrect expected result. The static value must be inside the quote symbol. [/su_box] For the example below the field “SF_CaseId” presents in WHERE-Clause, so we need to put “?” . And field “DB_CaseId” did not present in WHERE-Clause, so we can put static value. ![](../images/2020/10/delete-static.png) **Step- 4: Checking Cache record to ensure it synchronized to new Agent. ** - Go to Agent control board then click Cache Monitor ![](../images/2020/07/21-3.png) **Step 4: Callout V3** Navigate to Setup gear icon => Developer Console => Debug menu => Open Execute Anonymous Window then put code for update Account object then click the Execute button. [aux_code language="javascript" theme="tomorrow"  extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011X00000hPU1iQAG'}; skyvvasolutions.Iservices.invokeCalloutV3('Test MYSQL-Database Integration','MYSQL_Database_InternalKEY_DELETE_SYNC_Multi table',ids,'SYNC',c); [/aux_code] - After callout, the record is deleted completely from the database base on condition.  As shown the result on Message monitoring below ![](../images/2020/10/deleteMonitoring-2_deleteComplete.png) #### How to do delete operation using an Asynchronous outbound interface? In this example, we use the same Interface as we have practiced for the Synchronous scenario, just change the processing mode to Asynchronous on Interface then Callout v3. ![](../images/2020/10/deleet2-Copy.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Asynchronous mode with Outbound Interface is a dependency on the field “Transfer Package Size” on the Interface. By default, this field is blank mean that the value “1”. The calculation of API call is depending on this field. For example, in case we are sending 3 records Account’s id: - If “Transfer Package Size=2”, it will execute 2 API call. - If “Transfer Package Size=1”, it will execute 3 API call. [/su_box] - **Callout v3** Navigate to Setup gear icon => Developer Console => Debug menu => Open Execute Anonymous Window then put code for update Account object then click the Execute button. [aux_code language="javascript" theme="tomorrow"  extra_classes=""] kyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011X00000hPU1iQAG'}; skyvvasolutions.Iservices.invokeCalloutV3('Test MYSQL-Database Integration','MYSQL_Database_InternalKEY_DELETE_SYNC_Multi table',ids,'Auto',c); [/aux_code] [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If your data contain much more, so you cannot process it by Synchronous call due to the request time out error, we need an Asynchronous. In the Asynchronous call, multi-task does at the same time in the background job, the user no need to wait to see the response back. In this case, Agent will be responding to update message Complete or Failed for a while. [/su_box] Checking result on Message monitoring, the record is deleted and the Agent has been updated the message to complete. ![](../images/2020/10/deleteMonitoring-2Async.png) #### Delete operation and Transactional mode Normally, when we creating a new Interface the field “isTransactional” is unchecked it means that Non-** **Transactional Mode. If that field is checked then it is Transactional mode. ![](../images/2020/10/deleet1-Copy-2.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Transactional Mode: If any error while delete of one message then the complete message will be rollback with marking failed for the complete message. Non-transactional Mode: If any error while delete of one message then the respective message will be marked as failed These two modes are to support both Interface processing Synchronous and Asynchronous. [/su_box] The example below has shown the Non-transactional Mode which is one message on the last level is failed to delete. ![](../images/2020/10/deleteMonitoring-2TransactionFailed.png) The example below is used the same message scenario for Non-transactional Mode, it just switching to Transactional Mode. In Transactional Mode, when one message is unable to do any database operation then it makes another message which is complete to rollback and marked the whole tree as Failed status. - For Synchronous mode, the Agent will return only the root message status. ![](../images/2020/10/deleteMonitoring-2TransactionTrue.png) - For Asynchronous mode, the Agent will return the whole tree message status.![](../images/2020/10/deleteAsyncTransaction.png) #### Summary Finally, we have learned about how to do update operation using Synchronous and Asynchronous outbound interface. We have understood about message type in WHERE-Clause, knowing about putting value in WHERE-Clause on mapping tool, and callout v3 to Agent. And we also have known about Transactional Mode. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 3. How to do update operation using Synchronous and Asynchronous outbound interface? Slug: how-to-do-update-operation-using-synchronous-and-asynchronous-outbound-interface URL: https://help.skyvva.com/#article/how-to-do-update-operation-using-synchronous-and-asynchronous-outbound-interface ================================================================================ # 3. How to do update operation using Synchronous and Asynchronous outbound interface? #### Introduction This tutorial will guide you on how to send data in multiple objects from Salesforce to the multi-table in the database as synchronously and asynchronously through Agent V3 or Any Connect. We will know about Transactional and Non-Transaction mode during processing, Using mapping in WHERE condition. MYSQL Database is used for example to modify the existing records in the database and it located on EC2 instance. **Pre-required ** - Create a Repository and generate Message Type from the database - Modify message type for adding a field in WHERE-Clause - Using Mapping tool in WHERE condition - Create an outbound Interface and checking Cache monitoring status - Callout V3 to new Agent - Transactional and None-Transactional mode #### How to do update operation using a Synchronous outbound interface? In this example, we use the same Database Adapter in the previous section as it used for INSERT operation. Now we use that Adapter for UPDATE operation. **Step-1:** create another Repository for Update operation and then generate Message Type from the database ![](../images/2020/07/45.png) - Fill all required field then click Retrieve Database to get the Table’s record Agent Instance: *your instance name* - Adapter Name: *your adapter name* - Object Type: Table, View, Procedure - Database Operation: Update* (database’s template will be generated base on operation*)![](../images/2020/07/12-4.png) - Choose Table’s name for creating Message Type![](../images/2020/07/18-3.png) - After that, we got the Message Type generated from the database - Here the example for Table called: “**tbl_account_db_atn**”![](../images/2020/07/35-1.png)[su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Update/Delete operation, we have a template for generating Message Type for a single Table - Create Messages Type as a child of the root with fixed name “Request” within type as “Database Request”. - Under “Request”, create a Message Type as the child. The Table’s name is used for this Message Type within type as “Database Table”. i.e: tbl_account_db_atn. In this Message, Type was generated the field name like on Table. Two Message Type has been generated for this Message Type as the child with the fixed name: WHERE-Clause type as “Database WHERE Clause” and WHERE-Expression type as “Database WHERE Expression”. In WHERE-Expression has been generated the fixed field name that is “Expression” for putting condition value.[/su_box] ![](../images/2020/07/delete-template.png) Currently, we need to manual re-order Message Type as the parent and child. As the example below, we have three Message Type refer to three Tables on the database. Under “**Request”** we take “*tbl_account_db_*atn” as the parent of “*tbl_contact_db_atn*”* and *“*tbl_case_db_atn*” as the child of “*tbl_contact_db_atn”, these Message Type are Database Table type.*![](../images/2020/07/43-3.png)In WHERE-Clause Message Type, we did not generate any field from the Table because we never use all the fields on the table in the condition. The user needs to add a field on WHERE-Clause for using in the condition by going to WHERE-Clause which relevant to its parent Message Type then navigate to Related tab => Select Field From Repository In this example below is showing WHERE-Clause on *tbl_account_db_atn. *For another Message Type like *tbl_contact_db_atn *and* tbl_case_db_atn *is* *the same step scenario for adding the field on* *WHERE-Clause. ![](../images/2020/07/54.png) - At this point, we need to choose the Metadata Provider and Repository name and then select the field that we need put in the condition.![](../images/2020/07/55.png) - After click Save, we got some fields below ![](../images/2020/07/27-2.png) **Step 3: Set up Interface** - For creating the Interface need to follow this guide [ #article/1-what-is-an-interface-and-how-to-create-it](#article/1-what-is-an-interface-and-how-to-create-it) **Define the Request Interface** - Create an outbound Interface for Synchronous mode, operation(update), choose  Adapter, Metadata Provider, Repository, and Message Type (*Request*) ![](../images/2020/07/update1-Copy.png) - On the Interface details page, click the button Open Mapping![](../images/2020/07/update-1-Copy.png) In the mapping tool, we map it followed to the standard UPDATE statement with WHERE-Clause. *UPDATE table_name* *SET column1 = value1, column2 = value2, ...* *WHERE condition;* Mapping scenario example: - We map “Account” sObject to node “tbl_account_db_atn”: to define which Table for update - “Description” to “Description” of node “tbl_account_db_atn”: to define which field of the Table use in condition for the update. - “Id” to “SF_AccountId” of node WHERE-Clause: to define the condition field’s name. - “Functions” to “Expression” of node WHER-Expression: to define the condition field’s value. After mapping, this field, the Formula and Expression’s form will be pop up. We can also map another field to Expression, then check the Formula flag After do mapping, the SQL Update statement is to look like the example below: - UPDATE tbl_account_db_atn SET Description WHERE SF_AccountId = ….. - UPDATE *tbl_contact_db_atn* SET Description WHERE SF_ContactId = ….. - UPDATE *tbl_case_db_atn* SET Description WHERE SF_CaseId = … AND DB_CaseID = ‘963’ [su_box title="Note" box_color="#2a8af0" title_color="#000000"] In WHERE-Expression, we need to put the question mark (?) for getting dynamic value from the field that presents in the WHERE-Clause. We can put the static value in WHERE-Expression unless that field did not present in WHERE-Clause. If we put the static value for the field that comes from WHERE-Clause then we will be getting the incorrect expected result. The static value must be inside the quote symbol. [/su_box] For the example below the field “SF_CaseId” presents in WHERE-Clause, so we need to put “?” . And field “DB_CaseId” did not present in WHERE-Clause, so we can put static value. ![](../images/2020/07/updateStatic.png) **Step- 4: Checking Cache record to ensure it synchronized to new Agent.** - Go to Agent control board then click Cache Monitor![](../images/2020/07/21-3.png) **Step 5: Callout V3** Navigate to Setup gear icon => Developer Console => Debug menu => Open Execute Anonymous Window then put code for update Account object then click the Execute button. [aux_code language="javascript" theme="tomorrow" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0013E00001CxX5NQAV'}; skyvvasolutions.Iservices.invokeCalloutV3('Test MYSQL-Database Integration','MYSQL_Database_InternalKEY_Update_SYNC_Multi table',ids,'SYNC',c);[/aux_code] - After callout, the record is update completely into the database base on condition.  As shown the result on Message monitoring below: ![](../images/2020/07/updateMonitoring-1.png) - Check Result on database, the record is updated correctly in MYSQL database The field “*Description*” on Table “*tbl_account_db_atn*” is updated correctly ![](../images/2020/07/update_7-1.png) - The field “*Description*” on Table “*tbl_contact_db_atn*” is updated correctly ![](../images/2020/07/update_7-2-Copy.png) - The field “*Description*” on Table “*tbl_case_db_atn*” is updated correctly. Because the condition is met only one record, so other records not affected. ![](../images/2020/07/update_7-3-Copy.png) #### How to do update operation using an Asynchronous outbound interface? In this example, we use the same Interface as we have practiced for the Synchronous scenario, just change the processing mode to Asynchronous on Interface then Callout v3. ![](../images/2020/07/update12.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Asynchronous mode with Outbound Interface is a dependency on the field “Transfer Package Size” on the Interface. By default, this field is blank mean that the value “1”. The calculation of API call is depending on this field. For example, in case we are sending 3 records Account’s id: - If “Transfer Package Size=2”, it will execute 2 API call. - If “Transfer Package Size=1”, it will execute 3 API call. [/su_box] - **Callout v3** Navigate to Setup gear icon => Developer Console => Debug menu => Open Execute Anonymous Window then put code for update Account object then click the Execute button.[aux_code language="javascript" theme="tomorrow" extra_classes=""]skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0013E00001CxX5NQAV'}; skyvvasolutions.Iservices.invokeCalloutV3('Test MYSQL-Database Integration','MYSQL_Database_InternalKEY_Update_SYNC_Multi table',ids,'Auto',c);[/aux_code] [su_box title="Note" box_color="#2a8af0" title_color="#000000"] if your data contain much more, so you cannot process it by Synchronous call due to the request time out error, we need an Asynchronous. In the Asynchronous call, multi-task does at the same time in the background job, the user no need to wait to see the response back. In this case, Agent will be responding to update message Complete or Failed for a while. [/su_box] Checking result on Message monitoring, the record is update completely and the Agent has been updated the message to complete. ![](../images/2020/07/updateMonitoring-2-Asysnc.png) #### Update operation and Transactional mode Normally, when we creating a new Interface the field “isTransactional” is unchecked it means that Non-** **Transactional Mode. If that field is checked then it is Transactional mode. ![](../images/2020/07/59-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Transactional Mode: If any error while update of one message then the complete message will be rollback with marking failed for the complete message. Non-transactional Mode: If any error while update of one message then the respective message will be marked as failed These two modes are to support both Interface processing Synchronous and Asynchronous. [/su_box] The example below has shown the Non-transactional Mode which is one message on the last level is failed to update. ![](../images/2020/07/updateMonitoring-3Transaction.png) The example below is used the same message scenario for Non-transactional Mode, it just switching to Transactional Mode. In Transactional Mode, when one message is unable to do any database operation then it makes another message which is complete to rollback and marked the whole tree as Failed status. - For Synchronous mode, the Agent will return only the root message status. ![](../images/2020/07/updateMonitoring-3TransactionTrue.png) - For Asynchronous mode, the Agent will return the whole tree message status.![](../images/2020/07/updateTransaction-Async.png) #### Summary Finally, we have learned about how to do update operation using Synchronous and Asynchronous outbound interface. We have understood about Message Type in WHERE-Clause, knowing about putting value in WHERE-Clause on mapping tool, and callout v3 to Agent. And we also have known about Transactional Mode. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. How to do insert operation using Synchronous and Asynchronous outbound interface? Slug: how-to-do-insert-operation-using-synchronous-and-asynchronous-outbound-interface URL: https://help.skyvva.com/#article/how-to-do-insert-operation-using-synchronous-and-asynchronous-outbound-interface ================================================================================ # 2. How to do insert operation using Synchronous and Asynchronous outbound interface? #### Introduction This tutorial will guide you on how to send data in multiple objects from Salesforce to the multi-table in the database as synchronously and asynchronously through Agent V3 or Any Connect. We will know about Transactional and Non-Transaction mode during processing. Creating an adapter, called Database Adapter within Internal Key Management for insert record to the database. MYSQL Database is used for example below to Insert record to the database and it located on EC2 instance. **Pre-required** - Create Integration and configuration on the new Agent Control Board - Create database adapter (for outbound and inbound) on new Agent Control Board - Create Metadata Provider, Repository and generate Message Type from the database - Create outbound Interface (Request) and inbound Interface (Response) - Checking Cache monitoring status - Callout v3 to new Agent - Transactional and None-Transactional mode #### How to do insert operation using a Synchronous outbound interface? **Step-1:** Create Integration and test connection destination. For creating new Integration by followed to this guide [#article/what-is-an-integration-and-how-to-create-it](#article/what-is-an-integration-and-how-to-create-it) - After Integration created and then navigate to AGENT Control Board![](../images/2020/07/20-2.png) - Choose the connection destination name and click the button Continue![](../images/2020/07/1-5.png) - Click button Ping Agent Connection![](../images/2020/07/newAgentBoard.png) - Click button Ping Salesforce Connection ![](../images/2020/07/3-6.png) **Step-2:** **Create outbound Database Adapter on the new Agent Control Board** - Navigate to the Adapter tab after that click the button New![](../images/2020/07/4-6.png) Fill all required field - Name: *any name* - Type: Agent Database - Direction: Outbound - Status: Active - Database Type: *MySQL* - Driver: *mysql.jdbc.Driver* - Username: (*your user name on database)* - Password: (*your password on the database)* - Hostname: *124.40.1949 (public ipv4 on EC2 AWS)* - Port: *3306(default)* - Database Name: your database name - Insert Operation Mode: *Internal Key Management* - Connection URI: *jdbc:mysql://3.124.40.194:3306/testdb (connection URL format is protocol//[hosts][/database])* - Connection Destination: *your destination name* **Connection URL is different due to Database type: - SQL Sever= jdbc:sqlserver://3.124.40.194:1433;databaseName=dbName - Oracle= jdbc:oracle:thin:@//ec2-3-124-40-194.eu-central-1.compute.amazonaws.com:1521/orcl - PostgreSQL= jdbc:postgresql://3.124.40.194:5432/dbName *** on EC2, make sure you have allowed MYSQL port 3306 on Group Policy for connectivity from other systems. ![](../images/2020/07/4-1-Copy-Copy.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]There are two kinds of Insert Operation mode.** Internal Key management**, it will ignore the value for the field Primary Key and Foreign Key send from Salesforce. This key-value is generated automatically base on the Auto-Increment field define inside the database. In this case, Agent will return the value that it is the Primary key generated by the database to Salesforce. For **External Key management**, the field Primary Key and Foreign Key in the database will use the value sent from Salesforce. In this case, we no need to define a response Interface because the Primary Key has been known. **Internal Key or External Key management **is designed to work for database INSERT operation only. For other operations, this mode is no functionality.[/su_box] - **Step-3** **Generate Message Type from the database** Create Metadata Provider - Create a Repository for using Insert operation - Go to the Repository details page, click the Import Database Metadata button![](../images/2020/07/6-4.png) - Fill all required field then click Retrieve Database to get the Table’s record Agent Instance: *your instance name* - Adapter Name: *your adapter name* - Object Type: Table, View, Procedure - Database Operation: Select* (database’s template will be generated based on operation*)![](../images/2020/07/7-4.png) - Choose Table’s name for creating Message Type![](../images/2020/07/8-7.png) - After that, we got the Message Type generated from the database - Here the example for the Table called: “**tbl_account_db_atn**”![](../images/2020/07/9-1-Copy-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Insert operation, we have a template for generating Message Type for a single Table -       Create a root Message Type with prefix “**Database_**” + “**Table’s name**” within type as “*Database Table Template*” -       Create two Message Type as a child of the root with the fixed name. The first one is “**Request**”, type as “*Database Request*”. And the other one is “**Response**”, type as “*Database Response*” -       Under “**Request**”, create a Message Type as the child. The Table’s name is used for this Message Type within type as “*Database Table”. *i.e:*  tbl_account_db_atn. *In this Message Type, was generated the field name like on Table -       Under “**Response**”, create a Message Type as the child with the fixed name “**records**” within type as “*Plain structure*” -       Under “**records**”, create a Message Type as the child. The Table’s name is used for this Message Type within type as “*Plain structure*”. In this Message Type, was generated the fixed field name: “*Id*” and “*databaseRecordId”* [/su_box] ![](../images/2020/07/insertTemplate1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Currently, we need to manual re-order Message Type as the parent and child following to Request and Response. As the example below, we have three Message Type refer to three Tables on the database. Under “**Request”** we take “*tbl_account_db_*atn” as the parent of “*tbl_contact_db_atn*”* and *“*tbl_case_db_atn*” as the child of “*tbl_contact_db_atn”, these Message Type are Database Table type. On “**Response”**, and under “**records**” *we take “*tbl_account_db_*atn” as the parent of “*tbl_contact_db_atn*”* and *“*tbl_case_db_atn*” as the child of “*tbl_contact_db_atn”, these Message Type are Plain structure type.* [/su_box] ![](../images/2020/07/10-Copy-Copy.png) **Step-4 ****Setup Interface** - For creating the Interface need to follow this guide[ #article/1-what-is-an-interface-and-how-to-create-it](#article/1-what-is-an-interface-and-how-to-create-it) - **Define the request Interface** Create outbound Interface for Synchronous mode, operation(insert), choose Adapter, Metadata Provider, Repository, and Message Type (*Request*)![](../images/2020/07/51.png) - On the Interface details page, click the button Open Mapping ![](../images/2020/07/insert.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For INSERT operation, the field Primary Key and Foreign Key must be map in the mapping tool and then define as Primary Key by checking the flag “Ext Id” and Foreign Key by checking the flag “F Key”[/su_box] - **Define the response Interface ** We need to define a response Interface because of INSERT operation within the Internal Key Management mode, the value of the Primary Key did not send from Salesforce, it is auto-generated by the database. In this case, Agent will return the Id (Primary Key) to Salesforce. The user can take this response to do Inbound V3. For example, the user can update on the existing Account’s object to make sure the record on Salesforce and database, are the same. - Create inbound Interface with Synchronous mode, operation(update), choose Metadata Provider, Repository, and Message Type (*Response*) - In the example below, we use the response from Agent to update the existing sObject ![](../images/2020/07/36-1.png) - Mapping![](../images/2020/07/37-1.png) **Adding Response Interface (Inbound) to Request Interface (Outbound)** - Go to the Request Interface details page then add Response Interface on-field Response Interface. In this example, the Request interface was named “*MYSQL_Database_InternalKEY_Insert_SYNC_multiple table*” and the Response interface is “*Response Insert SYNC*”![](../images/2020/07/repsoneInsert.png) **Step- 5: Checking Cache record to ensure it synchronized to new Agent.** Go to Agent control board then click Cache Monitor![](../images/2020/07/21-3.png)[su_box title="Note" box_color="#2a8af0" title_color="#000000"]We are using Cache on a new Agent for storing the SKYVVA object and its setting, so the new Agent will be looking to Cache record on its local database (H2 Database) to get the SKYVVA object’s setting before transfer data. It is different from the old Agent that is always read the SKYVVA object’s setting from Salesforce again and again that it makes too much time before transfer data. The Cache is built automatically when the Interface has linked to which Adapter has a connection destination. [/su_box] **Step-6:  Callout v3** - Navigate to Setup gear icon => Developer Console => Debug menu => Open Execute Anonymous Window then put sample code below and click the Execute button. [aux_code language="javascript" theme="tomorrow"  extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0014E00001C8fAwQAJ'};//Account Id skyvvasolutions.Iservices.invokeCalloutV3('Test MYSQL-Database Integration','MYSQL_Database_InternalKEY_Insert_SYNC_multiple table',ids,'SYNC',c); [/aux_code] - After callout, the record is inserted into the database then its response back to update the relevant object. As shown the result on Message Monitoring below: ![](../images/2020/07/23-1.png) - The example below has shown the response is updated to the Account’s object![](../images/2020/07/40-1.png) - Checking the result on the database, the record has been inserted correctly on the MYSQL database In this example field “*DB_AccountId*” is the primary key of Table “*tbl_account_db_atn*” ![](../images/2020/07/24-2.png) - field “*DB_ContactId*” is primary key of Table “*tbl_contact_db_atn*” ![](../images/2020/07/25-3.png) - field “*DB_CaseId*” is primary key of Table “*tbl_case_db_atn*” ![](../images/2020/07/26-5.png) #### How to do insert operation using an Asynchronous outbound interface? In this example, we use the same Interface as we have practiced for the Synchronous scenario, just change the processing mode to Asynchronous on Interface then Callout v3. - **Request Interface** ![](../images/2020/07/52.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Asynchronous mode with Outbound Interface is a dependency on the field “Transfer Package Size” on the Interface. By default, this field is blank mean that the value “1”. The calculation of API call is depending on this field. For example, in case we are sending 3 records Account’s id: - If “Transfer Package Size=2”, it will execute 2 API call. - If “Transfer Package Size=1”, it will execute 3 API call. [/su_box] - **Response Interface** We create another inbound Database Adapter that connects to the database as inbound direction then add it to the Response Interface ![](../images/2020/07/53.png) - **Callout v3** Navigate to Setup gear icon => Developer Console => Debug menu => Open Execute Anonymous Window then put code for update Account object then click the Execute button. [aux_code language="javascript" theme="tomorrow" extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011X00000hPU1iQAG'};//Account Id skyvvasolutions.Iservices.invokeCalloutV3('Test MYSQL-Database Integration','MYSQL_Database_InternalKEY_Insert_SYNC_multiple table',ids,'Auto',c); [/aux_code] [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If your data contain much more, so you cannot process it by Synchronous call due to the request time out error, we need an Asynchronous. In the Asynchronous call, multi-task does at the same time in the background job, the user no need to wait to see the response back. In this case, Agent will be responding to update message Complete or Failed for a while. [/su_box] After callout, the record is inserted into the database then its response back to update the relevant object. As shown the result on Message Monitoring below: ![](../images/2020/07/InsertMonitoring_Async.png) #### Insert operation and Transactional mode Normally, when we creating a new Interface the field “isTransactional” is unchecked it means that Non-** **Transactional Mode. If that field is checked then it is Transactional mode. ![](../images/2020/07/27-3.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Transactional Mode: If any error while insert of one message then the whole tree will be marked as Failed status. - Non-transactional Mode: If any error while insert of one message then the respective message will be marked as Failed status - These two modes are support both Interface processing Synchronous and Asynchronous.[/su_box] The example below has shown the Non-transactional Mode which is one message is failed to insert. ![](../images/2020/07/28-3.png) The example below is used the same message scenario for non-transactional Mode, it just switching to Transactional Mode. In Transactional Mode, when one message is unable to do any database operation then it makes another message which is complete to rollback and marked the whole tree as Failed status. - For Synchronous mode, the Agent will return only the root message status. ![](../images/2020/07/29-2.png) - For Asynchronous mode, the Agent will return the whole tree message status.![](../images/2020/07/asysnINSERT-Transaction.png) #### Summary ** **Finally, we have learned about how to do insert operation using Synchronous and Asynchronous outbound interface. We have understood how to create a Database Adapter, generate Message Type from the database table, Primary Key and Foreign Key on Mapping too, Internal Key and External Key Management, response Interface, and callout V3 to the Agent. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to push data to the Database using the new Agent Slug: how-to-push-data-to-the-database-using-the-new-agent URL: https://help.skyvva.com/#article/how-to-push-data-to-the-database-using-the-new-agent ================================================================================ # 1. How to push data to the Database using the new Agent #### Introduction Conceptually of new Database Adapter on Agent v3 is the same as JDBC Adapter on old Agent. It used as a connector to transfer data from Salesforce to Database and from Database to Salesforce. Any Connect or Agent V3 currently supports many types of Databases such as Oracle, SQL Server, MySQL, and PostgreSQL. ![](../images/2020/07/coverDatabase-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: HOW TO CREATE NGROK LOCAL SERVER ? Title: 1. How to create ngrok local server ? Slug: how-to-create-ngrok-local-server URL: https://help.skyvva.com/#article/how-to-create-ngrok-local-server ================================================================================ # 1. How to create ngrok local server ? #### Introduction User development machine may be connected to a secure network behind a firewall. To work around access restrictions, **ngrok** runs a small client process on the user machine which creates a private connection tunnel to the cloud service. Your `localhost` development server is mapped to a `ngrok.io` sub-domain, which a remote user can then access. There’s no need to expose ports, set up forwarding, or make other network changes. **The ngrok client software is available for Windows, macOS, and Linux.** Download from here –  https://ngrok.com/download Please follow the installation steps by link #### How to create ngrok local server? **Case 1 **ngrok using with the old Agent control board - Click and start ngrok - Write command ***ngrok http 9091** * ![](../images/2022/09/image_2022_09_14T08_55_30_598Z.png) - Press Enter button ![](../images/2022/09/image_2022_09_14T09_01_03_590Z.png) - Copy this forwarding link user just created - Go to Salesforce Org. - Create a Remote Site Setting ![](../images/2022/09/image_2022_09_14T09_04_58_463Z.png) - Select your Integration - Go to Agent Control Board(Old) custom link on the Integration detail page ![](../images/2022/09/image_2022_09_14T09_08_56_049Z.png) - Select your Connection integration.properties Name - Click on the Continue button ![](../images/2022/09/image_2022_09_14T09_13_29_702Z.png) - **Username**: *admin* - **Password**: *12345* - **Hostname/Public IP**: *https://ff42-2405-201-7003-8041-94e4-3194-56c7-738b.ngrok.io* - **Port/Port forwarding**: *443* [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Hostname/Public IP is for single use, in case user stop ngrok app then again user have to create Hostname/Public IP address and create copy/paste on salesforce Remote Site. [/su_box] ![](../images/2022/09/image_2022_09_14T09_17_40_887Z.png) - Provide your Salesforce credentials - Username - Password - Select Server Environment - Click on Ping Salesforce Connection - Message pop up on top **Agent Connection Ping successful connection** and status is **ONLINE** ![](../images/2022/09/image_2022_09_14T09_56_31_961Z.png) - Similarly when the user clicks on Ping Salesforce Connection - Message pop up on top **Salesforce Connection Ping successful connection** and status is **ONLINE** - Click on Save to save your whole Ping connection configuration. **Case 2 **ngrok using with the  Agent control board - Click and start ngrok - Write command ***ngrok http 9055*** ![](../images/2022/09/image_2022_09_14T12_32_17_103Z.png) - Press Enter button ![](../images/2022/09/image_2022_09_14T12_34_23_852Z.png) - Copy this forwarding link user just created - Go to Salesforce Org. - Create a Remote Site Setting ![](../images/2022/09/image_2022_09_14T12_36_17_889Z.png) - Select your Integration - Go to the Agent Control Board custom link on the Integration detail page ![](../images/2022/09/image_2022_09_14T12_42_24_335Z.png) - Select your Connection integration.properties Name - Select Type Adapter Type - Click on the Continue button ![](../images/2022/09/image_2022_09_14T12_45_45_303Z.png) - **Username**: *skyvva* - **Password**: *skyvva@12! or Skyvva@12!* - **Hostname/Public IP**: *https://ff42-2405-201-7003-8041-94e4-3194-56c7-738b.ngrok.io* - **Port/Port forwarding**: *443* [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Hostname/Public IP is for single use, in case user stop ngrok app then again user have to create Hostname/Public IP address and create copy/paste on salesforce Remote Site. [/su_box] ![](../images/2022/09/image_2022_09_14T13_02_30_771Z.png) - Provide your Salesforce credentials - Username - Password - Select Server Environment - Consumer Key - Consumer Secret - Click on Ping Salesforce Connection - Message pop up on top **Ping Connection, Connection stablished successfully** and status is **ONLINE** ![](../images/2022/09/image_2022_09_14T12_57_46_335Z.png) - Click on Ping Salesforce Connection - Message pop up on top **Ping Salesforce Connection Salesforce Login successful** and status is **ONLINE** - Click on Save to save your whole Ping Connection configuration. #### Summary: Now the user knows how to use ngrok in a local machine and create a host by forwarding localhost and creating a ping connection between both **SKYVVA's** old Agent Control Board and New Agent Control Board. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to export the ContentVersion with the AGENT as XML/JSON and BINARY format (NEW AGENT)? Title: 1. How to export the ContentVersion with the AGENT as XML/JSON and BINARY format (NEW AGENT)? Slug: how-to-export-the-contentversion-with-the-agent-as-xml-json-and-binary-format-new-agent URL: https://help.skyvva.com/#article/how-to-export-the-contentversion-with-the-agent-as-xml-json-and-binary-format-new-agent ================================================================================ # 1. How to export the ContentVersion with the AGENT as XML/JSON and BINARY format (NEW AGENT)? #### Introduction We already learned about how to export binary data to Salesforce. Now we will learn about How to export attachments to an Account's business by using ContentVersion. Sometimes, the user wants to import only attachments to the Account business. **SKYVVA** has a limitation which can push file (Base64) around 1.6MB per transition. So if the user wants to import many files to the Account. #### How to export Attachment to Account by using ContentVersion? #### Pre-require - Create a MetaData provider and repository for the upload message type - Connection destination and create an adapter - Create Integration and Outbound Interface #### Case A: Configuration of pushing SObject and attachment in the  XML, JSON file. #### Step 1: We need a Repository to upload the structure for mapping. For instructions on how to create a MetaData provider, repository, and message type, refer to the following guide for metadata providers. [–  Metadata Provider](https://apsara-consulting.com/docs/tutorial-v2-41-lightning/how-to-import-attachment-to-account-using-content-version/) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]First, we need to upload the XML structure that is the same as the data we want to export to Salesforce.[/su_box] - Create Repository ![](../images/2023/03/image_2023_11_28T10_57_54_610Z-1.png) **Create Message Type ** - sObject: **Type Plain structure** - Account: **Type Salesforce sObject** - ContentVersion: **Type Salesforce sObject** ![](../images/2023/03/image_2022_10_18T12_16_27_142Z-1.png) - **sObjectRepository** is created - Message Type is also created and it looks and feels in a hierarchical arrangement with **sObject Account & ContentVersion** #### Step 2: We go to the Agent control board to connect the destination. How to use the Agent control board. [–  How to use Agent Control Board (New)?](https://apsara-consulting.com/docs/tutorial-v2-41-lightning/93-how-to-use-agent-control-board-new) - **Connection Destination in Agent Control board** ![](../images/2023/03/image_2022_09_23T12_03_44_616Z.png) #### Step 3: Create an Adapter in the Agent control board, We need the Adapter to transfer the data from one System to another system or computer. Here's an example below. - Go to the Adapter on the Agent Control Board - Create Agent Adapter property - **filetype: **XML, JSON - **filename(extensions): **XML, JSON - Hit button **Ping Connection** ![](../images/2023/03/image_2022_10_18T12_53_16_690Z.png) The adapter (**outbound**) is created successfully ![](../images/2023/03/image_2022_09_23T12_21_02_672Z.png) **Step 4: we need an Outbound Interface for exporting data from Salesforce.** - Create Integration and Outbound Interface with Message Types that we had uploaded. - Put an adapter, MetaData Provider, Repository, and Message Type, and click the button save. ![](../images/2023/03/image_2022_10_18T12_57_31_506Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Source Name we choosing ContentVersion. [/su_box] - Scroll down to Outbound Adapter ![](../images/2023/03/image_2022_09_23T12_26_36_380Z.png) - Open Mapping - Account (**Source**) to Account (**Target**) - Name ![](../images/2023/03/image_2022_10_18T13_04_04_734Z.png) - ContentVersion (**Source**) to ContentVersion (**Target**) - FileExtension, PathOnClient, VersionData (**required fields)** - Select ExId's - Save ![](../images/2023/03/image_2022_10_18T13_06_06_365Z.png) - Select your Interface - Click on the Manual Process button ![](../images/2023/03/image_2022_09_23T12_48_40_051Z.png) - Select the Radio button "**Manually select the sObject using the Query Builder?**" - Click on Next ![](../images/2023/03/image_2022_10_18T13_32_38_689Z.png) - Select the Account Object and Name field related to it - Write Query **SELECT Name FROM Account** - Scroll down to **Execute Query Result** ![](../images/2023/03/image_2022_10_18T13_36_08_181Z.png) - Select your Account - Click on ok ![](../images/2023/03/image_2022_10_18T13_40_18_637Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]User Account having Note & Attachment file.[/su_box] ![](../images/2023/03/image_2022_10_18T13_46_26_900Z.png) - Now click on the Send Button Go to Message Monitor - Select your Integration & Interface - Click on the search button ![](../images/2023/03/image_2022_10_18T14_04_15_976Z.png) - Output Result for XML file ![](../images/2023/03/image_2022_10_18T14_09_09_720Z.png) - Output Result for JSON file ![](../images/2023/03/image_2022_10_18T14_11_05_713Z.png) - Copy this link `iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAACvZJREFUeNrkWwlwE+cVfiutJMuSjQ0B7NJMOWzaQnpg2pRAg+kk03SAcoVgCNBymZqQcMyEBAbMHUjBYGghgGmmIU1sjrQhBrdNaYcrk5QkctKm7Qw4HGmL7RCCjQ5Lu9Lu9r1fh7WSbUmrdWfc/p43Xq3+/9//e+997/2HloOoMsk/JQf/bUCZgjIQena5gXISZVOt6WRr+CYXBXYe/qtEIdBg9BnB2mTpkUi9+QJIGVL4I4FdiaBfigAOgf0lXduvZ8KAun5gbc7o0eb15vng5oRb4B7UFr41n0BzITe+TpbNrc+Ge1/Lg/+l8q/pzdBS5AxbehAf4myO7ZoVBhzvBzL+dWfxDPaqPmcgbYxeQ7c9jzCJOX56LotPfChAQf/aPiArSrc8lPj06aTPwTXMA5I1XqE5jizoeyYXTC2mbnk+Ybu24t90OYUADzSghs03Td1iXeELIvyzrKlDoJGoMtLFlJF/7B6w/92m+xgIG+fmQLErA3nmVo1mkGX9wcoI8hMEK1sT900KaSy5DYOfs4BBZxdX0HP5Gwbw3ycBH76hdAPgW5PuJAU2WkHUpn9Nb13HIQYCECYrH3mYzvz1FgjgvN+TcjtqY383E6wf6zcHEP3+yHXEwnq79O2prWm1HfDTvvoETMQlSRLDqLawjoCd32sDcYBfu0WwbWuxG7LPZqZvXVFUYQtaWEfAgT4y3B3vSrsf6iPzHQxgbZz2YIXiJ/6SdZVoDpNL68Th1ukuDD7p90V9tDzqgtyXszT3QWClkCEVUNQW1iNKC0P94P2GoBs12h7wgfVtM1iumDS7sxJjyHYL6wC4dZ5b99TmnOGBPpuzU6eWLKkwqYKWHhz2TMYlWR/9c7n/XgncD/kg84w5Rev6O8SkC4cJaNvDAnRX8UzygeUiD5w3uQBGvA1IUsxsC/RLS55ZPlAylW4DTH17JqOVqy1Jczcej8KW/2m7dOCrMohFgW5f1/q+7wfTRSMYP+l6nk04KDp3VgzRLq1F2koF+G8V7+NiwvHQNJKtDTqQtNOSMC0A8j2pu7LhsyAX5b5K6t70XbT0BWPS3O08aKUImAYrPippW58eDA7YV546FYS5ATC8xwHn6XiR0BkOJbSBp5nDQpk2zhtpsH9TItfSt5UUAxgCmyaB6QgXb90uuAsKp53DgW/JIA/TEJXRKvx+iPRD1+DRECjH4wroS7JqTILYNb9VQSts4aQkAzU5T1sKMh7H57iV9r7wmu5pmpD8uL2fcBpSupIQaEN0OE9GpAkY8TQsVZkbn4rvj+5x1zXk5uHoxsUKW+tSGpIVuUtRWzi0xZNIKCLLJRqXay923i+8qC34yQs4EC2BkHWVrkWVhwGS4q6yTOPmWo0EyjW5834/QtC1GoIgbXDONCQ1dlC5tKIkdGXlfqx3nwbr3sK+3wgkpku1X1MA46fg0nFQYkpCrIUTaZIr5bXNgw8HkgPiCdXVktfLkj8HSwow9ziC7Ze6dZU/y0ySrv8n5PJHqbu24es4xx7N6wR4ME4UJhk15VwtFpP3aLWyBTg7lz5gwyKNrlwdYPzVwnmlJvWozfU3AD/VnB5g7iG07Nc0ROZrOOhabamGKesNbcoyzTEz4NoApxGo5L3a96TTDWCWpzMSA1bCk48o4WbxwTyXsnUw516VO12TJivyO1JKAS86gBkeMMb3GWth1UJ5EAaqyakHKuVTnOq9KqYNNixSlYjWTt21LUsymLFUmNRzafWDDIu17QPTABW3ohvgQGMAxF8LmgKYiQJYGGjcaklp1wb3sBE4DYFK/qsE8tsB/cDSogAX9MIRL0hXUw+A5h+hlftzqu2dDl3aONusIcjgAHf5dAQbwBWQnx2P0J9vf5u23DzNEumjUw5z/VOfUQVex/Vos6wLWDq89gcklTcGPvSD+Gbqrm0oMMZ6dDyH5RTdh+r7XxbSj8q4ZhXQhcNnubHi3edh8SGlmNIQ6DhoRXNYPOBN7UgD66cdjeUgWFnu3Etklwxt+5I/uyLleF9qS8xh6cMA+DYk1iZ9T/WofrrBie0ly4nrCr/zgXu7M7HXNUvgXN7ClBSbh/lowBFOviUy3pgeMQM/JjhdM+QZGE/lqwGQ/oI8exNzpFv78QoNgcDKcmp9EGj/ByKYH7Qw4QtMbNFAIAPowuJbAqvT9b40KHHnqOBC937Nx0TvQnz104a5Rn1JTRJ4j7cxSV7D0ScPCqg2uux2OxQUFqrqNzc1Q3NzE7v+5ogR8HFDA7jdak7l5eVDXn7wt5r0HdWJ3Q232jJhyJAhQZ263NDQcKXTMRYVFUFTUxOTjordngVDhxbClSs0FhcY7OiF7q6no8Yvr//KRnJV8fdBSz61bBls3b4dCgoKYNjw4QwcyZN4Py8/Hy5euADHTpyAS5cuoRLaBzJ/wQJst40pi/aIn9u2DRXUjIAaQruiCmRYM2Df/v0watQoMJvNsGLlSjhz5g8IPP43IWOLi6Fyzx7IysqC+vp6EIT4tPTs6mdh4aJFcOzYUeC+A9D3SA7YSqzg+6PA+BtdMh6xAv9FPp7D02fMgLWr18DFixdUDUYg6L379sG2rVsjLkJt8lEJz6GCSBnR7dwIYs3atazOqVOnwGazw/4XXmDfPbHkCXChRciC69avx89LVM/KQsuVl5fDsaNHGXACVVlZGWf98RMmwJbNmzGUuKHf8txgFEY+Zy+3weernXFHLaqzpTBgcsWCwgJ0o8aIdaiQlh8cPTrymVyeZP7ChfABfvfU0ieZW4XLb+vqWLpZhwOn4EQDtKO15s6ew8BS2b27Eg4cPABjx46F8+fPR9quWLkC67jhcNVhcDgcsGPnTjh9+jS6brv7l6Oi6h317H72QhsY89sXOxljMaCNMIFQL8Yh5qOXh1R+VrkHHptZwoDEliCwpez6B+PHM+sSv7Zt2RoBEXZfAltbW8ty6/oNG5jbLikrA6erXfMOx/twtKaGDd4xeTKrM3LkSJgwcSKsenoVq3vu3DkE5mB15syezdqVli5mzy77SRkYMXtkLwquYz11XjAXmsA0lIfcdVnQNPV2nI3j8jAFnTXPPANjkGfRMn3qVBiBViI+U9mLLjZv7lzmuide/w08VlISPPbwY8qSgicBYXcmKxGwy5cvx+XWqqoq1t+i0lL2mZRzHkGeO3c2UmfTxk0MYCnWycfAWLq4FK1fBY2NN6F3efAHLzJmlZbdLmipDCqUR4uT5TucePCFfOSLBcgXctXYgdkwGEWHd/rf2NgIS5F/v8CHL0CP+DlylBTW0UF09GwuWpxOJwLaCLNmzYKdFRUs6O2q2KWqcxOB1VTXwEyqs6sCmvC5hw4dAiu6rqUouNhpqbwLkgvTlUMA9+ngbDFrZiZwtuCKyTjYFHHpG5zdMNBYwGPi9sNWDALP79jRYUivQ76QtcIApNAm969eeQUuvfsebNq0EV6trsYBVzDLqr2pg1wfKmfPngXH+w4YN24ca0sAY8uhQwdh4g8nYhoaCovRpdlCJ7RL6XOI4DrVnpPv7LoLmcXB34MY8w3A+Q3A92Ecv0HvPFD4WyHWC9Cy9LPkJg4hjirQfT9k0bP0rugLtmLG8z2qlzy8dR64u+VOpxMV4qUky9CTSq9VvaHXjF50/M9e8oh7jYcs7axsAf8Vsf2QLep8tacUHjmbs7w3ZI6xhd/OCr7GE64Q+6IWzVSEf/hA6VkGDe50FJrBmGsEzsjgtYbAnmT7XdEV/x9exfuPAAMA9OtPwEmPWQAAAAAASUVORK5CYII=` Go to Base64 to File on the web browser - Paste the link here (**Base 64***) - The attached file is shown here ![](../images/2023/03/image_2023_11_28T13_30_34_776Z.png) #### Case B: Configuration of pushing SObject and attachment binary (base 64 data) type  File, jpg, png, pdf file. Follow the same above steps till mapping (step 2) #### Step 3: Create an Adapter in the Agent control board, We need the Adapter to transfer the data to an outbound file folder. Here's an example below. - Go to the Adapter on the Agent Control Board ![](../images/2023/03/image_2022_10_18T14_38_09_420Z.png) - Create Agent Adapter property - **Content Format: **Binary - **filetype: **Binary - **Check: **Create Reference File - Hit button **Ping Connection** The adapter (**outbound**) is created successfully - Open Mapping - Account (**Source**) to Account (**Target**) - Name ![](../images/2023/03/image_2022_10_18T14_19_05_337Z.png) - ContentVersion (**Source**) to ContentVersion (**Target**) - FileExtension, PathOnClient, VersionData - Select ExId's - Save ![](../images/2023/03/image_2022_10_18T14_22_53_885Z.png) - Select your Interface - Click on the Manual Process button ![](../images/2023/03/image_2022_10_18T13_32_38_689Z-1.png) - Select the Radio button "**Manually select the sObject using the Query Builder?**" - Click on Next ![](../images/2023/03/image_2022_10_18T13_36_08_181Z-1.png) - Select the Account Object and Name field related to it - Write Query **SELECT Name FROM Account** - Scroll down to **Execute Query Result** ![](../images/2023/03/image_2022_10_18T13_40_18_637Z-1.png) - Select your Account - Click on ok [su_box title="Note" box_color="#2a8af0" title_color="#000000"]User Account having Note & Attachment file.[/su_box] - Select the Radio button "Use the SOQL statement on the interface to select the sObject" - Now click on the Send Button ![](../images/2023/03/image_2022_10_18T13_46_26_900Z-1.png) - Go to Message Monitor - Select your Integration & Interface - Click on the search button ![](../images/2023/03/image_2022_10_18T14_47_52_879Z.png) - Output Result ![](../images/2023/03/image_2022_10_18T14_46_08_087Z-1.png) #### Summary In this tutorial, we have learned about How to export files to ContentVersion in Salesforce. This function is useful for users who want to export files to Business sObject. We need to follow four steps to this function ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Export data without header for Agent component ? Title: 2. How to Export CSV file without quotes using the Agent ? Slug: 2-how-to-export-csv-file-without-quotes-using-the-agent URL: https://help.skyvva.com/#article/2-how-to-export-csv-file-without-quotes-using-the-agent ================================================================================ # 2. How to Export CSV file without quotes using the Agent ? This Doc explain you that how can you export CSV file without quotes using agent. **What is Quotes?** - “Has Quotes“ is a new adapter field , its functions according to business requirement . - For default value is check for process with old functionality to export data with quotes using Agent. - Value is uncheck for process with new functionality to export data without quotes using Agent.This is the root case for export CSV file without quotes. **Follow the given steps to export CSV file:** - Create Folder  to your local  machine (to save the data on your m/c we have to create folder). - Create adapter for outbound processing. ![](../images/2019/01/csv1.png) - Create Integration. ![](../images/2019/01/CSV.png) - Create Interface. ![](../images/2019/01/csv2.png) - Now Go to Agent ![](../images/2019/01/csv3.png) - Select your Integrations  name - Click on Edit Interface button ![](../images/2019/01/csv4.png) - SELECT BillingCity,BillingCountry,BillingState,BillingStreet,Name FROM Account - Click on Run Query - Click on Ok button ![](../images/2019/01/csv5.png) - Click on Test query button. - Save it. ![](../images/2019/01/csv6.png) - Now Go your salesforce dev org - Click on your Interface which you created - Scroll down to mapping section - Map the Target fields - Select Name Ext Id - Save it. ![](../images/2019/01/csv7.png) - Now last step go to Agent - Select Interface & Click process button ![](../images/2019/01/csv8.png) - Press  ok  button. - Go to your local machine folder csv file exported. ![](../images/2019/01/csv9.png) - Open file with notepad ++ - See your export CSV file without quotes ![](../images/2019/01/csv10-2.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Export data without header for Agent component ? Title: 3. How to export parent-child data from Salesforce to write xml file using Agent ? Slug: 3-how-to-export-parent-child-data-from-salesforce-to-write-xml-file-using-agent URL: https://help.skyvva.com/#article/3-how-to-export-parent-child-data-from-salesforce-to-write-xml-file-using-agent ================================================================================ # 3. How to export parent-child data from Salesforce to write xml file using Agent ? Export hierarchical xml with element syntax (Account, Contact & Case) #### Hierarchical Interface - To arrange interfaces in order means a hierarchical interface. It is a structure in which interfaces are ranked according to levels of importance. - In hierarchical Interfaces, one interface is a parent of another interface. It means that the child interface inherits External ID from its parent's interface. For example, the Account interface is the parent’s contact interface because Contact inherited the External ID from the Account. - Also, One parent interface can have many child accounts but the child interface has only a single parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts. #### Follow the given steps to Import hierarchical XML - Create a hierarchical relationship between account and contact interfaces. - Go to the Salesforce organization - Click on the ‘Integration Tab’ - Create Integration - Save. ![](../images/2019/01/001.png) Go to Interface tab - Create three Outbound Interfaces - AccountExport - ContactExport - CaseExport - Save ![](../images/2019/01/002.png) AccountExport ![](../images/2019/01/003.png) ContactExport ![](../images/2019/01/004.png) CaseExport ![](../images/2019/01/005.png) - All Interfaces are created successfully ![](../images/2019/01/006.png) - Click on AccountExport Interface - Scroll down to IStructure section - Create IStructure ![](../images/2019/01/007.png) - Do mapping - Check Target ‘SKYVVA__PARENTID’ (double underscore)as Ext Id Save ![](../images/2019/01/008.png) - Scroll down to IChained interfaces Section of AccountExport - Now create IChained interface on AccountExport ![](../images/2019/01/009.png) ![](../images/2019/01/0010.png) - Now click on ContactExport Interface - Scroll down to IStructure section - Create IStructure ![](../images/2019/01/0011.png) - Do mapping - Check Target ‘LastName’ as Ext Id Save ![](../images/2019/01/0012.png) - Scroll down to IChained interfaces Section of ContactExport - Now create IChained interface on ContactExport ![](../images/2019/01/0013.png) ![](../images/2019/01/0014.png) - Now click on CaseExport Interface - Scroll down to IStructure section - Create IStructure ![](../images/2019/01/0015.png) - Do mapping - Save ![](../images/2019/01/0016.png) - Now create new Account (TEST_Akash) ![](../images/2019/01/0017.png) **Note: The concept behind is lookup & Master Detail Relationship between Account, Contact & Case. So users strictly follow the related list.** - Scroll down Contacts related list Create Contact01, Contact02 ![](../images/2019/01/0018.png) - Raise a case by clicking on Contact01 ![](../images/2019/01/0019.png) - Raise a case by clicking on Contact02 ![](../images/2019/01/0020.png) - Cases are raises ![](../images/2019/01/0021.png) Great now quickly - Go to Agent Integration Setup Wizard - Select AccountExport interface - Click Edit Interface button ![](../images/2019/01/0022.png) - Click on SQL button ![](../images/2019/01/0023.png) - Click on Run Query button - Click ok ![](../images/2019/01/0024.png) - Now click Test Query button - Save ![](../images/2019/01/0025.png) Same process user have to follow for ContactExport ![](../images/2019/01/0026.png) Same process user have to follow for CaseExport ![](../images/2019/01/0027.png) - Now we integrate Data from Agent to Salesforce - Select AccountExport Interface Press process button ![](../images/2019/01/0028.png) - Go back to your Org. - AccountExport interface Message Board - Click on search button ![](../images/2019/01/0029.png) - Result on Message Monitoring after process from Agent - Result Export Data XML ![](../images/2019/01/0030.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use streaming api with Agent? Title: 1. How to use streaming api with Agent? Slug: how-to-use-streaming-api-with-agent URL: https://help.skyvva.com/#article/how-to-use-streaming-api-with-agent ================================================================================ # 1. How to use streaming api with Agent? This tutorial explains what streaming API is and why do we need it. It describes how to use it. #### What is Streaming API? Streaming API is a feature used in Agents for real-time data change scenarios. When there is a new record inserted or a record updated on the Salesforce side, it automatically changes the data on the client-side. Use Streaming API to receive notifications for changes to Salesforce data that match a SOQL query you define. #### The configuration of Streaming API in SFDC To enable the interface for Streaming API feature, go to outbound interface detail on Salesforce, in the Streaming and Bulk Configuration section. Check the Use Streaming API checkbox. ![](../images/2020/02/Screenshot-907.png) Before configuring Streaming **API**, there are some rules you must know: - **Use Streaming API →** Enable streaming feature, so Agent will be able to subscribe to this interface. - **Notification for fields → **To change which fields trigger notifications. For example, the default is 'Referenced' which means that the fields in the **SELECT** and **WHERE** clauses are evaluated. Notifications are generated for the evaluated records only if they match the criteria specified in the **WHERE** clause.set this parameter to one of these values. The default is '**Referenced**'. #### Notification For Operation: - **Create →** Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is created. - **Delete → **Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is deleted. - **Undelete → **Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is undeleted. - **Update →** Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is updated. - **Soft Deleted →** Just deletes sObject from the salesforce database but Agent is not deleted record from the local database. - **Hard Deleted →** Just deletes sObject from the salesforce database and the Agent will delete records from the local database too. **Replay Option**: This option indicates how the client, subscribed to the PushTopic, read the missing data in case it is online again after a failure. **For detail information:   **           –  [Salesforce Basic Streaming API Modules](https://trailhead.salesforce.com/en/modules/api_basics/units/api_basics_streaming ) #### Streaming API rule: #### The following are examples of supported SOQL statements: - Custom Object - Standard objects (may include custom fields): Account, Campaign, Case, Contact, Lead, Opportunity, and Task. **The following SOQL statements are not supported queries:** - Queries without an Id in the selected fields list - Semi-joins and anti-joins - Aggregate queries (queries that use AVG, MAX, MIN, and SUM) COUNT, LIMIT, ORDER BY, GROUP BY, NOT, OFFSET, TYPEOF) **For detail information about soql rule:** –  [Salesforce Unsupported PushTopic Queries](https://developer.salesforce.com/docs/atlas.en-us.api_streaming.meta/api_streaming/unsupported_soql_statements.htm#!https:%2F%2Fdeveloper.salesforce.com%2Fdocs%2Fatlas.en-us.api_streaming.meta%2Fapi_streaming%2Funsupported_soql_statements.htm%23!) #### Subscribe to Agent To be able to subscribe to Agent please run **SKYVVA** Integration Agent > Integration Wizard. ![](../images/2020/02/Screenshot-908.png) Choose your property file ![](../images/2020/02/Screenshot-909.png) Go to interface detail by double click any interface in the interface list. ![](../images/2018/10/2019-12-23_15-49-47.png) In the interface detail screen, there is a Subscribe button for interface type outbound only. When the Subscribe is clicked, if there is no error it will automatically integrate data. Click again to unsubscribe. ![](../images/2018/10/2019-12-23_15-51-29.png) The bottom corner of the screen, there is a small SKYVVA Integration Agent icon. Right-click on it to see the outbound interface that subscribes to Streaming Channel. Click on the Interface name to unsubscribe. There is also an option for **Star/Stop** Agent Service and open Agent Windows. If there is no Interface Subscribe, it means that there is no interface subscribed to Streaming Channel. ![](../images/2018/10/2019-12-23_15-53-17.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to use JDBC Adapter (SQLserver) with Agent Control Board (old)? Slug: 1-how-to-use-jdbc-adapter-sqlserver-with-agent-control-board-old URL: https://help.skyvva.com/#article/1-how-to-use-jdbc-adapter-sqlserver-with-agent-control-board-old ================================================================================ # 1. How to use JDBC Adapter (SQLserver) with Agent Control Board (old)? This tutorial explains what is JDBC Adapter, why do we need it. It explains how do we use it with the Agent control Board (old). #### Introduction JDBC Adapter is used as a connector to transfer data from Database to Salesforce and from Salesforce to Database. The agent supports five-database types include Oracle, SQLserver, MySQL, MsAccess, and PostgreSQL. #### Prerequisite Before creating the Adapter, the user has to create an Integration and Interface and these two steps must be created in Salesforce Org. To create, edit, and delete users need to do in Salesforce first. Then save an integration on AgentUI. #### Creating of JDBC Adapter Follow the configuration for SQLserver. **Inbound Case1** - Create an Integration ![](../images/2020/06/Screenshot-1198.png) - Create an Inbound Interface ![](../images/2020/06/Screenshot-1199.png) **Go to Microsoft SQL Server Management Studio** –  [Download Microsoft SQL Server Management Studio...](https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15/) ![](../images/2020/02/Screenshot-902.png) **Connect to Server** ![](../images/2020/02/Screenshot-903.png) - Click on Databases - Scroll down to Tables - Right Click on New - Click on Table ![](../images/2020/06/image_2020_06_25T11_24_31_540Z.png) - Create Column Name - Select Data Type “**nvarchar(Max)”**or”**nvarchar(50)”** - Allow Nulls checked by default ![](../images/2020/06/image_2020_06_25T11_33_14_589Z.png) - Right Click on **AccountSQLserver** - Click on Edit Top 200 Rows - Now create a record ![](../images/2020/06/image_2020_06_25T12_40_55_347Z.png) - Right-click on record column - Click on Execute SQL ![](../images/2020/06/image_2020_06_25T12_45_46_446Z.png) **Now go to Salesforce Click on Adapter Inbound Tab** - Create **Inbound** Adapter Type **JDBC** - Click on Ping Connection ![](../images/2020/06/image_2020_06_25T10_59_50_594Z.png) ![](../images/2020/06/image_2020_06_25T11_02_26_882Z-1.png) - Adapter property made a connection successfully with Agent and SQL Server called **jdbcSQLServerDriver** - Database Type **SQL Server** - Database Name **akashdb** ![](../images/2020/06/Screenshot-1201.png) Now the user has to go to the Interface Detail page - Scroll down to Inbound Setup Section - Select JDBC-Adapter-Inbound user just created ![](../images/2020/06/Screenshot-1202.png) Now go to the Agent and Select your Integration which you just created - Select your Interface - Click on Edit Interface Button ![](../images/2020/06/image_2020_06_25T12_24_23_796Z.png) **Now see Interface Source Definition** - Test Source connection with SQL Server Database - Write Query in Query/Filter section - Click on Test Query button - Records are fetching from Salesforce Org in Query table successfully - Save ![](../images/2020/06/image_2020_06_25T12_35_44_247Z.png) **Now go to Salesforce ** - Go to Interface detail page - Click on Open Mapping Button ![](../images/2020/06/image_2020_06_25T13_02_50_760Z.png) - Click on Automapping button - Select Name Ext Id - Save ![](../images/2020/06/image_2020_06_25T13_27_38_651Z.png) **Click on Agent Control Board (old) Tab** [- How to use the Agent Control Board (old)?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. - Click on the Integration tab - Select your Integration and Interface - Scroll down to Process button and click it ![](../images/2020/06/image_2020_06_25T13_39_18_172Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Now click on Monitor Tab ![](../images/2020/06/image_2020_06_25T14_05_21_607Z.png) - Scroll down to Messageboard - Click on the search button - Account created successfully ![](../images/2020/06/image_2020_06_25T14_13_51_773Z.png) ![](../images/2020/06/image_2020_06_25T14_19_40_863Z.png) **Click on the related list your record upserted successfully** **Outbound Case2** - Create an Outbound Interface ![](../images/2020/06/Screenshot-1205.png) **Again** **Go to Microsoft SQL Server Management Studio and connect to the server ** - Click on Databases - Scroll down to Tables - Right Click on New - Click on Table ![](../images/2020/06/image_2020_06_25T11_24_31_540Z.png) - Create Column Name, BillingCity, BillingCountry, BillingStreet, Id - Select Data Type “**nvarchar(Max)”**or”**nvarchar(50)”** - Allow Nulls checked by default ![](../images/2020/06/image_2020_06_26T07_01_18_921Z.png) **Now Go to Salesforce Click on Adapter Tab** - Create **Outbound** Adapter Type JDBC - Click on Ping Connection ![](../images/2020/06/image_2020_06_26T07_09_31_012Z.png) ![](../images/2020/06/image_2020_06_25T11_02_26_882Z-1.png) - Adapter property made a connection successfully with Agent and SQL Server called **jdbcSQLServerDriver** - Database Type **SQL Server** - Database Name **akashdb** ![](../images/2020/06/Screenshot-1201.png) Now the user has to go to the Interface Detail page - Scroll down to Outbound Setup Section - Select JDBC-Adapter-Outbound user just created ![](../images/2020/06/image_2020_06_26T07_15_28_379Z.png) **Now go to the Agent and Select your Integration which you just created** - Select your Interface - Click on Edit Interface Button ![](../images/2020/06/image_2020_06_26T07_19_45_044Z.png) **Now see Interface Source Definition** - Test Source connection with SQL Server Database - Write Query in Query/Filter section - Click on Test Query button - Records are fetching from **Salesforce Org** in Query table successfully - Save ![](../images/2020/06/image_2020_06_26T07_26_10_876Z.png) **Now go to Salesforce ** - Go to Interface detail page - Click on Open Mapping Button ![](../images/2020/06/image_2020_06_26T08_34_19_611Z.png) - Click on Automapping button - Select Name Ext Id - Save ![](../images/2020/06/image_2020_06_26T08_41_39_137Z.png) **Click on Agent Control Board (old) Tab** [- How to use Agent Control Board Version (old)?](#article/tutorial-v2-41-lightning) - Click on the Integration tab - Select your Integration and Interface - Scroll down to Process button and click it ![](../images/2020/06/image_2020_06_26T08_52_06_049Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Now click on Monitor Tab ![](../images/2020/06/image_2020_06_26T09_00_41_518Z.png) - Scroll down to Messageboard - Click on the search button - Account created successfully ![](../images/2020/06/image_2020_06_26T09_06_25_650Z.png) **Now Go back to your SQLserver** - Right-click on record column - Click on Execute SQL ![](../images/2020/06/image_2020_06_26T09_11_47_433Z.png) **Execute SQL your Salesforce Org. record upserted successfully on SQLserver** ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. How to use the Agent Kafka Adapter for Producer? Slug: 2-how-to-use-the-agent-kafka-adapter-for-producer URL: https://help.skyvva.com/#article/2-how-to-use-the-agent-kafka-adapter-for-producer ================================================================================ # 2. How to use the Agent Kafka Adapter for Producer? #### Introduction Agent Kafka adapter for Producer uses for writing data to Topic, meaning that sends data from Salesforce to Topic in Apache Kafka. To use Kafka for Producer, we need to have a Kafka; then, we need to configure an adapter in the Agent control board.  In this chapter, we will learn how to use the Agent Kafka Adapter for Producer, and we will know how to do outbound with CSV, XML, and JSON file type. Pre-require - Configure a new agent control board. - To checking to catch a new agent control board. - Starting and create Topic in the Kafka system. #### 1.How to configure a new agent control board. - Go to the Integration Detail page. - Click on the new agent control board. ![](../images/2020/08/kafkaad5-1.png) - Now we need to create a connection destination. For that, we can give any name to the destination. As shown below. ![](../images/2020/08/kafkaad6-2.png) - Fill all the required fields in Salesforce > Agent. ![](../images/2020/08/kafkaad7.png) - Click on the Ping Agent connection. ![](../images/2020/08/kafkaad8.png) - Fill all the required fields in Agent > Salesforce. ![](../images/2020/08/kafkaad9.png) - Click on the Ping Salesforce connection. - And save it. ![](../images/2020/08/kafkaad10.png) **2. How to check the Caching New Agent control board** We can check it for different Object name. - Check for the Integration. For that, select Integration in the object name. ![](../images/2020/08/kafkaad11.png) - Check for the Interface. For that, select Interface in the object name. ![](../images/2020/08/kafkaad12.png) - Check for the Mapping. For that, select Mapping in the object name. ![](../images/2020/08/kafkaad13.png) - Check for the Adapter. For that, select the Adapter in the object name. ![](../images/2020/08/kafkaad14.png) - Check for the Interface Group. For that, select Interface Group in the object name. ![](../images/2020/08/kafkaad15.png) #### 3. How to work with Kafka Outbound Adapter? **Case 1: Create Outbound KAFKA Adapter for CSV format.** - Firstly, we need to create a Kafka topic on the Kafka server. - Create a Kafka topic named: CSV-Topic (As shown in the picture given below). ![](../images/2020/08/kafkaad16.png) 3. We should create different topics to identify various data formats. (This we needed for other use cases, for now, we are using CSV Topic ). - ${KAFKA_HOME}/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic **CSV-Topic** - ${KAFKA_HOME}/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic **XML-Topic** - ${KAFKA_HOME}/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic **JSON-Topic** 4. After creating a  topic we can use command below to show all Kafka topic. - ${KAFKA_HOME}/bin/kafka-topics.sh --zookeeper localhost:2181 --list ![](../images/2020/08/kafkaad17.png) 5. Create KAFKA Outbound Adapter for testing with CSV format. - Click on New, as shown below. ![](../images/2020/08/kafkaad19.png) - Fill all the required fields, as shown below. - Save it. ![](../images/2020/08/kafkaad20.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]CSV file supports Flat mapping and XML/JSON supports hierarchical mapping.[/su_box] 6. Create a message type using below XML. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] 100001 TestAccountA1 CambodiaA1 PhnomPenhA1 100001 This tutorial will teach you the basics of XML. The tutorial is divided into sections such as XML Basics Advanced XML and XML tools. [/aux_code] 7. Create Integration. 8. Create Interface - Name - Source: Account - Status: Deployed - Operation: upsert - Type: Outbound - Processing Mode: Synchronous ![](../images/2020/10/58.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Kafka supports only Synchronous Processing Mode [/su_box] - Adapter:- Add CSV Kafka outbound adapter, which we created in point 6. - Metadata Provider - Repository - Message Type: Add the message type, which we have created in point 7. - Mapping ![](../images/2020/08/kafkaad21.png) 9. Consume message send from Salesforce in CSV format ${KAFKA_HOME}/bin/Kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic CSV-Topic ![](../images/2020/08/kafkaad22.png) 10. Callout to Kafka server ![](../images/2020/08/kafkaad23.png) 11. Here is the result on the server. ![](../images/2020/08/kafkaad24.png) 12. The result![](../images/2020/08/kafkaad26.png) in message monitoring. 13. CSV support other separators like the semicolon, tab, and pipe separator. ![](../images/2020/08/kafkaad25.png) **Case 2: Create Outbound KAFKA Adapter for JSON format.** - Create JSON Adapter. ![](../images/2020/08/kafkajson.png) 2. Create Integration. 3. Create Interface - Name - Source: Account - Status: Deployed - Operation: upsert - Type: Outbound - Processing Mode: Synchronous ![](../images/2020/10/59.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Kafka supports only Synchronous Processing Mode [/su_box] - Adapter:- Add JSON Kafka outbound adapter. - Metadata Provider - Repository - Message Type: Add the message type. (Hierarchical structure) - Mapping ![](../images/2020/08/kafkajson1.png) - Consume message send from Salesforce in JSON format. ${KAFKA_HOME}/bin/Kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic JSON-Topic ![](../images/2020/08/kafkajson2.png) 4. Callout to Kafka server ![](../images/2020/08/kafkajson3.png) 5. Here is the result on the server. ![](../images/2020/08/kafkajson4.png) 6. The result on Message Monitoring. ![](../images/2020/08/kafkajson5.png) **Case 3: Create Outbound KAFKA Adapter for XML format.** - We need to follow the same steps as in case 2. We just need to create an XML adapter. - We also need to convert data to a single line. #### Summary: Agent Kafka for Producer uses for writing data from Salesforce to the Topic in Kafka, meaning that we use outbound data from Salesforce to Kafka. In Agent Adapter for a producer can work with CSV, XML, and JSON data records, but we need to configure file type in Adapter too. Follow this guide to learning How to use Agent Kafka adapter for consumers ([#article/tutorial-v2-41-lightning](#article/tutorial-v2-41-lightning) ). ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 3. How to use Agent Kafka adapter for Consumer? Slug: 3-how-to-use-agent-kafka-adapter-for-consumer URL: https://help.skyvva.com/#article/3-how-to-use-agent-kafka-adapter-for-consumer ================================================================================ # 3. How to use Agent Kafka adapter for Consumer? #### Introduction Agent Kafka adapter for consumer uses for reading data records from Topic, meaning that we do inbound from Kafka to salesforce. To use Agent Kafka for consumer, we need to configure the Agent control board, and we need to create an Agent Kafka adapter. In the adapter, we need to fill in a specific topic name and one broker to connect, and Kafka will automatically take care of pulling the data from the right broker to the salesforce. This tutorial will learn how to do Agent Kafka adapter for the consumer with file types CSV, XML, and JSON. Pre-require - Configure a new agent control board. - To checking to catch a new agent control board. - Starting and create Topic in the Kafka system. - Create an adapter. - Create integration and Interface. #### 1.How to configure a new agent control board. - Go to the Integration Detail page. - Click on the new agent control board. ![](../images/2020/08/kafkaad5-1.png) - Now we need to create a connection destination. For that, we can give any name to the destination. As shown below. ![](../images/2020/08/kafkaad6-2.png) - Fill all the required fields in Salesforce > Agent. ![](../images/2020/08/kafkaad7.png) - Click on the Ping Agent connection. ![](../images/2020/08/kafkaad8.png) - Fill all the required fields in Agent > Salesforce. ![](../images/2020/08/kafkaad9.png) - Click on the Ping Salesforce connection. - And save it. ![](../images/2020/08/kafkaad10.png) #### 2. How to work with Kafka Inbound Adapter? - We need to create a Topic first. A topic is a category/feed title to which records are stored and published. All Kafka records are organized into topics. In Kafka, we need to create different topics for different types of records. Example: We have three types of records such as CSV, XML, and JSON so we need to create different topics also like TestInboundCSVconsumerTopic, TestInboundXMLconsumerTopic and TestInboundJsonconsumerTopic. - here's a command line to create Topic. ${KAFKA_HOME}/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic -  Here's example. ![](../images/2020/10/2.png) After we create different topics, we can use the command line to see all the topics that we have in Kafka. -  here's the command line to see all the topics in Kafka. ${KAFKA_HOME}/bin/kafka-topics.sh --zookeeper localhost:2182 --list -  here's example. ![](../images/2020/10/3.png) **Case 1: Create Inbound KAFKA Adapter for CSV format.** 1. Go to the new Agent control board and create a new Adapter Kafka for CSV data format inbound processing - Here's adapter InboundCSV ![](../images/2020/10/4.png) 2. We can run or stop Kafka Inbound adapter in the Adapter Screen. ![](../images/2020/08/kafka.incsv2_.png) 3. Create message type for CSV Kafka inbound using below CSV data [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] Account_ID,AccountNumber,Name,Billincity,BillingCountry,Description 11,100001,Test KAFKA Account1,#PP1,CAM1,Testing CSV Inbound 12,100002,Test KAFKA Account2,#PP2,CAM2,Testing CSV Inbound [/aux_code] 4. Create Integration. 5. Create Interface. - Name - Source: Account - Status: Deployed - Operation: upsert - Type: Inbound - Processing Mode: Synchronous ![](../images/2020/10/60.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Kafka supports only Synchronous Processing Mode [/su_box] - Adapter:- Add CSV Kafka Inbound adapter. - Metadata Provider - Repository - Message Type: Add the message type. (Flat structure) - Mapping ![](../images/2020/08/kafka.incsv3_.png) 6. Click the button start Adapter to start the route. ![](../images/2020/08/kafka.incsv9_.png) **3. How to check the Caching New Agent control board** We can check it for different Object names. To ensure that Integration, Interface, adapter, and mapping are in the catch. If we some properties that don't work in the catch, it will get an error. - Check for the Integration. For that, select Integration in the object name. ![](../images/2020/08/kafkaad11.png) - Check for the Interface. For that, select Interface in the object name. ![](../images/2020/08/kafkaad12.png) - Check for the Mapping. For that, select Mapping in the object name. ![](../images/2020/08/kafkaad13.png) - Check for the Adapter. For that, select the Adapter in the object name. ![](../images/2020/08/kafkaad14.png) - Check for the Interface Group. For that, select Interface Group in the object name. ![](../images/2020/08/kafkaad15.png) **4. How to set data to Kafka to send to salesforce? ** - Public message to the topic $KAFKA_HOME/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic **TestInboundCSVconsumerTopic** ![](../images/2020/08/kafka.incsv4_.png) 2. The format is given below for data for CSV. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]When we want to use CSV record, the format is need to have **__SKYVVA__START_MESSAGE**  AND **__SKYVVA__END_MESSAGE**   [/su_box] [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **__SKYVVA__START_MESSAGE** Account_ID,AccountNumber,Name,Billincity,BillingCountry,Description 11,100001,Test KAFKA Account1,#PP1,CAM1,Testing CSV Inbound 12,100002,Test KAFKA Account2,#PP2,CAM2,Testing CSV Inbound 13,100003,Test KAFKA Account3,#PP3,CAM3,Testing CSV Inbound 14,100004,Test KAFKA Account4,#PP4,CAM4,Testing CSV Inbound 15,100005,Test KAFKA Account5,#PP5,CAM5,Testing CSV Inbound 16,100006,Test KAFKA Account6,#PP6,CAM6,Testing CSV Inbound **__SKYVVA__END_MESSAGE** [/aux_code] ![](../images/2020/08/kafka.incsv5_.png) - Check the result on message monitoring. ![](../images/2020/08/kafka.incsv6_.png) **Case 2: Create Inbound KAFKA Adapter for XML format.** - Create inbound Interface with XML message Type. - Here's the message type XML, and we need to put Namespace for the first level. ![](../images/2020/10/7.png) - Here's the Inbound Interface. ![](../images/2020/10/12.png) - Here's the mapping. ![](../images/2020/10/13.png) 2. We need to create an XML adapter, Kafka. Go to agent control board => click Adapter =>click Button new. ( we configuration like the case1 but choose filetype xml) - Here's the XML adapter Kafka. ![](../images/2020/10/14-1.png) 3. Click the button start Adapter to start the route. ![](../images/2020/10/9.png) 4. Linked the adapter on Interface. 5. Public message to the topic $KAFKA_HOME/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic **TestInboundXMLconsumerTopic** - Here's an example below. ![](../images/2020/10/10.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]When we want to use XML record,  we don't need to have Start and End message but we need to convert XML data in to one line. Also, make sure that Data and message Types are the same structure. [/su_box] - Here's xml that converts to one line. ppKhmerMeastest2@gmail.comManurothmappKhmerGoldentest2@gmail.comManurothgagappKhmerAudantest2@gmail.comPiAudanppKhmerko131test2@gmail.comManurothchita - Here's the example to public. ![](../images/2020/10/16-1.png) - Here's the result of XML ![](../images/2020/10/17-1.png) **Case 3: Create an Inbound KAFKA Adapter for JSON format.** - Create inbound Interface with message Type. - Here's the message type. ![](../images/2020/10/18.png) - Here's Inbound Interface with Message Type. ![](../images/2020/10/19.png) - Do mapping ![](../images/2020/10/20.png) 2. We need to create a Kafka adapter Type JSON. Go to agent control board => click Adapter =>click Button new. ( we configuration like the case1 but choose filetype xml). - Here's JSON Adapter Kafka. ![](../images/2020/10/21.png) - Click the button Start adapter. ![](../images/2020/10/22.png) 3. Linked adapter with the Interface. ![](../images/2020/10/23.png) 4.Public message to the topic. $KAFKA_HOME/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic **RothJsonInbound** [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We need to convert Json data to single line. [/su_box] ![](../images/2020/10/24-1.png) - Go to monitor to see the result. ![](../images/2020/10/25.png) Summary Agent Kafka Consumer uses reading data from Topic to Salesforce, which means we Send data from Topic in Kafka to Salesforce. In this adapter, we can do Inbound with CSV, XML, and JSON data records, but we need to make sure our Adapter is configurated to match the file type. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Agent Pulsar adapter Title: 2. How to use Agent Pulsar adapter for Consumer? Slug: 2-how-to-use-agent-pulsar-adapter-for-consumer URL: https://help.skyvva.com/#article/2-how-to-use-agent-pulsar-adapter-for-consumer ================================================================================ # 2. How to use Agent Pulsar adapter for Consumer? **Learning Objectives:-** **This unit describes:-** - How to use an Agent Pulsar adapter for consumers? #### Introduction: In this tutorial, we will learn how Agent Pulsar adapter works for Consumers. In simple words, an Agent pulsar adapter for Consumer means Inbound Pulsar Adapter. We use Inbound Pulsar Adapter when somebody pushes the topic into a topic customer on the Kafka side, then we are consuming. We have an event-driven listener which is camel consumer. We don't need a scheduler. We can consume immediately. This is the Inbound process because we are receiving data here. It plays the role of the consumer. So now we are going to check the use cases for inbound Pulsar Adapter i.e, for consumers. To configure, firstly we need to learn and follow some steps: **1.How to configure a new agent control board.** - Go to the Integration Detail page. - Click on the new agent control board. ![](../images/2020/10/pulsar24.png) - Now we need to create a connection destination. For that, we can give any name to the destination. As shown below. ![](../images/2020/10/pulsar13.png) - Fill all the required fields in Salesforce > Agent. - Click on the Ping Agent connection. ![](../images/2020/10/pulsar14.png) - Fill all the required fields in Agent > Salesforce. - Click on the Ping Salesforce connection. ![](../images/2020/10/pulsar15.png) - And save it. ![](../images/2020/10/pulsar16.png) #### CASE 1: Use Case for file type CSV **2. Create Adapter:** - Add any name in Topic and the topic will automatically be created on the Pulsar server. - Select File Type. - Select Connection Destination which we have created recently. ![](../images/2020/10/pulsar4-1.png) ![](../images/2020/10/pulsar5-1.png) **3. Configure Interface page:** - Create Integration. - Create Interface. - Add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/10/pulsar3.png) - Add Inbound Adapter ![](../images/2020/10/pulsar6.png) **4. Start the route:** - We need to start the route. ![](../images/2020/10/pulsar12.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]First we need to add the Adapter in interface section. Otherwise we will get an error while starting route.[/su_box] **5. Do Mapping:** ![](../images/2020/10/pulsar7.png) **6. Callout to Pulsar Server:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Command: (You need to create CSV file and also need to put ****File on agent-tools-server) For example: /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_CSV_Inbound.csv and execute the below command on Ec2 new agent-tools-server command prompt.** **pulsar-client produce non-persistent://vip/skyvva/InboundCSVTopic -f /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_CSV_Inbound.csv ** **OR** **When Is Persistent checkbox is true inside adapter property then you need to use Persistent command:** **pulsar-client produce persistent://vip/skyvva/InboundCSVTopic -f /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_CSV_Inbound.csv** [/aux_code] ![](../images/2020/10/pulsar9.png) **7. Message Monitoring:** ![](../images/2020/10/pulsar8.png) #### CASE 2: Use Case for file type XML **1. We need to do Agent control board configuration as we did in CSV. Don't need to create new.** **2. Create Adapter:** - Add any name in Topic and the topic will automatically be created on the Pulsar server. - Select File Type. - Select Connection Destination which we have created recently. ![](../images/2020/10/pulsar10-1.png) ![](../images/2020/10/pulsar11-1.png) **3. Configure Interface page:** - Create Integration. - Create Interface. - Add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/10/pulsar19.png) - Add Inbound Adapter ![](../images/2020/10/pulsar20.png) **4. Start the route:** - We need to start the route. ![](../images/2020/10/pulsar25.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]First we need to add the Adapter in interface section. Otherwise we will get an error while starting route.[/su_box] **5. Do Mapping:** ![](../images/2020/10/pulsar21.png) **6. Callout to Pulsar Server:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Callout: (You need to execute below command in Ec2 new Agent-tools-server command prompt and also need to past XML file in one line.** **1st Way: ** **Sample Data- In the Format we need to add namespace in the root.** Testing Pulsar InBound Account1 Testing Pulsar InBound Account1 Description. Testing Pulsar InBound Contact1 15.00 K_I_Asset001 Testing Pulsar InBound Asset1 Testing Pulsar InBound Contact2 15.00 K_I_Asset002 Testing Pulsar InBound Asset2 Testing Pulsar InBound Account2 Testing Pulsar InBound Account2 Description. Testing Pulsar InBound Contact3 15.00 K_I_Asset003 Testing Pulsar InBound Asset3 Testing Pulsar InBound Contact4 15.00 K_I_Asset004 Testing Pulsar InBound Asset4 **2nd Way: ** **Upload XML File on /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_XML_Inbound.xml** **Command: ** **pulsar-client produce non-persistent://vip/skyvva/InboundXMLTopic -f /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_XML_Inbound.xml** [/aux_code] ![](../images/2020/10/pulsar22.png) **7. Message Monitoring:** ![](../images/2020/10/pulsar23.png) #### CASE 3: Use Case for file type JSON **1. We need to do Agent control board configuration as we did in CSV. Don't need to create new.** **2. Create Adapter:** - Add any name in Topic and the topic will automatically be created on the Pulsar server. - Select File Type. - Select Connection Destination which we have created recently. ![](../images/2020/10/json5.png) ![](../images/2020/10/json6.png) **3. Configure Interface page:** - Create Integration. - Create Interface. - Add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/10/json1.png) - Add Inbound Adapter ![](../images/2020/10/json2.png) **4. Start the route:** - We need to start the route. ![](../images/2020/10/pulsar25.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]First we need to add the Adapter in interface section. Otherwise we will get an error while starting route.[/su_box] **5. Do Mapping:** ![](../images/2020/10/json3.png) **6. Callout to Pulsar Server:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Callout: (You need to execute below command in Ec2 new Agent-tools-server command prompt.** **1st Way:** **Sample Data-** { "MyAccount":{ "Name":"Testing Pulsar InBound Account1", "Description":"Testing Pulsar InBound Account1 Description", "MyContact":{ "FirstName":"Testing", "LastName":"Pulsar InBound Contact1", "MyAsset":{ "Quantity":15.00, "SerialNumber":"K_I_Asset001", "Asset_Name":"Testing Pulsar InBound Asset1" } } } } **2nd Way:** ** Upload JSON File on /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_JSON_Inbound.json** **Command: ** **pulsar-client produce non-persistent://vip/skyvva/InboundJSONTopic -f /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_JSON_Inbound.json** [/aux_code] ![](../images/2020/10/json8.png) **7. Message Monitoring:** ![](../images/2020/10/json7.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Agent Pulsar adapter Title: 3. How to use Agent Pulsar adapter for Producer? Slug: 3-how-to-use-agent-pulsar-adapter-for-producer URL: https://help.skyvva.com/#article/3-how-to-use-agent-pulsar-adapter-for-producer ================================================================================ # 3. How to use Agent Pulsar adapter for Producer? **Learning Objectives:-** **This unit describes:-** - How to use an Agent Pulsar adapter for Producer? #### Introduction: In this tutorial, we will learn how the Agent Pulsar adapter works for Producers. In simple words, an Agent pulsar adapter for Producer means Outbound Pulsar Adapter. We need an Outbound Pulsar Adapter when we want to send data out from salesforce, here We need to create a topic first. From salesforce, we can send data messages to the API endpoint of our agent, and then we have a camel producer to publish into the topic invoice, which is on the Kafka side. This is the outbound process because we are sending data out here, It plays the role of Producer. So now we are going to check the use cases for Outbound Pulsar Adapter i.e, for Producer. To configure, firstly we need to learn and follow some steps: **1.How to configure a new agent control board.** - Go to the Integration Detail page. - Click on the new agent control board. ![](../images/2020/10/pulsar24.png) - Now we need to create a connection destination. For that, we can give any name to the destination. As shown below. ![](../images/2020/10/pulsar13.png) - Fill all the required fields in Salesforce > Agent. - Click on the Ping Agent connection. ![](../images/2020/10/pulsar14.png) - Fill all the required fields in Agent > Salesforce. - Click on the Ping Salesforce connection. ![](../images/2020/10/pulsar15.png) - And save it. ![](../images/2020/10/pulsar16.png) #### CASE 1: Use Case for file type CSV **2. Create an Adapter:** - Add any name in Topic and the topic will automatically be created on the Pulsar server. - Select Direction Outbound. - Select Type Agent Pulsar - Select File Type. - Select Connection Destination which we have created recently. ![](../images/2020/10/pulsarout4-1.png) ![](../images/2020/10/pulsarout5.png) **3. Configure Interface page:** - Create Integration. - Create Interface. - Add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/10/pulsarout1.png) - Add Inbound Adapter ![](../images/2020/10/pulsarout2.png) **5. Do Mapping:** ![](../images/2020/10/pulsar7.png) **6. Callout:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0016E00001CHaYWQA1','0016E00001CHaYXQA1'}; **//Account Record Ids** List result = skyvvasolutions.Iservices.invokeCalloutV3('Agent_Pulsar_Adapter','Pulsar_CSV_Outbound',ids,'SYNC',c); [/aux_code] **7. Callout to pulsar server:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Command :( You need to execute below command on ec2 new agent-tools-server command prompt). ** **pulsar-client consume -n 0 -s test non-persistent://vip/skyvva/OutboundCSVTopic** **Separator: Comma ( , ) OR Semi Colon ( ; ) OR Tab ( Tab ) OR Pipe ( | )** [/aux_code] ![](../images/2020/10/pulsarout6.png) **8. Message Monitoring:** ![](../images/2020/10/pulsarOut.png) #### CASE 2: Use Case for file type XML **2. Create an Adapter:** - Add any name in Topic and the topic will automatically be created on the Pulsar server. - Select Direction Outbound. - Select Type Agent Pulsar - Select File Type xml - Select Connection Destination which we have created recently. ![](../images/2020/10/xmlpulsar.png) ![](../images/2020/10/pulsar11-1.png) **3. Configure Interface page:** - Create Integration. - Create Interface. - Add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/10/xmlpulsar1.png) - Add Outbound Adapter ![](../images/2020/10/xmlpulsar2.png) **5. Do Mapping:** ![](../images/2020/10/xmlpulsar3.png) **6. Callout:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0016E00001CHaYWQA1','0016E00001CHaYXQA1'};**//Account Record Ids** List result = skyvvasolutions.Iservices.invokeCalloutV3('Agent_Pulsar_Adapter','Pulsar_JSON_Outbound',ids,'SYNC',c); [/aux_code] **7. Callout to pulsar server:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Command :( You need to execute below command on ec2 new agent-tools-server command prompt). ** **pulsar-client consume -n 0 -s test non-persistent://vip/skyvva/OutboundXMLTopic** [/aux_code] ![](../images/2020/10/xmlpulsar5.png) **8. Message Monitoring:** ![](../images/2020/10/xmlpulsar4.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Agent SOAP Adapter Title: 2. How to create SOAP interface using the Agent SOAP Adapter? Slug: 2-how-to-create-soap-interface-using-the-agent-soap-adapter URL: https://help.skyvva.com/#article/2-how-to-create-soap-interface-using-the-agent-soap-adapter ================================================================================ # 2. How to create SOAP interface using the Agent SOAP Adapter? #### Introduction In this tutorial, we will learn how to use Agent SOAP Adapter to callout data from salesforce to other systems. There are several features to callout with this adapter, like without response messages, response messages, fault messages, attribute, and copy nodes. Agent SOAP adapter work with both processing modes, such as synchronous and Asynchronous. #### I.  Handle API message without Response Interface. **Pre-require** - Create or Upload Message Type SOAP. - Configuration Agent control board. - Create Adapter Agent SOAP. - Create Integration and Outbound Interface. **Step 1**:  Create or Upload Message Type SOAP. - Go to Metadata-> click button Import MetaData Provider. ![](../images/2020/10/1-2.png) - Click upload files (Put metadata and click OK) ![](../images/2020/10/2-2.png) - Here is the SOAP Message Type. Click this to download. –  [SOAPVersion2_skyvvasolutions__MetaDataProvider__c (5)](../images/2020/10/SOAPVersion2_skyvvasolutions__MetaDataProvider__c-5.txt) ![](../images/2020/10/3-1.png) **Step 2:** Create integration and outbound Interface. - Create an outbound Interface link with Message Type. ![](../images/2020/10/4-1.png) - Do mapping ![](../images/2020/10/5-1.png) **Step 3:** Configuration Agent Control Board. - Go to Integration detail => click AGENT Control Board. ![](../images/2020/10/6-1.png) - Put remote site of host URL. Go to setup => Search 'Remote site setting'  => click it => click new Remote site. Here is an example. Remote site= Url +forward port   Example : [http://3.122.44.62](http://3.122.44.62) + :9095 . ![](../images/2020/10/45.png) - Configuration Destination => fill AGENT Credential ![](../images/2020/10/7-1.png) - Configuration Salesforce Credential. ![](../images/2020/10/8-2.png) - Click the button Save. ![](../images/2020/10/9-1.png) **Step4**: Create Adapter Agent SOAP - Click adapter tap on Agent Control Board. ![](../images/2020/10/10-1.png) - Click New button ![](../images/2020/10/11-1.png) - Configure an Agent Adapter Soap Fill name, choose Type =Agent Soap, Direction= outbound, choose XML payload, Operation= POST, fill username and password, and choose Adapter_instance. - Here is an example. ![](../images/2020/10/12-1.png) **Step 5**: put the adapter into Interface. ![](../images/2020/10/14-2.png) **Step 6**: checking a cache monitor in the Agent control board. After we linked the adapter with the interface, we need to check the cache monitor to ensure that Adapter, Integration, Interface group, Interface, Ichain, mapping, or workflow that we set on an interface is cache retrieved. - Go to Agent control board click Cache Monitor. If we got status false of object name we need to click Synchronize or Push button Cache to make cache retrieve properties. ![](../images/2020/10/55.png) **Step 7**: Callout v3 with Apex code. - Here is the code callout. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011x000015BR30AAG'}; skyvvasolutions.Iservices.invokeCalloutV3('IntegrationName','InterfaceName',ids,'SYNC',c); - Go to developer console => Debug => Open Execute Anonymous Window =>  copy the code above and click Execute. ![](../images/2020/10/15-2.png) - Go to Monitor to see the result. ![](../images/2020/10/16-2.png) #### II.  Handle API Message with Response Interface. In this case, we need to create a Response Interface using Soap Message Type. **Pre requires** - Create or Upload Message Type SOAP. (We have configured in case1) - Configuration Agent control board. (We have configured in case1) - Create Adapter Agent SOAP. (We have configured in case1) - Create Integration and outbound Interface. (We have configured in case1) - Create Inbound Interface **How to Handle API message with Response Interface?** In this case, we need Inbound Interface one more to make a response. Because of Case 1, we have configuration some pre-required already. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Make sure that Message Type Reponses Interface is matching with payload Reponses of other request System or server.[/su_box] **Step1: ** - Create inbound Interface and link Message Type Response - Here is the response Interface. ![](../images/2020/10/17-2.png) - Do mapping. ![](../images/2020/10/18-1.png) **Step 2**: Go to Interface Request and put the Response Interface in the field’s response Interface. - Go to Interface Request. ![](../images/2020/10/19-1.png) - Scroll down to see the field’s response Interface. Click this pencil. ![](../images/2020/10/20-1.png) - Put response Interface in it, Example below. Click the save button. ![](../images/2020/10/21-1.png) **Step 3: **Checking cache like above to ensure that Adapter, Integration, Interface group, Interface, Ichain, mapping, or workflow that we set on an interface is cache retrieved. **Step 4**: Callout v3 with Apex code with Request Interface. - Here is the code callout. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011x000015BR30AAG'}; skyvvasolutions.Iservices.invokeCalloutV3('IntegrationName','InterfaceName',ids,'SYNC',c); - Here’s example. ![](../images/2020/10/15-3.png) - Go to Monitor to check the result. ![](../images/2020/10/22-1.png) #### III: Handler Over Fault Response. In this case, we use two Interfaces like Inbound Interface for Response and Outbound Interface for Request. The process of these cases is to put the Response Interface, which is fault Message Type, into the Request Interface. Example. We have an outbound Interface and put the fault Interface with the message Type fault_SystemError in the outbound Interface. When the callout V3 is met  System Error, the Inbound Interface will respond to the fault message to tell the user that the Callout has a problem with the system Error. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Make sure that Adapter has fault response. [/su_box] **Pre requires** - Create or Upload Message Type SOAP with Fault Message Type. (We have configured in case1) - Configuration Agent control board. (We have configured in case1) - Create Adapter Agent SOAP. (We have configured in case1) - Create Integration and outbound Interface. (We have configured in case1) - Create Inbound Interface as a fault Interface. **Step1**: Create an Inbound Interface as fault Interface. - Go to Integration => create Interface. ![](../images/2020/10/23-1.png) - Here is the Inbound fault Interface. ![](../images/2020/10/24-2.png) - Do mapping ![](../images/2020/10/25-1.png) **Step 2**: Put fault interface in request interface. - Go back to request Interface (Normal case) ![](../images/2020/10/26.png) - Scroll down to find the fault Interface field. ![](../images/2020/10/27-1.png) - Put the fault Interface in this field. ![](../images/2020/10/28.png) **Step 3: **Checking cache to ensure that Adapter, Integration, Interface group, Interface, Ichain, mapping, or workflow that we set on an interface is cache retrieved. **Step 4**: Callout with apex code. - Here is an example. ![](../images/2020/10/29.png) - Go to monitor to check results. ![](../images/2020/10/30.png) #### IV. Handle multiple different fault messages [su_box title="Note" box_color="#2a8af0" title_color="#000000"]When we use Multiple different fault messages, we do not need to put fault Interface in the Request Interface because the field of fault Interface is a priority than related fault Interfaces. If we put Interface in field fault Interface, it will do only with field fault Interface, and the related Interface will not do.[/su_box]. **Pre-require:  ** - Create or Upload Message Type SOAP with Fault Message Type. (We have configured in case1) - Configuration Agent control board. (We have configured in case1) - Create Adapter Agent SOAP. (We have configured in case1) - Create Integration and outbound Interface. (We have configured in case1) - Create two Inbound Interfaces for fault interfaces. We have created a Fault Interface system error already, so we need to create two more fault Interfaces. **Step1**: Go to Integration and create Fault interfaces. - Create Inbound fault Interface and linked with fault_AdminBlockException and click button save. ![](../images/2020/10/31.png) - Do mapping. ![](../images/2020/10/32.png) **Step2**: Put Outbound Interface Name in fault Interface of Every Response Interfaces. - Make sure that the request Interface does not have a fault interface in their field. - Here is the request Interface. ![](../images/2020/10/33.png) - Scroll down to make sure that this interface does not have a fault Interface. ![](../images/2020/10/35.png) - Here is the Response System Error Interface. (That we have created above) ![](../images/2020/10/36.png) - Scroll down to put the request interface in the field fault Interface. ![](../images/2020/10/38.png) We need to other Response fault Interface in the same way. - Here is AdminblockException fault Interface. ![](../images/2020/10/39.png) - Scroll down to put the request interface in the field fault interface. ![](../images/2020/10/40.png) **Step 3**:  Go to Request Interface to see response fault Interfaces related. - Go to Related Interface of request Interface. ![](../images/2020/10/41.png) - Scroll down to see both fault Interfaces have related to this request Interface. ![](../images/2020/10/42.png) **Step 4: **Checking cache to ensure that Adapter, Integration, Interface group, Interface, Ichain, mapping, or workflow that we set on an interface is cache retrieved. **Step 5**:  Callout with apex code. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Make sure that API has faults Message.[/su_box] ![](../images/2020/10/43.png) - Go to the message monitor to check the result. ![](../images/2020/10/44.png) #### V. callout with feature copy node. We use copy nodes to support the requirement for outbound mapping when a node is needed a certain number of times. In this case, We do not need from the source side a sObject instance to create the occurrences of the target node. We can use the data inside the same sObject that occurs multiple times. For example, e.g., We have two types of addresses in the account, like billing and shipping address. We need to create the target node only two times and not n-times as the sObject instance. In this case, we can use the so-called ‘Copy Node’ function to copy the target node two, three, or as many times as you need to have on the target side. **Pre-require:  ** - Create Integration. - Interface - Upload message type and linked with the interface. (do like in case 1) - Create an Agent soap adapter and link with an interface. ((do like in case 1) **Step 1**: create Integration and outbound Interface. - Go to Integration, click the New Interface button. ![](../images/2020/10/46-1.png) - Fill in the name, source name, status, type, and linked message type. See the example below. ![](../images/2020/10/47.png) - Do mapping. To set a copy node, we click the left mouse on a node that we need to copy and then click copy node. ![](../images/2020/10/48.png) **Step2**: Go to the Agent control board to create an Agent soap adapter. - Go to Integration => click Agent control board. ![](../images/2020/10/49.png) - Connection Agent control board. ![](../images/2020/10/50.png) - Here is the adapter that we use. ![](../images/2020/10/12-1.png) **Step 3**: link the adapter to the Interface. ![](../images/2020/10/51.png) - Checking cache Monitor ![](../images/2020/10/52.png) **Step 4: **checking cache to ensure that Adapter, Integration, Interface group, Interface, Ichain, mapping, or workflow that we set on an interface is cache retrieved. **Step 5**:  callout with apex code. ![](../images/2020/10/53-1.png) **Step 6**: Go to message monitor to check the result. ![](../images/2020/10/54.png) **Summary** Finally, we have learned how to use Agent soap to call out other systems with many features shown above, such as Callout with the response and without response, fault message, attribute, and copy node. This Agent soap Adapter is useful for users who want to process with internal and external systems. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use custom response using the response (outbound) interface to agent? Title: 1.2. How to use custom response using the response (outbound) interface to agent? Slug: 1-2-1-how-to-use-custom-response-using-the-response-outbound-interface-to-agent URL: https://help.skyvva.com/#article/1-2-1-how-to-use-custom-response-using-the-response-outbound-interface-to-agent ================================================================================ # 1.2. How to use custom response using the response (outbound) interface to agent? > #### [su_highlight background="#00d9a6"]Release Version[/su_highlight] #### Introduction: - Our V4/integrate rest variant supports JSON and XML and therefore it is possible to pass the Rest envelope XML or JSON to the body of the v4/integrate. This means that for invoking the skyvva API we use only the rest variant ../services/apexrest/skyvvasolutions/v4/Integrate with either XML or JSON payload. - In the URL of V4 API, the query parameter is added in URL only. We have **two** type of **response**: 1. standard response 2. custom response using the response (outbound) interface to do the mapping if we want to get data from the response interface then we need do mapping for response interface and link it to request interface. Only data send from input will return back as response. If we want other than the input data then we have to use VLOOKUP formulae in the response mapping. #### Usecase: **Objective**: custom response using the response (outbound) interface to do the mapping **Pre-requisites:-** - Create an Integration ![](../images/2021/02/Capture3.png) - Create Metadata Provider - Create Repository. - Create a Message Type. ![](../images/2021/02/Capture1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Make sure that msg type structure should start with root node [/su_box] - Outbound adapter(Here we are using SFDC2SAPPI adapter) ![](../images/2021/02/Capture2-1.png) **Steps:** **Step1**: Create Inbound Interface as Request Interface. where We have to select: - Metadata -Repository -> Message Type. - Do mapping ![](../images/2021/02/Capture4.png) Inbound mapping should looks like: ![](../images/2021/02/Capture7.png) **Step2**: Create Outbound Interface as Response Interface. where We have to select: - Metadata -Repository -> Message Type. - Adapter - Do mapping ![](../images/2021/02/Capture5.png) In mapping If formula is applied to add constant value. for example: IF(Name = "Mac", "Testmac",Name) When We post name= mac as input. In response(Outbound) it should show Testmac. ![](../images/2021/02/Capture6.png) **Step3**: To get data from the response interface we need do mapping in same interface and link it to request interface(Inbound) ![](../images/2021/02/Capture8-1.png) **Step4**: here we are using **Postman** for V4 integrate rest api.  1. **V4 API:**  V4 API pass Integration, Interface, mode, request-format, response-format parameter inside the URL query parameter. **2. The URL contains**:  URl contains following the details for V4integrate: - Salesforce classic URL. - Integration name. - Interface name. - mode. - response-format. - request-format. All this details are nothing but the parameters. ![](../images/2021/02/capture10-4.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Please make sure there is no  unwanted space after value inside query params[/su_box] #### 3. Authorization - Authorization Type Select as No Auth. #### 4. Header:- - Enter "Bearer+Session ID". ![](../images/2021/02/Capture10-1.png) #### 5. Body: - Enter JSON or XML payload as per your message type which we have created earlier. ![](../images/2021/02/Capture11.png) #### 6. Send the Request: - Click on send button. ![](../images/2021/02/Capture12.png) #### 7 Check response for Outbound interface: ![](../images/2021/02/Capture13.png) #### #### 8 Check Result on Message monitoring: ![](../images/2021/02/Capture14.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: SAP Business Bydesign Adapter Operation Post. Slug: sap-business-bydesign-adapter-operation-post URL: https://help.skyvva.com/#article/sap-business-bydesign-adapter-operation-post ================================================================================ # SAP Business Bydesign Adapter Operation Post. **Introduction** The purpose of this document tutorial is to demonstrate how to establish a connection between Salesforce and SAP Business ByDesign using the SKyvva adapter. The tutorial will focus on utilizing the 'post' operation of the SAP Business ByDesign adapter to Create Material from Salesforce to SAP Business ByDesign. **How to using Sap Business Bydesign adapter with operation POST?** **Pre-required** - Create Integration - Create Connection Destination in Sap bydesign. - Create Metadata and Repository - Generate Message Type of Material - Create Request and Response Interface and linked with message Type - Create Sap Business Bydesign adapter and Linked with request Interface. **Step 1 : Create Integration ** - Here’s Integration ![](../images/2023/05/1.png) **Step2:** Create Connection Destination of SAP Business Bydesign. - Go to Integration detail-> Click Sap Control board. ![](../images/2023/05/2.png) - Destination: New, fill name, choose type: Sap Business ByDesign and click continue button. ![](../images/2023/05/3.png) To click the continue button, we need to know the Service URL of SAP Business Bydesign. - Here’s the OData in sap business bydesign ![](../images/2023/05/4.png) - Here’s the service URL odata in sap bydesign. ![](../images/2023/05/5.png) - Fill Host URL which is the OData API of sap business bydeisgn, fill Username and password which have permission to access the service that to get API OData fill your path of the sap API of By design see the example below. ![](../images/2023/05/6.png) - Click Ping SAP Connection to make sure that the SAP Credential is correct. ![](../images/2023/05/7.png) **Step3: Create Metadata and Repository** - Here’s the Metadata. ![](../images/2023/05/8.png) - Here’s the Repository ![](../images/2023/05/9.png) **Step4 : Generate Material Message Type.** - Go to SAP control board -> Ping connection SAP Business Bydesign -> click Metadata. Choose the Metadata and Repository which created in step3 and click Import Sap Metadata button. ![](../images/2023/05/10.png) - Select the Application: SAP Business ByDesign, Select the connection Destination , Select Type Rest Template and click retrive button. ![](../images/2023/05/11.png) - Find the Entity that we want to do, in this case We choose Material Collection for Create, Update, Get and Delete. Then click Generate Message Type. ![](../images/2023/05/12.png) - Here’s the message type that we generate. ![](../images/2023/05/13.png) **Step 5: Create Request and Response Interface and linked with message Type** - Here’s the Request Interface. ![](../images/2023/05/14.png) - Do mapping Note: In material the required fill is InternalID must be start with PP, and ProductCategoryInternall ID must be exist in system. ![](../images/2023/05/15.png) - Create Response Interface. ![](../images/2023/05/16.png) - Do mapping ![](../images/2023/05/17.png) Linked the Response with Interface. - Go to Request Interface. ![](../images/2023/05/18.png) **Step 6:** Create SAP Business By design using operation POST. - Go to sap control board click adapter ![](../images/2023/05/19.png) - Click New button and fill the required fill such as Name, Type: SAP Business By Design, Direction: Outbound, Status: Active, Protocol: Rest, Authentication Type: Basic, Operation: Post, API Service Endpoint URL : The URL OData material , Request format : application/json, response format: application/json and put the connection destination. - Here’s the example ![](../images/2023/05/20.png) ![](../images/2023/05/21.png) ![](../images/2023/05/22.png) Linked the adapter with request Interface. - Here’s the example ![](../images/2023/05/23.png) Callout the data by manually. - Go to integration, Click Interface tap, select request Interface and click manually processing see the picture below. ![](../images/2023/05/24.png) - Select Account and click Execute SOQL ![](../images/2023/05/25.png) - Select the Account that we want to send and click OK. ![](../images/2023/05/26.png) - Click Send ![](../images/2023/05/28.png) - Go to monitor to see the result. ![](../images/2023/05/29.png) - Here’s the Account after response ![](../images/2023/05/30.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: SAP Business Bydesign adapter with operation Patch. Slug: 59631-2 URL: https://help.skyvva.com/#article/59631-2 ================================================================================ # SAP Business Bydesign adapter with operation Patch. **Introduction** The Skyvva integration platform's adapter for SAP Business ByDesign includes an operation patch feature, enabling seamless updates of records in SAP Business ByDesign from Salesforce. This feature simplifies the synchronization and accuracy of data between the two systems, streamlining workflows and eliminating the need for manual data entry. By leveraging the operation patch capability, businesses can efficiently update records in SAP Business ByDesign using the latest information from Salesforce, improving efficiency and data consistency. To Update record in sap business by design using OData, we need to using sap business by design adapter with operation Update and we need to know the ObjectID which will use in PATH Parameter. **How to using Sap Business Bydesign adapter with operation Patch?** **Pre-required** - Create Integration - Create Connection Destination in Sap bydesign. - Create Metadata and Repository - Generate Message Type of Material - Create Request Interface and linked with message Type - Create Sap Business Bydesign adapter and Linked with request Interface. **Step 1 : Create Integration ** - Here’s Integration ![](../images/2023/05/1.png) **Step2:** Create Connection Destination of SAP Business Bydesign. - Go to Integration detail-> Click Sap Control board. ![](../images/2023/05/2.png) - Destination: New, fill name, choose type: Sap Business ByDesign and click continue button. ![](../images/2023/05/3.png) - Fill Host URL which is the OData API of sap business bydeisgn, fill Username and password which have permission to access the service that to get API OData fill your path of the sap API of By design see the example below. ![](../images/2023/05/6.png) - Click Ping SAP Connection to make sure that the SAP Credential is correct. ![](../images/2023/05/7.png) **Step3: Create Metadata and Repository** - Here’s the Metadata. ![](../images/2023/05/8.png) - Here’s the Repository ![](../images/2023/05/9.png) **Step4 : Generate Material Message Type.** - Go to SAP control board -> Ping connection SAP Business Bydesign -> click Metadata. Choose the Metadata and Repository which created in step3 and click Import Sap Metadata button. ![](../images/2023/05/10.png) - Select the Application: SAP Business ByDesign, Select the connection Destination , Select Type Rest Template and click retrive button. ![](../images/2023/05/11.png) - Find the Entity that we want to do, in this case We choose Material Collection for Create, Update, Get and Delete. Then click Generate Message Type. ![](../images/2023/05/12.png) - Here’s the message type that we generate. ![](../images/2023/05/13.png) Due to we have generated already in case create record in sap by design, so we can use the template existed. In case Update Material we need to have ObjectID so we can use in mapping by add field Object ID in the node Path _Paramater as the dynamic value. - To add fields in PATH Parameter, we need to go PATH Parameter and click detail ![](../images/2023/05/31.png) - Create field ObjectID.  See the picture below. Fill the MsgType Field Entry Name and Istructure then click Save. ![](../images/2023/05/33.png) **Step 5:**  Outbound Interface. - Create Outbound Interface and linked with message type. See the picture below. ![](../images/2023/05/34.png) - Do mapping ![](../images/2023/05/35.png) **Step 6: Create Sap Business Bydesign adapter and Linked with request Interface.** Click New button and fill the required fill such as Name, Type: SAP Business By Design, Direction: Outbound, Status: Active, Protocol: Rest, Authentication Type: Basic, Operation: PATCH, API Service Endpoint URL : The URL OData material  , Request format : application/json, response format: application/json and put the connection destination. Noted: We need to use (‘ {!ObjectID}‘) in URL PATH Parameter for put the value dynamic from fields of salesforce record. ![](../images/2023/05/36.png) ![](../images/2023/05/37.png) ![](../images/2023/05/38.png) - Linked adapter with outbound Interface. ![](../images/2023/05/39.png) Callout by manual Process button on Integration - Go to integration, Click Interface tap, select request Interface and click manually processing see the picture below. Click next button. ![](../images/2023/05/40.png) - Select Account and click Execute SOQL ![](../images/2023/05/42.png) - We can do SOQL with the fields that we want. Then select Record and click Ok - Go to monitor to see the result ![](../images/2023/05/43.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: SAP Business Bydesign Adapter Operation Get to query specific records. Slug: sap-business-bydesign-adapter-operation-get URL: https://help.skyvva.com/#article/sap-business-bydesign-adapter-operation-get ================================================================================ # SAP Business Bydesign Adapter Operation Get to query specific records. **Introduction** Skyvva, with its SAP Business ByDesign adapter, offers a seamless integration solution between Salesforce and SAP Business ByDesign. In this tutorial, we will focus on utilizing the operation get feature to retrieve records from SAP Business ByDesign, enabling their insertion or updating in Salesforce. By leveraging this feature, users can efficiently fetch data from SAP Business ByDesign and ensure its accurate synchronization with Salesforce, streamlining the integration process between the two systems. To GET record in sap business by design using OData, we need to using sap business by design adapter with operation GET and we need to know the ObjectID which will use in PATH Parameter. **How to get specific record from sap business bydesign ?** **Pre-required** - Create Integration - Create Connection Destination in Sap bydesign. - Create Metadata and Repository - Generate Message Type of Material - Create Request Response Interfaces and linked with message Type - Create Sap Business Bydesign adapter and Linked with request Interface. **Step 1 : Create Integration ** - Here’s Integration ![](../images/2023/05/1.png) **Step2:** Create Connection Destination of SAP Business Bydesign. - Go to Integration detail-> Click Sap Control board. ![](../images/2023/05/2.png) - Destination: New, fill name, choose type: Sap Business ByDesign and click continue button. ![](../images/2023/05/3.png) - Fill Host URL which is the OData API of sap business bydeisgn, fill Username and password which have permission to access the service that to get API OData fill your path of the sap API of By design see the example below. ![](../images/2023/05/6.png) - Click Ping SAP Connection to make sure that the SAP Credential is correct. ![](../images/2023/05/7.png) **Step3: Create Metadata and Repository** - Here’s the Metadata. ![](../images/2023/05/8.png) - Here’s the Repository ![](../images/2023/05/9.png) **Step4 : Generate Material Message Type.** - Go to SAP control board -> Ping connection SAP Business Bydesign -> click Metadata. Choose the Metadata and Repository which created in step3 and click Import Sap Metadata button. ![](../images/2023/05/10.png) - Select the Application: SAP Business ByDesign, Select the connection Destination , Select Type Rest Template and click retrive button. ![](../images/2023/05/11.png) - Find the Entity that we want to do, in this case We choose Material Collection for Create, Update, Get and Delete. Then click Generate Message Type. ![](../images/2023/05/12.png) - Here’s the message type that we generate. ![](../images/2023/05/13.png) Due to we have generated already in case create record in sap by design, so we can use the template existed. In case Update Material we need to have ObjectID so we can use in mapping by add field Object ID in the node Path _Paramater as the dynamic value. - To add fields in PATH Parameter, we need to go PATH Parameter and click detail ![](../images/2023/05/31.png) - Create field ObjectID.  See the picture below. Fill the MsgType Field Entry Name and Istructure then click Save. ![](../images/2023/05/33.png) **Step 5:**  Create Integration, Outbound Interface. - Create Outbound Interface and linked with message type. See the picture below. ![](../images/2023/05/44.png) - Do mapping ![](../images/2023/05/45.png) - Create Inbound Interface Due to we have Inbound Interface in case 1 so we can using this interface . - Here’s Inbound Inteface. - Create Response Interface. ![](../images/2023/05/46.png) - Do mapping Linked the Response with Interface. - Go to Request Interface. ![](../images/2023/05/47.png) Linked the Response with Interface. - Go to Request Interface. ![](../images/2023/05/48.png) **Step 6:** Create SAP Business Bydesign using operation GET. ![](../images/2023/05/49.png) ![](../images/2023/05/50.png) ![](../images/2023/05/51.png) - Linked this adapter with Outbound Interface see the picture below. ![](../images/2023/05/52.png) **Step 6:** Callout by manual Process button on Integration. - Go to integration, Click Interface tap, select request Interface and click manually processing see the picture below. Click next button. ![](../images/2023/05/53.png) - Select Account and click Execute SOQL ![](../images/2023/05/54.png) - We can do SOQL with the fields that we want. Then select Record and click Ok ![](../images/2023/05/55.png) Noted: In case Update Material we have update the Description so when we are using the operation get it will get the new value from sap business by design system to salesforce. - Go to monitor to see the result ![](../images/2023/05/56.png) - Click Account to see the new value description. ![](../images/2023/05/57.png) - Here’s the result. ![](../images/2023/05/58.png) We can see the account is modified Description because we using the account to update record in case update record so when we get the record from sap business by design it will get the latest value in sap business by design. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: SAP Business ByDesign Adapter Operation Delete. Slug: sap-business-bydesign-adapter-operation-delete URL: https://help.skyvva.com/#article/sap-business-bydesign-adapter-operation-delete ================================================================================ # SAP Business ByDesign Adapter Operation Delete. **Introduction** The Skyvva adapter for SAP Business ByDesign provides a seamless connection between the SAP Business ByDesign system and Salesforce. This adapter offers a straightforward way to delete records within the SAP Business ByDesign system. With this feature, users can easily remove unwanted records, ensuring data accuracy and maintaining a clean system. To Delete record in sap business by design using OData, we need to using sap business by design adapter with operation DELETE and we need to know the ObjectID which will use in PATH Parameter. **How to delete record in sap business bydesign?** **Pre-required** - Create Integration - Create Connection Destination in Sap bydesign. - Create Metadata and Repository - Generate Message Type of Material - Create Request Interfaces and linked with message Type - Create Sap Business Bydesign adapter and Linked with request Interface. **Step 1 : Create Integration ** - Here’s Integration ![](../images/2023/05/1.png) **Step2:** Create Connection Destination of SAP Business Bydesign. - Go to Integration detail-> Click Sap Control board. ![](../images/2023/05/2.png) - Destination: New, fill name, choose type: Sap Business ByDesign and click continue button. ![](../images/2023/05/3.png) - Fill Host URL which is the OData API of sap business bydeisgn, fill Username and password which have permission to access the service that to get API OData fill your path of the sap API of By design see the example below. ![](../images/2023/05/6.png) - Click Ping SAP Connection to make sure that the SAP Credential is correct. ![](../images/2023/05/7.png) **Step3: Create Metadata and Repository** - Here’s the Metadata. ![](../images/2023/05/8.png) - Here’s the Repository ![](../images/2023/05/9.png) **Step4 : Generate Material Message Type.** - Go to SAP control board -> Ping connection SAP Business Bydesign -> click Metadata. Choose the Metadata and Repository which created in step3 and click Import Sap Metadata button. ![](../images/2023/05/10.png) - Select the Application: SAP Business ByDesign, Select the connection Destination , Select Type Rest Template and click retrive button. ![](../images/2023/05/11.png) - Find the Entity that we want to do, in this case We choose Material Collection for Create, Update, Get and Delete. Then click Generate Message Type. ![](../images/2023/05/12.png) - Here’s the message type that we generate. ![](../images/2023/05/13.png) Due to we have generated already in case create record in sap by design, so we can use the template existed. In case Update Material we need to have ObjectID so we can use in mapping by add field Object ID in the node Path _Paramater as the dynamic value. - To add fields in PATH Parameter, we need to go PATH Parameter and click detail ![](../images/2023/05/31.png) - Create field ObjectID.  See the picture below. Fill the MsgType Field Entry Name and Istructure then click Save. ![](../images/2023/05/33.png) **Step 5:**  Create Integration, Outbound Interface. - Create Outbound Interface and linked with message type. See the picture below. ![](../images/2023/05/59.png) - Do mapping ![](../images/2023/05/60.png) **Step 6:** Create SAP Business By design using operation Delete. - Here’s example. ![](../images/2023/05/61.png) ![](../images/2023/05/62.png) ![](../images/2023/05/63.png) - Linked this adapter with Outbound Interface see the picture below. ![](../images/2023/05/64.png) Callout by manual Process button on Integration. - Go to integration, Click Interface tap, select request Interface and click manually processing see the picture below. Click next button. ![](../images/2023/05/65.png) - Select Account and click Execute SOQL ![](../images/2023/05/66.png) - We can do SOQL with the fields that we want. Then select Record and click Ok ![](../images/2023/05/67.png) - Go to monitor to see the result ![](../images/2023/05/68.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: How to query limit records and all records from SAP Business Bydesign? Slug: how-to-query-limit-records-and-all-records-from-sap-business-bydesign URL: https://help.skyvva.com/#article/how-to-query-limit-records-and-all-records-from-sap-business-bydesign ================================================================================ # How to query limit records and all records from SAP Business Bydesign? **Introduction** This tutorial will learn How to  query limit records by using $skip and $top  and query all records of the Business partners Collection in SAP Business ByDesign using operation GET in SAP business Bydesign Adapter. This adapter is useful for user who want to get records from sap business ByDesign to create in salesforce. **Pre-required** - Create Integration - Create Connection destionation of sap business bydesign. - Generate SAP business bydesign message type - Create request and response Interfaces. - Create sap business bydesign adapter operation get. **How to query limit records using $skip and $top?** **Step1:** Create Integration - Here’s the Integration ![](../images/2023/05/69.png) **Step 2: **Create Connection destination of sap business Bydesign - Go to Integration detail and click sap control board. See the picture below. ![](../images/2023/05/70.png) - Click destination new , fill name and choosing type Sap Business Bydesign and click continue button. ![](../images/2023/05/71.png) Fill Host URL, Username, Password, URL path of sap business ByDesign, Company Database which is collection of sap business ByDesign that user want to use. In this case we will learn how to query Business partner. ![](../images/2023/05/1-1.png) - Click Ping Sap Connection button. ![](../images/2023/05/2-2.png) **Step 3**: Generate Message type business partner. To Generate Message type, we need to have Metadata Provider and Repository. Go to Repository  and click Import SAP Metadata. - Here’s the Repository. ![](../images/2023/05/3-1.png) - Choose Direct SAP Connetion -> Select Application: SAP Business ByDesign -> Select Sap Connection Destination ->Select Template Rest and click Retrive Button. See the picture below. ![](../images/2023/05/4-1.png) We can using Search function to find Business Partner then click the BusinessPartnerCollection and click Create Message Type button. ![](../images/2023/05/5-1.png) - Here’s the Message Type that we generated. ![](../images/2023/05/6-1.png) **Step4:** Create Request Response Interfaces. - Here’s the request Interface. ![](../images/2023/05/7-1.png) - Here’s the Response Interface. ![](../images/2023/05/8-1.png) - We need to do mapping on Response Interface. Here’s the example below. ![](../images/2023/05/9-1.png) - We need to linked between response interface and request interface. To linked response interface and request interface , we need go to Request Interface detail and scroll down to find field response interface and put the response interface with that field. - Here’s the example. ![](../images/2023/05/10-1.png) ** Step 5 :** Create SAP Business Bydesign Adapter. Go to Sap control board and click adapter tap->click new for create New Adapter. ![](../images/2023/05/11-1.png) - Click New button and fill the required fill such as Name, Type: SAP Business By Design, Direction: Outbound, Status: Active, Protocol: Rest, Authentication Type: Basic, Operation: Get, API Service Endpoint URL : The URL OData Business partner collection , Request format : application/json, response format: application/json , skip and top meaning that we can skip records and limit the records for query and put the connection destination. In this case, we will learn how to get records with limit 2 records from sap business bydesign . - Here’s the example ![](../images/2023/05/12-1.png) ![](../images/2023/05/13-1.png) ![](../images/2023/05/14-1.png) - Linked this adapter with request Interface. See the example below. ![](../images/2023/05/15-1.png) - Now we can callout data to get 2 records which is the first and second records. Select the request Interface and click Manual process button ![](../images/2023/05/16-1.png) - Select Execute Anyway, for example HTTP Get Operation without a body and click send. ![](../images/2023/05/17-1.png) - Go to Message monitor to see the result. ![](../images/2023/05/18-1.png) **How to query all records?** We can get all records from sap business ByDesign by tick the flag pagination. In the flag pagination meaning that we will get all data from sap business ByDesign for skip 0 meaning that we will get records from 1 and Top 20 meaning that we will get response 20 records in one response. We can using the same interfaces and adapter. - Here’s the adapter to get all records in sap Business ByDesign. ![](../images/2023/05/19-1.png) ![](../images/2023/05/20-1.png) ![](../images/2023/05/21-1.png) - Let's callout to see the result. ![](../images/2023/05/22-1.png) - Go to Message monitor to see the result. ![](../images/2023/05/23-1.png) It will get all records from sap business by design and in one response it get 20 records. - Here’s the 20 records of one response. ![](../images/2023/05/24-1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use mapping? Title: Introduction Slug: mapping-tool-introduction URL: https://help.skyvva.com/#article/mapping-tool-introduction ================================================================================ # Introduction Our mapping tool is a feature that enables users to define data mappings between different systems or data sources. The tool allows users to map fields from one system to fields in another system, and to transform data as needed during the mapping process. The mapping tool uses a drag-and-drop interface to simplify the mapping process, allowing users to quickly and easily create complex mappings without requiring extensive coding or technical expertise. With the mapping tool, users can map fields between different data sources, such as Salesforce and SAP, and can also perform data transformations using functions, expressions, and other tools provided by the mapping tool. The mapping tool in Skyvva is designed to help users streamline the integration of data between different systems, reducing the time and effort required to create and maintain complex integrations. It is a powerful tool that can handle a wide range of integration scenarios, including complex data transformations and mapping logic. **Inbound Mapping:-** For the inbound interface, the Mapping screen is like the screenshot below. The screen is divided into two which are Source and Target. On the Source side, the structure of the field is from an external source whether the target side contains the structure of the field from the Salesforce object. **Outbound Mapping:-** As you can see from the screen below, this is an outbound interface. The screen is divided into two as an inbound interface, however, the Source side here is containing the structure of the fields of Salesforce sObject and the Target side contains the fields of an external source. ![](../images/2019/01/Outbound_interface1.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use mapping? Title: How to Use Define External Key? Slug: how-to-use-define-external-key URL: https://help.skyvva.com/#article/how-to-use-define-external-key ================================================================================ # How to Use Define External Key? #### Introduction As you know, our inbound processing requires the definition of external keys to create a unique key for upserting, deleting, and updating data in Salesforce. We have enhanced our mapping tool to handle complex external key definitions and added a 'Define External Key' button to the Mapping tool. This button allows you to define keys using AND or OR clauses customize the logic, or create a custom class to build your own key logic. We provide these four options to build the external Key - All of the conditions are met (AND) means this is the default we currently have as the only available solution. - Any of the conditions are met (OR) means you want to provide. With this option, we can have 3 fields f1, f2, and f3 defined as key fields. But when the sender sends only f1, we use f1 as the key. If the sender sends f1 and f2 we use these two fields, and if it sends all three fields f1, f2, and f3 we use these 3 fields and choose one of them. - Customize the logic means the user has to define the logic like 1 AND (2 OR 3) - Custom Class means you can build your own key logic by creating your apex code. In this section, you will learn how to define the external key with a new design as following below: #### Option 1: All of the conditions are met (AND) **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - To perform the mapping, click the 'Open Mapping' button located on the 'Interface Detail' page. ![](../images/2023/06/Screen-Shot-2023-06-18-at-2.33.01-PM.png) - Mapping ![](../images/2023/06/Screen-Shot-2023-06-18-at-3.17.39-PM.png) - To define a specific external key for mapping, click the 'Define External Key' button. This will display a pop-up screen that allows you to select the node in the target object. Once you have made your selection, the screen will display the fields in the 'Available Fields' column. You can then drag and drop the desired fields from the 'Available Fields' to the 'Selected Fields' column to create the key. If you have a sub-node, you will need to append an arrow icon to the selected node in order to set the external key for the sub-node. ![](../images/2023/06/Screen-Shot-2023-06-18-at-3.41.19-PM.png) - In this case, we will show you how to use the 'All of the conditions are met (And)' option to define the external key. This option is already selected by default. ![](../images/2023/06/Screen-Shot-2023-06-18-at-4.44.12-PM.png) We have now selected two fields, AccountNumber and Name, for the Account object to create the external key. These fields are combined to form the external key. Additionally, we have set the LastName field for Contact and Subject as keys. Once you have finished, please click the 'Save' button. - Here is the mapping after we have defined the external key. Please click the 'Save' button to save the mapping record. ![](../images/2023/06/Screen-Shot-2023-06-18-at-5.54.29-PM.png) - Here is the same JSON payload ![](../images/2023/06/Screen-Shot-2023-06-19-at-10.41.30-AM.png) As an example, we use our SKYVVA Data Loader to push the sample JSON file above - Enter to Integration Detail Page, then click the Data Loader link in the Custom Links section. ![](../images/2023/06/Screen-Shot-2023-06-19-at-11.26.33-AM.png) - Choosing Import Data Function. - Select Interface and click next. - Select Format Data Type and click next. - Click Upload file to choose a file and click the upload button. - Select records and click the push button. ![](../images/2023/06/Screen-Shot-2023-06-19-at-11.23.33-AM.png) As a result, the first Account record will be successfully upserted because it has both external keys, namely the AccountNumber and Name fields. However, the second Account record will not be upserted because it is missing the Name field, which serves as the external key. ![](../images/2023/06/Screen-Shot-2023-06-19-at-2.04.06-PM.png) #### Option 2: Any of the conditions are met (OR) **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - To perform the mapping, click the 'Open Mapping' button located on the 'Interface Detail' page. ![](../images/2023/06/Screen-Shot-2023-06-18-at-2.33.01-PM.png) - Mapping ![](../images/2023/06/Screen-Shot-2023-06-18-at-3.17.39-PM.png) - To define a specific external key for mapping, click the 'Define External Key' button. This will display a pop-up screen that allows you to select the node in the target object. Once you have made your selection, the screen will display the fields in the 'Available Fields' column. You can then drag and drop the desired fields from the 'Available Fields' to the 'Selected Fields' column to create the key. If you have a sub-node, you will need to append an arrow icon to the selected node in order to set the external key for the sub-node. ![](../images/2023/06/Screen-Shot-2023-06-18-at-3.41.19-PM.png) - In this case, we will show you how to use the 'All of the conditions are met (OR)' option to define the external key. ![](../images/2023/06/Screen-Shot-2023-06-19-at-5.27.16-PM.png) We have now selected two fields, AccountNumber and Name, for the Account object to create the external key. Additionally, we have set the LastName field for Contact and Subject as keys, and then select 'Any of the conditions are met (OR)'. Once you have finished, please click the 'Save' button. - Here is the mapping after we have defined the external key. Please click the 'Save' button to save the mapping record. ![](../images/2023/06/Screen-Shot-2023-06-18-at-5.54.29-PM.png) - Here is the same JSON payload ![](../images/2023/06/Screen-Shot-2023-06-19-at-6.30.45-PM.png) As an example, we use our SKYVVA Data Loader to push the sample JSON file above - Enter to Integration Detail Page, then click the Data Loader link in the Custom Links section. ![](../images/2023/06/Screen-Shot-2023-06-19-at-11.26.33-AM.png) - Choosing Import Data Function. - Select Interface and click next. - Select Format Data Type and click next. - Click Upload file to choose a file and click the upload button. - Select records and click the push button. ![](../images/2023/06/Screen-Shot-2023-06-19-at-11.23.33-AM.png) As a result, both Account records will be successfully upserted because the 'OR' clause will ensure that data is upserted as long as any of the selected fields for the external key have a value. ![](../images/2023/06/Screen-Shot-2023-06-19-at-7.38.37-PM.png) #### Option 3: Customize the logic **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - To perform the mapping, click the 'Open Mapping' button located on the 'Interface Detail' page. ![](../images/2023/06/Screen-Shot-2023-06-18-at-2.33.01-PM.png) - Mapping ![](../images/2023/06/Screen-Shot-2023-06-18-at-3.17.39-PM.png) - To define a specific external key for mapping, click the 'Define External Key' button. This will display a pop-up screen that allows you to select the node in the target object. Once you have made your selection, the screen will display the fields in the 'Available Fields' column. You can then drag and drop the desired fields from the 'Available Fields' to the 'Selected Fields' column to create the key. If you have a sub-node, you will need to append an arrow icon to the selected node in order to set the external key for the sub-node. ![](../images/2023/06/Screen-Shot-2023-06-18-at-3.41.19-PM.png) - In this case, we will show you how to use the 'Customize the logic' option to define the external key. With this option, you can define the logic using expressions such as '1 AND (2 OR 3)'. ![](../images/2023/06/Screen-Shot-2023-06-19-at-7.51.49-PM.png) We have now selected three fields, AccountNumber Name, and BillingCity for the Account object to create the external key.  and then select 'Customize the logic' then please fill in the logic '1 AND(2 OR 3)'. Additionally, we have set the LastName field for Contact and Subject as keys, with the default option 'All of the conditions are met (AND)' . Once you have finished, please click the 'Save' button. - Here is the mapping after we have defined the external key. Please click the 'Save' button to save the mapping record. ![](../images/2023/06/Screen-Shot-2023-06-19-at-8.00.26-PM.png) - Here is the same JSON payload ![](../images/2023/06/Screen-Shot-2023-06-19-at-6.30.45-PM.png) As an example, we use our SKYVVA Data Loader to push the sample JSON file above - Enter to Integration Detail Page, then click the Data Loader link in the Custom Links section. ![](../images/2023/06/Screen-Shot-2023-06-19-at-11.26.33-AM.png) - Choosing Import Data Function. - Select Interface and click next. - Select Format Data Type and click next. - Click Upload file to choose a file and click the upload button. - Select records and click the push button. ![](../images/2023/06/Screen-Shot-2023-06-19-at-11.23.33-AM.png) #### Option 4: Custom Class **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - To perform the mapping, click the 'Open Mapping' button located on the 'Interface Detail' page. ![](../images/2023/06/Screen-Shot-2023-06-18-at-2.33.01-PM.png) - Mapping ![](../images/2023/06/Screen-Shot-2023-06-18-at-3.17.39-PM.png) - To define a specific external key for mapping, click the 'Define External Key' button. This will display a pop-up screen that allows you to select the node in the target object. Once you have made your selection, the screen will display the fields in the 'Available Fields' column. You can then drag and drop the desired fields from the 'Available Fields' to the 'Selected Fields' column to create the key. If you have a sub-node, you will need to append an arrow icon to the selected node in order to set the external key for the sub-node. ![](../images/2023/06/Screen-Shot-2023-06-18-at-3.41.19-PM.png) - In this case, we will show you how to use the 'Custom Class' option to define the external key. By using this option, you can define complex logic using your own custom class. Please follow an example to create the apex class to define the external key. You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Apex Classes”. - Click on "Apex Classes" ![](../images/2023/06/Screen-Shot-2023-06-21-at-8.03.39-PM.png) - Click the New Button to create a custom apex class for Define External Key ![](../images/2023/06/Screen-Shot-2023-06-21-at-8.07.27-PM.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: How to use the API InvokecalloutV3() using mode based on the Interface Setting? Slug: how-to-use-the-api-invokecalloutv3-using-mode-based-on-the-interface-setting URL: https://help.skyvva.com/#article/how-to-use-the-api-invokecalloutv3-using-mode-based-on-the-interface-setting ================================================================================ # How to use the API InvokecalloutV3() using mode based on the Interface Setting? #### Introduction: You know already that you can use invokeCalloutV3() of the outbound interface execution in the developer console, so you will set the mode parameter on the invokeCalloutV3() script. Now we have provided a new option to set the mode based on the interface setting. #### How many mode parameters are set on the interface setting? There are four modes to set on the interface setting as follows below:   - If the interface checks Use_Auto_Switch_Mode__c, it will do AUTO mode. - If the interface checks Batch_Mode__c, it will do BATCH mode. - If the interface sets Interface_Mode__c equals Synchronous, it will do SYNC mode. - If the interface set Interface_Mode__c equals Asynchronous, it will do QUEUEABLE mode. #### Pre-Requisite:- - Create Integration. - Create an Adapter e.g Rest adapter. - Create a Message type with a template e.g Rest Template. - Create Outbound Interface. - InvokeCalloutV3() method. #### The Configuring of Invoke callout using mode set on the interface setting: ##### 1: Invoke callout using Auto Switch Mode - ****Go to **interface** -> tick on **Use Auto-Switch Mode **-> **Save** button. ![](../images/2023/06/1.png) - Navigate to the **Developer Console ->** Select the **Debug **-> **Open Execute Anonymous Window -> **Enter script Code -> Then **Execute **Apex code. **The Script Code is shown below: ** `String[] ids = new String[]{}; for(Account a: [select id from account]) ids.add(a.Id); IServices.invokeCalloutV3('Integration_Name','Interface_Name',ids, new CallOutControl());` **Example:** ![](../images/2023/06/2.png) After you have executed the **Apex Code, **The auto mode will do three types of jobs based on your records and setting the package. It will check all records to the processing** Job Type **with **Future, Queueable, **and **Batch Apex**. **For example,** we call out 135 records and a record per job (not a set the transfer package size). Therefore **Future **and **Queueable **will do 50 jobs for each, and the remaining will do** Batch Apex.** - **Here is the result of Future. The 50 records will do with 50 Future jobs.** ![](../images/2023/06/3.png) - **Here is the result of Queueable. The other 50 records will do with 50 Queueable jobs.** ![](../images/2023/06/4.png) - **The remaining 35 records will process with Batch Apex** ![](../images/2023/06/5.png) - **Message Monitoring** ![](../images/2023/06/6.png) ##### 2: Invoke callout using Batch Mode - ****Go to **interface **-> then scroll down to see **Batch Setting** -> tick on **Batch Mode** -> **Save **button. ![](../images/2023/06/7.png) - Navigate to the **Developer Console ->** Select the **Debug **-> **Open Execute Anonymous Window -> **Enter script Code -> Then **Execute **Apex code. **The Script Code is shown below: ** `String[] ids = new String[]{}; for(Account a: [select id from account]) ids.add(a.Id); IServices.invokeCalloutV3('Integration_Name','Interface_Name',ids, new CallOutControl());` **Example:** ![](../images/2023/06/8.png) - After Executing** Apex Code, **it will check all records in the** Account **to the processing** Job Type **with** Batch Apex**. We are callout with 135 Account records, so the total batches will be 135 cause a record per batch. ![](../images/2023/06/9.png) - **Message Monitoring** ![](../images/2023/06/10.png) ##### 3: Invoke callout using Asynchronous Mode - Go to** interface -> Processing Mode: Asynchronous -> Leave the Transfer Package Size blank -> Save **button**.** ![](../images/2023/06/11.png) - Navigate to the **Developer Console ->** Select the **Debug **-> **Open Execute Anonymous Window -> **Enter script Code -> Then **Execute **Apex code. **The Script Code is shown below: ** `String[] ids = new String[]{}; for(Account a: [select id from account]) ids.add(a.Id); IServices.invokeCalloutV3('Integration_Name','Interface_Name',ids, new CallOutControl());` **Example:** ![](../images/2023/06/12.png) - After Executing** Apex Code, **it will check all records in the** Account **to the processing** Job Type **with** Queueable **records. ![](../images/2023/06/13.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If the Transfer Package Size is blank means a record per callout. We are callout without a set Package Size, so the processing will callout a record per job. Queueable has 50 jobs limited. If your callout is more than the job limit, the message will be new status.[/su_box] - **Message Monitoring** ![](../images/2023/06/14.png) ##### 4: Invoke callout using Synchronous Mode - Go to** interface -> Processing Mode: Synchronous -> Leave Transfer Package Size blank** **-> Save **button**.** ![](../images/2023/06/15.png) - Navigate to the **Developer Console ->** Select the **Debug **-> **Open Execute Anonymous Window -> **Enter script Code -> Then **Execute **Apex code. **The Script Code is shown below: ** `String[] ids = new String[]{}; for(Account a: [select id from account]) ids.add(a.Id); IServices.invokeCalloutV3('Integration_Name','Interface_Name',ids, new CallOutControl());` **Example:** ![](../images/2023/06/16.png) - **Message Monitoring** ![](../images/2023/06/17.png) **Result:** After you executed, it will call out all recode from an account and create a messaging API that has a business message for all records. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you use mode 'SYNC' means processing in real-time, it doesn’t show processing in the Apex Jobs.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Integration? Title: 2. How to Use Find & Replace Function? Slug: how-to-use-find-replace-function URL: https://help.skyvva.com/#article/how-to-use-find-replace-function ================================================================================ # 2. How to Use Find & Replace Function? Introduction: In this tutorial, you will learn how to use  Find & Replace Function. Find & Replace function to perform mass editing and replace data. With this function, you can search, edit, and replace the text in the IData of failed/pending messages. The Find & Replace function can be accessed from the Integration page. **Pre-requisite** - Create Integration and Inbound interface with operation upsert - Create a message type - Link a message type for the inbound interface - To get failed and pending messages, we will demonstrate how to push records via Data Loader to intentionally create failed and pending messages. - Mapping ![](../images/2023/06/9-29-2023-5-05-19-PM.png) - Create a workflow to generate pending messages when the workflow conditions are not met. Select the '**SOURCE INTERFACES'** - **Keep ****Processing Mode **as the default setting (**Pass all messages to the next step**) - **Keep setting** '**Runtime Behavior'** as default (**Continue when an error occurred)** - **Keep setting** '**Action when all Conditions not met' **as default (**Update Message Status to 'Pending**') - Click **New IWorkflow Condition **Button - Fill **BillingCity <> 'PP' **on **Condition** means is not equal to 'PP' - Click **Create New Target** Button - Choose the interface to perform this workflow - Click **Save** button Here is the sample payload to push the records ![](../images/2023/06/file.png) Here is an example, pushing records with a Data Loader in order to get the failed/pending message. - Go to the Integration Detail page - Click the Data Loader link in Custom Links Section. ![](../images/2023/06/Screen-Shot-2023-06-25-at-4.29.32-PM.png) - Choose Import Data Function and click the next button. - Select Interface and click the next button. - Format data type **CSV**, separate **Comma, **and click the next button. - Click on the Upload File button to choose a file and click the upload file button. - Select all and click the push button. ![](../images/2023/06/10-1-2023-5-21-40-PM.png) - Click search on the message monitor to see the result. The messages are pending and failed now due to the records push did not meet the condition and missing the name required fields. You will need the Find & Replace Function in order to edit the Idata of the message to make it correct for reprocessing to be successful. ![](../images/2023/06/10-1-2023-5-29-36-PM.png) - Enter to Integration Page again - Click on the Find & Replace tab. - Select the name of the interface for which you want to see the failed and pending message records. After selecting the interface, you will be able to see the list of failed and pending messages for that interface. ![](../images/2023/06/10-3-2023-11-47-34-AM.png) Now we will show you how to **'Find**' the **'phnom penh'** value of the **'BillingCity '** Field. - Fill 'phnom penh' on Find What? - Click Find Button ![](../images/2023/06/10-3-2023-11-50-59-AM.png) As a result, it will display six messages that match our filter. ![](../images/2023/06/10-3-2023-11-48-53-AM.png) There are two ways to replace values: manually replacing them or using auto-replace functionality. - **Manually Replacing** Click on the Edit button (Pen icon) ![](../images/2023/06/10-3-2023-11-52-24-AM.png) - Fill the "pp" text into the edit box text - Click Save button ![](../images/2023/06/10-3-2023-11-54-18-AM.png) The value has saved successfully ![](../images/2023/06/10-3-2023-12-04-33-PM.png) - **Auto-replace functionality**  replace the value 'Phnom Penh' with the value 'TK' in the 'BillingCity' field. - Click Replace button - Select "Exactly match records?" [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - When you select 'Exactly match records,' only the exact word will be replaced. - When you select 'All records that contain the search string,' all values containing the search string will be replaced with the new word. [/su_box] - Click Ok ![](../images/2023/06/10-3-2023-11-57-55-AM.png) - Then Click Save ![](../images/2023/06/10-3-2023-12-00-22-PM.png) Now field of 'BillingCity' has the value 'Phnom Penh' replaced with the value 'TK' ![](../images/2023/06/10-3-2023-12-02-03-PM.png) Now we will show you how to replace the 'Blank' value of the Name with "N Blank" - Leave Blank value on Find What? - Click Find Button As a result, it will display ten messages that match our filter. ![](../images/2023/06/10-3-2023-2-00-44-PM.png) - Fill the "N Blank" text into Replace With? - Click Replace button - Select "Exactly match records?" - Click Ok ![](../images/2023/06/10-3-2023-2-02-55-PM.png) - Then Click Save ![](../images/2023/06/10-2-2023-6-09-58-PM.png) After click save button ![](../images/2023/06/10-3-2023-2-04-30-PM.png) Now that the Name and BillingCity values have been replaced, it is time to reprocess the message to ensure that the values have been replaced correctly. - Go to Message Monitor - Select the Message then click Reprocess button ![](../images/2023/06/10-3-2023-9-50-22-AM.png) After reprocessing the message, the account will be upserted into Salesforce. ![](../images/2023/06/10-3-2023-10-09-17-AM.png) [su_box title="Note:" box_color="#2a8af0" title_color="#000000"]On the sub-interface for 'Find' and 'Replace' data, it works the same as the main interface.[/su_box] If you want to 'Find' and 'Replace' data on the sub-interface, please click on it. - Here's the screen of the sub-interface ![](../images/2023/06/10-3-2023-10-36-02-AM.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Ms Access Database ? Title: Introduction Slug: introduction URL: https://help.skyvva.com/#article/introduction ================================================================================ # Introduction **Ms Access database:** users can create databases to store and organize large amounts of data in a structured manner. It offers various features such as tables, forms, queries, reports, and macros to facilitate data entry, manipulation, and analysis. Users can define relational and tween tables, enforce data integrity rules, and create user-friendly interfaces to interact with the data. **The Ms Access adapter detail** The MS Access adapter is a software component that facilitates the integration and communication between Microsoft Access with **SKYVVA** Agent databases. It acts as a bridge, allowing Access to connect with **SKYVVA** Agent, such as SQL servers, Oracle databases etc. The Ms Access Adapter provides a set of tools and functionality that enables users to import, export, and manipulate data between Access with **SKYVVA** Agent. It allows Access users to establish connections, retrieve data, perform queries, and update records in **SKYVVA** Agent. By using the MS Access adapter, users can leverage the features and capabilities of Access while seamlessly working with data from **SKYVVA** Agent. It simplifies data management tasks, enhances data sharing and collaboration, and expands the possibilities of Access by enabling integration with **SKYVVA** Agent. Ms Access is a relational database management system (RDBMS) developed by Microsoft. It allows users to store, manage, and manipulate data using a graphical user interface. SKYVVA Agent, on the other hand, is a data integration tool that enables seamless communication and integration between different systems. To integrate Ms Access with **SKYVVA** Agent, you can follow these general steps: - Install and set up **SKYVVA** Agent: Obtain the necessary installation files for **SKYVVA** Agent and follow the installation instructions provided by the vendor. Set up the required configurations, such as connection details and authentication. - Configure Ms Access as a data source: In **SKYVVA** Agent, configure Ms Access as a data source by providing the necessary connection details, such as the file path of the Ms Access database, login credentials (if applicable), and any other relevant settings. - Define data extraction rules: Specify the data extraction rules in **SKYVVA** Agent to determine which tables, queries, or views from the Ms Access database you want to extract data from. Define the mapping of fields between Ms Access and the target system where you want to integrate the data. - Set up data transformation and mapping: Configure data transformation rules and mappings within **SKYVVA** Agent to convert the extracted data from Ms Access into the format required by the target system. This may involve data manipulation, formatting, or applying business rules. - Configure target system integration: Define the integration settings for the target system where you want to send the data from Ms Access. This can include connection details, authentication, and any specific requirements or protocols supported by the target system. - Schedule and execute data integration: Set up a schedule or trigger in **SKYVVA** Agent to automate the data integration process between Ms Access and the target system. This ensures that data is synchronized or transferred according to the defined rules and intervals. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The specific steps and configurations may vary depending on the version of **SKYVVA** Agent you are using and the requirements of your integration scenario. It's recommended to refer to the documentation and guides provided by **SKYVVA** or consult their support resources for detailed instructions specific to your setup.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use Ms Access Outbound Adapter with Operation type—insert ? Slug: how-to-use-ms-access-outbound-adapter-with-operation-type-insert URL: https://help.skyvva.com/#article/how-to-use-ms-access-outbound-adapter-with-operation-type-insert ================================================================================ # How to use Ms Access Outbound Adapter with Operation type—insert ? **The configuration of Ms Adapter on Salesforce** This section will be explained the process of configuring the Ms Access adapter on Salesforce. You can follow the steps given below: - Log in to Salesforce and create an Outbound interface. - Operation type—insert. - Source/Target Message Type--Request - Processing Mode—Synchronous ![](../images/2023/06/image_2023_06_29T14_34_51_471Z.png) - Outbound Adapter link with outbound Setup ![](../images/2023/06/image_2023_06_29T14_36_15_775Z.png) - Outbound properties - dbtype---MsAccess - connectionURL - adapter_instance ![](../images/2023/06/image_2023_06_29T14_37_59_545Z.png) - SOQL Query to Select sObject and table from Database ![](../images/2023/06/image_2023_06_29T14_39_10_993Z.png) - Mapping ![](../images/2023/06/image_2023_06_29T14_39_44_648Z.png) - Message Monitor ![](../images/2023/06/image_2023_06_29T14_41_01_031Z.png) - Ms Access database inserted operation records successfully . ![](../images/2023/06/image_2023_06_29T14_41_54_613Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use message reprocessing? Title: 10.4. How to Message Reprocess In Batch on Message Details? Slug: 10-4-how-to-message-reprocess-in-batch-on-message-details URL: https://help.skyvva.com/#article/10-4-how-to-message-reprocess-in-batch-on-message-details ================================================================================ # 10.4. How to Message Reprocess In Batch on Message Details? #### Introduction: This tutorial explains to you what the Message 'Reprocess In Batch' is and why we need this functionality. It describes the manual process which is performed by the 'IServiceBatchReprocess' job. #### What is Reprocess In Batch? The ‘Reprocess In Batch’ button, located on the Message Detail page, triggers the ‘IServiceBatchReprocess’ job to perform message reprocessing in the batch. You will need it when you have many messages in a root message in order to reprocess to avoid unexpected limit exceed happening. #### Pre-requisite - Create an Integration - Create an Inbound Interface with batch mode - Do Mapping, we have to make the failed message by missing the ‘External Key’ child (contact). ![](../images/2023/07/Screen-Shot-2023-07-02-at-4.27.10-PM.png) We will show you how to repossess many messages from the batch basket. - Check the 'Batch Mode' option on your interface. - Set '2000' on 'Batch Package Size' - Push two thousand records per batch basket to ensure that Basket Message covers the two thousand businesses message. You can use either the Skyvva Agent or IntegrateWithIMessage API to push the records. **Here is the batch basket that has been pushed.** ![](../images/2023/07/Screen-Shot-2023-07-02-at-4.35.29-PM.png) - Please select this batch basket - Click Reprocess button ![](../images/2023/07/Screen-Shot-2023-07-02-at-5.23.58-PM.png) After the Basket Processing, the Apex Job will process 2 batches per job, with each batch containing up to 1000 records. ![](../images/2023/07/Screen-Shot-2023-07-02-at-9.32.51-PM.png) After the Apex job was completed, we received two partial completed Basket Messages because the contact child of the account message had failed (No Define External Id). Please review the messages on the Message Monitoring page. ![](../images/2023/07/Screen-Shot-2023-07-02-at-10.19.10-PM.png) - Navigate to the Mapping page to define the External Id for the contact, so that message reprocessing can be performed for completed messages. ![](../images/2023/07/Screen-Shot-2023-07-02-at-10.46.29-PM.png) - Select a message above in order to view all messages associated with the corresponding Basket Message listed below. - Click the 'Reprocess In Batch' button ![](../images/2023/07/Screen-Shot-2023-07-02-at-10.38.20-PM.png) When clicked, it will open a popup screen to confirm the processing. - Click the 'Yes' button ![](../images/2023/07/Screen-Shot-2023-07-02-at-10.41.53-PM.png) After clicking the 'Yes' button, it will alert message** ‘The Selected message are under Processing…, Please check ApexJob and Refresh’** ![](../images/2023/07/Screen-Shot-2023-07-02-at-10.53.28-PM.png) Here is the Apex job for the reprocessed message. Please wait for the processing to complete, and then check the message. ![](../images/2023/07/Screen-Shot-2023-07-02-at-10.56.14-PM.png) After the Apex job is completed, it will update the status of the message to indicate that it has been processed. They are all completed messages now. ![](../images/2023/07/Screen-Shot-2023-07-02-at-10.58.55-PM.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use mapping? Title: How to Use Re-Order Button on Mapping Tool? Slug: how-to-use-re-order-button-on-mapping-tool URL: https://help.skyvva.com/#article/how-to-use-re-order-button-on-mapping-tool ================================================================================ # How to Use Re-Order Button on Mapping Tool? #### Introduction 'Re-Order Mapping' is located on the Mapping Tool, which allows you to reorder mapping records by sequence. This change also prevents users from reordering records in Data Mapping. When the button is used, the sequence field is reorganized during the callout of the record, and the resulting payload records are sorted in ascending sequence numbers. These improvements result in a more efficient and organized data payload sequence structure. #### How Re-Order Field Mapping and Callout With SAP CPI Adapter? In this lesson, you will learn how to reorder the mapping fields of the outbound interface and perform the manual process using the SAP CPI Adapter, as shown below: #### Pre-requisite - Create new Integration - Create an SAP CPI Outbound Adapter ![](../images/2023/07/Screen-Shot-2023-07-10-at-7.24.28-PM.png) - Create Message Type - Create a new Outbound Interface - Link the Message Type and Adapter with the interface ![](../images/2023/07/Screen-Shot-2023-07-10-at-3.26.43-PM.png) - Do Mapping Here is just an example: we have mapped 'MyAccount' Message Type to the Account sObject and 'MyContact' Message Type to the Contact sObject. The current Mapping order is as follows: - MyAccount AccountNumber - BillingCity - BllingCountry - Name - MyContact Email - FirstName - LastName - Phone ![](../images/2023/07/Screen-Shot-2023-07-10-at-3.32.02-PM.png) - Re-Order Field Mapping Re-Order Field Mapping of MyAccount Message Type Click the **Re-Order Mapping** button - Select **ReOrder Fields** on '**Choose a Option:**'. There are different types of reordering: Reorder Fields and Reorder Node. Reorder Fields allows you to sort fields while selecting Reorder Node allows you to sort nodes. - From the dropdown list of '**Target Object**', select the node for which you want to change the field sequence. For example, select '**MyAccount**'. To choose a sub-node, click on the arrow right sign to expand the list. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]By default, the target object will have a 'rootNode' even if our business message type does not have it. This is used to store fields without nodes and to wrap all mapping nodes and fields[/su_box] ![](../images/2023/07/Screen-Shot-2023-07-10-at-5.44.46-PM.png) Now the MyAccount sub-node of the rootNode will be displayed. ![](../images/2023/07/Screen-Shot-2023-07-10-at-5.43.37-PM.png) - To reorder fields, select a row and move it up or down to the desired position in the order. ![](../images/2023/07/Screen-Shot-2023-07-10-at-4.16.19-PM.png) MyAccount Mapping Fields Before Re-Order MyAccount Mapping Fields After Re-Order AccountNumber AccountNumber BillingCity Name BllingCountry BillingCity Name BillingCountry - Re-Order Field Mapping of MyContact Message Type Select the 'MyContact' sub-node on 'Target Object'. - To reorder fields, select a row and move it up or down to the desired position in the order. ![](../images/2023/07/Screen-Shot-2023-07-10-at-6.44.09-PM.png) - MyContact Mapping Fields Before Re-Order MyContact Mapping Fields After Re-Order Email LastName FirstName FirstName LastName Email Phone Phone - After clicking the **Save** button, the pop-up screen will close and the re-ordered mapping will be saved into Data Mapping. ![](../images/2023/07/Screen-Shot-2023-07-10-at-6.54.43-PM.png) - Afterward, click the Save button to save the mapping record. - You can make callouts using the developer console, manual processing, or scheduled processing. Now, we will show you execute Interface with manual processing You need to filter your records to be callout on Filter Query on SOQL Query for the Filter sObject section ![](../images/2023/07/Screen-Shot-2023-07-10-at-7.31.08-PM.png) - Go to Interface Detail Pages - Click on the **Manual Process** Button - Select "**Use the SOQL statement on the interface to select the sObject?**" - Click **Send** Button ![](../images/2023/07/Screen-Shot-2023-07-10-at-7.34.24-PM.png) - After clicking **Send** Button, it will alert the message "The Interfaces__c has been executed. Please check the message monitor" - After the execution is complete, messages will be created. Please go to Message Monitoring to check them. ![](../images/2023/07/Screen-Shot-2023-07-10-at-7.10.41-PM.png) Finally, the payload is generated based on the mapping order. ![](../images/2023/07/Screen-Shot-2023-07-10-at-7.11.34-PM.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use Ms Access inbound adapter with operation type—upsert ? Slug: how-to-use-ms-access-inbound-adapter-with-operation-type-upsert URL: https://help.skyvva.com/#article/how-to-use-ms-access-inbound-adapter-with-operation-type-upsert ================================================================================ # How to use Ms Access inbound adapter with operation type—upsert ? **The configuration of Ms Adapter on Salesforce** This section will be explained the process of configuring the Ms Access adapter on Salesforce. You can follow the steps given below: - Log in to Salesforce and create an inbound interface. - Operation type—upset. - Source/Target Message Type--Response - Processing Mode—Synchronous ![](../images/2023/07/image_2023_07_12T14_51_05_297Z.png) - Inbound Adapter link with Inbound Setup ![](../images/2023/07/image_2023_07_12T14_52_41_890Z.png) - Inbound properties - dbtype---MsAccess - connectionURL - adapter_instance ![](../images/2023/07/image_2023_06_29T14_37_59_545Z.png) - Database Query to Select sObject and table from Database ![](../images/2023/07/image_2023_07_12T14_58_02_805Z.png) - Mapping ![](../images/2023/07/image_2023_07_12T14_59_07_896Z.png) - Message Monitor ![](../images/2023/07/image_2023_07_12T15_00_15_738Z.png) - Ms Access database upserted operation records successfully. ![](../images/2023/07/image_2023_07_12T15_01_03_739Z.png) - Salesforce Account by data from the access table upserted records successfully. ![](../images/2023/07/image_2023_07_19T15_13_53_586Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use Ms Access inbound adapter with operation type—update ? Slug: how-to-use-ms-access-inbound-adapter-with-operation-type-update URL: https://help.skyvva.com/#article/how-to-use-ms-access-inbound-adapter-with-operation-type-update ================================================================================ # How to use Ms Access inbound adapter with operation type—update ? **The configuration of Ms Adapter on Salesforce** This section will be explained the process of configuring the Ms Access adapter on Salesforce. You can follow the steps given below: - Log in to Salesforce and create an inbound interface. - Operation type—update. - Source/Target Message Type--Response - Processing Mode—Synchronous ![](../images/2023/07/image_2023_07_18T10_52_35_114Z.png) - Inbound Adapter link with Inbound Setup ![](../images/2023/07/image_2023_07_12T14_52_41_890Z.png) - Inbound properties - dbtype---MsAccess - connectionURL - adapter_instance ![](../images/2023/07/image_2023_06_29T14_37_59_545Z.png) - Database Query to Select sObject and table from Database ![](../images/2023/07/image_2023_07_12T14_58_02_805Z.png) - Mapping ![](../images/2023/07/image_2023_07_12T14_59_07_896Z.png) - Message Monitor ![](../images/2023/07/image_2023_07_18T10_55_03_586Z.png) - Ms Access database updated operation records successfully. ![](../images/2023/07/image_2023_07_12T15_01_03_739Z.png) - Salesforce Account by data from the access table updated records successfully. ![](../images/2023/07/image_2023_07_19T13_00_33_846Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use Ms Access inbound adapter with operation type—delete ? Slug: how-to-use-ms-access-inbound-adapter-with-operation-type-delete URL: https://help.skyvva.com/#article/how-to-use-ms-access-inbound-adapter-with-operation-type-delete ================================================================================ # How to use Ms Access inbound adapter with operation type—delete ? **The configuration of Ms Adapter on Salesforce** This section will be explained the process of configuring the Ms Access adapter on Salesforce. You can follow the steps given below: - Log in to Salesforce and create an inbound interface. - Operation type—delete. - Source/Target Message Type--Response - Processing Mode—Synchronous ![](../images/2023/07/image_2023_07_18T13_41_35_479Z.png) - Inbound Adapter link with Inbound Setup ![](../images/2023/07/image_2023_07_12T14_52_41_890Z.png) - Inbound properties - dbtype---MsAccess - connectionURL - adapter_instance ![](../images/2023/07/image_2023_06_29T14_37_59_545Z.png) - Database Query to Select sObject and table from Database ![](../images/2023/07/image_2023_07_12T14_58_02_805Z.png) - Mapping ![](../images/2023/07/image_2023_07_12T14_59_07_896Z.png) - Message Monitor ![](../images/2023/07/image_2023_07_18T13_42_08_877Z.png) - Ms Access database delete operation records successfully. ![](../images/2023/07/image_2023_07_12T15_01_03_739Z.png) - Delete Account Id successfully. ![](../images/2023/07/image_2023_07_18T13_54_56_229Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use Ms Access inbound adapter with operation type—insert ? Slug: how-to-use-ms-access-inbound-adapter-with-operation-type-insert URL: https://help.skyvva.com/#article/how-to-use-ms-access-inbound-adapter-with-operation-type-insert ================================================================================ # How to use Ms Access inbound adapter with operation type—insert ? **The configuration of Ms Adapter on Salesforce** This section will be explained the process of configuring the Ms Access adapter on Salesforce. You can follow the steps given below: - Log in to Salesforce and create an inbound interface. - Operation type—insert . - Source/Target Message Type--Response - Processing Mode—Synchronous ![](../images/2023/07/image_2023_07_19T11_03_06_651Z.png) - Inbound Adapter link with Inbound Setup ![](../images/2023/07/image_2023_07_12T14_52_41_890Z.png) - Inbound properties - dbtype---MsAccess - connectionURL - adapter_instance ![](../images/2023/07/image_2023_06_29T14_37_59_545Z.png) - Database Query to Select sObject and table from Database ![](../images/2023/07/image_2023_07_12T14_58_02_805Z.png) - Mapping ![](../images/2023/07/image_2023_07_12T14_59_07_896Z.png) - Message Monitor ![](../images/2023/07/image_2023_07_19T11_17_12_090Z.png) - Ms Access database insert operation records successfully. ![](../images/2023/07/image_2023_07_12T15_01_03_739Z.png) - Salesforce Account by data from the access table insert records successfully. ![](../images/2023/07/image_2023_07_19T11_54_00_562Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use Ms Access Outbound Adapter with Operation type—upsert ? Slug: how-to-use-ms-access-outbound-adapter-with-operation-type-upsert URL: https://help.skyvva.com/#article/how-to-use-ms-access-outbound-adapter-with-operation-type-upsert ================================================================================ # How to use Ms Access Outbound Adapter with Operation type—upsert ? **The configuration of Ms Adapter on Salesforce** This section will be explained the process of configuring the Ms Access adapter on Salesforce. You can follow the steps given below: - Log in to Salesforce and create an Outbound interface. - Operation type—upsert. - Source/Target Message Type--Request - Processing Mode—Synchronous ![](../images/2023/07/image_2023_07_20T15_31_07_699Z.png) - Outbound Adapter link with outbound Setup ![](../images/2023/06/image_2023_06_29T14_36_15_775Z.png) - Outbound properties - dbtype---MsAccess - connectionURL - adapter_instance ![](../images/2023/06/image_2023_06_29T14_37_59_545Z.png) - SOQL Query to Select sObject and table from Database ![](../images/2023/06/image_2023_06_29T14_39_10_993Z.png) - Mapping ![](../images/2023/07/image_2023_07_27T12_44_41_294Z.png) - Message Monitor ![](../images/2023/07/image_2023_07_27T12_47_18_111Z.png) - Ms Access database upsert operation records successfully . ![](../images/2023/07/image_2023_07_27T12_52_47_534Z.png) - Salesforce Account by data from the access table upserted records successfully. ![](../images/2023/07/image_2023_07_27T12_55_27_652Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use MS Access outbound adapter with operation type—update ? Slug: how-to-use-ms-access-outbound-adapter-with-operation-type-update URL: https://help.skyvva.com/#article/how-to-use-ms-access-outbound-adapter-with-operation-type-update ================================================================================ # How to use MS Access outbound adapter with operation type—update ? **The configuration of Ms Adapter on Salesforce** This section will be explained the process of configuring the Ms Access adapter on Salesforce. You can follow the steps given below: - Log in to Salesforce and create an Outbound interface. - Operation type—update. - Source/Target Message Type--Request - Processing Mode—Synchronous ![](../images/2023/07/image_2023_07_20T15_28_25_006Z.png) - Outbound Adapter link with outbound Setup ![](../images/2023/06/image_2023_06_29T14_36_15_775Z.png) - Outbound properties - dbtype---MsAccess - connectionURL - adapter_instance ![](../images/2023/06/image_2023_06_29T14_37_59_545Z.png) - SOQL Query to Select sObject and table from Database ![](../images/2023/06/image_2023_06_29T14_39_10_993Z.png) - Mapping ![](../images/2023/06/image_2023_06_29T14_39_44_648Z.png) - Message Monitor ![](../images/2023/07/image_2023_07_21T08_45_01_614Z.png) - Ms Access database update operation records successfully . ![](../images/2023/07/image_2023_07_21T09_08_28_228Z.png) - Salesforce Account by data from the access table updated records successfully. ![](../images/2023/07/image_2023_07_21T09_05_11_510Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use MS Access outbound adapter with operation type—delete ? Slug: how-to-use-ms-access-outbound-adapter-with-operation-type-delete URL: https://help.skyvva.com/#article/how-to-use-ms-access-outbound-adapter-with-operation-type-delete ================================================================================ # How to use MS Access outbound adapter with operation type—delete ? **The configuration of Ms Adapter on Salesforce** This section will be explained the process of configuring the Ms Access adapter on Salesforce. You can follow the steps given below: - Log in to Salesforce and create an Outbound interface. - Operation type—delete. - Source/Target Message Type--Request - Processing Mode—Synchronous ![](../images/2023/07/image_2023_07_20T15_26_09_037Z.png) - Outbound Adapter link with outbound Setup ![](../images/2023/06/image_2023_06_29T14_36_15_775Z.png) - Outbound properties - dbtype---MsAccess - connectionURL - adapter_instance ![](../images/2023/06/image_2023_06_29T14_37_59_545Z.png) - SOQL Query to Select sObject and table from Database ![](../images/2023/06/image_2023_06_29T14_39_10_993Z.png) - Mapping ![](../images/2023/06/image_2023_06_29T14_39_44_648Z.png) - Message Monitor ![](../images/2023/06/image_2023_06_29T14_41_01_031Z.png) - Ms Access database delete operation records successfully . ![](../images/2023/06/image_2023_06_29T14_41_54_613Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Export data without header for Agent component ? Title: How to export CSV using Agent File Adapter in Protocol Local? Slug: how-to-export-csv-using-agent-file-adapter-in-protocol-local-2 URL: https://help.skyvva.com/#article/how-to-export-csv-using-agent-file-adapter-in-protocol-local-2 ================================================================================ # How to export CSV using Agent File Adapter in Protocol Local? **Introduction ** This tutorial will explain how to export CSV using Agent File Adapter. Agent File adapter for producer uses for writing data from salesforce to file. To use an Agent File adapter for Producer, we need to configure the Agent Control Board and create an outbound Agent File Adapter. **Pre-required** - Create Integration - Do configuration on the Agent Control Board - Create Agent File Adapter (Outbound) on Agent Control Board - Create Metadata Provider, Repository, and Message Type - Create Outbound Interface - Check the Cache monitoring status **How to export CSV using Agent File Adapter in the protocol: local?** Step-1: Create Integration and test connection destination Create new Integration by following the guide, the link is given below: [#article/what-is-an-integration-and-how-to-create-it](#article/what-is-an-integration-and-how-to-create-it) - Navigate to AGENT Control Board as shown below. ![](../images/2023/08/1.png) - In the Configuration tab enter the connection destination name and click on the button “Continue” ![](../images/2023/08/2.png) - Fill in all the required details - Click the button Ping Agent Connection ![](../images/2023/08/3.png) - Fill in all the required details - Click the button Ping Salesforce Connection ![](../images/2023/08/4.png) Step-2: Create an Outbound Agent File Adapter on the new Agent Control Board - Navigate to the Adapter tab after that click the button New ![](../images/2023/08/5.png) - Name: *any Name* - Type: *Agent File * - Direction: *Outbound* - Protocol: *Local* - File Type: *CSV* - Folder: *(your folder location)* - File Name: *(your file name)* - File Handling Mode: *(choose file mode)* - Connection Destination: *(your destination name)* ![](../images/2023/08/6.png) Step-3: Create Message Type - Create Metadata Provider - Create Repository, click on the Open Editor button ![](../images/2023/08/10.png) - After that, we got the Message Type ![](../images/2023/08/11.png) Step 4: Create an Interface - For creating the interface need to follow this guide: [#article/1-what-is-an-interface-and-how-to-create-it](#article/1-what-is-an-interface-and-how-to-create-it) - Create an Outbound Interface for Asynchronous mode, Operation(upsert), Choose Adapter, Metadata Provider, Repository, and Message Type ![](../images/2023/08/12.png) - Mapping ![](../images/2023/08/13.png) Step5: Check cache status - Go to Agent control board then click Cache Monitor ![](../images/2023/08/14.png) Step6: Manual process - Navigate to the Interface tab and select the interface ![](../images/2023/08/15.png) - Click on the Manual Process button and choose the second radio - Click Send ![](../images/2023/08/16.png) - As a result of message monitoring, the record has been sent from Salesforce to file ![](../images/2023/08/17.png) - CSV File ![](../images/2023/08/18.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Excel, Xml, Json file, user can do the same as CSV file. But the user only needs to change the file Protocol, adapter, and properties accordingly. - Select Type: Agent File - File Type: Choose the file type - For few extension use (.CSV, .xlsx, .xml, .json)[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Export data without header for Agent component ? Title: How to export XML using Agent File Adapter in protocol SFTP? Slug: how-to-export-xml-using-agent-file-adapter-in-protocol-sftp URL: https://help.skyvva.com/#article/how-to-export-xml-using-agent-file-adapter-in-protocol-sftp ================================================================================ # How to export XML using Agent File Adapter in protocol SFTP? **Introduction ** In this tutorial, we will explain about how to export XML using Agent File Adapter. Agent File adapter for producer uses for writing data from salesforce to file. To use the Agent File adapter for Producer, we need to configure the Agent Control Board, and we need to create an outbound Agent File Adapter. **Pre-required** - Create Integration - Do configuration on the Agent Control Board - Create Agent File Adapter (Outbound) on Agent Control Board - Create Metadata Provider, Repository, and Message Type - Create Outbound Interface - Check the Cache monitoring status **How to export XML using Agent File Adapter in the protocol: SFTP? ** Step-1: Create Integration and test connection destination Create new Integration by following the guide, the link is given below: [#article/what-is-an-integration-and-how-to-create-it](#article/what-is-an-integration-and-how-to-create-it) - Navigate to AGENT Control Board as shown below. ![](../images/2023/08/1-1.png) - In the Configuration tab enter the connection destination name and click on the button “Continue” ![](../images/2023/08/2-1.png) - Fill in all the required details - Click the button Ping Agent Connection ![](../images/2023/08/3-1.png) - Fill in all the required details - Click the button Ping Salesforce Connection ![](../images/2023/08/4-1.png) Step-2: Create an Outbound Agent File Adapter on the new Agent Control Board - Navigate to the Adapter tab after that click the button New ![](../images/2023/08/5-1.png) - Name: *any Name * - Type: *Agent File * - Direction: *Outbound* - Protocol: *(your SFTP)* - Host: *(your Public IP Address)* - Username: *(your SFTP Username)* - Password: *(your SFTP password) * - Port:*( your SFTP Server Port) * - File Type: *XML* - Folder: *(your folder location SFTP)* - File Name: *(your File Name)* - XML Root Tag: *your root tag of XML* - File Handling Mode: *(Choose File Mode)* - Connection Destination: *(your destination name)* ![](../images/2023/08/19.png) Step-3: Generate Message Type from the file - Create Metadata Provider - Create Repository - Go to the Repository details page then click the Open Editor button ![](../images/2023/08/7-1.png) - Input an XML format ![](../images/2023/08/8-1.png) - After that, you get the Message Type generated as a template from the file ![](../images/2023/08/9-1.png) Step 4: Create an Interface - For creating the interface need to follow this guide: [#article/1-what-is-an-interface-and-how-to-create-it](#article/1-what-is-an-interface-and-how-to-create-it) - Create an Outbound Interface for Operation(upsert), Choose Adapter, Metadata Provider, Repository, and Message Type ![](../images/2023/08/15-1.png) - Mapping ![](../images/2023/08/12-1.png) Step-5: Check cache status - Go to Agent control board then click Cache Monitor ![](../images/2023/08/13-1.png) Step-6: Manual Process - Navigate to the interface tab and select the interface ![](../images/2023/08/14-1.png) - Click on the Manual Process button and choose the second radio - Click Send ![](../images/2023/08/16-1.png) - As a result of message monitoring, the record has been sent from salesforce to file ![](../images/2023/08/17-1.png) - XML File ![](../images/2023/08/18-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For CSV, Excel, and JSON files, users can do the same as XML files. But the user only needs to change the file protocol, adapter, and properties accordingly. - Select type: Agent file - File extension: choose your file extension For few extension use (.CSV, .xlsx, .xml, .json)[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Set the status for the empty message Title: How do user use cases to get the error no message? Slug: how-do-we-use-cases-to-get-the-error-no-message URL: https://help.skyvva.com/#article/how-do-we-use-cases-to-get-the-error-no-message ================================================================================ # How do user use cases to get the error no message? To understand this function, user, need to keep follow the field on the interface; therefore, this function will be available only in version 2.51. The field is a picklist field and contains the following values: - Raise an Error and set the status to '**Failed**' - Raise a Warning and set the status to '**Pending**' - Raise a Warning and set the status to '**Cancelled**' **Name**: ***skyvvasolutions__empty_message_handling__c*** **Label**: What to do with an empty message? **Type**: picklist **Description**: This flag indicates how to handle an empty message. **Help**: Set this flag to handle the behavior if the message is empty. If nothing is set, the default is setting the status of the empty message to '**Failed**'. This flag can be set on the root and also on the child interface. The empty message means that the message has no **data__c** Here is an example on the screenshot: ![](../images/2023/08/r.png) - How do user use cases to get the error no message? - The error occurs when the payload does not match the mapping message type on the interface. ![](../images/2023/08/a.png) - This is the result after sending data from Postman to Salesforce and we get the failed message that has no data. ![](../images/2023/08/h.png) - Where to set empty data in messages to status **Failed**, **Pending** and **Cancelled** - Go interface detail and then choose any picklist in **What to do with an empty message?** field [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The picklist None and Raise an **Error** and set the status to '**Failed**' (detail) they the same.[/su_box] ![](../images/2023/08/m.png) - Here is the use case send data from Postman to Salesforce and raise a warning and set the status message to **Pending**. ![](../images/2023/08/m-1.png) ![](../images/2023/08/m-2.png) - Here is the use case send data from Postman to Salesforce and raise a warning and set the status message to **Cancelled**. ![](../images/2023/08/m-3.png) Use case user call **Request** and **Response** message via adapter service like **REST** and **SOAP** - What to do with an empty message? field is not working. - Here is an example Response failed message and the message has no **data_c** - Execution of the response message should be to change the status failed to **Pending** or **Cancelled** based on choose picklist in What to do with an empty message? field. ![](../images/2023/08/m-5.png) ![](../images/2023/08/m-6.png) - Call Mode = Asynchronous - What to do with an empty message? = **Pending** ![](../images/2023/08/m-7.png) **Summary **: This flag indicates how to handle an empty message. Raise an Error and set the status to '**Failed**' Raise a Warning and set the status to '**Pending**' Raise a Warning and set the status to '**Cancelled**' ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new button test mapping ? Title: Introduction Slug: 1-introduction-new-button-test-mapping URL: https://help.skyvva.com/#article/1-introduction-new-button-test-mapping ================================================================================ # Introduction - **Inbound Mapping:** The source panel will show the text area where the user can modify the template we provide as SoapUI does. We support CSV, XML, and Json formats. The user can enter the data into the template and execute the mapping test. The mapping result is shown in a table tree view on the left panel. We don't need to show the mapping result in a text area as CSV, XML, or Json. The mapping result shows the result in a table view, and there is no need to make any changes. The mapping result contains the final data with the sObject field names ready to be posted. But we are not doing the real posting. We show only the mapping result for debugging purposes and analysis. - **Outbound Mapping: **The source side shows the sObject and the mapping result in a table tree view is displayed on the target side. We provide the query editor to let the user choose a sObject record where we read the data and provide for the mapping test. Then the user doesn't need to enter the complete data. He can modify the data we have read from the record if needed. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new button test mapping ? Title: Inbound Mapping Slug: 2-inbound-mappingnew-button-test-mapping URL: https://help.skyvva.com/#article/2-inbound-mappingnew-button-test-mapping ================================================================================ # Inbound Mapping It is the feature of the inbound mapping functionality of a **SKYVVA** application, an integration tool. Here's a breakdown of what we have mentioned: - **Source Panel**: This is where users can input or modify a template. The template appears to be provided in a format compatible with CSV, XML, or JSON. - **Supported Formats**: Users can work with data templates in three formats: CSV, XML, and JSON. This flexibility allows users to manipulate data in the format they prefer or that suits their business requirement integration needs. - **Data Entry**: Users can enter data into the provided template. This suggests that the **SKYVVA** application allows users to customize the template according to their business requirements. - **Mapping**: After entering data into the template, users can execute a mapping process. This mapping transformations to the data as per the mapping configuration. - **Mapping Result Display**: The mapping results are displayed in a table tree view on the left panel. This view provides a structured and organized representation of the mapped data. - **Result Format**: The mapping results are not displayed as CSV, XML, or JSON, which means that the output is presented in a structured, tabular format. This format is more user-friendly and suitable for analysis. - **Subject Field Names**: The mapping result includes sObject field names. These field names likely correspond to the data elements in the template or have been generated as part of the mapping process. - **Debugging and Analysis**: The mapping results are primarily intended for debugging purposes and analysis. This suggests that users can review and assess the mapped data to identify any issues or discrepancies in the mapping process. - **No Real Posting**: The **SKYVVA** application performs data transmission. It focuses solely on the mapping aspect, preparing data in the desired format for further integration. [su_box title="**Inbound Mapping**" box_color="#C0C0C0" title_color="#000000"]Inbound Mapping feature within a tool designed to facilitate the mapping and transformation of data from one format to another, with a focus on ease of use, flexibility, and providing clear, structured results for users friendly to experience.[/su_box] **Case1: Test Mapping with Inbound Interface** A "**Mapping Button"** for an inbound interface is a feature used in integration tools to facilitate testing and debugging of data mappings. It allows users to execute or test the payload by applying a specific mapping to convert data from one format to another. This is particularly useful when dealing with different data formats like CSV, XML, and JSON. Here's how it typically works: - **Select Source Data**: The user starts by selecting the source data that needs to be transformed. This could be a file or a message type. - **Choose Mapping**: The user then selects to specify the mapping rules that define how the source data should be converted into the desired format (e.g., CSV to XML, XML to JSON, etc.). This mapping can be predefined or customized based on user integration business requirements. - **Execute/Test**: After configuring the source data and mapping rules, the user uses the "**Mapping Button**" to test the mapping process. The SKYVVA application tool applies the mapping rules to the source data, transforming it into the target data. - **View Mapping Results**: Once the mapping is complete, the user can view the results to ensure that the data transformation was successful. This would involve viewing the transformed data in the desired format (e.g., CSV, XML, JSON) or checking for errors and discrepancies by pop-up dialogue screen. This capability is crucial in integration business scenarios where data from different sources and in different formats need to be harmonized or translated to be compatible with the target data of our **SKYVVA** application. It allows users to quickly verify that the mappings are working correctly and to troubleshoot any issues that may arise during the data Mapping. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]The **Test Mapping** Button for Inbound Interface is used to **Execute**/**Test** the payload in different formats, such as **CSV**, **XML**, and **JSON**, in order to check/view the mapping results.[/su_box] **Required step:** - Create an **Integration** - Create an **Inbound Interface -> **Set** Interface API Version: V3** ![](../images/2023/09/j-38.png) - Do **Mapping** ![](../images/2023/09/j-39.png) - Go to **Interface** -> click on Button **Test Mapping** ![](../images/2023/09/j-40.png) - After click on the **Test Mapping** -> we can see the pop-up screen **Test Mapping** as below: ![](../images/2023/09/j-41.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - The left box is used to input the payload in different formats such as CSV, XML, and JSON. It also allows you to select an existing message to execute/test the mapping and view the mapping results. - The right box is used to check the mapping results after the payload has been executed from the left box. - If you use Interface **V3**, the left column shows 4 tabs (CSV, XML, JSON, Message) - If you use Interface **V2**, the left column shows 2 tabs (CSV, Message) [/su_box] "Inbound Interface" with five buttons, and one of those buttons is the "**Execute Button**." The purpose of the "Execute Button" is to trigger the execution of a payload in order to test the mapping of the result. Here's a breakdown of its functionality: - **Execute Button**: This button initiates the execution of a payload. It sends the payload to a specific destination or service and then waits for the results to be returned. This is useful for testing the configuration and ensuring that data is being processed correctly. - This is used to execute the payload to test the mapping of the results Before clicking the Execute Button: ![](../images/2023/09/j-42.png) - After Executed, we got the result as below ![](../images/2023/09/j-43.png) The "**Refresh**" button is a common user interface element in the **SKYVVA** application that serves to update or reload content, which can include payloads and results, to ensure that users have access to the most current information or data available. The specific behavior and functionality of the "**Refresh**". **Refreshing a Payload**: In APIs (**SKYVVA** Application Interfaces) or web services, a "Refresh" button is used to resend a request with the same or updated parameters to retrieve a new payload or response from the server. - **Refresh Button: **is used to refresh the Payload and the Results Before clicking the button Refresh ![](../images/2023/09/j-44.png) - After clicking the Refresh button ![](../images/2023/09/j-45.png) The "**Import File Button**" is a feature or component in a **SKYVVA** application that allows users to bring external files into the system. It has the following functionalities: - **File Type Selection:** The user can choose the type of file they want to import. It supports file types such as CSV, XML, and JSON. This means that users can specify the format of the file they are importing. - **Mapping:** The import process involves mapping the data in the external file to the data structure or schema within the **SKYVVA** application. "Defined mapping," which recommends that the **SKYVVA** application might have predefined mappings for certain file types. **For example**: if the mapping is flat (i.e., a one-to-one mapping of fields), it would work for CSV files. More complex mappings might be needed for other file types like XML or JSON. - **File Import:** After selecting the file type and mapping (if necessary), the users can initiate the import process. The **SKYVVA** application reads the selected external file and extracts the relevant data according to the mapping rules. Click on the **Import File** button, and its alert pop-up screen Import File has **chosen a file Type** and **Upload Files** button ![](../images/2023/09/j-46.png) - After clicking on **Save**, it reads the payload from a file and writes it onto the screen then when clicks on the Execute ![](../images/2023/09/j-47.png) "**Save File**" is an option in the **SKYVVA** application, that allows users to save the content displayed on the screen into a file. This action involves taking the information or payload currently visible on the screen and writing it to a file on the storage system. Here's how it generally works: - **User Action**: The user, initiates the "**Save File**" action by selecting it from the **SKYVVA** application menu. - **Dialog Box**: After selecting "Save File," the **SKYVVA**  application usually opens a pop-up screen that allows the user to specify various options for saving the file. This may include choosing the file name, file format (e.g., CSV, JSON, XML), location on your computer, and another system. - **Saving the Payload**: Once the user has configured the settings in the dialog box, the user confirms. The **SKYVVA** application then takes the content currently displayed on the screen (the payload) and writes it to the specified file on the computer. - **File Saved**: After the file is successfully saved, the user can access it at the specified location on the computer for future reference. After clicking on** the Save File **button**, the **alert** ‘Save Payload’ **pop-up screen, you have to input **File Name** -> **Save** ![](../images/2023/09/j-48.png) - After **Saved**, it will alert message [SUCCESS: Save Test02 file successfully ![](../images/2023/09/j-49.png) **Retrieve File **is a feature related to handling payload files, in a **SKYVVA** application. Here's a breakdown : - **Payload File**: The file that contains data that needs to be processed within an **SKYVVA** application. - **Save and Read**: This is a process where the user first saves the payload data to a file and then later reads it from that file. This is an approach for working with data in the **SKYVVA** application. - **Write it onto the Screen**: After reading the payload from the file, the user intends to display it on a screen. - **Retrieve File**: This is a feature in your **SKYVVA** application that deals with handling the payload file. It has two actions: **Download**: This action allows users to download the payload file, which is useful if they want to keep a copy of it for reference. - **Delete**: This action allows users to delete the payload file, which is useful for managing storage space or for privacy/security reasons. After clicking on the** Retrieve File **button**, **we can see that the pop-up screen** Retrieve File **has stored the file type (CSV/XML/JSON) we have saved before ![](../images/2023/09/j-50.png) - After selecting the **File** -> **Save**, it will take that value file to show on the screen. ![](../images/2023/09/j-51.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]The Test Mapping Button is used to execute/test the payload in different formats, such as CSV, XML, and JSON, in order to check/view the mapping results.[/su_box] [su_box title="Note:" box_color="#2a8af0" title_color="#000000"] - **Interface API Version V2:** On the Test Mapping Button, the structure of the payload will be described based on the source sObject definition. For V2, only CSV is available because it is a flat format. - **Interface V2:** If you upload a structure from a file, it will retrieve the structure payload from the imported file in the source interface. - **Interface API Version V3:** The Interface without specifying a message type, On the Test Mapping Button, the structure of the payload will be described based on the source sObject definition. For V3, CSV, XML, and JSON are available as they can handle hierarchical payloads. - **Interface V3:** If the interface is linked with a Message Type, the Test Mapping Button fields will be retrieved via the Message Type link with the interface. [/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new button test mapping ? Title: Outbound Mapping Slug: 3-outbound-mapping URL: https://help.skyvva.com/#article/3-outbound-mapping ================================================================================ # Outbound Mapping It is a feature or functionality related to data mapping in the context of working with sObjects, which typically refers to Salesforce objects in the Salesforce platform. **SKYVVA** application provides a user-friendly way for users to map data from a source sObject to a target data structure, and the user considers the use of a query editor to facilitate this process. Here's a breakdown of your description: - **Outbound Mapping**: This feature works with data integration or data transformation, where users are taking data from a source (in this case, an sObject) and mapping it to a target data structure. - **Source sObject**: In Salesforce, a sObject is a generic term used to represent any standard or custom object. It seems the user using a sObject as the source of data for the mapping. - **Mapping Result in Table Tree View**: The user experience displays the mapping result in a table tree view on the target side. This table tree view would show how the data from the source sObject maps to the target structure, making it easier for users to understand the data flow. - **Query Editor**: The user provides a query editor to allow users to select a sObject record. This query editor would enable users to choose a specific record from the source sObject. - **Modify Data**: Users can modify the data retrieved from the source sObject if needed. This suggests that the mapping process is not entirely automated and allows for manual adjustments to the mapped data. [su_box title="Outbound Mapping " box_color="#C0C0C0" title_color="#000000"]feature is user-friendly and practical for business scenarios where users need to map data from one structure to another, especially when working with complex data integration tasks, such as when integrating with Salesforce.[/su_box] **Case2: Test Mapping with Outbound Interface** It is a feature within an **SKYVVA** application with outbound interfaces and testing mappings. This feature appears to be related to data transformation or integration testing. Here's a breakdown of what you've described: - **Outbound Interface**: This is a component of an **SKYVVA** application system that is responsible for sending data or messages from the system to external systems or services. Outbound interfaces are used in integration business scenarios to exchange information with other systems. - **Test Mapping**: This feature is used for testing purposes, specifically for mapping data from one format or structure to another. Mapping is often used in integration business scenarios to transform data from one schema to another so that it can be properly processed by the receiving system. - **Two Boxes**: Here are two boxes, a left box for querying data/messages and a right box for viewing test mapping results. This suggests that the Test Mapping feature has a user interface with two input areas: **Left Box (Query)**: This is where the user specifies the data or messages want to use for testing. You may enter queries or select data/messages from a source, such as a database, file, or previous system interactions. - **Right Box (Results)**: This is where the user can see the outcomes or results of the test mapping process. It displays how the data/messages will be transformed based on the mapping rules the user has defined. In essence, this feature allows you to set up test scenarios for your outbound interface by selecting or specifying data/messages in the left box and then observing how they will be transformed using the mapping rules in the right box. This can be helpful for ensuring that your integration processes are working correctly and that data is being properly transformed before it is sent to external systems. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]For the outbound interface, the **Test** **Mapping** feature allows you to query messages and records to obtain the payload for testing with mapping. There are two boxes: the left box is used for querying data/messages, and the right box is used to view the results of the test mapping.[/su_box] **Required step:** - Create an **Integration** - Create an **Adapter** e.g., Adapter **SOAP** ![](../images/2023/09/j-52.png) - Create an **Outbound Interface** -> link with **Message Type Template** and **Adapter** ![](../images/2023/09/j-53.png) - Do Mapping ![](../images/2023/09/j-54.png) - Go to **Interface** -> click on Button **Test Mapping** ![](../images/2023/09/j-55.png) - After click on the **Test Mapping** -> we can see the pop-up screen **Test Mapping** as below: ![](../images/2023/09/j-56.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - The left box is used to execute SOQL queries and query messages for the current interface. After executing, you will receive records and then you can select them to test your mapping result/payload. - The right box is used to check the mapping results/payload after the records have been executed from the left box. - The left box is used to execute SOQL queries and query messages for the current interface. After executing, you will receive records and then you can select them to test your mapping result/payload. - The right box is used to check the mapping results/payload after the records have been executed from the left box. [/su_box] The user interface with three buttons related to executing SOQL queries and querying data from a database. Let us explain the functions of each button based on the information provided: - **Execute Button:** This button is used to execute SOQL (Salesforce Object Query Language) queries and query messages. Its primary purpose is to test the results or payload mapping the queries. When the user clicks this button, it sends the SOQL query to the database and retrieves the corresponding data, which can then be used for testing or analysis. - **Open Query Editor:** This button is used to open a query editor interface. In this editor, the user can specify the specific objects and fields user wants to query from the database. It helps to build and customize the query statements before executing them using the Execute Button. The query statements created in the Query Editor can be sent for execution when the user is ready. - **Refresh Button:** The Refresh Button is used to refresh the Query Editor and possibly other components of the interface. It ensures that any changes or updates made to the query editor or the data are reflected in the interface. This can be helpful when the user working with dynamic data or making adjustments to your query. Before clicking the Refresh Button, the user may want to make sure that the user completed necessary changes or updates in the Query Editor or other parts of the interface, and the user has to ensure that the displayed data is up-to-date. Clicking the Refresh Button will refresh the interface to reflect the current state of the data and any changes the user has made. In summary, these three buttons are part of designed for querying and testing data using SOQL in a database, with the Execute Button for running queries, the Open Query Editor for customizing queries, and the Refresh Button for updating the interface's displayed data and status. - The section with **Outbound Interface** has 3 buttons: - **Execute** **Button**: is used to execute SOQL queries and query messages to test the results/payload mapping - **Open Query Editor** is used to query specific objects and fields from the **Database** to get query statements into the **Query** **Editor** on **Test** **Mapping** ![](../images/2023/09/j-57.png) - When click on **Open** **Query** **Editor,** it alerts pop-up screen for filer query statements then click **Save** **SOQL** ![](../images/2023/09/j-58.png) - After clicking **Save** **SOQL**, it gets query statements into the **Query** **Editor** on **Test** **Mapping** ![](../images/2023/09/j-59.png) - Before **Execute** test mapping result you need to **Execute SOQL** for the query records you want to test **Execute** ![](../images/2023/09/j-60.png) - After clicking **Execute SOQL** -> Select the **Records** -> then click **Execute** Button to test Mapping Result/Payload ![](../images/2023/09/j-61.png) ![](../images/2023/09/j-62.png) - **Refresh** **Button**: is used to refresh the **Query** **Editor** and the Before clicking the Refresh Button ![](../images/2023/09/j-63.png) - After clicking the Refresh Button ![](../images/2023/09/j-64.png) It is a feature or functionality in a **SKYVVA** application that involves testing the connection and configuration of an adapter. Here's a breakdown of the information you provided: - **Test Connection Button:** This button is used to initiate a connection test and check the configuration of an adapter. It is specifically designed to work with Interface V3. - **Functionality:** When the "**Test Connection**" button is clicked, it triggers a page reload that takes the user to the "**Adapter Test Connection**" page. - **Adapter Test Connection Page:** This page is divided into four sections:a. **Adapter Detail:** This section likely provides information about the adapter being tested, such as its name, type, and version.b. **Property:** This section allows users to view and possibly edit the properties of the adapter configuration.c. **Existing Test Case:** This section may display information about any previously saved test cases related to this adapter. It shows test case results.d. **Test Connection:** This is where the actual testing of the adapter's connection and configuration takes place. Users can initiate the test from here and check whether the adapter is functioning as expected. - **Saving Test Cases:** The users have the option to save the test cases they've performed on this page. Saving test cases can be helpful for reusing test business scenarios in the future for reference. This functionality is part of a SKYVVA application that allows users to test and manage the configuration of adapters, specifically those using Interface V3. The "**Adapter Test Connection**" page provides a comprehensive interface for performing these tasks and managing test case records. - **Test Connection**: is used to **Test** **Connection** and check **Configuration** **Adapter**. This button just supports only the Interface V3. When clicking on the **Test** **Connection,** it will reload the page to the **Adapter** **Test** **Connection ** ![](../images/2023/09/j-65.png) 2. On the **'Adapter Test Connection'** page, you can see four sections: **Adapter** **Detail**, **Property**, **Existing** **Test** **Case**, and **Test** **Connection**. It allows you to test and check the **Adapter** configuration and also provides the option to save the **Test Case** that you have checked previously. ![](../images/2023/09/j-66.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]The Test Mapping allows you to query messages and records to obtain the payload for testing with mapping. There are two boxes: the left box is used for querying data/messages, while the right box is used to view the results of the test mapping. It also provides the payload view, giving you an idea of what the payload looks like during the callout.[/su_box] [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - **Interface API Version V2/V3 (without a message type):** The Test Mapping feature does not support generating the **Payload**; it only displays the **Results** **Mapping**. - **Interface V2 for Outbound: **The **‘Test Connection’** button is not supported. Instead, we display two buttons: **'Execute'** and **'Refresh'**. - **Interface** **V3** **with a message type**: If you link an **Adapter** to the **Interface**, the **Payload** will be generated based on the **Adapter** [/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: How to Pass parameter from InvokeCalloutV3() to use in the WHERE clause expression? Slug: how-to-pass-parameter-from-invokecalloutv3-to-use-in-the-where-clause-expression URL: https://help.skyvva.com/#article/how-to-pass-parameter-from-invokecalloutv3-to-use-in-the-where-clause-expression ================================================================================ # How to Pass parameter from InvokeCalloutV3() to use in the WHERE clause expression? #### Introduction We have such a feature that the user can pass and condition parameters to fill in their query in outbound runtime. In this feature, we can see all the conditions as pretty much as an old feature that we have, the condition appends in runtime without a monitor or any note for the user. Moreover, this feature makes it easy for users to read the query with all their conditions. This feature has a few key characteristics: - **Dynamic Conditions:** The users can add conditions to their queries on the fly, without any predefined structure or fixed criteria. User can tailor their queries to specific needs and scenarios. - **No Monitoring or Notification:** There are no notifications for the user when they add these conditions. They are free to modify their queries without restrictions or guidance. - **User-Friendly:** The feature is designed to be user-friendly, making it easy for users to create and understand the queries they are constructing. This implies that the user interface and query-building process are intuitive and straightforward. Overall, this feature provides flexibility and control to users, allowing them to adapt their queries in real-time without the need for constant monitoring instructions. It's designed to empower users to work with their data effectively and read and understand the queries with their unique conditions. **Runtime Query :** `|DEBUG|>query_step: SELECT Id, BillingCity, Name, Description, BillingCountry FROM Account WHERE ((Id IN: ids)) AND (Name = 'Vireak' AND (BillingCity='Takeo' OR BillingCity='PhnomPenh'))` We see only in the debugging mode and that is not user-friendly. Here is another example. ![](../images/2023/10/j.png) **Here is another case result:** `|DEBUG|>query_step: SELECT Id, BillingCity, Name, Description, BillingCountry FROM Account WHERE (Name = 'Vireak' AND (BillingCity='Takeo' OR BillingCity='PhnomPenh')) AND (Id IN: ids)` This example shows that we can append our expression passing from the invokeCalloutV3() with the customer expression. However, we cannot mix the parameter from the invokeCalloutV3() with the customer expression. That is not possible with the current solution. When we change the idea to allow the user to use the parameter name in their expression then it is more flexible, and we can read and understand the WHERE clause. #### Pass parameter from InvokeCalloutV3() to use in the WHERE clause expression Creating an interface outbound for passing parameters from the **InvokeCallOutV3()** function to use in a **WHERE** clause expression. Here are some general steps you might follow to achieve this: - Define the interface: Create an interface that specifies the parameters you want to pass from **InvokeCallOutV3()**. - Implement the interface: Implement the interface and define how the parameters should be passed. - Call **InvokeCallOutV3()**: In the **InvokeCallOutV3()** function, invoke the interface, and pass the required parameters. - Use parameters in the **WHERE** clause: In the code where the user executes the **WHERE** clause expression, retrieve the parameters passed from **InvokeCallOutV3() **and use them in the query. Here are some key points to consider when implementing such a feature: - **Dynamic Query Building**: This allows users to specify query conditions dynamically as part of their interaction with the **SKYVVA** application. This means the **SKYVVA** application provides an interface for users to input these conditions as per business requirements. - **User-Friendly Interface**: Ensure that the interface for specifying conditions is user-friendly and intuitive. Users should easily understand how to add and modify conditions. - **Real-Time SKYVVA application**: Make sure the conditions are applied in real-time, as users input them. This provides immediate feedback and results, which can be more user-friendly. [su_box title="Expectation: " box_color="#2a8af0" title_color="#000000"]We will allow the user can pass and conditions parameter to fill in their query condition in outbound runtime. In this feature, we can add all the conditions as pretty much as an old feature that has the conditions appended in runtime without a monitor or any note for the user. Moreover, this feature is also easy for users when they read the query with all their conditions.[/su_box] **Required step:** - Create a new **Interface Outbound** as in the screenshot below then click the **Save** button ![](../images/2023/10/j-1.png) - Go to Interface -> click Open Mapping -> then mapping node and file -> **Save** ![](../images/2023/10/j-2.png) - After having the mapping, it will get SOQL Query. - Go to interface -> then scroll down we can see SOQL Query to select the sObject data section ![](../images/2023/10/j-3.png) - **The field default is text (String)** - Add the value that is the parameter as the expression “{!...}” **Example:** MyField = {!MyFieldValue} - MyField = ‘XXX’ We added {!AccountName} expression parameter on field Name on where clause **![](../images/2023/10/j-4.png)** ** ** - Users can copy this code to pass developer consoles to be executed. It will send an Account that has the name 'University of Arizona' [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Please replace on integration with your integration name and interface to your interface name[/su_box] `Map p = new Map(); p.put('AccountName','University of Arizona'); skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.sqlWhereExpression = p; //parameter to replace query {!XXX} c.returnJSONComplete=true; //return json result in SYNC c.actionDoIntegrate=false; //skip execute response interface c.isCreateMessage=true; //create message for each execute String[] ids = new String[]{}; for(Account a: [select id from account]) ids.add(a.Id); String integration = 'Minea_Intergration'; String interfac = 'InvokeCallOutV3'; String mode = 'SYNC'; List resp = skyvvasolutions.Iservices.invokeCalloutV3(integration,interfac,ids,mode,c); System.debug('>>resp:'+resp?.toString());` **Example:** ![](../images/2023/10/j-5.png) [su_box title="Result: " box_color="#2a8af0" title_color="#000000"]After Executing the Apex Code, it will check all Accounts have Name = “University of Arizona” to send the record out.[/su_box] ![](../images/2023/10/j-6.png) - **The field default is Real Value** - Add the value that is the parameter as the expression “{!@...}” **Example:** MyfieldNumber = {!@mynumber} - MyfieldNumber = XXX We added {!@NumberofLocations} expression parameter on field NumberofLocations on where clause ![](../images/2023/10/j-7.png) **Example:** - Users can copy this code to pass developer consoles to be executed. It will send Accounts that have NumberOfLocation = 955 `Map p = new Map(); p.put('NumberOfLocations','955'); skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.sqlWhereExpression = p; //parameter to replace query {!XXX} c.returnJSONComplete=true; //return json result in SYNC c.actionDoIntegrate=false; //skip execute response interface c.isCreateMessage=true; //create message for each execute String[] ids = new String[]{}; for(Account a: [select id from account]) ids.add(a.Id); String integration = 'Minea_Integration'; String interfac = 'InvokeCallOutV3'; String mode = 'SYNC'; List resp = skyvvasolutions.Iservices.invokeCalloutV3(integration,interfac,ids,mode,c); System.debug('>>resp:'+resp?.toString());` [su_box title="Result: " box_color="#2a8af0" title_color="#000000"]After Executing the Apex Code, it will check all Accounts have NumberOfLocations = 955 to send the record out**.**[/su_box] ![](../images/2023/10/j-8.png) - Add the value that is the parameter as the expression “{!@...}” **Example:** MyfieldNumber IN {!@mynumber}  **(we can CallOut by real value many records)** - MyfieldNumber IN (X1,X2,X3,..) We added IN {!@NumberofLocations} expression parameter on field NumberofLocations on where clause ![](../images/2023/10/j-9.png) **Example:** - Users can copy this code to pass developer consoles to be executed. It will send Accounts that have NumberOfLocation IN (1,2,3) `Map p = new Map(); p.put('NumberOfLocations','(1,2,3)'); skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.sqlWhereExpression = p; //parameter to replace query {!XXX} c.returnJSONComplete=true; //return json result in SYNC c.actionDoIntegrate=false; //skip execute response interface c.isCreateMessage=true; //create message for each execute String[] ids = new String[]{}; for(Account a: [select id from account]) ids.add(a.Id); String integration = 'Minea_Integration'; String interfac = 'InvokeCallOutV3'; String mode = 'SYNC'; List resp = skyvvasolutions.Iservices.invokeCalloutV3(integration,interfac,ids,mode,c); System.debug('>>resp:'+resp?.toString());` [su_box title="Result" box_color="#2a8af0" title_color="#000000"]After Executing the Apex Code, it will check all Accounts have NumberOfLocations IN (1,2,3) to send the record out.[/su_box] ![](../images/2023/10/21.webp) - **The field default is PickList** - Add the value that is the parameter as the expression “{!@...}” **Example:** SLA IN {!@colectionAsString} **(value passed as String of collection)** - SLA IN ('Silver', 'Platinum', 'Bronze' We added IN {!@SLA } expression parameter on field SLA on where clause (SLA field type is PickList) ![](../images/2023/10/j-10.png) **   Example:** - Users can copy this code to pass developer consoles to be executed. It will send Accounts that have SLA IN ('Silver', 'Platinum', 'Bronze') `List customSLA = new List{'Silver','Platinum','Bronze'}; Map p = new Map(); String typeSLA = '(\''+String.join(customSLA,'\',\'')+'\')'; p.put('SLA',typeSLA); skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.sqlWhereExpression = p; //parameter to replace query {!XXX} c.returnJSONComplete=true; //return json result in SYNC c.actionDoIntegrate=false; //skip execute response interface c.isCreateMessage=true; //create message for each execute String[] ids = new String[]{}; for(Account a: [select id from account]) ids.add(a.Id); String integration = 'Minea_Integration'; String interfac = 'InvokeCallOutV3'; String mode = 'SYNC'; List resp = skyvvasolutions.Iservices.invokeCalloutV3(integration,interfac,ids,mode,c); System.debug('>>resp:'+resp?.toString());` [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]After Executing Apex Code, it will check all Accounts have SLA IN ('Silver', 'Platinum', 'Bronze') to send the record out.[/su_box] ![](../images/2023/10/j-11.png) [su_box title="Note" box_color="#dcdcdc" title_color="#000000"] - In runtime, we have added our condition (internal) e.g for parent “Id IN: Ids”, for the child “Account.Id IN: ids” - If there are the conditions user-defined then we use all of them “AND” g (User’s conditions….) AND (Our condition) SELECT Name, BillingCity FROM Account WHERE (Name = ‘MyAccount’) AND (Id IN: ids) [/su_box] [su_box title="Result: " box_color="#2a8af0" title_color="#000000"]It means all conditions defined must be matched with the passed records Id from invokeCalloutV3()[/su_box] #### Summary The feature in question allows users to pass parameters from the **InvokeCalloutV3()** function and use them in the **WHERE** clause expression of their queries. This feature enhances flexibility and control, enabling users to dynamically adjust their queries without requiring ongoing monitoring or specific instructions. Its primary purpose is to empower users to work efficiently with their data, enabling them to create and comprehend queries with unique conditions. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Enable skyvva sObject Imessage__c for Interface’s source name Title: How to custom error handling? Slug: how-to-custom-error-handling URL: https://help.skyvva.com/#article/how-to-custom-error-handling ================================================================================ # How to custom error handling? #### Introduction It is a situation related to error response handling in an outbound processing system, where the user needs to map a table called "**Imessage__c**" for a fault interface on the inbound side. However, users are encountering an issue where this "**sObject**" is not visible in a picklist list in a previous, available on **SKYVVA** application version 2.50 and above. Here's a breakdown of your description: - **Error Response Handling**: This refers to how the **SKYVVA** application deals with errors or exceptions during outbound processing. - **Mapping Table**: The user needs to create a mapping between possible fields on the "**Imessage__c**" object. This mapping is necessary for handling errors in a structured manner. - **Imessage__c**: "Imessage__c" is a custom object in the **SKYVVA** application. The "__c" suffix suggests that it's a custom object in Salesforce. - **Fault Interface (Inbound)**:  An interface on the inbound side of the **SKYVVA** application that handles faults or errors that occur during outbound processing. - **Picklist**: In your previous **SKYVVA** application version, there was a picklist that the user would use to select the "**Imessage__c**" object for this mapping. However, users are encountering an issue where this object is not visible in the picklist. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]"Include the sObject in the selection list to enable users to perform the mapping."[/su_box] #### Display the skyvvasolutions__IMessage__c for the Interface’s source name Create an integration and map fields from the "**skyvvasolutions_IMessage__c**" object in the **SKYVVA** application. Here are the steps you should follow: - **Create Integration**: Go to our **SKYVVA** application. - Navigate to the Integration section and create integration. - **Create a New Inbound Interface**: "Create New Inbound Interface." - **Select the Source Picklist**: In the process of creating the inbound interface, the user needs to specify the Source picklist. - Look for an option to select the source picklist, and choose the "**skyvvasolutions_IMessage__c**" value. **Required step:** - Create Integration - Click Create the new inbound Interface and select the skyvvasolutions_IMessage__c on the Interface’s source Name - Map as normal then click save. Result: ![](../images/2023/10/j-12.png) - **Map Fields**: After selecting the source picklist, the user needs to map fields from this source side to the target destination. - Typically, users see a visual mapping interface where they can match fields from "**skyvvasolutions_IMessage__c**" to corresponding fields on the target side. - **Save the Mapping**: Once the user mapped the necessary fields, make sure to save your mapping configuration. Look for a "Save"  button to save your mapping settings. ![](../images/2023/10/j-13.png) [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]The user is expected to perform mapping for the skyvvasolutions_IMessage__c object within the Skyvva system. [/su_box] #### Fault Message Error Handing with SAP CPI adapter Creating an integration with an outbound adapter for SAP CPI involves several steps. Below are the steps user can follow to achieve this: - **Create Integration**: Log in to your SAP CPI (SAP Cloud Platform Integration) environment. - Create a new integration project. - **Create Request/Response Interface**: Within your integration project, create the Request and Response interfaces that define the structure of the data the user is sending to and receiving from SAP CPI. The user can do this using Data Types or Message Types, depending on business requirements. - **Create Fault Interface**: Similarly, create a Fault Interface to handle error scenarios in case the integration fails. Define the structure of error messages the user needs to handle. - **Outbound - SAP CPI Adapter **: To connect to SAP CPI, the user needs to create an outbound adapter. In your integration project, select the outbound adapter, which should be the "SAP CPI" adapter ." - **Link with Request Interface**: Configure the outbound adapter to use the Request Interface the user just created. This involves mapping the data from the integration flow to the structure defined in the Request Interface. - **Create Message Types**: Create Message Types for REST Request, REST Response, and Fault messages. These message types define the format of data that will be exchanged between the **SKYVVA** application and the SAP CPI. - **Create SAP CPI Adapter**: Within the integration flow, add a component that represents the SAP CPI adapter. Configure this adapter to connect the SAP CPI instance, providing the necessary connection details, such as the URL, credentials, and any other required entities. - **Link SAP CPI Adapter with Outbound Interface**: In your integration flow, link the SAP CPI adapter with the outbound interface the user just created. This defines the data flow from the **SKYVVA** application to SAP CPI. [su_box title="Expectation:" box_color="#2a8af0" title_color="#000000"]The message outbound will be updated in the event of an error occurring following the callout.[/su_box] **Required step:** - Create Integration and Request/Response Interface/Fault Interface - Outbound adapter “SAP CPI” and link with request interface. - Create Message type for Rest for request, response, and Fault. - Create SAP CPI adapter to connect with the mock service and link it with the outbound interface [su_box title="Note:" box_color="#2a8af0" title_color="#000000"]Ensure that the inbound interface for the fault will perform an insert operation.[/su_box] ![](../images/2023/10/j-14.png) - Response Inbound mapping ![](../images/2023/10/j-15.png) - Request Outbound Mapping ![](../images/2023/10/j-16.png) - Fault Inbound mapping ![](../images/2023/10/j-17.png) - Link Response and fault interface Inbound/ interface into Response Interface field of Inbound / Outbound Setup section of outbound interface ![](../images/2023/10/j-18.png) ![](../images/2023/10/j-19.png) ![](../images/2023/10/j-20.png) **Here is the payload of the response fault interface in the mock service.** `{ "gid": 500,` `"status": "Application Error",` `"information": "Invalid address"` `}` ![](../images/2023/10/j-21.png) **Code for callout** `String[] ids= new String[]{'0011j00001jHopOAAS'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('Dahuy Fault handling','Request Interface',ids,'SYNC',null); String ResultString = result.toString();` - After executing the apex callout above in the developer console, we will get the result as shown in the screenshot below. You will get the request failed message as a screenshot below: ![](../images/2023/10/j-22.png) #### Summary In outbound processing, users can understand error response handling. Specifically, familiar with mapping a table called "**Imessage__c**" for a fault interface on the inbound side of the **SKYVVA** application. However, users have encountered an issue where this "sObject" is not visible in a picklist in a previous version of the **SKYVVA** application, now this picklist value is visible starting from version **V2.50** and above. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to Configure the Public Site? Slug: 1-how-to-configure-the-public-site URL: https://help.skyvva.com/#article/1-how-to-configure-the-public-site ================================================================================ # 1. How to Configure the Public Site? Our webhook adapter offers seamless integration with Skyvva's '**V3/integratewebhook**' API, facilitating the transmission of raw data without necessitating authentication. By leveraging this adapter, users gain the ability to conveniently send data payloads to the designated endpoints without the complexities of authentication processes. **Key Features:** - **Simplified Integration:** Our adapter streamlines the integration process, allowing users to swiftly incorporate the '**V3/integratewebhook**' API into their workflows without the need for authentication protocols. - **Custom API Key:** Users have the flexibility to furnish their API key, granting access to Skyvva's API and enabling the transmission of raw data effortlessly. **Advantages:** - **Enhanced Accessibility:** The adapter eliminates authentication barriers, enabling swift access to the '**V3/integratewebhook**' API for sending data, thereby enhancing accessibility and usability. - **Efficient Data Transmission:** With the adapter, users can seamlessly transmit raw data to designated endpoints, ensuring efficient data flow within their systems. **Getting Started:** To initiate the integration process, users can easily configure the adapter with their preferred API key, thereby gaining immediate access to the '**V3/integratewebhook**' API for transmitting raw data. **How to Create a Public Site and Sharing Rule for using V3/integratewebhook** The expectation is that once the Public Site and Sharing Rule have been established, the resulting URL can be utilized as the Adapter URL to effectively employ it with the '**V3/integratewebhook**' API for sending raw data. This process typically involves these steps: - **Create a Public Site:** This involves setting up a Public Site within the Salesforce environment, enabling access to certain Salesforce data via an externally accessible URL. This Public Site acts as an entry point for external systems to interact with Salesforce. - **Set up Sharing Rules:** Sharing Rules define the level of access to records for different users or groups within Salesforce. Configuring Sharing Rules ensures that the intended external systems or users have the necessary access rights to retrieve or modify the data. - **Adapter URL Utilization:** Once the Public Site and Sharing Rule setup is complete, the resulting URL from the Public Site configuration can be used as the Adapter URL. This URL can be plugged into the integration configuration as the endpoint for the 'V3/integratewebhook' API, enabling the transmission of raw data. **Required step:** - Go to **Setup** -> enter** Sites **in the** Quick Find **box -> select** Sites** -> tick on** Check Box **-> click on** Register My Salesforce Site Domain -> **click** OK** ![](../images/2023/11/image_2023_11_30T12_42_06_082Z.png) - After clicking **OK** we see the section **Sites** -> click on **New** Button to create a public site ![](../images/2023/11/image_2023_11_30T12_43_36_128Z.png) - Create **New** site -> Input **Site** **Label**: Webhook -> Input path on the **Default Web Address **-> tick **Active** -> **Active** **Site** **Home** **Page: AdapterTestConnectionResult** ![](../images/2023/11/image_2023_11_30T12_44_38_933Z.png) - After **Save** -> click on **Public** **Access** **Settings** ![](../images/2023/11/image_2023_11_30T12_45_27_706Z.png) - After clicking on the **Public** **Access** **Settings **->** Enabled Apex Class Access **->** Edit -> **Enable class** ‘skyvvasolutions.IntegrateWebhook’ **->** Save** ![](../images/2023/11/image_2023_11_30T12_46_17_718Z.png) ![](../images/2023/11/image_2023_11_30T12_46_48_715Z.png) - For using a public site for guess users, you need to allow some permission for our API. Then click on the **Edit** button at the **Profile Detail** -> allow **Custom Object Permissions -> **click** Save** ![](../images/2023/11/image_2023_11_30T13_48_17_282Z.png) - Allow **Custom Object Permissions: ** - Integration, Interface, Interface Group (Read): we need this to query our object record. - Batch Basket2, Batch Queues (Read/Create): here we need also permission to update our object record. e.g., for updating the status, the comment. ![](../images/2023/11/image_2023_11_30T13_50_22_534Z.png) - After creating the **Site** and allowing **Permissions**, we got the **Site** **URL **below: ![](../images/2023/11/image_2023_11_30T13_51_23_531Z.png) - Create **Sharing** **Rules **for that Site we create, Go to **Setup** and fine **Sharing** **Setting** ![](../images/2023/11/image_2023_11_30T13_52_41_484Z.png) - Create **Sharing Rules **on the **Integration**, **Interface**, **Interface** **Group**, **Batch** **Queue**, **Batch** **Basket2** Example Create** Sharing Rules **on the** Integration** ![](../images/2023/11/image_2023_11_30T13_53_40_225Z.png) ![](../images/2023/11/image_2023_11_30T13_54_35_030Z.png) - After creating a **Site**, need we to add the **License Key** on the **‘Site Guest User’.** ![](../images/2023/11/image_2023_11_30T13_55_38_630Z.png) Now user has learned how to create the required steps, remember to thoroughly test the integration to ensure data transmission functions as intended after configuring the Adapter URL with the '**V3/integratewebhook**' API endpoint. Adjust security settings and access controls as needed to safeguard sensitive data during integration ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. How to Create Adapter Webhook and Push Records to Raw Basket Control Board ? Slug: 2-how-to-create-adapter-webhook-and-push-records-to-raw-basket-control-board URL: https://help.skyvva.com/#article/2-how-to-create-adapter-webhook-and-push-records-to-raw-basket-control-board ================================================================================ # 2. How to Create Adapter Webhook and Push Records to Raw Basket Control Board ? The expectation appears to be that users can send raw data into the raw basket within Salesforce by leveraging the Public Site in conjunction with Skyvva's '**V3/integratewebhook**' API. This process allows users to bypass authentication by providing their API key in the adapter settings for seamless access to the API. Here's a breakdown of the expected workflow: - **Public Site Configuration:** Set up a Public Site in Salesforce to create an external-facing URL that acts as an entry point for external systems or applications. - **Skyvva 'V3/integratewebhook' API Integration:** Configure an adapter or integration within Salesforce, utilizing the Public Site URL as the endpoint for the 'V3/integratewebhook' API provided by Skyvva. For more details on how to create the public site  using our **'V3/integratewebhook' API**, click link below –  [HOW TO CONFIGURE THE PUBLIC SITE?](#article/1-how-to-configure-the-public-site) - **Adapter Settings:** Within the adapter configuration, input the API key provided by Skyvva into the settings. This key enables access to the 'V3/integratewebhook' API without requiring separate authentication steps. - **Sending Raw Data:** Users can then send raw data into Salesforce by making API requests to the Public Site URL integrated with the 'V3/integratewebhook' endpoint. The provided API key in the adapter settings grants access to deposit this data directly into the designated raw basket within Salesforce. This process facilitates the seamless transmission of raw data from external sources into Salesforce, leveraging the '**V3/integratewebhook**' API and the Public Site while utilizing the provided API key for authentication, thus eliminating additional authentication steps for users. **Required step:** - Create an **Integration** - Create an **Inbound** **Interface** - Do** Mapping** ![](../images/2023/11/image_2023_12_01T14_10_31_100Z.png) - Create an **Adapter Webhook** **Authentication Type: **API-Key**.** - **API Key Name / API Key Value: **You can provide the API Key by your own**.** - **Add the API Key To: **You can provide that **API Key** with the Params you have set (Query Param or Header). - **API_Service_Endpoint_URL:** Public Site URL. ![](../images/2023/11/image_2023_12_01T14_12_41_954Z.png) - After created an **Adapter** already, go to the **Interface** **Detail** -> link **Adapter** and set **Scheduler Apex** on the Interface ![](../images/2023/11/image_2023_12_01T14_14_07_581Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Raw Basket will be created when the API uses a Public Site from the adapter **Webhook** to push data. [/su_box] - Configuration from **Postman** to push records with Real data to **Raw Basket** **Control Boad** - **e.g.:** Public URL Site **+** /services/apexrest/skyvvasolutions/V3/integratewebhook/integrate ![](../images/2023/11/image_2023_12_01T14_16_19_443Z.png) 2. After configuring the** Query Params** on Postman, you can input data into the **Body** section -> click **Send** -> when it responds with **Statue 201,** it means the **Basket** has been successfully created. ![](../images/2023/11/image_2023_12_01T14_18_12_203Z.png) - Go to** Integration Detail -> Raw Basket Control Board -> **click on the** Basket **tab** -> **you will be able to see the** Baskets **that are created from the** Webhook Site Guest User. **Now, the raw basket is created in the **'New Baskets'** section of the Raw Data Basket Control Board. ![](../images/2023/11/image_2023_12_01T14_19_18_125Z.png) - **Processing the Baskets** ![](../images/2023/11/image_2023_12_01T14_20_06_699Z.png) - **Apex Job** ![](../images/2023/11/image_2023_12_01T14_21_52_784Z.png) - After Processed**, The Message Monitoring** ![](../images/2023/11/image_2023_12_01T14_22_40_911Z.png) **[su_box title="Result: " box_color="#00d9a6;" title_color="#000000"]**After doing a manual process of the **Raw Basket**, the records have been **upserted** into salesforce. [/su_box] [su_box title="Note" box_color="#2a8af0" title_color="#000000"] #### On the Adapter Webhook, we provide two Options: - **Default API Key**, we use this API Key to obey the API Rule: method POST + API Path + some Query Parameter - **Custom Class, **the user can put the apex class and verify yourself. Sample custom validator class for V3/integratewebhook: Extends global class in package: skyvvasolutions.IntegrateWebhookValidator - Setting class name in adapter property (Custom Class) e.g., CustomValidator [/su_box] **Example**: *global with sharing class CustomValidator extends skyvvasolutions.IntegrateWebhookValidator{* *global override Boolean isValid(){* */** Custom logic here * *** ** * **/* *return true;* *}* *}* ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new Data Loader? Title: The configuration enables to Use New Data Loader Slug: the-configuration-enables-to-use-new-data-loader-2 URL: https://help.skyvva.com/#article/the-configuration-enables-to-use-new-data-loader-2 ================================================================================ # The configuration enables to Use New Data Loader #### Introduction Data loader is a feature that Skyvva provides that users can import payload into salesforces for free. We support some files in **CSV**, **XML**, and **JSON** formats. In **SKYVVA** version **2.48** we have redesigned **CSV, XML,** and **JSON** formats to use with **REST API** for import files because it can handle big records faster than User Interface **API** resources. #### How to Use REST API with Data Loader: - Configure security: - Content Security Policy **Trusted URLs : ** We need to create **Trusted URLs** to Access Third-Party APIs. The Lightning Component framework uses Content Security Policy (CSP) to impose restrictions on content and more information. ***Note: ***We need to Configure for only Import Data using Data Loader. - From Setup, find **Trusted URLs ** in the Quick Find box, click on it, and then click the "**New Trusted URLs**" button. ![](../images/2022/11/12-4-2023-11-42-11-AM.png) - We need to input Trusted URLs **Name** and **URL** from **Salesforce Classic** and tick **Allow Site for connect-src **in CSP Directives. ![](../images/2022/11/12-4-2023-11-48-36-AM.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Trusted Site URL get from URL Salesforce Classic. Switch Lightning to Salesforce Classic **[https://business-platform-2725-dev-ed.scratch.my.salesforce.com](https://business-platform-2725-dev-ed.scratch.my.salesforce.com) **[/su_box] - After Save. ![](../images/2023/12/2-27-2024-1-48-47-PM.png) - Cross-Origin Resource Sharing (**CORS**) Policy: We need to add an Origin URL Pattern into CORS to allow the list to enable web browsers to request a resource from an origin other than their own. For example, using CORS, JavaScript code at https://www.example.com could request a resource from –  [https://www.salesforce.com](https://www.salesforce.com) - To access supported Salesforce APIs, Apex REST resources, and more information –[  https://help.salesforce.com/s/articleView?language=en_US&type=5&id=sf.extend_code_cors.htm](https://help.salesforce.com/s/articleView?language=en_US&type=5&id=sf.extend_code_cors.htm) - From Setup, find CORS in the Quick Find box, select CORS and then click the "New" button in the Allowed Origins List box. ![](../images/2022/11/5-9-2023-5-51-01-PM.png) - Enter Origin URL Pattern that gets from Classic Experience instance URL. ![](../images/2022/11/5-9-2023-5-52-57-PM.png) - After Save. ![](../images/2022/11/5-9-2023-5-56-12-PM.png) #### Summary Finally, after the configuration of  Trusted URLs and CORS, we can import data hierarchical CSV, XML, and JSON files into the Data Loader. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Raw Basket Processing ? Title: 1. What is Raw basket and how to use it? Slug: 1-what-is-raw-basket-and-how-to-use-it URL: https://help.skyvva.com/#article/1-what-is-raw-basket-and-how-to-use-it ================================================================================ # 1. What is Raw basket and how to use it? #### Raw Basket Control Board to Process the Raw business data inside the file The **'Raw Data Basket' **is specifically designed to store raw business data in a file and is associated with a basket called the **'Raw Basket'**. The raw basket contains unprocessed and pure business data in its original format. It serves as a solution for users who are uncertain about parsing the raw business data into the **Skyvva** message format. By utilizing the raw basket, users can avoid the complexities of parsing and transforming the data themselves. It enables users to store and work with their raw business data without the need for prior conversion or processing. However, it's important to note that hitting limits in Salesforce is a possibility when dealing with large raw data. Performing parsing and transformation logic within Apex can lead to **CPU limitations**, making it difficult to process big-size data. When working with the Raw Basket, it's essential to consider the nature of the request. For large-size requests, the Raw Basket may not be suitable. In such cases, it is recommended to utilize tools like **Skyvva Batch**, **Bulk**, **Agent**, and **Bulk Data Loader**. #### Case1: How to Processing the Raw Basket Control Board using Scheduled Apex **Expectation:** A workflow for processing raw basket records using two methods: manual processing and a scheduler. Here's a breakdown of the steps involved in processing these raw baskets: - **Raw Basket Records Status:** The raw basket records that have not been processed typically have a status of 'Init'. These records remain in the 'New Basket' section of the Raw Basket Control Board until they are processed. - **Processing Steps:** **Manual Processing:** Users can manually select the raw basket records they want to process. - **Scheduler:** There is a scheduled process that is responsible for handling the processing of raw baskets with the 'Init' status. - **Manual Processing:** Users can manually select specific raw basket records they wish to process. - This might involve a user interface where individuals can choose particular baskets for immediate processing. - **Scheduler Processing:** When the scheduled time arrives, the scheduler automatically processes all the raw baskets that have the 'Init' status. - This automated process ensures that all eligible baskets are handled without manual intervention. - **Outcome:** Once processed, the status of these raw baskets likely changes from 'Init' to a different status, indicating completion or progression in the workflow. - Processed baskets might move from the 'New Basket' section to a different section, indicating that they have been successfully handled. - **Control Board Monitoring:** The Raw Basket Control Board is the interface or platform where users can monitor the status of raw baskets. - It likely displays information about the current status of baskets (e.g., 'New Basket' section) and possibly the history or logs of processed baskets. Overall, this process offers both manual control (for specific selections) and automated handling (via the scheduler) to efficiently manage the processing of raw basket records. **Required step:** - Create an **Integration** - Create an **Inbound Interface ** - Do** Mapping** ![](../images/2023/12/image_2023_12_05T17_07_31_877Z.png) - Interface setting in the section **“Runtime Configuration Inbound” **set the field **“Inbound Posting Behavior” = “Scheduled Apex”** ![](../images/2023/12/image_2023_12_05T17_09_03_989Z.png) - For Create Raw Basket, we have two options: **Use SKYVVA API V3/V4 Integrate** ![](../images/2023/12/image_2023_12_05T17_10_27_337Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]After clicking **'Send**', there is no response body, and the Status Code is **201** Created.[/su_box] [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Mode is** “Asynchronous”**[/su_box] - **Use Webhook by Public Site and link Adapter on the Interface** ![](../images/2023/12/image_2023_12_05T17_11_36_633Z.png) ![](../images/2023/12/image_2023_12_05T17_12_30_106Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]After clicking **'Send**', there is no response body, and the Status Code is 201 Created.[/su_box] [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The** API Key **you have set on** Postman **is based on the** Adapter Webhook.**[/su_box] - Go to **Integration Details** -> click **Raw Basket Control Board** -> you will see the **New Basket** with the status “**Init**” ![](../images/2023/12/image_2023_12_05T17_14_53_338Z.png) - Processing those **Raw Baskets**, we have two ways to Process the Basket **Manually Processing** Select** Baskets **-> click** Process **button -> you can see pop-up screen** Process Basket -> **click** Yes** ![](../images/2023/12/image_2023_12_05T17_16_08_561Z.png) - After clicking** Yes, **the **Baskets** will be in the processing state, moving to the **Processing Basket** section, and their status will change to **'Processing'**. ![](../images/2023/12/image_2023_12_05T17_17_08_754Z.png) - After the job processing is completed, the** Baskets **also finish processing and move to the **Basket Histories** section, with their status changing to **'Completed'**. ![](../images/2023/12/image_2023_12_05T17_18_07_033Z.png) - **Message Monitoring** ![](../images/2023/12/image_2023_12_05T17_19_08_674Z.png) [su_box title="Result: " box_color="#2a8af0" title_color="#000000"]When you click the **'Process'** button after selecting the raw baskets, they will be processed. Once the raw baskets are completed, they will be moved to the **Basket Histories** section.[/su_box] - **Scheduler Processing** **User push 30 New Basket** ![](../images/2023/12/image_2023_12_05T17_20_32_262Z.png) - Go to** the Scheduler **tab** -> **Start Run the** Scheduler** ![](../images/2023/12/image_2023_12_05T17_21_32_422Z.png) - After the scheduler runs, it will process all baskets in parallel if free jobs are available. Look at the screenshot below: ![](../images/2023/12/image_2023_12_05T17_22_29_718Z.png) - After job processing is completed, the** Basket is moved** to the **Basket Histories **section and changed status to** “Completed”** ![](../images/2023/12/image_2023_12_05T17_23_49_077Z.png) - **Message Monitoring** ![](../images/2023/12/image_2023_12_05T17_25_00_570Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]When the scheduler is ready to run at the set time, it will process all raw baskets with the status **'Init'** in the New Baskets section. Once the raw baskets are completed, they will be moved to the **Basket Histories** section.[/su_box] **Scheduler Processing:** - **Integration Execution Schedulers: **The IntegrationExecution_RawBasket, schedulers will process all the Raw Baskets in the Integration. - **Interface Group Execution Schedulers: **The InterfaceGroupExecution_RawBasket, schedulers will process all the Raw Baskets in the Interface Group. - **Interface Execution Schedulers: **The InterfaceExecution_RawBasket, schedulers will process all the Raw Baskets in the interface. [su_box title="Note:" box_color="#2a8af0" title_color="#000000"]We have the feature called **'Don't Process the Interface in Parallel'** in the **'Batch Processing Runtime Behavior'** field, located in the **'Batch Setting'** section. This feature is used to process baskets per Job, and you can set the **'Query Limit for Batch & Bulk Processing'** to control the number of baskets processed within the **Interface Group**. If you don't set a limit on the Interface Group, it will process all available baskets per job.[/su_box] #### Case2: How to Processing the Raw Basket Control Board using Event Trigger Apex **Expectation** The sequence of events to follow these steps: - **Raw Basket Sent to SKYVVA:** A raw basket is sent to **SKYVVA**, configured to process using the 'Event Trigger Apex'. When this happens, the basket is created with an initial status of 'Init'. - **Basket Published as an Event:** Subsequently, the basket is published as an event. **SKYVVA** Trigger subscribes to these events. - **Trigger Execution:** Upon subscription to the event, the **SKYVVA** Trigger executes the basket. This execution involves inbound processing. - **Processing Completion:** After the execution, the basket completes its processing. - **Basket Moved to 'Basket Histories':** Once the processing is complete, the basket is moved to the 'Basket Histories' section. - **Default User for Event Processing:** The event processing, by default, is handled by the user 'Automated Process'. This user is assigned as the default user for event processing. This flow outlines the lifecycle of a basket from its initial creation to its processing and eventual movement to the 'Basket Histories' section. The 'Event Trigger Apex' and the **SKYVVA** Trigger handle the execution and processing steps, and the default user 'Automated Process manages the event processing. **Required step:** - Create an **Integration** - Create an **Inbound Interface ** - Do** Mapping** - Interface setting in the section **“Runtime Configuration Inbound” **set the field **“Inbound Posting Behavior” = “Event Trigger Apex”** ![](../images/2023/12/image_2023_12_06T14_38_03_206Z.png) - For Create Raw Basket, we have two options: - Use** SKYYVA API V3/V4 Integrate** **Push Records **from Postman using** API V3/V4 Integrate **with** Mode Asynchronous** ![](../images/2023/12/image_2023_12_06T14_39_12_788Z.png) 2. Use** Webhook by Public Site **and link** Adapter **on the Interface - Push** Records **from** Postman **using** Webhook by Public Site** ![](../images/2023/12/image_2023_12_06T14_43_44_213Z.png) ![](../images/2023/12/image_2023_12_06T14_44_29_761Z.png) - After clicking **Send** -> when it responds with **Status 201**, it indicates that the Basket has been created. It also checks the **'Event Trigger Apex'** on the Interface, causing its status is change to **'Worker'**. The baskets are then displayed in the **'Pending Event Basket'** ![](../images/2023/12/image_2023_12_06T14_48_43_256Z.png) - After the basket processing is completed, those baskets are moved to **Basket Histories** ![](../images/2023/12/image_2023_12_06T14_50_14_338Z.png) - Also, that you can see the basket has been processed by the **“Automated Process”** user by default. ![](../images/2023/12/image_2023_12_06T14_51_22_354Z.png) - **Message Monitoring** ![](../images/2023/12/image_2023_12_06T14_52_22_981Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]** (This configuration Batch Size for Platform Event Trigger)**[/su_box] **Example of processing Event Basket:** - **10-20 basket processes in one trigger in the same transaction:**  A trigger initiates processing a set of 10-20 baskets (collections of items or data) within a single transaction in an **SKYVVA** application. - **The user processes each of them one by one in the same transaction:** After the trigger initiates the processing, each basket within that set (10-20 baskets) is processed sequentially, one after the other, still within the same transaction context. This sequential handling ensures that each basket's processing occurs independently but within the same overarching transactional boundary. - **Basket1 > Posted spend 20 Queries, Basket2 > Posted spend 20 Queries... 100 queries hit limit:** This means that each basket processing involves a certain number of queries (database requests, or operations). As each basket is processed one by one within the same transaction, a limit of 100 queries is imposed, potentially causing an issue when processing the subsequent baskets. Once the limit of 100 queries is reached cumulatively across all the baskets processed in the transaction, it can result in a limitation, potentially affecting further processing or triggering an SKYVVA app-defined limit. - If there is any limit issue and not able to process e.g., **Too many SOQL queried: 101.** ![](../images/2023/12/image_2023_12_06T14_54_16_879Z.png) We can set configure (**PlatformEventSubscriberConfig**) this setting is not mandatory because the batch size of the message could be set by the number of records and specify the **‘Automate Process’** user. By default, the trigger runs as the “**Automated Process**” system user with a batch size of 2,000 event messages. - **Setting Batch Size**: Instead of processing all baskets at once in a single trigger transaction, the suggestion is to limit the batch size to, say, **5** baskets per transaction. By doing this, it might take a bit longer to process as each batch will have fewer baskets, but it helps avoid hitting limits imposed by Salesforce. - **Query Limits**: With a smaller batch size (**5** baskets in this case), each basket's processing involves, let's say, **20** queries. So, for those **5** baskets, the user is using up a total of **100** queries. To avoid exceeding the query limit, the transaction ends after these **100** queries (after processing these **5** baskets). - **Sequential Processing**: The remaining baskets that haven't been processed (those beyond the first batch of **5 **baskets) will be handled in subsequent trigger transactions. For example, another trigger transaction would process the next set of **5** baskets, ensuring that each batch stays within the query limit and avoids hitting Salesforce limits. You can configure it anyway by following the salesforce document link: –  [Configure the User and Batch Size for Your Platform Event Trigger with PlatformEventSubscriberConfig](https://developer.salesforce.com/docs/atlas.en-us.platform_events.meta/platform_events/platform_events_trigger_config.htm) [su_box title="Example with Rest API using Postman:" box_color="#2a8af0" title_color="#000000"]*URL: ‘URL_Salesforce_Classic’/services/data/v57.0/tooling/sobjects/PlatformEventSubscriberConfig* *Method: POST* *Body: * *{* *"BatchSize": "5",* *"DeveloperName":"trgEventSubscriberConfig",* *"MasterLabel":"trgEventSubscriberConfig",* *"PlatformEventConsumerId":"01q5t0000002cIiAAI",* *"UserId":"0055t000004C9jIAAS"* *}*[/su_box] **![](../images/2023/12/image_2023_12_06T15_02_13_609Z.png)** **Apex Trigger ID: ** `*Select id, Name from Apextrigger*` ![](../images/2023/12/image_2023_12_06T15_03_40_478Z.png) **Query the Configuration PlatformEventSubscriberConfig: ** `*Select id, DeveloperName, MasterLabel, PlatformEventConsumerId, PlatformEventConsumer.Name, UserId, User.Name, BatchSize from PlatformEventSubscriberConfig*` ![](../images/2023/12/image_2023_12_06T15_05_14_479Z.png) #### Summary Now users understand the purpose of a raw basket and utilize **SKYVVA** tools to create, populate, process, and transmit data within it, users can facilitate seamless integration between disparate systems or applications, ensuring efficient data flow and manipulation. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use mapping? Title: 3. How to do filter condition on mapping? Slug: 3-how-to-do-filter-condition-on-mapping URL: https://help.skyvva.com/#article/3-how-to-do-filter-condition-on-mapping ================================================================================ # 3. How to do filter condition on mapping? #### Introduction At Skyvva, we empower our users with advanced capabilities to enhance their mapping processes. One such feature that sets us apart is the ability to apply filter conditions on mappings. This functionality proves invaluable for customers seeking precision and control in their data integration. With Skyvva, users can effortlessly define conditions tailored to their specific requirements, ensuring a seamless and customized mapping experience. Let us guide you through the transformative power of filter conditions, allowing you to fine-tune your mappings and achieve unparalleled flexibility in your data integration workflows. #### The benefit of this function This function brings double the benefits! We can set conditions not only on the main data (parent node) but also on the detailed information (child node). When we set conditions on the parent node, it's like having a data detective. If we find a match in the parent's data, it smoothly inserts or updates Salesforce. No match? No problem. We won't generate any API messages. Now, on the child node side, it's a bit more dynamic. If the child data matches, it will create both the parent and child data in Salesforce. But, if the child data doesn't match, no worries—it still creates the parent data without bothering about the child. It's all about giving us the flexibility to handle data the way you need it. #### How to use the filter condition on mapping? **Pre-required** - Import message type - Create Integration - Create Inbound Interface. - Postman **Step 1:** Import message Type - Here’s the message type. ![](../images/2023/12/1.png) **Step2:** Create Integration. - Here’s Integration ![](../images/2023/12/2.png) **Step3:** Create Inbound Interface. - Here’s Inbound Interface link with message Type. ![](../images/2023/12/3.png) **Step4:**  Do mapping 1: Set Condition with parent node. - Double click on node root. ![](../images/2023/12/4.png) - Click Filter Condition and write the condition and save it. ![](../images/2023/12/5.png) ![](../images/2023/12/6.png) **Step: 5** execute this Interface by postman with inbound v3 and v4 In this case, we have 2 records which one is met condition and another one not meet so in Case it will create one records. - Here’s Inbound V3. ![](../images/2023/12/7.png) - Click send and see the response. ![](../images/2023/12/8.png) - Go to message monitor to see the message. ![](../images/2023/12/9.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to use Custom Adapter ? Slug: 1-how-to-use-custom-adapter URL: https://help.skyvva.com/#article/1-how-to-use-custom-adapter ================================================================================ # 1. How to use Custom Adapter ? #### Introduction Providing the capability to create custom adapters within the **SKYYVA** integration application empowers users with flexibility. This feature enables users to design and build adapters personalized to their specific needs, ensuring connectivity with systems or services not previously integrated into the **SKYVVA **app. By offering this functionality, users gain the ability to expand integration possibilities, connect with diverse platforms, and adapt to unique business requirements without relying completely on pre-existing adapters. This self-service approach personalized independence, allowing users to create adapters independently within the **SKYVVA** ecosystem. Here's an outline detailing the key aspects and functionalities of the custom adapter feature in the **SKYVVA** integration application: - **Purpose:** Facilitates integration with systems needed for pre-built connectors. - Configure users to create personalized adapters for specific applications or services. - **Creation Process:** **Adapter Builder Interface:** Provides a user-friendly environment for adapter creation. - **Configuration Options:** Allows defining endpoints, authentication methods, data mapping, and transformation rules. The custom adapter feature in the **SKYVVA** integration application empowers users to create, configure, and manage adapters personalized to their specific integration needs, alongside greater connectivity, flexibility, and scalability within the integration ecosystem. In this scenario, the custom adapter is an intermediary between the custom adapter and the **SKYVVA** app by utilizing a custom Apex class. This Apex class is likely responsible for handling the communication protocol, such as making requests to the external system and processing its responses. Users can create properties within this custom adapter that will be utilized as connection parameters for establishing connections with the external system. These properties include authentication details, endpoint URLs, headers, or type of adapter, name, tokens, and username password required to communicate effectively with the **SKYVVA** app. In Salesforce, users can access AWS S3 using Named Credentials in both the old way and the new way. The old way typically involves using Named Credentials with a custom endpoint and a remote site setting, while the new way leverages the “Amazon S3” provider for Named Credentials introduced in a Salesforce update. For more understanding, how to create Named credentials hit the link below           –  ***[Named credentials to access the AWS s3](#article/2-named-credentials-to-access-the-aws-s3)*** **Amazon SNS ** This example provides a high-level overview of the steps involved in creating a custom adapter to connect to Amazon **SNS** within the **SKYVVA** integration application. It involves configuring the adapter, setting up endpoints, and defining data mappings. Specific implementation details and scripting logic would vary based on the intricacies of integrating with Amazon SNS and the requirements of your integration workflow. Integrating with Amazon SNS involves the following steps: - **Setup AWS Account:** Ensure that you have an AWS account and the necessary credentials to access Amazon SNS. - **Create Named Credential: ** Create your name credential in set up with the necessary parameters for Amazon AWS, such as AWS Access Key, AWS Secret Key,.. - **Custom Apex Class Access**: We need to create a custom class in Salesforce Apex to support the property adapter within the SKYVVA integration application. - **Create a Custom Adapter:** - SKYVVA Integration application creates custom adapters, designs, and implements a custom adapter for Amazon SNS. This adapter handles the authentication, communication, and message formatting required for interacting with SNS. - [su_box title="Note" box_color="#2a8af0" title_color="#000000"] These steps depend on various factors such as the integration method chosen, security considerations, data mapping, and the overall architecture of the Salesforce instances & **SKYVVA** app involved.[/su_box] **Example:** The business requirement is to integrate the **SKYVVA** integration application with Amazon SNS using a custom adapter for seamless communication. This custom solution configures the application to effectively initiate outbound calls to Amazon SNS, ensuring efficient message delivery. The custom adapter serves as the bridge between **SKYVVA** and Amazon SNS, adhering to specific business needs and ensuring a smooth, secure data exchange process. This integration enhances communication capabilities, allowing the user to leverage the benefits of Amazon SNS within the **SKYVVA** integration ecosystem for streamlined and effective business operations. ***Pre-Required step: *** Below are the steps to create the **Custom Class, Adapter and Interface:** #### Create Custom Class: - Custom apex is required to extend the build in the **SKYVVA** apex class: - **skyvvasolutions.V3OutboundOperation** and override bellow methods: **Go to Setup** -> click **search** ‘**Apex Classes**’ and click the New button. ![](../images/2023/12/image_2023_12_11T16_05_01_885Z.png) - Input custom code and *Custom Adapter Class* name: **customCalloutSNS2** - click the save button. ![](../images/2023/12/image_2024_02_07T14_16_42_907Z.png) - Here’s the custom class, after the save button. ![](../images/2023/12/image_2024_02_07T14_20_24_695Z.png) **1.1. Create the Outbound Custom adapter.** - **Adapter Type**: Custom Adapter - **Properties of adapter**: the connection property username, password, token,.. The user clicks the **'New Property'** button and then inputs the name of the property depending on the Apex class being used at the time of creation **Named_Credentials** (is name of credential that create in salesforce set up) **topicArn **(get from amazon sns) **messageSubject** (is name Topics get from amazon sns) ![](../images/2023/12/image_2024_02_07T14_31_48_565Z.png) - Click **New Property** ![](../images/2023/12/image_2024_02_07T14_33_12_966Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]"Please ensure that your property names are unique and not duplicated."[/su_box] **Create the Integration.** **Create the Outbound Interface** - Fill Name - Select Deployed Status - Select Account Source Name - Select Outbound Direction - Select API V2 or V3 - Link with** Outbound Custom Adapter** - *Custom Adapter Class field*: Input the name of the class: **customCalloutSNS2** ![](../images/2023/12/image_2024_02_07T14_36_59_014Z.png) - Do Mapping. ![](../images/2023/12/image_2024_02_07T14_42_24_862Z.png) - CallOut in Apex Code. ![](../images/2023/12/image_2024_02_07T14_45_57_102Z.png) *`skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=false; c.returnXml=true; c.actionDoIntegrate=false; c.isCreateMessage=true; String[] ids= new String[]{'0018Y000038OFwUQAW'}; //Id of Account String integration = 'Integration'; //Integration Name String interfac = 'Limhai-Custom-Interface'; //Interface Name String mode = 'SYNC'; List resp = skyvvasolutions.Iservices.invokeCalloutV3(integration,interfac,ids,mode,c); if(resp!=null){ for(skyvvasolutions.CalloutResponse res: resp){ if(res.payloadJSON!=null){ System.debug('>payloadJSON>>'+res.payloadJSON); } if(res.payloadXML!=null){ System.debug('>payloadXML>>'+res.payloadXML); } } }`* - After CallOut success, you can search for messages on the message monitor. ![](../images/2023/12/image_2024_02_07T14_48_56_649Z.png) - Alert to email that subscribe to that topic: ![](../images/2023/12/image_2024_02_07T14_51_00_218Z.png) - Here is the callout, the record has its account name changed to the record ID. ![](../images/2023/12/image_2024_02_07T14_56_04_400Z.png) #### Summary: Now users learn that the process involves configuring the **SKYVVA** integration application with Amazon SNS by implementing a custom adapter for outbound calls. Enhance communication efficiency, ensuring seamless data exchange  Amazon SNS capabilities within the **SKYVVA** ecosystem for optimal business operations. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use mapping? Title: 4. How to use DateTime Mapping? Slug: 4-how-to-use-datetime-mapping URL: https://help.skyvva.com/#article/4-how-to-use-datetime-mapping ================================================================================ # 4. How to use DateTime Mapping? #### Introduction Using a DateTime mapping involves transforming DateTime values from one format to another. Here's a generalized approach to using a DateTime mapping : - **Identify Input Format**: Understand the format of the DateTime values you're receiving. In your case, it's in the format YYYY-MM-DDThh:mm:ss.xxx±hh:mm. - **Extract Components**: Break down the DateTime string into its components: Year (YYYY) - Month (MM) - Day (DD) - Hour (hh) - Minute (mm) - Second (ss) - Milliseconds/Microseconds (xxx) - Timezone Offset (±hh:mm) - **Transform the DateTime**: Decide on the target format or timezone you want the DateTime to be converted to. - Use programming or scripting languages to transform the DateTime string accordingly. Functions or methods for date manipulation can be employed here. - **Utilize Libraries or Functions**: Leverage language-specific libraries or functions designed to handle DateTime objects or strings. - Functions for parsing, formatting, and manipulating DateTime values are often available in most programming languages. Using a DateTime mapping requires transforming incoming DateTime values from one format to another. In your case, the format received from the target system is in the following six forms: - **YYYY-MM-DDThh:mm:ss.xxx+hh:mm** (e.g., 2023-03-24T08:57:07.733+02:00) - **YYYY-MM-DDThh:mm:ss.xxx-hh:mm** (e.g., 2023-03-24T08:57:07.733-02:00) - **YYYY-MM-DDThh:mm:ss+hh:mm **(e.g., 2023-04-04T16:30:07+02:00) - **YYYY-MM-DDThh:mm:ss-hh:mm **(e.g., 2023-04-04T16:30:07+02:00) - **YYYY-MM-DDThh:mm:ssZ **(e.g., 2023-03-28T14:16:04Z)** ** - **YYYY-MM-DDThh:mm:ss.xxxZ **(e.g., 2023-03-29T16:16:04.073Z) Here's a guideline on how to handle these DateTime formats: - **Understanding the Components**: YYYY: Year (four digits) - MM: Month (two digits) - DD: Day (two digits) - hh: Hour (two digits) - mm: Minute (two digits) - ss: Second (two digits) - xxx: Fractional seconds (milliseconds or microseconds) - ±hh:mm: Timezone offset (positive or negative hours and minutes) - **Processing the DateTime Values**: Users must parse these incoming DateTime strings to extract the individual components (year, month, day, hour, minute, second, milliseconds/microseconds, timezone offset). - **Transformation and Formatting**: Once the user has extracted these components, you can use programming or scripting languages (like Python, JavaScript, etc.) to transform the DateTime into the desired format. - For example, users can convert these DateTime strings into a standardized format, such as UTC or a specific timezone, or reformat them as required by your system. - **Consider Using Libraries or Functions**: Utilize programming language libraries or built-in functions designed to handle DateTime objects or strings. These often provide methods to efficiently parse, manipulate, and format DateTime values. ##### Use Case 1: Support format: YYYY-MM-DDThh:mm:ss.xxx+hh:mm (Ex: 2023-03-24T08:57:07.733+02:00) **Expectation: ** **SKYVVA** application stores DateTime values in a standard manner (UTC), disregarding the timezone component. To match the original DateTime from your system (which includes the timezone offset like `+02:00`), adjustments are required to align it with the **SKYVVA** application handling of DateTime. - To convert the received DateTime with a specified timezone offset to **SKYVVA** application default UTC format: - Given an example DateTime: 2023-03-27T01:55:07.733+02:00 - To convert it to UTC (remove the timezone offset of +02:00): - Subtract the timezone offset from the original DateTime. - The result will be a DateTime in UTC (+00:00). Following your example: - Original DateTime: 2023-03-27T01:55:07.733+02:00 - Subtracting the +02:00 timezone offset: 2023-03-27T01:55:07.733 - 2 hours = 2023-03-27T11:55:07.733+00:00 (UTC) This adjusted DateTime (`2023-03-27T11:55:07.733+00:00`) aligns with the **SKYVVA** application storage convention (UTC without a specified timezone). **Pre-requisite:  ** - Click set up to Create field Account (CreateDate) in Salesforce sObject. ![](../images/2023/12/image_2023_12_13T16_56_37_158Z.png) - Click Object Manager - Select an Account - Select Fields & Relationships - Click New button ![](../images/2023/12/image_2023_12_13T17_01_46_477Z.png) - Select Fields & Relationships - Click the New button - Choose the field type as Date/Time and click the button. ![](../images/2023/12/image_2023_12_13T17_06_26_334Z.png) - Enter the Field Name and click the next button. ![](../images/2023/12/image_2023_12_13T17_08_50_299Z.png) - Tick on Visible and click the next button. ![](../images/2023/12/image_2023_12_13T17_15_22_126Z.png) - Click the Save button. ![](../images/2023/12/image_2023_12_13T17_17_06_024Z.png) - Here’s the field, after creation. ![](../images/2023/12/image_2023_12_13T17_19_26_869Z.png) - Create the Integration. - Create an Inbound interface link with message type. ![](../images/2023/12/image_2023_12_13T17_22_13_685Z.png) 3. Do Mapping, we need to map the 'Datetime' field to the field that was created in the object. ![](../images/2023/12/image_2023_12_13T17_25_49_740Z.png) 4. Push data using data loader go to Integration click details page and click on Data Loader. ![](../images/2023/12/image_2023_12_13T17_30_35_690Z.png) - Here’s the message monitor. ![](../images/2023/12/image_2023_12_13T17_34_18_809Z.png) - Here’s the record. Format: **YYYY-MM-DDThh:mm:ss.xxx+hh:mm**, Ex:(2023-04-04T11:30:07.733+02:00) ![](../images/2023/12/image_2023_12_13T17_35_09_632Z.png) - Here’s the Result. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The current user login now GMT +7 time zone - Here is the datetime not yet covert to time zone (0) 2023-04-04T11:30:07.733+02:00. - Here is the time zone after covert to time zone (0) 2023-04-04T09:30:07.733+00:00 - Current display login user time zone GMT + 7 => 4/4/2023, 4:30 PM [/su_box] ![](../images/2023/12/image_2023_12_13T17_36_40_601Z.png) ##### Use Case 2: Support format: YYYY-MM-DDThh:mm:ss.xxx-hh:mm (ex: 2023-03-24T08:57:07.733-02:00) **Expectation: ** **SKYVVA** application stores datetime without time zone information (as UTC). To reconcile this difference and make it consistent with the zero time zone, you're subtracting 2 hours from the original time. - For instance, if the exported datetime is 2023-04-27T01:30:07.733+02:00, you'd subtract 2 hours to convert it to a zero time zone (UTC), resulting in 2023-04-26T23:30:07.733+00:00. - When displaying this datetime in the **SKYVVA** application for a specific user's timezone, the user will need to factor in the user's time zone offset to ensure accurate representation. - **SKYVVA** application typically handles this by adjusting the **UTC** datetime to the user's configured time zone for display purposes. ***Pre-requisite:*** - Do Mapping. ![](../images/2023/12/image_2023_12_14T17_43_56_921Z.png) 2. Go to Integration click Details Page and click on Data Loader. ![](../images/2023/12/image_2023_12_14T17_46_00_583Z.png) - Here’s the Message Monitor. ![](../images/2023/12/image_2023_12_14T17_47_34_901Z.png) - Here’s the record. Format: **YYYY-MM-DDThh:mm:ss.xxx-hh:mm**, (Ex: 2023-04-04T14:30:07.733-02:00) ![](../images/2023/12/image_2023_12_14T17_48_39_828Z.png) - Here’s the Result. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The current user login now GMT +7 time zone - Here is the datetime not yet covert to time zone (0) 2023-04-04T14:30:07.733-02:00 - Here is the time zone after covert to time zone (0) 2023-04-04T04:30:07.733-00:00 - Current display login user time zone GMT + 7 => 4/4/2023, 11:30 PM [/su_box] ##### Use Case 3: Support format: YYYY-MM-DDThh:mm:ss+hh:mm, (Ex: 2023-04-04T16:30:07+02:00) **Expectation:** **SKYVVA** application stores these datetime values without any time zone information (assumed to be in UTC). To align these exported date times with a zero time zone (UTC), you're subtracting 2 hours from the original datetime. - For instance, if the user has a datetime value such as 2023-03-27T01:55:07+02:00, subtracting 2 hours from the given time in +02:00 would result in 2023-03-26T23:55:07+00:00, reflecting the same moment in time but in UTC (zero time zone). - When the **SKYVVA** application displays these date times to a user, it typically considers the user's specified time zone to adjust the UTC datetime to the user's local time for presentation purposes. **SKYVVA** application has features that allow for dynamic conversions to ensure accurate representation based on the user's settings or context within the platform. This process helps ensure that when the datetime is displayed to a user in the **SKYVVA** application, it reflects their local time zone rather than UTC, providing a more meaningful representation of the time. ***Pre-requisite:*** - Push data using data loader go to Integration click details page and click on Data Loader. ![](../images/2023/12/image_2023_12_14T18_03_39_848Z.png) - Here’s the Message Monitor. ![](../images/2023/12/image_2023_12_14T18_04_57_974Z.png) - Here’s the record. **Format:** YYYY-MM-DDThh:mm:ss+hh:mm, (Ex: 2023-04-04T16:30:07+02:00) ![](../images/2023/12/image_2023_12_14T18_06_02_337Z.png) - Here’s the Result. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The current user login now GMT +7 time zone - Here is the datetime not yet covert to time zone (0) 2023-04-04T16:30:07+02:00 - Here is the time zone after covert to time zone (0) 2023-04-04T02:30:07-00:00 - Current display login user timezone GMT + 7 => 4/4/2023, 09:30 PM [/su_box] ![](../images/2023/12/image_2023_12_14T18_08_39_101Z.png) ##### Use Case 4: Support format: YYYY-MM-DDThh:mm:ss-hh:mm, (Ex: 2023-04-04T15:30:07-02:00) **Expectation:** **SKYVVA** application stores these date times without any timezone information (considered as UTC). To reconcile these differences and ensure the date time aligns with a zero time zone (UTC), you're subtracting 2 hours from the original datetime. - The user has a datetime value like 2023-03-27T01:55:07+02:00, subtracting 2 hours from the time in the +02:00 time zone would result in 2023-03-26T23:55:07+00:00. This conversion reflects the same moment in time but adjusted to UTC (zero time zone). - When the **SKYVVA** application displays these date times to a user, it considers the user's specified time zone settings to adjust the UTC datetime accordingly. **SKYVVA** application is equipped with functionalities to dynamically convert UTC times to the user's local time zone for accurate presentation and to ensure that the displayed datetime reflects the user's local time rather than just UTC. - Push data using data loader go to Integration click details page and click on Data Loader. ![](../images/2023/12/image_2023_12_14T18_18_22_813Z.png) - Here’s the Message Monitor ![](../images/2023/12/image_2023_12_14T18_19_15_095Z.png) - Here’s the record. Format:** YYYY-MM-DDThh:mm:ss-hh:mm**, (Ex: 2023-04-04T15:30:07-02:00) ![](../images/2023/12/image_2023_12_14T18_20_03_479Z.png) - Here’s the Result. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The current user login now GMT +7 time zone - Here is the datetime not yet covert to time zone (0) 2023-04-04T15:30:07-02:00 - Here is the time zone after covert to time zone (0) 2023-04-04T05:30:07-00:00 - Current display login user timezone GMT + 7 => 5/4/2023, 12:30 PM [/su_box] ![](../images/2023/12/image_2023_12_14T18_21_34_341Z.png) ##### Use Case 5: Support format: YYYY-MM-DDThh:mm:ssZ, (Ex: 2023-03-28T14:16:04Z) **Expectation:** - When importing datetime data into a system like **SKYVVA**, especially when dealing with users across various time zones, the application would be designed to handle these conversions. - It would interpret the incoming datetime values and adjust them according to the relevant user's time zone to ensure accurate representation within the application. - This process ensures that when users interact with datetime data within **SKYVVA**, they see it displayed in their preferred or configured time zone, providing a more intuitive and contextually relevant experience. - Push data using data loader go to Integration click details page and click on Data Loader. ![](../images/2023/12/image_2023_12_14T18_31_59_667Z.png) - Here’s the message monitor. ![](../images/2023/12/image_2023_12_14T18_33_17_707Z.png) - Here’s the record. Format:** YYYY-MM-DDThh:mm:ssZ**, (Ex: 2023-03-28T14:16:04Z) ![](../images/2023/12/image_2023_12_14T18_34_02_675Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will convert DateTime based on the user's time zone.[/su_box] ![](../images/2023/12/image_2023_12_14T18_36_31_425Z.png) ##### Use Case 6: Support format: YYYY-MM-DDThh:mm:ss.xxxZ,  (Ex: 2023-03-29T16:16:04.073Z) **Expectation:** When importing data into the **SKYVVA** application, the platform handles datetime conversion based on various factors, including the user's specified time zone. **SKYVVA** application is designed to manage datetime fields in a way that accounts for different time zones, ensuring that users see the timestamps adjusted to their local time settings. Here's how it typically works: - **Storing Datetime:**  The **SKYVVA** application stores datetime values in Coordinated Universal Time (UTC) by default. This means that when you import data if it includes datetime fields, they are stored in UTC. - **User Time Zone Settings:**  The **SKYVVA** application allows each user to set their preferred time zone in their user profile settings. When a user interacts with datetime fields, the **SKYVVA** application dynamically converts the stored UTC datetime values to the user's specified time zone for display purposes. - **Displaying Datetime:** Any datetime values displayed in the **SKYVVA** application, whether in records, reports, or interfaces, are adjusted to the user's time zone setting. This way, users see datetime values in their local time zone, providing a more personalized and meaningful experience. - **Imported Data Considerations:** When importing data into the **SKYVVA** application, especially if it includes datetime fields, the system retains the UTC format for storage. However, when users view or interact with this data, the **SKYVVA** application converts it to the appropriate time zone based on the user's settings. - Push data using data loader go to Integration click details page and click on Data Loader. ![](../images/2023/12/image_2023_12_14T18_42_25_811Z.png) - Here’s the Message Monitor. ![](../images/2023/12/image_2023_12_14T18_43_13_483Z.png) - Here’s the record. Format:** YYYY-MM-DDThh:mm:ss.xxxZ**,  (Ex: 2023-03-29T16:16:04.073Z) ![](../images/2023/12/image_2023_12_14T18_44_28_460Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will convert DateTime based on the user's time zone.[/su_box] ![](../images/2023/12/image_2023_12_14T18_45_57_035Z.png) ### Summary Now users understand the **SKYVVA** application and utilize the DateTime Mapping to dynamically transform datetime values during data imports or integrations. Configure this feature by defining DateTime Mapping that adjusts timestamps based on specific conditions or calculations, enabling seamless conversion of datetime data to match target formats, time zones, or custom requirements within **SKYVVA's** mapping interface. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: Pass Transform Query/Path/Header Parameter-Value by Mapping ? Slug: pass-transform-query-path-header-parameter-value-by-mapping URL: https://help.skyvva.com/#article/pass-transform-query-path-header-parameter-value-by-mapping ================================================================================ # Pass Transform Query/Path/Header Parameter-Value by Mapping ? #### Introduction Passing, transforming, querying, or modifying parameter values within an **SKYVVA** app or an API can be crucial for data manipulation and effective communication between different components.  This process is used to manipulate or pass values in various contexts, such as APIs, and data transformation pipelines, in our **SKYVVA** application integrations. In the realm of APIs, passing parameters involves transmitting specific values or information to endpoints to trigger actions or retrieve data. These parameters can be in the form of query parameters, path parameters, or header parameters, each serving a distinct purpose: - **Query Parameters:** These are key-value pairs appended to the URL of an API endpoint. They are used to filter, paginate, or modify the requested data by using our **SKYVVA** app. - **Path Parameters:** These parameters are embedded within the URL path itself, typically used to identify specific resources or endpoints by using our **SKYYVA** app. - **Header Parameters:** These are additional parameters sent within the header of an HTTP request. Headers contain metadata about the request or response, and they can be used to pass various information such as authentication tokens, content types, or custom data by using our **SKYVVA** app. Mapping techniques allow for the manipulation or transformation of these parameters. This can involve: - **Parameter Passing:** Establishing a direct link between input and output parameters, transmitting specific values from one **SKYYVA** app to another. - **Value Transformation:** Modifying or transforming parameter values before passing them along. This might involve converting data types, as per the business requirement. - **Conditional Mapping:** Defining rules or conditions for parameter handling based on certain criteria. For example, routing requests differently based on the values of specific parameters on the **SKYYVA** mapping tool. Implementing parameter-value mapping involves tools, middleware, transforms, and forwards parameters between the **SKYVVA **app. This process enables efficient communication and interaction between different parts of the **SKYVVA** application ecosystem. #### Case1: Passed direct Query/Path/Header value without Transform Users need to pass header, path, and query parameter values from a request made using ***invokeCalloutV3()*** in the developer console to an adapter, and then have the adapter use these values to generate a response that mirrors the received request parameters back to an inbound (response) interface. To accomplish this: - **Passing Parameters from Developer Console to Adapter:** Using ***invokeCalloutV3()*** in the developer console, the user sends an HTTP request to an endpoint handled by your adapter. - This request will contain header parameters, path parameters, and query parameters. - **Adapter Logic:** Within the adapter, the user needs logic to capture and extract the received header, path, and query parameters from the incoming request. - Store these parameters or their values appropriately for use in the response. - **Generating the Response:** Use the captured header, path, and query parameter values to construct the response payload. - Create the response in a way that mirrors the received parameters back to the inbound interface. - **Sending the Response:** Return the generated response from the adapter back to the inbound interface. - Ensure the response structure includes the header, path, and query parameters similar to those received in the request. This process involves handling the request parameters received by the adapter and constructing a response that includes these parameters to mirror the original request. It's crucial to accurately capture and reproduce these parameters to maintain consistency between the request and response interfaces. The proper error handling, validation, and transformation logic while using the parameters to ensure the integrity and security of the data by using the **SKYVVA** application. **Required step:** - Create **Interface** Request with** Rest Template** -> **Message Type** Request ![](../images/2023/12/image_2023_12_19T14_22_57_145Z.png) [su_box title="Note" box_color="#FF0000" title_color="#000000"] In This case we don’t use outbound mapping.[/su_box] - Setup **Adapter Rest** with dynamic **Path**, **Query,** and **Header** That API is just for testing by forwarding requests as response back with Path, Query, and Header ![](../images/2023/12/image_2023_12_19T14_28_59_876Z.png) - Create **Interface** Response with** Rest Template** -> **Message Type** Response ![](../images/2023/12/image_2023_12_19T14_31_21_685Z.png) - **Mapping** Response API back ![](../images/2023/12/image_2023_12_19T14_32_17_108Z.png) - Go to **Interface Request** link** Adapter** and** Interface Response** with interface. - Go to **Developer Console** -> **Open Execute Anonymous Window** ![](../images/2023/12/image_2023_12_19T14_33_10_601Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"] - Users can see the response from API when the request has been sent. - The header containing “sender=SKYVVA_TEST”, the path containing “apiversion=v1”, the query containing “modification_date=Datetime.now().format('yyyy-MM-dd\'T\'HH:mm:ss.SSSZ')”.[/su_box] After **Execute** Apex Code, we got the **Debug Log** ![](../images/2023/12/image_2023_12_19T14_39_53_807Z.png) **Message Monitoring API Response back** ![](../images/2023/12/image_2023_12_19T14_41_19_639Z.png) ![](../images/2023/12/image_2023_12_19T14_41_57_192Z.png) #### Case2: Passed Transform value through the mapping to Query/Path/Header at the adapter to invokeCalloutV3() - The goal is to pass header, path, and query values retrieved from Query/Path/Header Parameters using ***invokeCalloutV3()*** in the developer console. - These values will then be forwarded to a mapping process for transformation. Afterward, the transformed values will be sent to an adapter for a callout. - The objective is to ensure that the response includes the transformed values obtained from the request header, path, and query, allowing verification of the accuracy of parameter transformation in our **SKYVVA** application inbound (response) interface. **Required step:** - Create **Interface** Request with** Rest Template** -> **Message Type** Request ![](../images/2023/12/image_2023_12_19T14_52_43_037Z.png) - **Mapping **Interface Request ![](../images/2023/12/image_2023_12_19T14_53_42_816Z.png) - Setup **Adapter Rest** with dynamic **Path**, **Query,** and **Header** ![](../images/2023/12/image_2023_12_19T14_54_35_680Z.png) - Create **Interface** Response with** Rest Template **-> **Message Type** Response ![](../images/2023/12/image_2023_12_19T14_55_35_456Z.png) - **Mapping** Response API back ![](../images/2023/12/image_2023_12_19T14_56_24_726Z.png) - Go to **Interface Request** link** Adapter** and** Interface Response** with interface. - Go to **Developer Console** -> **Open Execute Anonymous Window** ![](../images/2023/12/image_2023_12_19T14_57_27_600Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"] - Users can see the response value transform from API when the request has been sent. - The header containing “sender=SKYVVA_TEST_transformed”, the path containing “Code=200”, the query containing “modification_date=Datetime.now().format('yyyy-MM-dd\'T\'HH:mm:ss.SSSZ')__transformed”.[/su_box] After **Execute** Apex Code, we got the **Debug Log** ![](../images/2023/12/image_2023_12_19T15_02_35_185Z.png) **Message Monitoring API Response back** ![](../images/2023/12/image_2023_12_19T15_04_04_116Z.png) ![](../images/2023/12/image_2023_12_19T15_05_33_043Z.png) #### Case3: Passed "__SKYVVA__LAST_RUN_DATE_TIME" from Scheduler to Query/Path/Header - The case involves validating the transfer of Query/Path/Header values, specifically "__SKYVVA__LAST_RUN_DATE_TIME", from the request (outbound) to the response (inbound) through an interface executed scheduler into the Query/Path/Header parameters for the ***invokeCalloutV3()*** execution. - The expected outcome is to extract the "__SKYVVA__LAST_RUN_DATE_TIME" value from the request and use it in the Query/Path/Header parameters to request an API via an interface executed scheduler. Subsequently, the response retrieved from this process will contain the last run date value, enabling a comparison with the originally passed value. - This comparison aims to verify whether the value passed in the request aligns correctly with the **SKYVVA** application. **Required step:** - Create **Interface **Request with** Rest Template **-> **Message Type** Request ![](../images/2023/12/image_2023_12_19T15_12_15_617Z.png) - **Mapping **Interface Request ![](../images/2023/12/image_2023_12_19T15_13_05_893Z.png) - Setup **Adapter Rest** support **Path** parameter as **Data Time** ![](../images/2023/12/image_2023_12_19T15_13_59_224Z.png) - Create **Interface** Response with** Rest Template** ->**Message Type** Response ![](../images/2023/12/image_2023_12_19T15_15_09_625Z.png) - **Mapping **Response API back ![](../images/2023/12/image_2023_12_19T15_16_06_940Z.png) Go to **Interface Request** link** Adapter** and** Interface Response** with interface. - **After **linking** the Adapter** and** Interface Response**, go to Integration -> Scheduler -> Start Run Interface Execution Scheduler - **First Scheduler run** ![](../images/2023/12/image_2023_12_19T15_18_33_751Z.png) **      2. Seconds Scheduler run** ![](../images/2023/12/image_2023_12_19T15_20_35_996Z.png) ![](../images/2023/12/image_2023_12_19T15_21_13_823Z.png) - **Message Monitoring ** [su_box title="Note:" box_color="#2a8af0" title_color="#000000"] - A request is generated where the last run value from the interface executed scheduler is passed into the path parameter. Subsequently, upon receiving this request, the **SKYVVA** app responds with the same value passed in the account name field to either create or modify the account. - The scheduler execution involves using the last run value in the path parameter of the request. - Processes this value in the account name field of the response within the **SKYVVA** app. This action creates a new account or modifies an existing one based on the received value. [/su_box] ![](../images/2023/12/image_2023_12_19T15_33_17_038Z.png) [su_box title="Note:" box_color="#FF0000" title_color="#000000"] - **Default Value for First Run:** The default value used during the initial run is set as *1800-01-01T00:00:00.000+0000*. This value likely serves as a starting point when there's no previously recorded last run date. - **Setting Initial Value:** This initial value can be configured by adjusting the Interface Control Runtime, specifically related to the record type V3 Outbound Execution. This setup involves associating this record with the last run value to initialize the process. - **Passing _SKYVVA_LAST_RUN_DATE_TIME:** The scheduler is responsible for passing *_SKYVVA_LAST_RUN_DATE_TIME* as a parameter or value to the Query/Path/Header. This parameter represents or holds the last run date and is crucial for subsequent operations during the scheduler's execution. [/su_box] #### Summary Now user learned how our **SKYVVA** application facilitates parameter-value transformation via mapping. Users pass query, path, and header data through interfaces, manipulating and transforming values for outbound calls. Scheduler executions manage last run dates, initiating requests with transformed parameters. These transformed values integrate into API calls through adapters. Responses contain transformed data, verifying correctness. **SKYVVA** app streamlines parameter handling, ensuring accurate data transmission and compatibility between systems. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 1. How to Export CSV Hierarchical Payload? Slug: 1-how-to-export-csv-hierarchical-payload URL: https://help.skyvva.com/#article/1-how-to-export-csv-hierarchical-payload ================================================================================ # 1. How to Export CSV Hierarchical Payload? **Internet Adapter can execute a callout with a CSV payload for the V3 hierarchy that has Multiple Levels** Objectives of the Enhancement: - **Enhanced Flexibility:** The primary goal is to make the export functionality more adaptable, especially when dealing with multi-level hierarchical data in CSV format. - **Child Record Generation:** The enhancement intends to streamline the generation of child records within this hierarchical structure. Expected Outcome: - **Hierarchical Structure Clarification:** The introduction of node prefixes should bring clarity to the hierarchy, making it easier to detect different levels of data within the CSV file. - **Improved Data Organization:** The node prefixes should facilitate better organization, especially when there are multiple levels of data, making it easier to interpret relationships between parent and child records. - **Enhanced Flexibility:** The adaptation should ensure that the CSV export feature becomes more flexible, accommodating various levels of hierarchy efficiently. **Required step:** - Create an** Integration** - Create an** Outbound Adapter e.g., Google Drive** ![](../images/2024/01/image_2024_01_10T13_56_31_532Z.png) - Create an** Outbound Interface ->** set **Interface API Version**: **V3 -> **Do** Mapping -> **link **Adapter** with interface ![](../images/2024/01/image_2024_01_10T13_57_31_844Z.png) - Go to **Interface Detail** -> Scroll down to **SOQL Query for filter sObject** -> Set the condition on the file **Filter Query** ![](../images/2024/01/image_2024_01_10T13_58_30_719Z.png) - Click on the **Manual Process** button to callout the records ![](../images/2024/01/image_2024_01_10T13_59_32_354Z.png) - After clicking **Send**, we got the **Message Monitoring** ![](../images/2024/01/image_2024_01_10T14_00_40_828Z.png) - Here is the** Payload **from** Google Drive** ![](../images/2024/01/image_2024_01_10T14_01_28_640Z.png) - Here is the generated CSV payload. You can see the generated CSV below. The mapping is hierarchical, generating nodes with dots as prefixes for field mapping inputs to the headers. **For example,** 'nodex.fieldx' represents the parent-child mapping. ![](../images/2024/01/image_2024_01_10T14_02_59_115Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]When clicking the **'Manual Process'** button to execute the callout, we receive the **'Message Success'** along with the payload, which is determined based on the conditions set in the **'Filter Query'** of the **'SOQL Query for filter sObject'** section. As a result, **Export Data V3** hierarchical in **CSV File** format is implemented for an internet adapter.[/su_box] - The 'Manual Process' button triggers the execution of a callout, leading to a 'Message Success' response in the **SKYVVA** integration app. This success message is maintained by a payload generated through conditions specified in the 'Filter Query' of the 'SOQL Query for filter sObject' section. This ensures that the exported data in the CSV File format adheres to predefined criteria. - The Export Data V3 hierarchical in CSV File format specifically caters to the internet adapter functionality within the **SKYVVA** integration app. By leveraging the 'Filter Query,' users can customize the data exported based on their specific requirements. The hierarchical structure ensures that the exported data maintains a well-organized format, crucial for handling complex datasets. - This up-to-date process allows users to manually initiate data export, ensuring flexibility and control. The successful execution of the callout, coupled with the attachment to filter conditions, guarantees that the exported data aligns with the desired parameters. The CSV File format further facilitates easy data manipulation and analysis, making the **SKYVVA** integration app a robust solution for internet adapter business scenarios. [su_box title="Note" box_color="#FF3046" title_color="#000000"]The generated **CSV** file supports **V3** hierarchy and has been Implemented for adapter **Google** **Drive**, **DropBox**, **One** **Drive**, **Google Pub/Sub, and Amazon S3.[/su_box]** **Generating Flat CSV Payload with Execute Callout V3** Key Points: - **Level Mapping:** The initial step involves mapping a level within the system, likely associating fields or attributes to the target side. - **Callout V3 Execution:** This execution seems to trigger a process or function (**Callout V3**) responsible for generating field maps based on the mapped level. - **No Prefix Generation:** The distinct expectation here is that the output of this process should only generate field maps without any prefixes attached. Expected Outcome: - **Field Map Generation:** The main outcome anticipated from the execution of **Callout V3** after level mapping is the creation of field maps. These maps likely define the relationship between data elements and their destination or usage. - **Absence of Prefixes:** There's an explicit expectation that these field maps will not contain any prefixes. This suggests a desire for a clean and direct mapping output without additional identifiers or naming conventions. **Required step:** - Create an** Integration** - Create an** Outbound Adapter e.g., Google Drive** ![](../images/2024/01/image_2024_01_10T14_09_50_332Z.png) - Create an **Outbound Interface ->** set **Interface API Version**: **V3 -> **Do** Mapping -> **link **Adapter** with interface ![](../images/2024/01/image_2024_01_10T14_10_43_932Z.png) - Go to **Interface Detail** -> Scroll down to **SOQL Query for filter sObject** -> Set the condition on the file **Filter Query** ![](../images/2024/01/image_2024_01_10T14_11_40_520Z.png) - Click on the **Manual Process** button to callout the records ![](../images/2024/01/image_2024_01_10T14_12_30_153Z.png) - After clicking **Send**, we got the **Message Monitoring** ![](../images/2024/01/image_2024_01_10T14_13_27_690Z.png) - Here is the** Payload **from** Google Drive** ![](../images/2024/01/image_2024_01_10T14_14_20_390Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]After execution, the generated CSV payload does not have any prefixes when you have mapped a level in the mapping.[/su_box] - If the user mapped a level in the mapping, it's essential to ensure that the generated CSV payload includes the necessary prefixes after execution in the **SKYVVA** integration app. The absence of prefixes might be due to mapping configurations or data transformation issues. - Firstly, review the mapping settings to confirm that the user correctly defined the mappings for the desired level. Check for any missing prefixes or naming conventions in the mapping configuration that might impact the CSV output. - Additionally, inspect the data transformation logic within the mapping. Verify that the transformation rules are correctly applying the prefixes during the execution process. Look out for any conditional statements or expressions that might affect the prefix generation and adjust them accordingly. - If the issue persists, consider checking the integration settings and the source data format to guarantee compatibility with the mapping specifications. It's crucial to align the mapping structure with the source data to ensure accurate prefix application in the generated CSV payload. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: Introduction Slug: internat-drive-adapter-1-introduction URL: https://help.skyvva.com/#article/internat-drive-adapter-1-introduction ================================================================================ # Introduction Internet Drive is a versatile service that enables secure storage and access to your files on popular cloud storage platforms such as Google Drive, Dropbox, Microsoft OneDrive, and Amazon S3. As a result, we offer a range of adapters to seamlessly connect these drives between Salesforce and the Internet Drive service of your choice. These adapters empower you to integrate your Salesforce environment with leading cloud storage providers, facilitating efficient file management and collaboration. Whether you need to retrieve documents from Google Drive, synchronize data with Dropbox, or utilize other cloud storage platforms, our adapters ensure smooth data exchange and streamline workflows between Salesforce and Internet drives. With Internet Drive, you can harness the power of cloud storage while maintaining data security and easy accessibility within the Salesforce ecosystem. Currently, we offer four adapters for Google Drive, Dropbox, Microsoft OneDrive, and Amazon S3. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: How to Import Internet Adapter using Batch Mode ? Slug: how-to-import-internet-adapter-using-batch-mode URL: https://help.skyvva.com/#article/how-to-import-internet-adapter-using-batch-mode ================================================================================ # How to Import Internet Adapter using Batch Mode ? **Internet Adapter for the Inbound Interface using Batch Mode.** The set of features that support the inbound processing of the Internet Drive adapter across the platforms. It supports popular services like Google Drive and Dropbox & handles different data formats such as XML, CSV, and JSON, which is a valuable feature for users as per business requirements. The addition of Batch Processing mode is a notable enhancement, allowing users to manage data in larger quantities more efficiently. The capability to create a Batch Basket in the Batch Control Board using the **SKYVVA** integration application adds an extra layer of organization and control, streamlining the workflow for users who prefer or require batch processing. This comprehensive support and advanced features make your Internet Drive adapter a versatile and powerful tool for users looking to integrate and process data from various sources. It is helpful for users dealing with large datasets or wanting to automate and streamline their data processing workflows. **Expectation**, a setting called 'Batch' triggers the creation of a Batch Basket in a Batch Control Board through the **SKYVVA** integration application. This suggests a specific workflow, and integration process within a system. Here's a breakdown of the scenario: - **Setting Configuration:** There is a configuration setting, within the **SKYVVA** integration application, that can be set to 'Batch'. - **Integration Application (Skyvva):** Skyvva is an integration application used in this context. **SKYVVA** is responsible for handling data integration/communication between different systems. - **Batch Basket Creation:** When the setting is configured to 'Batch', the integration application (**SKYVVA** ) initiates the creation of a Batch Basket. - **Batch Control Board:** The Batch Basket is created in the Batch Control Board. Batch Control Board where batch processing is managed. [su_box title="Note" box_color="#ff0000" title_color="#000000"] - In Synchronous mode, the interface pushes all records in the file to create a single basket in the batch control board. - In Asynchronous mode, the interface can divide the records from the CSV file to create baskets based on the settings specified in the interface (specifically, the setting for Transfer Package Size on the Interface Detail page in the Information section). - The Asynchronous mode can only divide records while using the CSV format; it cannot be applied to other formats. [/su_box] **Required step:** - Create an** Integration ** - Create an** Inbound Adapter e.g., Google Drive** - Create an** Inbound Interface -> **setting** Processing Mode: Synchronous -> **Do** Mapping -> **link** Adapter Google Drive **with** Interface** - Go to** Interface Detail -> **scroll down to** Batch Setting -> **tick** Batch Mode** ![](../images/2024/01/image_2024_03_05T14_15_33_955Z.png) - Click on the **Manual Process** button for the **Read file** from **Google Drive.** ![](../images/2024/01/image_2024_03_05T14_16_43_983Z.png) - **Apex Job** ![](../images/2024/01/image_2024_03_05T14_17_39_168Z.png) - After apex job processing is completed, it will create a basket in** the Batch Control Board.** ![](../images/2024/01/image_2024_03_05T14_19_59_803Z.png) - Then we can process them as **Batch Processing** manually or schedule whatever user want ![](../images/2024/01/image_2024_03_05T14_20_57_090Z.png) - **Apex job **process basket ![](../images/2024/01/image_2024_03_05T14_22_10_905Z.png) - After Apex Job processing was completed, we got the **Message Monitoring** ![](../images/2024/01/image_2024_03_05T14_23_10_026Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]After the basket processing is completed, a success message is generated, indicating that the records have been successfully created in Salesforce[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use mapping? Title: Allow A Formula Field Use as an External Id Slug: allow-a-formula-field-use-as-an-external-id URL: https://help.skyvva.com/#article/allow-a-formula-field-use-as-an-external-id ================================================================================ # Allow A Formula Field Use as an External Id #### Allow a formula field to map Allow a formula field to map and use as an external Id, Our **SKYVVA** application mapping doesn't allow mapping from the source field to a formula field of a sObject. However when the formula field is used as the external Id then we should allow use. We have allowed user mapping from source to read only / formula field. - **Allow inbound V3 processing to be done on the salesforce formula field as an external id** - Creating Formula Field, Interface inbound Mapping Formula field use it with External ID - Using the Salesforce formula field as an external ID for mapping in the **SKYVVA** integration application, and users suppose it to work for delete/upsert/insert/update operations based on that external ID during V3/V4 inbound processing, you may need to follow these general steps: **Create a Formula Field:** In your Salesforce object, create a formula field that generates the external ID based on the business logic. - **Custom Field for External ID:** Create a separate custom field in the same object to store the result of the formula field. This custom field will be used as an external ID. - **Map the Custom Field in SKYVVA:** In **SKYVVA**, map the custom field (which stores the result of the formula) as an external ID. **SKYVVA integration app** supports this kind of mapping for V3/V4 inbound processing. - **Configure Mapping Logic:** Configure the mapping logic in the **SKYVVA integration app** to use the custom field as the external ID during delete/upsert/insert/update operations. This configuration is done within the integration mapping settings. **Pre-requisite** - Create Interface - Mapping some field - Create External ID mapping with salesforce's formula field. **Required step:** - Create Formula field Go to **Setup -> Object Manager -> Account -> Fields & Relationships** **Step1: **click **New** button -> select **Formula** -> **Next** ![](../images/2023/06/image_2024_01_24T13_52_44_238Z.png) **Step2: **Input **Field Name -> **select **Formula Return Type** -> **Next** ![](../images/2023/06/image_2024_01_24T13_53_41_695Z.png) **Step3: **Insert field you need to use formula field** -> **then click** Next** ![](../images/2023/06/image_2024_01_24T13_54_30_147Z.png) **Step4: **Allow all** Visible -> Next** ![](../images/2023/06/image_2024_01_24T13_55_17_326Z.png) **Step5: **Click** Save** ![](../images/2023/06/image_2024_01_24T13_56_02_386Z.png) - Create **Integration** -> **Interface Inbound** -> Mapping some field -> then tick external id with formula field we already create -> **Save** ![](../images/2023/06/image_2024_01_24T13_57_33_380Z.png) - After Mapping already we can upload records from **Data Loader** - Go to **Data Loader** -> Select **Function Import Data** -> Choose **Interface** -> **Format**: data type CSV and CSV Separator -> Select File to Upload -> click **Upload File** ![](../images/2023/06/image_2024_01_24T13_58_46_506Z.png) - After uploading -> select **Record** -> click the **Push** button ![](../images/2023/06/image_2024_01_24T13_59_53_095Z.png) - Go to check the record on Message Monitoring ![](../images/2023/06/image_2024_01_24T14_01_33_286Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]Users will be able to map the Salesforce formula field as an external ID, enabling delete/upsert/insert/update operations based on the external ID generated by the Salesforce formula field. This functionality is specific to V3/V4 inbound processing within the **SKYVVA** integration application.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 2. How to Export Binary file using manual process ? Slug: 2-how-to-export-binary-file-using-manual-process URL: https://help.skyvva.com/#article/2-how-to-export-binary-file-using-manual-process ================================================================================ # 2. How to Export Binary file using manual process ? The technical integration scenario involves the **SKYVVA** integration application and the handling of binary files in the context of an Internet Adapter for outbound interfaces. While dealing with binary files in integration, the user will consider the following aspects: - **File Format:** Ensure that you understand the format of the binary files you are dealing with. This is crucial for proper handling and interpretation of the data. - **Encoding and Decoding:** Binary files need to be encoded before transmission and decoded upon reception. Common encoding methods include Base64 encoding. Ensure that both the sender and receiver understand and agree on the encoding/decoding process. - **Message Transformation:** The **SKYVVA** integration application provides features for transforming messages. Ensure that the user integration scenario includes appropriate transformations to handle binary data. - **Adapter Configuration:** For the specific Internet Adapter involved, make sure it's configured to handle binary data. Configure the adapter to specific settings or configurations related to binary file handling. When transmitting binary files, especially over the internet, consider encryption and secure transmission protocols to protect the data. ##### Expectation: How does the outbound processing of the Internet adapter work in a user integration scenario? The goal is to export a binary file type, such as an image stored as a binary blob in Salesforce, and send it to Google Drive. Here's a step-by-step overview of the process: - **Base64 Encoding in Salesforce:** Convert the binary blob (image) stored in Salesforce to a Base64-encoded string. Salesforce supports encoding binary data to Base64 through Apex code. This encoding ensures that the binary data is represented as a string. - **Mapping in SKYVVA Integration Application:** The mapping only supports string format, ensure that the mapping configurations in the **SKYVVA** integration application are set up to handle the Base64-encoded string format. - **Outbound Processing with Internet Adapter:** Configure the outbound processing in the Internet adapter (Google Drive) to accept the Base64-encoded string as input. - Ensure that the Internet adapter is set up to handle binary data, in this case, the Base64-encoded string. - **Transmission to Google Drive:** Use the configured Internet adapter in support of the **SKYVVA** integration application to transmit the Base64-encoded string to Google Drive. [su_box title="Note" box_color="#D71339" title_color="#000000"]The support for Binary File type has been integrated into adapters such as Google Drive, Dropbox, Amazon S3, and Microsoft OneDrive.[/su_box] ##### Required step: - Create an **Integration** - Create an** Outbound Adapter, Google Drive** ![](../images/2024/02/image_2024_02_15T12_06_29_983Z.png) - Create an** Outbound Interface ->** Create **IStructure** on the Interface -> Do** Mapping** ![](../images/2024/02/image_2024_02_15T12_07_33_656Z.png) ##### Define Interface and Mapping: - Required fixed message field entries where you can map any formula for file name, extension, or any other desired field: FILE_NAME - FILE_EXTENION - FILE_BODY - Users can create a custom message type with these required fields or use IStructure directly on the interface. - The Transfer Package Size must be 1 because we cannot send multiple requests per transaction. This limitation is due to the potential large mapping result from our outbound processing, which returns a **Map** in Base64 format. Go to **Interface Detail** **->** Scroll down to **SOQL Query for filter sObject** **->** Set the condition on the file **Filter Query** ![](../images/2024/02/image_2024_02_15T12_09_00_324Z.png) - Click on the **Manual Process** button to callout the records ![](../images/2024/02/image_2024_02_15T12_09_51_214Z.png) - **Apex Job** ![](../images/2024/02/image_2024_02_15T12_10_37_384Z.png) - After apex job processing was completed, we got the **Message Monitoring** ![](../images/2024/02/image_2024_02_15T12_11_42_985Z.png) - Here is the** Payload **from** Google Drive** ![](../images/2024/02/image_2024_02_15T12_12_24_623Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]The 'Manual Process' button for the callout execution, we obtain a 'Message Success' notification accompanied by a payload. This payload is determined by the conditions specified in the 'Filter Query' of the 'SOQL Query for filter sObject' section. Consequently, the payload retrieved from Google Drive contains images represented as a binary blob.[/su_box] ##### Note: - If you mapping **ConectVersion** are missing required field '**FILE_BODY**' with '**VersionData(base64)**', when you execute callout the records with binary, you get with the failed message monitoring as below. ![](../images/2024/02/image_2024_02_15T12_31_10_943Z.png) - If you using **Transfer Package Size** set on the Interface. The **Binary File** cannot support multiple files per request due to the potential size limitation of the mapping result. Since the mapping result is a base64(string), it can become excessively large. Therefore, when we set the **Transfer Package Size** on the interface and execute the callout, an error message will be alerted stating **'The builder does not allow more than one message'**. ![](../images/2024/02/image_2024_02_15T12_54_07_082Z.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use mapping? Title: How to Export Interface API Version V3 without a message type ? Slug: how-to-export-interface-api-version-v3-without-a-message-type URL: https://help.skyvva.com/#article/how-to-export-interface-api-version-v3-without-a-message-type ================================================================================ # How to Export Interface API Version V3 without a message type ? We are describing features and capabilities related to an API, specifically Interface API V3 mapping and the **SKYVVA** integration application. Let us break down the information: - **Interface API Version V3 Mapping:** **SKYVVA** application API supports V3 mapping. - The mapping involves a root node named 'sObject,' indicating a hierarchical structure for sObjects in the V3 version. - **V3 Hierarchical sObjects:** The V3 version of your API includes hierarchical sObjects under the root node 'sObject.' This suggests a structured nested representation of data. - **V3 Outbound Callouts:** Users can perform callouts using V3 Outbound. - Interestingly, users can execute ***callouts without specifying a message type***. This implies a flexibility behavior in the **SKYVVA** integration application. - **Skyvva Integration Application:** The integration application provided by **SKYVVA** enables the mentioned functionalities. - **SKYVVA** likely facilitates the seamless use of Interface API Version V3 mapping and V3 Outbound callouts. This feature-rich API with hierarchical data representation in Version 3, and the ability to perform callouts without explicitly specifying a message type when using the **SKYVVA** integration application. This is advantageous for users seeking flexibility and ease of use in the integration processes. **Example :** The business requirement is to integrate the **SKYVVA** integration application with the SAP CPI (SAP Cloud Platform Integration) adapter, the user is allowed to leverage Interface API Version V3 mapping. This involves the inclusion of a root node named 'sObject,' indicating V3 hierarchical sObjects. Additionally, the user can execute callouts with V3 Outbound without explicitly specifying a message type. This functionality is facilitated through the **SKYVVA** integration application. **V3 Outbound Callouts:** - The user is allowed to execute callouts using V3 Outbound. This means they can initiate communication or request data without the need to explicitly specify a message type. The flexibility in message type specification can simplify the integration process. ![](../images/2024/02/image_2024_02_23T11_48_02_570Z.png) **Required step:** - Create an **Integration** - Create an** Adapter e.g., Sap CPI** ![](../images/2024/02/image_2024_02_20T14_16_51_117Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]It will work with all adapters (support V3 processing), Data Loader, and SKYVVA Bulk Data Loader except SOAP adapter.[/su_box] - Create an** Interface Outbound** **->** set **Interface API Version**: **V3 -> **Do** Mapping -> **link **Adapter** with interface ![](../images/2024/02/image_2024_02_20T14_22_47_797Z.png) - Go to **Interface Detail** **->** Scroll down to **SOQL Query for filter sObject -> **Set the condition on the file** Filter Query** ![](../images/2024/02/image_2024_02_20T14_24_30_049Z.png) - Click on the **Manual Process** button to callout the records ![](../images/2024/02/image_2024_02_20T14_26_07_185Z.png) - After clicking **Send**, we got the **Message Monitoring** and the **Payload** ![](../images/2024/02/image_2024_02_20T14_29_02_656Z.png) [su_box title="**Result: **" box_color="#2a8af0" title_color="#000000"]When clicking the **'Manual Process'** button to execute the callout, we receive the **'Message Success'** along with the payload, which is determined based on the conditions set in the **'Filter Query'** of the **'SOQL Query for filter sObject'** section. As a result, the V3 outbound processing now supports V3 hierarchical sObjects mapping (**Interface API Version**).[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use mapping? Title: How to Import Interface API Version V3 without a message type ? Slug: how-to-import-interface-api-version-v3-without-a-message-type URL: https://help.skyvva.com/#article/how-to-import-interface-api-version-v3-without-a-message-type ================================================================================ # How to Import Interface API Version V3 without a message type ? We describe features and capabilities related to an API, specifically Interface API V3 mapping and the **SKYVVA** integration application. Let us break down the information: - **Interface API Version V3 Mapping:** **SKYVVA** application API supports V3 mapping. - The mapping involves a root node named ‘sObject,’ indicating a hierarchical structure for sObjects in the V3 version. - **V3 Hierarchical sObjects:** The V3 version of your API includes hierarchical sObjects under the root node ‘sObject.’ This suggests a structured nested representation of data. - **Message Type for V3 Inbound:** Typically, an interface or integration process involves sending and receiving messages. Ensure the users know the message types supported in Interface API Version V3 for inbound communication. - Verify the specific message type format required for V3 inbound messages using the **SKYVVA** integration application. - **Skyvva Integration Application:** The integration application provided by **SKYVVA** enables the mentioned functionalities. - Understand the capabilities and features of the **SKYVVA** integration application, especially regarding its support for Interface API Version V3 and handling hierarchical sObjects. - The **SKYVVA** integration application for managing and facilitating the integration process. **SKYVVA** is used for Salesforce integration which provides tools for mapping, monitoring, and managing data flows between systems. Inbound functionality denotes the capability for external applications to initiate communication with the **SKYVVA **adapter, either to retrieve information from Salesforce or to create and update records within it. Version 3 of this adapter boosts a feature-rich API, offering hierarchical data representation. Moreover, it allows for callouts without the need to explicitly define a message type when utilizing the **SKYVVA** integration application. This aspect proves advantageous for users who prioritize flexibility and simplicity in their integration flows, as it streamlines the process and enhances ease of use. **Example :** The business requirement is to integrate the **SKYVVA** integration application with the File adapter, the user is allowed to leverage Interface API Version V3 mapping. This involves the inclusion of a root node named 'sObject,' indicating V3 hierarchical sObjects. Additionally, the user can execute callouts with V3 Inbound without explicitly specifying a message type. This functionality is facilitated through the **SKYVVA** integration application. **V3 Inbound :** - The user is allowed to execute callouts using V3 Inbound. This initiates and executes data without explicitly specifying a message type. - The flexibility in message type specification can simplify the integration process.V3 allows for dynamic callouts without the need to explicitly specify a message type. - The users can initiate outbound requests to external systems without being restricted by predefined message formats. This flexibility simplifies integration configurations. ![](../images/2024/02/image_2024_02_23T12_23_58_322Z.png) **Required step:** - Create an **Integration** - Create an** Adapter e.g., File adapter** ![](../images/2024/02/image_2024_02_23T15_11_25_697Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]It will work with all adapters (support V3 processing), Data Loader, and SKYVVA Bulk Data Loader except SOAP adapter.[/su_box] - Create an** Interface Inbound** **->** set **Interface API Version**: **V3 -> **Do** Mapping -> **link **Adapter** with interface ![](../images/2024/02/image_2024_02_23T14_42_50_194Z.png) - Go to Agent** Control Board -> ** **Interface Detail** **->** Select your Interface ![](../images/2024/02/image_2024_02_23T14_46_55_467Z.png) - Click on the **Manual Process** button to job details for the object IDs sent ![](../images/2024/02/image_2024_02_23T14_48_49_536Z.png) - After clicking **Send**, we got the **Message Monitoring** and the **Payload** ![](../images/2024/02/image_2024_02_23T15_09_09_809Z.png) [su_box title="**Result: **" box_color="#2a8af0" title_color="#000000"]When clicking the **'Manual Process'** button to execute the callout, we receive the **'Message Success'** along with the payload. As a result, the V3 inbound processing now supports V3 hierarchical sObjects mapping (**Interface API Version**).[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: How to Query Records Changed from SAP Business Bydesign with Skyvva Scheduler? Slug: how-to-query-records-changed-from-sap-business-bydesign-with-skyvva-scheduler URL: https://help.skyvva.com/#article/how-to-query-records-changed-from-sap-business-bydesign-with-skyvva-scheduler ================================================================================ # How to Query Records Changed from SAP Business Bydesign with Skyvva Scheduler? #### Introduction In this tutorial, we will learn How to get the last modified Business partner object in SAP Business Bydesign using  Operation GET in  SAP business Bydesign Adapter. To get the data from  SAP Business partner in the SAP business Bydesign application to Salesforce. we need to have SAP Business Partner Message Type and SAP Business Bydesign Adapter. It is very helpful for user who want to get data last changed to insert or update to salesforce. We can process data manually and scheduler to know detail about How to run the outbound interface manually or scheduler please follow this link: #article/129-how-to-run-the-outbound-interface-through-the-manually-or-scheduler #### Pre-required: - Create Integration. - Create Sap Business Bydesign Connection Destination. - Create SAP business ByDesign Message type for Business Partner by using SAP Metadata Import. - Create Inbound and outbound Interfaces. - Create Sap Business Bydesign Adapter. **Step1:** Create Integration. To know detail about Integration, please follow this tutorial. [What is Integration, and How to use it? ](#article/what-is-an-integration-and-how-to-create-it) - Here’s Integration ![](../images/2024/02/1.png) **Step2:** Create Sap business Bydesign connection destination. Go to Integration Details -> click SAP Control Board. - Here’s the example. ![](../images/2024/02/2.png) Choose Destination New -> choose Type= Sap Business ByDesign -> Filling name –> click Continue Button - Here’s the example below. ![](../images/2024/02/3.png) - Filling Host Url, Username, password, Url path, and Company database which is Collection that User want to uses. Click Ping SAP Connection button to active the distention and click save button. See the example below. ![](../images/2024/02/4.png) To using Sap Business Bydesign URL, User need to Create Remote Site. - Here’s the example. Go to setup -> Search “Remote”-> click Remote Site Settings. ![](../images/2024/02/5.png) - Click new Remote site Button ![](../images/2024/02/6.png) - Filling name , URL of SAP business ByDesign and click save button. ![](../images/2024/02/7.png) **Step 3:** Create SAP business ByDesign Message type for Business Partner by using SAP Metadata Import. User need to have Metadata and repository. - Here’s Repository. Click Import SAP Metadata.  See the picture below. ![](../images/2024/02/8.png) - Choosing Direct SAP Connection?, Select Application: Sap Business Bydesign, Select Connection Destination, Select Template: Rest Template and click Retrieve Button. See the example below. ![](../images/2024/02/9.png) - Search Business Partner , and choosing Business Partner Collection and click Create Message Type. ![](../images/2024/02/10.png) - Here’s the Business Partner Collection Message Type. ![](../images/2024/02/11.png) - We need to create message type fields’ entry for LastChangeDateTime in message type Request. - Click Query parameter and create the Message Type Field Entry ![](../images/2024/02/28.png) - Create the message type field entry. ![](../images/2024/02/29.png) We also need to create Apex code for get the time. Go to setup and search Apex and click Apex Classes ![](../images/2021/09/17.png) - Click new ![](../images/2021/09/18.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Make sure that the timezone of sap business bydesign system is the same as the code.[/su_box] Here's the apex code. global virtual class IFormulaDatetimeBase extends skyvvasolutions.IFormulaBase { public String fmt = 'yyyy-MM-dd\'T\'HH:mm:ss.SSSZ'; public String timezone = 'GMT+00:00'; public DateTime dt = null; public override String execute(Map record) { System.debug('>IFormulaDatetimeBase>execute:' + record); String dtUtcIso = record.get('__SKYVVA__LAST_RUN_DATE_TIME'); System.debug('>IFormulaDatetimeBase>execute>__SKYVVA__LAST_RUN_DATE_TIME:' + dtUtcIso); // FOR TestFormula if (String.isBlank(dtUtcIso)){ String nowfmt=parse(System.now().formatGMT(fmt)); return 'Missing __SKYVVA__LAST_RUN_DATE_TIME from mapping, here is result for current time: '+nowfmt; } return parse(dtUtcIso); } public virtual String parse(String dtUtcIso) { System.debug('>IFormulaDatetimeBase.parse>datetime[' + dtUtcIso + ']>fomat[' + fmt + ']>timezone[' + timezone + ']'); dt = (DateTime) JSON.deserialize('"' + dtUtcIso + '"', DateTime.class); String result = dt.format(fmt, timezone); System.debug('>IFormulaDatetimeBase.parse>result:' + result); return result; } //2020-01-01 global class DateParser extends IFormulaDatetimeBase { public override String parse(String iso) { this.fmt = 'yyyy-MM-dd'; return super.parse(iso); } } //00:00:00 global class TimeParser extends IFormulaDatetimeBase { public override String parse(String iso) { this.fmt = 'HH:mm:ss'; return super.parse(iso); } } //2020-01-01T00:00:00Z global class DateTimeParser extends IFormulaDatetimeBase { public override String parse(String iso) { this.fmt = 'yyyy-MM-dd\'T\'HH:mm:ss'; String finalValue = super.parse(iso); return finalValue+'Z'; } } } - Here's the picture. ![](../images/2024/02/30.png) **Step 4:** Create Outbound and Inbound Interfaces and linked with message Type. - Here’s Outbound Interface. ![](../images/2024/02/12.png) - Here's the mapping ![](../images/2024/02/31.png) ![](../images/2024/02/32.png) - Here’s Inbound Interface. ![](../images/2024/02/13.png) - Here’s mapping. ![](../images/2024/02/14.png) - Linked Inbound Interface with Request Interface. Go to Request Interface and scroll down to find field Response Interface and select the Response Interface. ![](../images/2024/02/15.png) **Step4:** Create Sap Business Bydesign. ![](../images/2024/02/16.png) ![](../images/2024/02/17.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Put your url of the sap business by system.[/su_box] - Here’s the example url https://my425178.businessbydesign.cloud.sap/sap/byd/odata/cust/v1/khbusinesspartner/BusinessPartnerCollection ![](../images/2024/02/18.png) - Linked adapter with outbound ![](../images/2024/02/20.png) - Run scheduler on sap control board. And set time to running ![](../images/2024/02/21.png) - Click run ![](../images/2024/02/22.png) - Go to monitor to check the result ![](../images/2024/02/23.png) We can see the request is successful but no response due to no data change, now let change data in sap by design by using postman to change. ![](../images/2024/02/24.png) - Now go to monitor to see the result ![](../images/2024/02/25.png) ![](../images/2024/02/26.png) ![](../images/2024/02/27.png) #### Summary Finally, we have learned how to query data changed from sap business by design to salesforce by using Skyvva Scheduler. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: How to Import CSV Hierarchical to create "File Message"? Slug: how-to-import-csv-hierarchical-to-create-file-message URL: https://help.skyvva.com/#article/how-to-import-csv-hierarchical-to-create-file-message ================================================================================ # How to Import CSV Hierarchical to create "File Message"? - **File Message Inbound:** To create a "File Message" in the Inbound of the Internet Drive Adapter, the user needs to configure the adapter to process incoming files. This depends on the capabilities of the **SKYVVA** integration application and the Internet Drive Adapter. Configure the Inbound adapter to monitor a specific directory or endpoint for incoming files. - Define file format and naming conventions, so the adapter can distinguish between different types of files. - Map the file format to the appropriate fields in our **SKYVVA** application. For example, if the user receives CSV files, configure the adapter to process CSV files and map the columns to corresponding fields in your application. - **Integration with Skyvva:** Ensure that your CSV payload aligns with the data model requirements of **SKYVVA**. Users need to configure mappings, transformations, and integration settings within the **SKYVVA** platform. Define the integration flow, including the source (Internet Drive Adapter) and target (V3 Outbound Adapter). - Map fields between the source and target to ensure data is correctly transferred. ***Use Case: Inbound Interface of the Internet Adapter to create a 'File Message' on the Message Monitoring*** The inbound processing of certain adapters, particularly the Internet Adapter, within the context of the **SKYVVA** integration application. The key change is the introduction of a distinct Root Message, which inserts the Business Messages in the inbound processing. Here's a breakdown of the information: - **Enhancement Description:** **Root Message Introduction:** Previously, there was no designated Root Message in the inbound processing. - **Business Messages:** The inbound processing involved only Business Messages. - **Enhancement Outcome:** **Distinct Root Message:** After the enhancement, there is a distinct Root Message. - **Coverage of Business Messages:** This Root Message covers the Business Messages introduced in the inbound processing. - **Overall Expectation:** The expectation is that the Root Message now plays a crucial role in the inbound processing, serving as a container for the Business Messages. - This enhancement brings more clarity and structure to the processing of messages, making it easier to handle and manage Business Messages within the **SKYVVA** integration application, specifically for the Internet Adapter. [su_box title="Note" box_color="#f70055" title_color="#000000"]The **File Message** has been implemented for adapter **Google Drive**, **DropBox**, **One** **Drive**, and **Amazon** **S3**.[/su_box] **Required step:** - Create an **Integration** - Create an** Inbound Adapter e.g., Google Drive** ![](../images/2024/02/image_2024_02_28T15_19_52_914Z.png) - Create an** Interface Inbound** **->** set **Interface API Version**: **V3 -> **Do** Mapping -> **link **Adapter** with interface ![](../images/2024/02/image_2024_02_28T15_20_53_436Z.png) - Go to **Interface Detail** **-> **Click on the **Manual Process** button for Read files from Google Drive ![](../images/2024/02/image_2024_02_28T15_21_51_984Z.png) - After clicking **Push**, we can check processing on the **Apex Job** ![](../images/2024/02/image_2024_02_28T15_22_52_474Z.png) - After the **Apex** **Job** processing was completed, we got the **Message Monitoring** to have API Message call the **'File Message'** ![](../images/2024/02/image_2024_02_28T15_23_34_557Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"] The Message Monitoring it show the API Message call 'File Message' to cover the business message.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 4. How to execute a callout CSV payload for V3 Hierarchical has multiple Levels? Slug: how-to-execute-a-callout-csv-payload-for-v3-hierarchical-has-multiple-levels URL: https://help.skyvva.com/#article/how-to-execute-a-callout-csv-payload-for-v3-hierarchical-has-multiple-levels ================================================================================ # 4. How to execute a callout CSV payload for V3 Hierarchical has multiple Levels? **Integration with Skyvva:** Ensure that your CSV payload aligns with the data model requirements of **SKYVVA**. Users need to configure mappings, transformations, and integration settings within the **SKYVVA** platform. - Define the integration flow, including the source (Internet Drive Adapter) and target (V3 Outbound Adapter). - Map fields between the source and target to ensure data is correctly transferred. **CSV Payload of V3 Outbound Adapter for Hierarchy:** To support hierarchy in your CSV payload, users must consider using a nested or flat structure with reference identifiers. Here's an example using a nested structure: [su_box title="CSV" box_color="#2a8af0" title_color="#000000"]`ParentID,ParentName,ChildID,ChildName 1,Parent1,101,Child1A 1,Parent1,102,Child1B 2,Parent2,201,Child2A`[/su_box] It shows, that ParentId and ChildId establish the hierarchy, and you can have additional columns for other attributes. ***Use Case: The Internet Adapter can execute a callout with a CSV payload for the V3 hierarchy has Multiple Levels*** To accommodate the generation of child records with V3 hierarchical data in CSV file format, users have decided to introduce a node prefix when the interface has multiple levels. This is a common approach to creating a more flexible and organized structure in exported data. Here are some steps you can consider to implement this: - **Define Node Prefixes:** Determine a consistent naming convention for node prefixes based on the levels in your hierarchical structure. This prefix will help identify the hierarchy of each record in the CSV file. - **Update Interface Configuration:** Modify the interface configuration in the **SKYVVA **integration application to include the new node prefixes. This involves updating mapping, specifying the levels, and configuring how child records are related to their parent records. - **Adjust CSV File Generation Logic:** Update the logic responsible for generating CSV files to incorporate the node prefixes. Ensure that each record is assigned the appropriate prefix based on its position in the hierarchy. [su_box title="Note" box_color="#f70055" title_color="#000000"]The generated **CSV** file supports **V3** hierarchy and has been Implemented for adapter **Google** **Drive**, **DropBox**, **One** **Drive**, **Google Pub/Sub, and Amazon S3.**[/su_box] **Business Scenario**, we need to generate the hierarchical CSV like this: NodeAccount.FieldX,NodeContact.FieldX,NodeN.FieldX ValueOfAccount,ValueOfContact,ValueN **Required step:** - Create an** Integration** - Create an** Outbound Adapter e.g., Google Drive** ![](../images/2024/02/image_2024_02_29T15_58_16_550Z.png) - Create an** Outbound Interface ->** set **Interface API Version**: **V3 -> **Do** Mapping -> **link **Adapter** with interface ![](../images/2024/02/image_2024_02_29T15_59_21_963Z.png) - Go to **Interface Detail** -> Scroll down to **SOQL Query for filter sObject** -> Set the condition on the file **Filter Query** ![](../images/2024/02/image_2024_02_29T16_00_21_344Z.png) - Click on the **Manual Process** button to callout the records ![](../images/2024/02/image_2024_02_29T16_01_08_887Z.png) - After clicking **Send**, we got the **Message Monitoring** ![](../images/2024/02/image_2024_02_29T16_02_28_296Z.png) - Here is the** Payload **from** Google Drive** ![](../images/2024/02/image_2024_02_29T16_03_25_461Z.png) - Here is the generated CSV payload. You can see the generated CSV below. The mapping is hierarchical, generating nodes with dots as prefixes for field mapping inputs to the headers. **For example,** 'nodex.fieldx' represents the parent-child mapping. ![](../images/2024/02/image_2024_02_29T16_04_25_676Z.png) ![](../images/2024/02/image_2024_02_29T16_04_56_987Z.png) [su_box title="**Result:**" box_color="#2a8af0" title_color="#000000"]When clicking the **'Manual Process'** button to execute the callout, we receive the **'Message Success'** along with the payload, which is determined based on the conditions set in the **'Filter Query'** of the **'SOQL Query for filter sObject'** section. As a result, **Export Data V3** hierarchical in **CSV File** format is implemented for an internet adapter.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: 3. How to Generate Flat CSV Payload with Execute Callout V3? Slug: how-to-generate-flat-csv-payload-with-execute-callout-v3 URL: https://help.skyvva.com/#article/how-to-generate-flat-csv-payload-with-execute-callout-v3 ================================================================================ # 3. How to Generate Flat CSV Payload with Execute Callout V3? The data integration, with the **SKYVVA** integration application, stands out for its efficiency. One of its noteworthy features is the capability to generate flat CSV payloads through the Execute Callout V3 functionality. This becomes particularly useful when mapping a level within the integration process. Upon mapping a level and triggering the Execute Callout V3, the application exhibits a cool behavior. Instead of generating prefixes along with the field map, it only produces the field map. This simplifies the resultant payload, making it a flat CSV structure void of unnecessary prefixes. The significance of this lies in the streamlined data format, enhancing understandable and ease of consumption for downstream processes. This capability showcases **SKYVVA's** commitment to providing users with a flexible and user-friendly integration experience. By generating a clean and compact CSV payload, users can facilitate smoother data flows and enhance the ability of their systems. Whether for data migration, synchronization, or other integration tasks, the ability to produce flat CSV payloads with Execute Callout V3 demonstrates **SKYVVA's** commitment to optimizing data integration processes. **Business Scenario**, The User needs to generate the flat CSV like this: **User have mapped** => BillingCity, BillingCountry, Name, and AccountNumber **Header**           => BillingCity,BillingCountry,Name,AccountNumber **Value** **of** **field**   => Value1, Value2, Value3,Value4 **Required step:** - Create an** Integration** - Create an** Outbound Adapter e.g., Google Drive** ![](../images/2024/03/image_2024_03_01T15_04_47_624Z.png) - Create an **Outbound Interface ->** set **Interface API Version**: **V3 -> **Do** Mapping -> **link **Adapter** with interface ![](../images/2024/03/image_2024_03_01T15_06_06_440Z.png) - Go to **Interface Detail** -> Scroll down to **SOQL Query for filter sObject** -> Set the condition on the file **Filter Query** ![](../images/2024/03/image_2024_03_01T15_07_18_106Z.png) - Click on the **Manual Process** button to callout the records ![](../images/2024/03/image_2024_03_01T15_08_44_158Z.png) - After clicking **Send**, we got the **Message Monitoring** ![](../images/2024/03/image_2024_03_01T15_10_07_651Z.png) - Here is the** Payload **from** Google Drive** ![](../images/2024/03/image_2024_03_01T15_11_03_497Z.png) ![](../images/2024/03/image_2024_03_01T15_11_42_380Z.png) [su_box title="**Result:**" box_color="#2a8af0" title_color="#000000"]After execution, the generated CSV payload does not have any prefixes when you have mapped a level in the mapping.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: How to Import Internet Adapter using Bulk Mode ? Slug: how-to-import-internet-adapter-using-bulk-mode URL: https://help.skyvva.com/#article/how-to-import-internet-adapter-using-bulk-mode ================================================================================ # How to Import Internet Adapter using Bulk Mode ? **Internet Adapter for the Inbound Interface using Bulk Mode.** The capabilities and features of an Internet Adapter for the Inbound Interface using Bulk Mode, particularly within the context of a **SKYVVA** integration application. It's great that users experience platforms such as Google Drive and Dropbox so that the adapter handles different data formats like XML, CSV, and JSON. The adapter has been enhanced to support Bulk Processing mode with Internet Drive. In this mode, when the setting is configured to '**Bulk**', the adapter will create a Bulk Basket in the Bulk Control Board using the **SKYVVA** integration application. In the business scenario a specific adapter, within an **SKYVVA** integration application, is configured to create a Bulk Basket in a Bulk Control Board when the setting is set to 'Bulk.' The use of terms like "adapter," "Bulk Basket," and "Bulk Control Board" suggests a data integration context where data is being transferred or synchronized between different systems. In this scenario, an adapter is a piece of software that facilitates communication and data exchange between different systems, and settings determine the behavior of that adapter. In this case, when the setting is configured to 'Bulk,' the adapter takes action by creating a Bulk Basket in the Bulk Control Board. Here are some considerations and steps you might want to take into account: - **Adapter Configuration:** Ensure that the user's Internet Adapter is configured to handle the Inbound Interface in Bulk Mode. This might involve setting specific parameters or options related to Bulk processing within the **SKYVVA** integration application. - **Bulk Processing Mode:** Clearly define the behavior of the adapter in 'Bulk' mode. Users have to Specify how it interacts with the Bulk Control Board, create Bulk Baskets, and handle bulk data processing. - **Integration Application Settings:** Ensure the **SKYVVA** integration application is configured to recognize and work with the Internet Adapter in Bulk Mode. This may involve configuring connection settings, authentication, and any other relevant parameters. [su_box title="Note" box_color="#ff0000" title_color="#000000"] - In Synchronous mode, the interface pushes all records in the file to create a single basket in the Bulk control board. - In Asynchronous mode, the interface can divide the records from the CSV file to create baskets based on the settings specified in the interface (specifically, the setting for Transfer Package Size on the Interface Detail page in the Information section). - The Asynchronous mode can only divide records when using the CSV format; it cannot be applied to other formats. [/su_box] **Required step:** - Create an** Integration ** - Create an** Inbound Adapter e.g., OneDrive** - Create an** Inbound Interface -> **setting** Processing Mode: Synchronous -> **Do** Mapping -> **link** Adapter OneDrive **with** Interface** - Go to** Interface Detail -> **scroll down to** Bulk Setting -> **tick** Bulk Mode** ![](../images/2024/03/image_2024_04_09T07_42_14_326Z.webp) - Click on the **Manual Process** button for the **Read file** from ** OneDrive****.** ![](../images/2024/03/image_2024_04_17T07_10_54_833Z.webp) - **Apex Job** ![](../images/2024/03/1-4.jpg) - After apex job processing is completed, it will create a basket in** the Bulk Control Board.** ![](../images/2024/03/1.webp) - Then we can process them as **Bulk ****Processing** manually or schedule whatever user want ![](../images/2024/03/2.webp) - **Apex job **process basket ![](../images/2024/03/1-6.jpg) - After Apex Job processing was completed, we got the **Message Monitoring** ![](../images/2024/03/3.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]After the basket processing is completed, a success message is generated, indicating that the records have been successfully created in Salesforce[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: How to Import Internet Adapter using Synchronous Mode? Slug: how-to-import-internet-adapter-using-synchronous-mode URL: https://help.skyvva.com/#article/how-to-import-internet-adapter-using-synchronous-mode ================================================================================ # How to Import Internet Adapter using Synchronous Mode? **Internet Adapter for the Inbound Interface using Synchronous Mode.** Configuring an Internet Adapter for the Inbound Interface using Synchronous Mode, a data processing system that supports various file formats through the Internet Drive adapter. The supported formats include CSV, XML, and JSON. The system operates in Synchronous mode, allowing immediate file processing without the need to chain batch jobs to other processes. This mode is particularly beneficial when dealing with smaller files, enabling users to process them without significant delays. **SKYVVA**, which appears to be part of this processing system. **SKYVVA** provides additional functionalities & capabilities to enhance the integration and processing of data. - **Access Skyvva Configuration:** Log in to your Skyvva integration application. - Navigate to the flow integration settings. - **Create Inbound Interface:** Create the Inbound Interface for which the user wants to configure the Internet Adapter. - **Select Synchronous Mode:** Look for a setting that allows the user to choose the communication mode. Select the synchronous mode for the Inbound Interface. - **Configure Internet Adapter:** Locate the section related to adapters. - Choose the Internet Adapter or HTTP Adapter (**SKYVVA** supports HTTP communication for synchronous integration). - Enter the necessary details such as endpoint URL, authentication credentials, request/response format, etc. - **Define Message Mapping:** Specify how the data should be mapped between the external system and the Inbound Interface within **SKYVVA**. **Required step:** - Create an **Integration** - Create an** Inbound Adapter e.g., Google Drive** ![](../images/2024/03/1-8.jpg) - Create an** Inbound Interface **-> Do** Mapping** ![](../images/2024/03/image_2024_03_11T13_26_16_609Z.png) - Go to **Interface Detail** **-> **Setting** Processing Mode: Synchronous **-> Link** Adapter Google Drive **with** Interface** ![](../images/2024/03/image_2024_03_11T13_28_42_513Z.png) - Click on the **Manual Process** button for the **Read file** from **Google Drive**. ![](../images/2024/03/image_2024_03_11T13_30_24_948Z.png) - **Apex Job** ![](../images/2024/03/image_2024_03_11T13_31_12_066Z.png) [su_box title="Note" box_color="#ff0000" title_color="#000000"] Use Syn mode, the Apex job processes one batch per Apex job, meaning it processes all the records within a single batch job.[/su_box] - After apex job processing was completed, we got the **Message Monitoring** ![](../images/2024/03/image_2024_03_11T13_38_55_831Z.png) [su_box title="**Result:**" box_color="#2a8af0" title_color="#000000"]When clicking the **'Manual Process'** button for the **Read file** from **Google Drive, **it retrieves the file from Google Drive and processes it in a batch per job. After the Apex Job process is completed, we can view the **File Message** in the **Message Monitoring**. For One **File Message** have 1000 Business Messages.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: How to Import Internet Adapter using Asynchronous Mode? Slug: how-to-import-internet-adapter-using-asynchronous-mode URL: https://help.skyvva.com/#article/how-to-import-internet-adapter-using-asynchronous-mode ================================================================================ # How to Import Internet Adapter using Asynchronous Mode? **Internet Adapter for the Inbound Interface using Asynchronous Mode.** The features of the **SKYVVA** integration application. However, users configure an internet adapter for an inbound interface using asynchronous mode in integration business scenarios. **SKYVVA** integration application supports asynchronous mode and provides internet adapters, here's a general workflow on how to approach this: - **Access Skyvva Platform:** Log in to the Skyvva platform or application where users create integrations. - **Create Inbound Interface:** Navigate to the section where the user creates new integration interfaces. - Choose to create an inbound interface. - **Select Internet Adapter:** Select an internet adapter for the inbound interface. This involves choosing a pre-built adapter option for the specific protocol integration. - **Configure Adapter Settings:** Configure the settings specific to the internet adapter the user selected. - Ensure that the adapter selects the asynchronous mode for the integration. - **Define Asynchronous Mode:** Make sure to enable the setting for asynchronous mode, - In asynchronous mode, requests and responses are handled independently, allowing for better scalability and responsiveness in integration as per business scenarios. - **Connection Details:** Make sure to provide the necessary connection details such as URLs, authentication credentials, and any other required parameters. - **Message Processing:** Set up how incoming messages will be processed. In an asynchronous mode, this involves defining already callback specified endpoints for receiving responses. **Business scenario** related to Apex and the **SKYVVA** integration application. In the asynchronous mode, while dealing with a file containing 1,000 records, the default inbound processing is set to handle 50 records per batch job. Therefore, with a file of 1,000 records, it would execute 20 batches per Apex job. Here's a breakdown of your description: - **File Size:** 1,000 records - **Batch Size:** 50 records per batch - **Number of Batches:** 1,000 records / 50 records per batch = 20 batches - **Apex Job Execution:** It executes 20 batches per Apex job. This configuration is useful for handling large datasets asynchronously, breaking them down into manageable batches to avoid resource fundamentally improved performance during processing. **Required step:** - Create an **Integration** - Create an** Inbound Adapter e.g., Google Drive** - Create an** Inbound Interface -> **setting** Processing Mode: Asynchronous -> **Do** Mapping -> **link** Adapter Google Drive **with** Interface** - Click on the **Manual Process** button for the **Read file** from **Google Drive**. ![](../images/2024/03/image_2024_03_12T08_22_01_883Z.png) - **Apex Job** ![](../images/2024/03/image_2024_03_12T08_23_01_021Z.png) [su_box title="Note" box_color="#ff0000" title_color="#000000"] Default Inbound Processing processes 50 records per batch job.[/su_box] - After apex job processing was completed, we got the **Message Monitoring** ![](../images/2024/03/image_2024_03_12T08_24_56_117Z.png) [su_box title="**Result:**" box_color="#2a8af0" title_color="#000000"]After processing, we get the 20 **File Messages** on Message Monitoring, for one File Message have 50 Business Messages.[/su_box] ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: How to Generate an Access Token Using OAuth 2.0 Client Credentials Flow with Skyvva Permissions? Slug: how-to-generate-an-access-token-using-oauth-2-0-client-credentials-flow-with-skyvva-permissions URL: https://help.skyvva.com/#article/how-to-generate-an-access-token-using-oauth-2-0-client-credentials-flow-with-skyvva-permissions ================================================================================ # How to Generate an Access Token Using OAuth 2.0 Client Credentials Flow with Skyvva Permissions? ***To generate an access token in Salesforce, the user utilizes OAuth 2.0 authentication.*** Follow these steps: - Create a connected app in the Salesforce setup. - Configure the app's OAuth settings, including callback URL and selected OAuth scopes. - Obtain the client ID and client secret generated for the connected app. - Implement OAuth 2.0 flow, such as Authorization Code or Username-Password. - Request an access token using the appropriate OAuth endpoint, providing client credentials and required parameters. - Salesforce validates the request and issues an access token. - Use the access token to authenticate subsequent API requests to Salesforce. - Manage token expiration and refresh as needed. **Salesforce configuration side** - **Step1:** Go to **APP** Manage => select any Connect App and click on Edit ![](../images/2024/03/image_2024_03_14T14_05_45_595Z.png) - **Check on Enable Client Credentials Flow** ![](../images/2024/03/image_2024_03_14T14_06_42_565Z.png) - **Step2: **Go to Manage Connected App and then edit Connected Apps ![](../images/2024/03/image_2024_03_14T14_07_50_966Z.png) - **Select any User to enable access token in the section ****Client Credentials Flow** ![](../images/2024/03/image_2024_03_14T14_08_43_064Z.png) - **Step3: **Go to App Manage and then select any Connected App to view it ![](../images/2024/03/image_2024_03_14T14_09_49_500Z.png) - **Click on Manage Consumer Details to see Consumer Key and Consumer Secret** ![](../images/2024/03/image_2024_03_14T14_10_32_757Z.png) ![](../images/2024/03/image_2024_03_14T14_11_11_276Z.png) - **Step4: Postman application and past Consumer Key and Consumer Secret to generate Access Token** **URL: **https://enterprise-ruby-3909-dev-ed.scratch.my.salesforce.com/services/oauth2/token **Keyword** - grant_type = client_credentials - client_id = … - client_secret= … ![](../images/2024/03/image_2024_03_14T14_11_55_269Z.png) - **Step5: **Apply access token into Authorization Bearer type ![](../images/2024/03/image_2024_03_14T14_12_47_791Z.png) **Step6: **Send data to salesforce [su_box title="Note: " box_color="#ff0000" title_color="#000000"]In case using sent data is not successful with External User Org and it gets an error like the screenshot below[/su_box] ``` [ { "errorCode": "FORBIDDEN", "message": "You do not have access to the Apex class named: IntegrateV4RestService" } ] ``` ![](../images/2024/03/image_2024_03_14T14_19_59_594Z.png) User must add Skyvva classes into the permission set which is assigned to User Org #### How do you create a permission set? Go to User -> Permission Sets -> click on New button ![](../images/2024/03/image_2024_03_14T14_21_45_174Z.png) **Enter permission set name** ![](../images/2024/03/image_2024_03_14T14_23_11_873Z.png) Click on the Apex Class Access link and then click the Edit button to enable all** SKYVVA **classes**.** ![](../images/2024/03/image_2024_03_14T14_24_36_805Z.png) ![](../images/2024/03/image_2024_03_14T14_25_53_838Z.png) Select all** SKYVVA **classes and add them to Enabled Apex Classes ![](../images/2024/03/image_2024_03_14T14_27_30_970Z.png) **Go to User detail and then click on the ****Permission Set Assignments link** ![](../images/2024/03/image_2024_03_14T14_28_32_453Z.png) - **Click on the Edit Assignments button** ![](../images/2024/03/image_2024_03_14T14_29_36_896Z.png) **Add enable permission sets** ![](../images/2024/03/image_2024_03_14T14_30_27_324Z.png) - **Go to Postman and send data again** ![](../images/2024/03/image_2024_03_14T14_31_23_483Z.png) **The result is completed** **SUMMARY **Now users understand that the **SKYVVA**, a Salesforce integration tool, simplifies access token generation. First, configure the Salesforce connection in **SKYVVA**. Then, utilize its direct interface to generate access tokens handy. This streamlines authentication processes, ensuring secure access to Salesforce resources. **SKYVVA** optimizes Salesforce integration, enhancing productivity and data management. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: How to use the executeInterface() method to execute the inbound interface by Developer Console? Slug: how-to-use-the-executeinterface-method-to-execute-the-inbound-interface-by-developer-console URL: https://help.skyvva.com/#article/how-to-use-the-executeinterface-method-to-execute-the-inbound-interface-by-developer-console ================================================================================ # How to use the executeInterface() method to execute the inbound interface by Developer Console? #### Introduction **SKYVVA** integration application implemented the 'executeInterface()' API bringing significant enhancements to interface execution, particularly focusing on internal Apex execution and inbound interface handling. Here's a detailed breakdown of its functionalities: - **Internal Apex Execution**: The API facilitates the execution of interfaces through internal Apex methods, ensuring robust integration capabilities within the Salesforce environment. This method enables streamlined processing directly within Salesforce, optimizing efficiency and reliability. - **Inbound Interface Handling**: Specifically designed to address inbound interface scenarios, the 'executeInterface()' API empowers users to handle incoming data and processes efficiently. Whether it involves data processing, this functionality ensures smooth handling of inbound interactions. - **Support for Synchronous and Asynchronous Modes**: With support for both synchronous and asynchronous execution modes, the API offers flexibility to cater to diverse integration requirements. This capability allows users to adapt interface execution based on specific use cases, enhancing versatility and scalability. The following parameters are useful: - Integration: Name of the integration - Interface: Name of the interface - Mode = {None, Synchronous, Asynchronous}. If None is used then the mode is taken from the interface setting (field 'Processing Mode') - List of sObject Id: used in cases e.g. inbound interface. This is a kind of reprocessing when we have the **Ext** ID and can pass it to the API. #### Use Case (Inbound) - Execute interface from Internal Apex Execution: The **SKYVVA** integration app processes XML, JSON, and CSV formats synchronously/asynchronously, enhancing Salesforce data management seamlessly. - InBound Apex Execution: **SKYVVA **enables the execution of interfaces with XML, JSON, and CSV formats internally, streamlining inbound data integration within Salesforce effortlessly. **New method executeInbound() to execute inbound interface from Apex code** **Required step:** - Create an** Inbound Integration** - Create **Message Type** - Create an** Inbound Interface -> **setting** Processing Mode: Synchronous -> **Do** Mapping ** - Go to** Message Monitor** ![](../images/2024/03/image_2024_03_21T13_49_41_358Z.png) - Create **MetaData Provider, Repository, Source/Target Message Type** ![](../images/2024/03/image_2024_03_21T13_51_48_989Z.png) - Define Ext Key - Do** Mapping ** - Save ![](../images/2024/03/image_2024_03_21T14_11_01_768Z.png) - The **SKYVVA** integration application in Salesforce for executing internal, inbound Apex interface executions with proper **JSON** format. - Manage integration tasks within Salesforce, enhancing efficiency and facilitating smooth data flow. - Enhance workflow automation by executing inbound interfaces using our application's robust internal Apex execution capabilities. - Ensure data integrity and accuracy through streamlined execution processes within Salesforce's ecosystem using **SKYVVA** integration appliation. **Go to the Developer Console** ![](../images/2024/03/image_2024_03_21T14_00_57_914Z-1.png) - Click on **Execute** - requestPayloadFormat='**json**' `skyvvasolutions.InboundExecuter.InboundControl ctrl=new skyvvasolutions.InboundExecuter.InboundControl(); ctrl.integrationName='API-Integration'; ctrl.interfaceName='API-Interface'; ctrl.requestPayloadFormat='json'; ctrl.payLoad='[{"Name":"Apple","City":"Phnom Penh","Country":"Cam","AccountNumber":"001"},{"Name":"Coca02","City":"Phnom Penh","Country":"Cam","AccountNumber":"002","Contact":[{"FirstName":"Chandy","LastName":"Long1"},{"FirstName":"Chandy","LastName":"Long"},{"FirstName":"Chandy","LastName":"Long2"},{"FirstName":"Chandy","LastName":"Long5"},{"FirstName":"Chandy","LastName":"Long3"}]}]'; ctrl.mode='Synchronous'; ctrl.csvSeparator=null; skyvvasolutions.InboundExecuter.InboundResult result=skyvvasolutions.InboundExecuter.executeInbound(ctrl); System.debug('>hasError:'+result.hasError); System.debug('>errorMessage:'+result.errorMessage); System.debug('>groupMessage:'+result.groupMessage);` - Go to **Message Monitor** and click on the search button ![](../images/2024/03/image_2024_03_21T14_20_38_127Z.png) - **XML** formatted execution ensures compatibility in data transmission, maintaining integrity throughout the integration process. - Execute interface via **SKYVVA** Internal InBound Apex Execution integration within Salesforce, enhancing data flow and operational efficiency. - Our solution facilitates streamlined execution of interface operations, optimizing Salesforce functionality and empowering users with comprehensive integration capabilities. **Go to the Developer Console** ![](../images/2024/03/image_2024_03_21T14_26_49_651Z-1.png) - Click on **Execute** - requestPayloadFormat=’**xml**’ `skyvvasolutions.InboundExecuter.InboundControl ctrl=new skyvvasolutions.InboundExecuter.InboundControl(); ctrl.integrationName='API-Integration'; ctrl.interfaceName='API-Interface'; ctrl.requestPayloadFormat='xml'; ctrl.payLoad='A002Coca01sta1MDEA002Coca02ThidaPhich'; ctrl.mode='Synchronous'; ctrl.csvSeparator=null; skyvvasolutions.InboundExecuter.InboundResult result=skyvvasolutions.InboundExecuter.executeInbound(ctrl); System.debug('>hasError:'+result.hasError); System.debug('>errorMessage:'+result.errorMessage); System.debug('>groupMessage:'+result.groupMessage);` - Go to **Message Monitor** and click on the search button ![](../images/2024/03/image_2024_03_21T14_23_18_496Z.png) - **CSV Integration**: Execute interface from internal, inbound Apex for seamless **CSV** data exchange within Salesforce using **SKYVVA** integration. - **Data Synchronization**: Synchronize data bi-directionally using our application's internal Apex execution for inbound interfaces. - **Real-time Integration**: Achieve real-time data integration within Salesforce by executing interfaces internally through **SKYVVA's** advanced capabilities. **Go to the Developer Console** ![](../images/2024/03/image_2024_03_21T14_34_29_898Z.png) - Click on **Execute** - requestPayloadFormat='**csv**' `skyvvasolutions.InboundExecuter.InboundControl ctrl=new skyvvasolutions.InboundExecuter.InboundControl(); ctrl.integrationName='API-Integration'; ctrl.interfaceName='API-Interface'; ctrl.requestPayloadFormat='csv'; ctrl.payLoad='Name,BillingCity,BillingCountry,skyvvasolutions__AccID__c,LastName,FirstName'+ '\nAcc-1,PP-1,Cam-1,ID-1,LastName-1,FirstName-1'+ '\ncc-2,PP-2,Cam-2,ID-2,LastName-2,FirstName-2'; ctrl.mode='Synchronous'; ctrl.csvSeparator=','; skyvvasolutions.InboundExecuter.InboundResult result=skyvvasolutions.InboundExecuter.executeInbound(ctrl); System.debug('>hasError:'+result.hasError); System.debug('>errorMessage:'+result.errorMessage);` - Go to **Message Monitor** and click on the search button ![](../images/2024/03/image_2024_03_21T14_42_19_993Z.png) #### Summary Now users understand how our tool integrates the 'executeInterface()' API for CSV, XML, and JSON formats. Execute inbound interfaces via Apex, work with Salesforce integration, and further smoothly data processing. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: How to use the Set the status for the empty message? Slug: how-to-use-the-set-the-status-for-the-empty-message URL: https://help.skyvva.com/#article/how-to-use-the-set-the-status-for-the-empty-message ================================================================================ # How to use the Set the status for the empty message? #### Introduction The **SKYVVA** Integration App is a powerful tool designed to facilitate seamless data integration between Salesforce and external systems. With its robust features, businesses can efficiently manage complex integration scenarios, ensuring data consistency and reliability. One critical aspect of this integration process is handling empty messages during inbound processing, which can occur when an external system sends a message with missing or null content. Properly managing these empty messages is essential to maintaining the integrity of your data flow and preventing disruptions in your business processes. In the context of API integrations, particularly with **SKYVVA's** API v3 and v4, handling empty messages involves setting the appropriate status based on predefined business rules. The **SKYVVA** Integration App allows you to raise errors and set specific statuses when an empty message is encountered during inbound processing. These statuses include: - **Failed**: When an empty message is received, you can configure the system to raise an error and set the status to '**Failed**'. This indicates that the message was not processed successfully due to missing content, allowing you to quickly identify and address the issue. - **Pending**: In some scenarios, you may want to flag the empty message for further review or processing later. By setting the status to '**Pending**', you can keep track of these messages and determine the appropriate action without immediately failing the transaction. - **Cancelled**: If an empty message is deemed unnecessary or irrelevant, you can raise an error and set the status to '**Cancelled**'. This option helps you manage your message queue efficiently by removing messages that do not require processing. By using the **SKYVVA** Integration App’s API v3 and v4 capabilities to handle empty messages in this manner, you can ensure that your data integration processes remain robust and error-free. This approach enhances your ability to manage exceptions effectively, maintain data integrity, and streamline your overall integration workflow. #### Case1 API integrateV3(): To utilize the API integrateV3() for managing empty message status and handling errors with the **SKYVVA** integration application, follow these steps: - **Identify Empty Message**: Before invoking the API, ensure the user has detected an empty message that handles status. An empty message occurs when there's a lack of data or invalid input. **Business scenario by using Postman** - The error occurs when the payload does not match the mapping message type on the interface. ![](../images/2024/03/image_2024_03_29T13_26_51_816Z.png) - **API integrateV3()**: Once an empty message is identified, API integrateV3() to process it. This API lets you interact with the **SKYVVA** integration application to set the status and manage the message flow. - **Raise an Error and set the status to 'Failed'**: The empty message cannot be processed due to critical errors or missing data, raise an error within the message monitoring and set the status to '**Failed**' using the Runtime configuration-Inbound "What to do with an empty message?" picklist. - **Raise an Error and set the status to 'Pending'**: In scenarios where the processing of the empty message is temporarily halted or awaiting further actions, raise an error accordingly and set the status to '**Pending**' using the Runtime configuration-Inbound "What to do with an empty message?" picklist. - **Raise an Error and set the status to 'Cancelled'**: The processing of the empty message needs to be terminated quickly or canceled due to specific conditions, raise an error and set the status to '**Cancelled**' using the Runtime configuration-Inbound "What to do with an empty message?" picklist #### Case2 API integrateV4(): To utilize the API integrateV4() for managing empty message status and handling errors with the **SKYVVA** integration application, follow these steps: - **Identify Empty Message**: Before invoking the API, ensure the user has detected an empty message that handles status. An empty message occurs when there's a lack of data or invalid input. **Business scenario by using Postman** - The error occurs when the payload does not match the mapping message type on the interface. ![](../images/2024/03/image_2024_09_06T13_11_23_197Z.webp) ![](../images/2024/03/image_2024_09_06T13_12_03_944Z.webp) - **API integrateV4()**: Once an empty message is identified, API integrateV4() to process it. This API lets you interact with the **SKYVVA** integration application to set the status and manage the message flow. - **Raise an Error and set the status to 'Failed'**: The empty message cannot be processed due to critical errors or missing data, raise an error within the message monitoring and set the status to '**Failed**' using the Runtime configuration-Inbound "What to do with an empty message?" picklist. - **Raise an Error and set the status to 'Pending'**: In scenarios where the processing of the empty message is temporarily halted or awaiting further actions, raise an error accordingly and set the status to '**Pending**' using the Runtime configuration-Inbound "What to do with an empty message?" picklist. - **Raise an Error and set the status to 'Cancelled'**: The processing of the empty message needs to be terminated quickly or canceled due to specific conditions, raise an error and set the status to '**Cancelled**' using the Runtime configuration-Inbound "What to do with an empty message?" picklist ![](../images/2024/03/image_2024_03_29T13_02_32_085Z.png) By effectively following these steps and leveraging the API integrateV3() & integrateV4() the user can efficiently manage empty message status and handle errors within your **SKYVVA** integration application. #### Raise an Error and set the status to 'Failed': - Message integrity is essential for data integration. When encountering an empty message within the **SKYVVA** integration application, the appropriate response is crucial to maintaining system functionality and data accuracy. - If critical errors in data render a message empty and thus unprocessable, the recommended action is to raise an error. - **SKYVVA's** Runtime configuration provides a robust mechanism for handling such scenarios. By leveraging the "**What to do with an empty message?**" picklist within the Inbound settings, users can set the status to '**Failed**'. This designation flags the message as uncertain, prompting immediate attention efforts. - Setting the status to '**Failed**' not only signifies the occurrence of an issue but also triggers predefined workflows, ensuring timely resolution of disruption to operations. Additionally, it facilitates comprehensive tracking of message monitoring. - By adhering to best practices such as raising errors and setting appropriate status indicators, organizations can uphold data quality standards and maintain the efficiency of their integration processes within the **SKYVVA** environment. ![](../images/2024/03/image_2024_03_29T13_06_21_872Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]After sending data from Postman to Salesforce we get the **Failed **message that has no data.[/su_box] #### Raise an Error and set the status to 'Pending': - The **SKYVVA** integration application, managing empty messages within the runtime configuration is crucial for ensuring seamless data processing and system functionality. When encountering scenarios where the processing of an empty message temporarily requires further actions. - By utilizing the "**What to do with an empty message?**" picklist within the Runtime configuration-Inbound settings, the user can configure the system to raise an error appropriately and set the status of the message to '**Pending**'. This configuration empowers users to define specific actions that should be taken when encountering empty messages, thus streamlining the handling process disruptions to data flow. - Setting the status of empty messages to '**Pending**' allows for easy identification and prioritization of these messages, ensuring that they are addressed efficiently. Moreover, raising errors provides valuable insights into potential issues within the integration process. - Overall, leveraging the Runtime configuration features with the **SKYVVA **integration application enhances operational agility, enabling organizations to effectively manage empty messages to maintain optimal data processing workflows. ![](../images/2024/03/image_2024_03_29T13_13_26_375Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]Here is the use case send data from Postman to Salesforce raise a warning and set the status message to **Pending**.[/su_box] #### Raise an Error and set the status to 'Cancelled': - The **SKYVVA** integration application, efficient handling of empty messages is excellent to maintain system integrity and streamline processes. When confronted with specific conditions necessitating the cancellation of the processing, raising an error and setting the status to '**Cancelled**'. - With the **SKYVVA** integration application, achieving this functionality is facilitated through the Runtime configuration-Inbound "**What to do with an empty message?**" picklist. By configuring this setting, system administrators can define the appropriate course of action when encountering an empty message, aligning it with the specific requirements of their integration workflows. - In the event of encountering such conditions, the integration application swiftly raises an error, signaling the presence of an issue that warrants immediate attention. Simultaneously, the status of the processing is set to '**Cancelled**,' effectively tentative any further execution related to the empty message. - This proactive approach to error handling not only ensures data integrity but also promotes the efficient allocation of resources by swiftly identifying issues within the integration pipeline. As a result, attending smoother operations to business processes. ![](../images/2024/03/image_2024_03_29T13_24_24_922Z.png) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]Here is the use case send data from Postman to Salesforce raise a warning and set the status message to **Cancelled**.[/su_box] #### Summary Users now understand how to utilize the API integrateV3() & API integrateV4() within the **SKYVVA** integration application to manipulate message statuses. They can set the status to '**Failed**', '**Pending**', or '**Cancelled**' by raising corresponding errors via the API, empowering precise control over message handling for streamlined workflow management. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Control Board Title: 11. How to use Authentication Type on Agent Control Board ? Slug: 11-how-to-use-oauth-grant-type-on-agent-control-board URL: https://help.skyvva.com/#article/11-how-to-use-oauth-grant-type-on-agent-control-board ================================================================================ # 11. How to use Authentication Type on Agent Control Board ? #### Introduction - When establishing connections between systems, ensuring secure and reliable authentication mechanisms is paramount. - Within the **SKYVVA** integration application's agent control board, administrators are presented with the flexibility to choose between different authentication types, notably the "**Authentication Type**" picklist, which includes options for both "***Basic***" and "***OAuth2 Client-Credential***" methods. - The "Basic" authentication method involves the straightforward transmission of credentials (typically username and password) from the agent to Salesforce. - Conversely, the "***OAuth2 Client-Credential***" authentication method offers a more robust and secure approach. - It leverages the OAuth2 protocol, allowing agents to obtain access tokens from Salesforce by presenting client credentials. - This method is particularly advantageous in scenarios where a higher level of security and control over access is required, as it minimizes the exposure of sensitive information and facilitates seamless integration with Salesforce APIs. ![](../images/2024/04/image_2024_04_05T12_49_45_476Z.webp) When setting up a ping connection agent to Salesforce using the **SKYVVA** integration application via the Agent Control Board, administrators have the flexibility to choose between two authentication types: Basic and OAuth2 Client-Credential. Here's an explanation of each: #### Basic Authentication: - This authentication method involves sending credentials (usually a username and password) with each request made from the agent to Salesforce. - Basic authentication is straightforward to set up and understand, making it suitable for simple integration scenarios. - However, it's important to note that Basic authentication may not be as secure as other methods, especially when dealing with sensitive data, as the credentials are sent with each request in plain text. ![](../images/2024/04/image_2024_04_05T12_54_04_295Z.webp) #### OAuth2 Client-Credential Authentication: - OAuth2 is an industry-standard protocol for authorization, providing a more secure and flexible way to authenticate and authorize access to resources. - With the Client-Credential grant type, the integration application obtains an access token from Salesforce using a client ID and client secret, which are securely stored and managed. - OAuth2 authentication is recommended for enhanced security, as it does not require the transmission of user credentials with each request. Instead, it relies on access tokens that have a limited lifespan and can be easily revoked if compromised. - This method is particularly suitable for scenarios where higher security standards are necessary or when integrating with multiple Salesforce instances or other OAuth2-compliant systems. ![](../images/2024/04/image_2024_04_05T12_56_01_625Z.webp) By offering both Basic and OAuth2 Client-Credential authentication options, the **SKYVVA** integration application caters to a wide range of integration requirements, allowing administrators to choose the authentication method that best aligns with their security policies and integration needs. #### Summary When configuring a ping connection agent to Salesforce via the SKYVVA integration application's agent control board, choose between basic and OAuth2 Client-Credential authentication types from the picklist. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use workflow? Title: 3. How to Disable workflow ? Slug: 3-how-to-disable-workflow URL: https://help.skyvva.com/#article/3-how-to-disable-workflow ================================================================================ # 3. How to Disable workflow ? #### Introduction In managing workflows within the **SKYVVA** integration application, flexibility in controlling when these workflows are active is crucial for efficient system management and testing. Currently, the application does not allow users to disable a workflow or rule directly. Instead, users must deactivate the specific conditions associated with different target interfaces to stop the workflow from triggering. This method can be bulky, especially in complex systems where workflows are critical for day-to-day operations. The alternative to deactivation—deleting the workflow rule—is even less user-friendly. Deletion removes the rule entirely, which is not practical if there is a possibility of needing the same workflow for future testing or re-implementation. This approach disrupts the ability to revert system changes through iterative testing quickly. A more user-friendly solution would be introducing a feature within the **SKYVVA** integration application that allows users to disable and enable workflow rules as needed. This capability would provide users with greater flexibility, allowing them to maintain the integrity and utility of their workflows without permanent deletion. By simply disabling a workflow, users could effectively halt its operation without impacting the underlying configuration, making it easy to reactivate when needed for further testing or operational purposes. This feature would significantly enhance usability and adaptability in managing integration workflows. #### Prerequisite To effectively set up and manage data integrations using the **SKYVVA** integration application, following a structured process is essential to ensure all necessary components and configurations are correctly implemented. The user can ensure a comprehensive and error-free setup for handling data integrations using the SKYVVA application by following these steps. This structured approach enhances data integrity and process efficiency and provides a scalable framework that can adapt to evolving integration requirements. #### 1: Active and Deactivate on Workflow V3 processing We have enhanced the functionality that allows users to activate and deactivate workflows. - When ‘**Active**’ is set, the workflow will trigger the workflow rule. - If the ‘**Deactivate**’ option is set, your workflow will not run. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]This feature is beneficial because it enables users to keep the workflow for future use without the need to delete it when they’re not using the workflow rule.[/su_box] Steps: - Create Integration - Create Metadata Provider, Repository, and MessageType - Create an Inbound interface and link MessageType - Do the mapping - Assign IWorkflow on the main interface **Create a new Inbound Interface and link with MessageType** ![](../images/2024/04/image_2024_04_12T06_57_20_523Z.webp) - **Do the mapping** ![](../images/2024/04/image_2024_04_12T06_58_44_270Z.webp) - **Assign Workflow on the Main Interface** Navigate to Workflows tab  => *Account_v4Integrate => *New IWorkflow Condition ![](../images/2024/04/image_2024_04_12T06_59_50_690Z.webp) Enter the condition: *Name <> "TestAccount2-SB"  &  Name <> "TestAccount100-SB"* ![](../images/2024/04/image_2024_04_12T07_01_41_529Z.webp) **1. Active workflow status***(default setting)* **Expectation **Pending Status: In **SKYVVA**, a "**pending**" status indicates that the message has been received but has not yet been processed through the integration flow. This can be due to several reasons, such as delays in processing, a backlog of messages, or simply waiting in the queue to be picked up by the processing apex job (i.e. set status in workflow and after workflow is triggered) **Steps to Achieve and Verify:** - **Post Data via Postman**: Ensure that Postman is configured with the correct API endpoints and authentication details required by the **SKYVVA** interface. - Send the data payload designed according to the MessageType linked with your Inbound Interface. - Ensure headers, method (POST), and other configurations align with what **SKYVVA** expects. - **Monitor Message Status**: Navigate to the Message Monitoring section of the **SKYVVA** application. - Look for the new message entry corresponding to your recent **API** call from Postman. - Check the status column to confirm if it's marked as "**pending**." ![](../images/2024/04/image_2024_04_12T07_22_51_669Z.webp) - **Post data from Postman and calling SKYVVA V4/integrate** ![](../images/2024/04/image_2024_04_12T07_26_49_982Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]The message on Message Monitoring is contained with **"Pending"** status when the data posting does not meet the condition of workflow:[/su_box] **2. Disable workflow status** Navigate to Workflows tab  => *Account_v4Integrate => *Actions ![](../images/2024/04/image_2024_04_12T07_31_53_574Z.webp) - Click Save ![](../images/2024/04/image_2024_04_12T07_33_05_537Z.webp) When using the **SKYVVA** integration, the expectation of seeing a **"Green Status"** in the Message Monitoring dashboard after posting data by the client indicates that the message has been successfully processed. A green status typically represents a successful execution of the integration flow, meaning the data has been received, and processed correctly, and no errors were encountered during the transaction. Here’s how to ensure and verify this outcome: **Steps to Ensure a Successful Message Transmission:** - **Configuration Check**: Before posting data, ensure that all configurations in **SKYVVA** are properly set up. This includes the integration, inbound interface, MessageType, and any necessary mappings. - Confirm that the **IWorkflow** assigned to the main interface is active and correctly configured to handle incoming messages. - **Prepare and Send Data via Postman**: Configure Postman with the correct API endpoint URL provided by the **SKYVVA** inbound interface. - Set the appropriate HTTP method (usually POST) and include any required headers, such as Content-Type and authentication tokens. - Ensure that the body of your request matches the structure required by the MessageType linked to your inbound interface. **Monitoring and Verify:** - **Check Message Monitoring Dashboard**: After posting, go to the Message Monitoring section within **SKYVVA**. - Refresh the view to see the latest messages. Look for your message based on the timestamp and source identifiers. - The message status should show as green, indicating a successful processing. ![](../images/2024/04/image_2024_04_12T08_14_41_460Z.webp) - ** Post data from Postman and calling SKYVVA V4/integrate** ![](../images/2024/04/image_2024_04_12T08_21_34_501Z.webp) [su_box title="Result:" box_color="#00d9a6;" title_color="#000000"]The message on Message Monitoring is contained with Completed status and the workflow rule is not run.[/su_box] #### 2: Active and Deactivate on Workflow calling integrate() API of an old processing Prerequire: - Import Integration of old version (*e. v2.40.15)* into SKYVVA v2.51 ![](../images/2024/04/gh.webp) **➤ **Navigate to Workflows tab The status of the old workflow is Enabled ![](../images/2024/04/jh.webp) **I- Enable workflow status***(Default setting when import or upgrade of old Integration)* **Expectation**: After posting data via Soap UI, the message status on Message Monitoring will be '***Pending***' in the **SKYVVA** integration application. This status indicates that the data has been successfully sent but is awaiting processing by the integration application. The '**Pending**' status serves as a transitional state, allowing users to monitor the message flow and ensure it progresses as expected. It indicates that the message is in the queue and will be processed according to the predefined integration workflows and schedules. **➤ Post data from Soap UI and calling *****integrate()***** API** ![](../images/2024/04/image_2024_05_01T14_30_42_305Z.webp) [su_box title="Result" box_color="#00d9a6;" title_color="#000000"]The message on Message Monitoring is contained with Pending status when the data posting does not meet the condition of workflow[/su_box] ![](../images/2024/04/image_2024_05_01T14_31_39_758Z.webp) **II - Disable workflow status** - Navigate to Workflows tab  => *Account_2.40.15  => *Actions ![](../images/2024/04/image_2024_05_01T14_33_04_407Z.webp) - Click Save ![](../images/2024/04/image_2024_05_01T14_34_02_299Z.webp) **Expectation**: After posting data via Soap UI, the message status on Message Monitoring within the **SKYVVA** integration application is expected to show as '**Completed**.' This indicates that the data has been successfully processed and integrated without any issues. The seamless transition from data posting to status updates ensures that users can quickly verify the success of their operations and proceed. This streamlined process is crucial for maintaining efficient data management and monitoring within the integration workflow. **➤ Post data from Soap UI and calling integrate() API** ![](../images/2024/04/image_2024_05_01T14_35_17_152Z.webp) [su_box title="Result" box_color="#00d9a6;" title_color="#000000"]The message on Message Monitoring is Completed status and the workflow is not run.[/su_box] ![](../images/2024/04/image_2024_05_01T14_36_15_996Z.webp) #### Summary Now the user can understand that Disabling a workflow within an integration platform temporarily halts its execution without deleting it, allowing for easy reactivation. This user-friendly feature ensures workflow availability for future testing or reimplementation while maintaining system integrity and flexibility. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: Inbound API V4/integrate Slug: inbound-api-v4-integrate URL: https://help.skyvva.com/#article/inbound-api-v4-integrate ================================================================================ # Inbound API V4/integrate #### Introduction To retrieve data from both the HTTP header and query parameters for the Inbound API V3/integrate using the **SKYVVA** integration application, the user can employ the following steps: 1. **HTTP Header Data Retrieval**: - Utilize the appropriate methods provided by the **SKYVVA** integration application to access the HTTP header of the incoming request. - Extract the required information from the header, such as authentication tokens, content types, or custom headers specific to your integration business scenario. 2. **Query Parameter Data Retrieval**: - Similarly, leverage the functionalities within the **SKYVVA** integration application to access and process the query parameters appended to the incoming request URL. - Extract relevant data from the query parameters, which include filters, search criteria, or additional metadata needed for processing the API call. 3. **Integration Configuration**: - Configure the Inbound API V4/integrate endpoint within the **SKYVVA** integration application to handle incoming requests, specifying the appropriate parameters and headers required for data retrieval. - Define mapping transformations between the retrieved data and the integration workflow within Salesforce. By effectively fetching data from both the HTTP header and query parameters using the capabilities of the **SKYVVA** integration application, the user can ensure comprehensive access to the information needed to facilitate seamless integration processes. #### Case: Fetching the data from the HTTP header and Query Parameter for the Inbound API Inbound API V3/integrate To standardize the passing of HTTP headers and query parameters through the API, here we establish a syntax and naming convention for clients to adhere to. Clients are required to prefix their HTTP headers and query parameters with "**_CUSTOM_xxx**". Only fields that begin with this specified prefix will be parsed and included in the message. Here's an example of how it should be formatted: - The client intends to include custom data in the HTTP header, there is a prefix for each custom field with "**_CUSTOM_xxx**". - For instance, the client wants to transmit a custom field named "**Authorization**". ![](../images/2024/04/image_2024_04_25T07_59_24_266Z.webp) For query parameters: - Similarly, the client needs to pass custom parameters through the query string, they should prefix each parameter with "**_CUSTOM_xxx**". - For instance, if a client wishes to include a custom query parameter named "filter", they should prefix it as "**_CUSTOM_MyParam**". By following this established convention, clients can ensure that their custom HTTP headers and query parameters are properly recognized and processed by the API, enhancing interoperability and facilitating seamless integration with the **SKYVVA** integration application. ![](../images/2024/04/image_2024_04_25T08_07_46_222Z.webp) - Create integration and inbound interface ![](../images/2024/04/image_2024_04_25T08_11_58_183Z.webp) - Do mapping ![](../images/2024/04/image_2024_04_25T08_13_02_423Z.webp) - Here is the header parameter in Postman ![](../images/2024/04/image_2024_04_25T08_13_55_936Z.webp) - Here is the query parameter in Postman ![](../images/2024/04/image_2024_04_25T08_15_33_991Z.webp) - Send data to Salesforce ![](../images/2024/04/image_2024_04_25T08_16_23_617Z.webp) ` 20002 TestAccount1 Cambodia2 PhnomPenh2 101 Test description ACCOUNT object 201 TestContact_04 DContact2 Dtest.2019_201@gmail.com 301 Test description CONTACT object TestCase Agent-04 401 Failed 2001 Test description CASE object ` - Check the result ![](../images/2024/04/image_2024_04_26T15_40_36_833Z.webp) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The user must follow our rule when they want to pass the HTTP header or query parameter to the V3/ or V4/integrate API. For the HTTP header, the prefix is __SKYVVA_HEADER_xxx and the query parameter is __SKYVVA__QUERYPARAM_xxx. We store these fields in the message with specific names __SKYVVA_HEADER_xxx and __SKYVVA__QUERYPARAM_xxx. The value needs to be repeated in all messages that we create from the API call. These values are coming per API call, so all messages we create per API call must contain these values. [/su_box] #### Summary NOw user understands the Inbound API V4/integrate feature of the SKYVVA application enables data retrieval from HTTP headers and query parameters. This functionality streamlines accessing and integrating external data sources, enhancing efficiency and facilitating seamless communication between systems. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use batch Processing? Title: 3. How to use 'Don't process the interface in parallel' picklist (Multi-Select) ? Slug: 3-how-to-use-dont-process-the-interface-in-parallel-picklist URL: https://help.skyvva.com/#article/3-how-to-use-dont-process-the-interface-in-parallel-picklist ================================================================================ # 3. How to use 'Don't process the interface in parallel' picklist (Multi-Select) ? #### Introduction - Introducing a '***Batch Processing Runtime Behavior***' Picklist (Multi-Select) field on the interface interface is a strategic enhancement facilitated by the **SKYVVA** integration application. This feature enables users to adapt the processing behavior of the Interface Scheduler to their specific requirements, particularly in business scenarios where parallel processing is undesired. By selecting the 'BatchProcessPerInterface' option from the picklist, users can ensure that the Interface Scheduler refrains from executing tasks jointly, avoiding potential conflicts. - This customization empowers users with greater control over their integration processes, allowing them to fine-tune performance parameters to align with their business needs. Whether it's optimizing resource utilization or the risk of data fluctuation, introducing this picklist field enhances the adaptability and efficiency of the **SKYVVA** integration application. ![](../images/2024/05/image_2024_05_06T15_19_47_527Z.webp) - To enhance the functionality and flexibility of the **SKYVVA** integration application, a '***Batch Processing Runtime Behavior***' picklist (Multi-Select) field can be introduced on the interface. This feature empowers users with greater control over batch processing operations, particularly in scenarios where parallel processing by the Interface (BatchProcessPerInterface) Scheduler may lead to issues. - By selecting appropriate options from the picklist, users can dictate how batches are handled, including the ability to opt out of parallel processing. This ensures that batches containing the same business data are not concurrently processed by the scheduler, mitigating the risk of conflicts arising from simultaneous access to shared resources. - The significance of this functionality lies in its capacity to prevent exclusive access issues, which can disrupt operations and compromise data integrity. By enforcing sequential processing of batches when necessary, the application safeguards against potential conflicts and ensures smooth execution of integration tasks. - Implementing this feature underscores SKYVVA's commitment to providing users with robust tools for managing data integration processes effectively. With the ability to tailor batch processing behavior to specific requirements, users can optimize performance, minimize risks, and maintain the integrity of their Salesforce environment with confidence. #### Case: Do not Process the Interface in Parallel of Batch EO Type - We see the example '***Batch Processing Runtime Behavior'*** multi-picklist field on our interface to block the parallel processing of baskets. Opting for '***Don't process the interface in parallel***' in this field activates this feature. - Therefore, the scheduler will only handle a set number of baskets at a time within a job. Should another job become available, the scheduler refrain from picking up any additional baskets. This functionality, integrated within the **SKYVVA** application, ensures orderly processing and prevents overload, enhancing system stability. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If the scheduler runs multiple jobs during the Apex job worker to process the basket, the next scheduler will be aborted. It will wait until the current basket is completed process before moving on to the next one.[/su_box] **Required step:** - Create an** Integration** - Create an **Inbound interface with batch mode **and** Batch Processing Runtime Behavior** ![](../images/2024/05/image_2024_05_06T15_17_42_701Z.webp) - Go to **Interface** Group Default **-> **Set** Basket Record Collection Size: 1000** ![](../images/2024/05/image_2024_05_06T15_31_49_314Z.webp) - Push 2 baskets and each basket with 500 records ![](../images/2024/05/image_2024_05_06T15_33_10_924Z.webp) - Go to** Scheduler -> **Start Run** Interface Scheduler** ![](../images/2024/05/image_2024_05_06T15_34_24_348Z.webp) - After the scheduler runs, it will process baskets containing 1000 records per job. Look at the screenshot below, If an Apex job is under processing baskets. - The next scheduler job will not pick up those baskets for processing even if the free jobs are available. ![](../images/2024/05/image_2024_05_06T15_35_55_027Z.webp) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - **Basket Record Collection Size = Record per job** - **Processing Package Size = Record per batch **(Default Processing Package Size 50 Records per Batch) [/su_box] - Go to Message Monitoring ![](../images/2024/05/image_2024_05_06T15_38_20_295Z.webp) [su_box title="Result:" box_color="#00d9a6;" title_color="#000000"]After the scheduler runs, The Message Monitoring creates 20 API Basket Messages from each basket message that has 50 Business Message records.[/su_box] #### Summary Now users understand how to use, The 'Batch Processing Runtime Behavior' feature in the SKYVVA integration application prevents parallel processing of baskets by allowing users to select '***Don't process the interface in parallel***.' This ensures orderly processing by the scheduler, which handles a set number of baskets within a job at a time. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to configure Alerting? Title: 2. How to use Scheduler Do-Alert when not running? Slug: 2-how-to-use-scheduler-do-alert-when-not-running URL: https://help.skyvva.com/#article/2-how-to-use-scheduler-do-alert-when-not-running ================================================================================ # 2. How to use Scheduler Do-Alert when not running? #### Introduction:- In this tutorial, you will learn how to use the DoAlert #### How to use Scheduler Do-Alert when not running? to alert and provide notifications when a scheduler has not run for a certain time. The DoAlert Scheduler is a functionality that allows the user to configure email notifications based on their preferences in the interface or integration. It provides two distinct options for triggering alerts: when messages fail during processing and when the scheduler has not been run since xxx. The first option triggers alerts whenever messages fail during processing. This ensures that you are promptly notified of any message errors or issues encountered, enabling quick resolution. The second option triggers alerts when the scheduler unexpectedly stops running. This functionality is beneficial as it provides users with alerts or notifications, informing them that the scheduler has not been run since xxx. This ensures that users are promptly notified of disruptions in the scheduler's operation. #### What is Scheduler DoAlert When Not Run? The DoAlert Scheduler is a feature that sends notifications when the scheduler crashes or stops running. It sends email notifications to the user's email address, informing them that the scheduler has not been running since a certain time (xxx). This feature can be configured in the Integration, Interface Group, Interface, Scheduler, and Alert Configuration settings. #### Pre-Requisite: The DoAlert on the scheduler supports the scheduler's daily frequency: - **Run at:**  If you choose this option, it means you want the scheduler to run once a day but at a specific time. - **Run every:**  The scheduler can be configured to run every hour or every minute, depending on how you set it up. If you want the scheduler to run every X hours, then you must choose the 'Hours' option. However, you will also need to specify the starting time and the ending time for when you want the scheduler to run. - When starting the scheduler on Salesforce, it will create the Interface Control Runtime Record Type: - Alert When Not Run - When start the scheduler on Agent, it will create Interface Control RunTime specific Record Type: -Agent V3 Integration not runs since xxx - Agent V3 Interface Group not runs since xxx - Agent V3 Interface not runs since xxx #### All Warning: #### Adding Several picklist values while upgrading the new version In general picklist values from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. Add picklist of Record_Type in InterfaceControlRunTime for the alert when not run feature. Please add these 4 picklist: - **skyvvasolutions__RecordType__c: Alert When Not Run** - **skyvvasolutions__RecordType__c: Agent V3 Interface not runs since xxx** - **skyvvasolutions__RecordType__c: Agent V3 Interface Group not runs since xxx** - **skyvvasolutions__RecordType__c: Agent V3 Integration not runs since xxx** ***We need to configuration:*** Before we can start using the scheduler DoAlert, please create the integration and then the interface. After that, we can set up the alerting function. - Set up Alert Configuration: we can set up the Alert Configuration for anywhere, such as **Integration, Interface, Interface Group, and Scheduler.** - Start Scheduler DoAlert on Integration. - Start the scheduler on Integration, Interface, Interface Group, and Scheduler. **1. Set up Alert Configuration on Integration.** *Setting Alert Setup for scheduler processing on integration detail:* - Tick box ‘Alert when the interface does not run?’ - Set the Unite of time for the alert as the minute - Input the ‘Alert value’ - Create a Task for the User - Chatter Group Name - Send Email SFDC User - Send Email External Mail ![](../images/2024/05/5-10-2024-5-14-56-PM.webp) - After Setting Alert we have record on Alert Configuration tab ![](../images/2024/05/5-10-2024-5-49-09-PM.webp) 2. Start the Scheduler 'DoAlert' to Get Alerting Notification. ![](../images/2024/05/5-13-2024-4-07-51-PM.webp) 3. Start the Scheduler 'Integration' on Agent Control Board. ![](../images/2024/05/5-13-2024-3-41-42-PM.webp) - When start the scheduler on Agent, it will create the Interface Control Runtime of those integration. This is just an example: Currently, my scheduler crashed on the next run at 13:43 when compared with the time alert configuration. As a result, the 'Scheduler doAlert' was executed, and a notification will be sent to my email. ![](../images/2024/05/5-13-2024-3-42-29-PM.webp) - Here's the alerting that creates a task for the user. ![](../images/2024/05/5-13-2024-5-15-56-PM.webp) - Chatter Group. ![](../images/2024/05/5-13-2024-5-17-28-PM.webp) - Send Email SFDC User, Send Email External Mail. ![](../images/2024/05/5-13-2024-5-09-40-PM.webp) Finally, the 'Scheduler DoAlert' is very user-friendly, providing notifications when a scheduler has not run for a certain period of time. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Skyvva Formula Title: 3. How to use formula 'GETORGID' without code in Mapping? Slug: 3-how-to-use-formula-getorgid-without-code-in-mapping URL: https://help.skyvva.com/#article/3-how-to-use-formula-getorgid-without-code-in-mapping ================================================================================ # 3. How to use formula 'GETORGID' without code in Mapping? #### Introduction - We are introducing a groundbreaking addition to the **SKYVVA** integration application: the '**GETORGID**' formula. This innovative formula is designed to effortlessly retrieve the Organization's ID, offering extraordinary convenience and efficiency for users. - With '**GETORGID**,' accessing vital organizational data becomes seamless, streamlining integration processes that enhance system functionality. This new functional formula represents a significant advancement, empowering users with improved capabilities to manage and utilize organizational information within their integrations. - Experience heightened efficiency and convenience with introducing the 'GETORGID' formula in the **SKYVVA** integration application. ![](../images/2024/05/image_2024_05_13T14_49_29_183Z.webp) - The new formula called 'GETORGID' to read the Salesforce Org-Id. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - With this addition, there's no longer a need to write custom Apex code in the custom Apex formula for mapping purposes. - This enhancement simplifies your integration process, saving time and effort while ensuring seamless data mapping.[/su_box] #### Case: Use Formula 'GETORGID' for Callout Salesforce Organization’s Id **Expectation: ** - The '**GETORGID**' function serves the expectation of retrieving the organization ID value, essential for passing into the mapping process to generate the Payload within the **SKYVVA** integration application. - This functionality ensures seamless data transmission and mapping accuracy, enabling users to efficiently handle and process information within their Salesforce environment. **Required step:** - Create an Integration - Create an Outbound Interface ![](../images/2024/05/image_2024_05_13T14_52_04_468Z.webp) - Create an Adapter e.g. SAP CPI ![](../images/2024/05/image_2024_05_13T14_53_10_293Z.webp) - Do Mapping ![](../images/2024/05/image_2024_05_13T14_54_25_922Z.webp) - Link Adapter with Interface ![](../images/2024/05/image_2024_05_13T14_55_37_669Z.webp) - Scroll down to Query filter on SOQL Query for filter sObject ![](../images/2024/05/image_2024_05_13T14_56_16_511Z.webp) - Click Manual Process for Execute Callout ![](../images/2024/05/image_2024_05_13T14_58_37_556Z.webp) - After the Execute Callout, we get the Message Monitoring ![](../images/2024/05/image_2024_05_13T15_00_03_443Z.webp) [su_box title="Result:" box_color="#00d9a6;" title_color="#000000"]The Salesforce Org ID will be generated into the payload. Please look at the screenshot below.[/su_box] **Here is the Payload:** ![](../images/2024/05/image_2024_05_13T15_02_31_943Z.webp) The user can Verify the Salesforce Org Id after you callout. - Go to Setup -> Search Company Information ![](../images/2024/05/image_2024_05_13T15_05_56_535Z.webp) - Go to Developer Console -> Execute Query **‘select id from the organization’** ![](../images/2024/05/image_2024_05_13T15_07_25_669Z.webp) - **After Execute you get Org ID:** ![](../images/2024/05/image_2024_05_13T15_09_29_097Z.webp) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] An integration scenario, requires accurate data, especially id-value, 18 character [/su_box] #### Summary Now user learns the 'GETORGID' function in the SKYVVA integration application and retrieves the organization ID, crucial for mapping processes to generate Payload. This ensures accurate data transmission within Salesforce environments, streamlining operations and enhancing efficiency in handling information. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use interface? Title: 1. What is an Interface and How to create it ? Slug: 1-what-is-an-interface-and-how-to-create-it URL: https://help.skyvva.com/#article/1-what-is-an-interface-and-how-to-create-it ================================================================================ # 1. What is an Interface and How to create it ? ## Learning Objectives After completing this unit, you’ll be able to: - Describe what the Interface is. - Comfortably use the Interface. #### Introduction This tutorial should explain the main concept of an interface. After creating the integration, the user needs to come to this step and create an interface. The configuration of an interface is complex we cannot explain all the parameters on the interface screen in detail in this tutorial. Instead, just create an example interface like Account and set only the basic parameter. This interface should be tested using manual load. There are 3 different categories of interface technology we support: Synchronous and real-time (synchronous) batch (asynchronous) bulk (asynchronous) When the interface is run messages will be created. For more details on what message monitoring is and how to use it tell the user to read the other tutorial about “Message Monitoring”. #### What is Interface? The interface is the second main object in SKYVVA after the integration. The interface describes the structure of data to exchange between Salesforce and other applications. We have two types of Interfaces: - Inbound Interface - Outbound Interface The next property of the interface defines the processing mode. e.g. Synchronous and real-time (synchronous) Batch (asynchronous) and Bulk (asynchronous). #### Prerequisites - You have your salesforce organization - You have installed Skyvva in your salesforce organization. - You have created [integration](http://what%20is%20an%20integration%20and%20how%20to%20create%20it/?). #### How to create an inbound Interface? - Click on the interface tab - Fill in the following field: – Name – Source name – Status – operation Type –  Type - Click on the Save button ![](../images/2018/10/Untitled-8.png) #### How to create an Outbound Interface? - Go to the Interface tab. - Click on the new interface button. - Fill in the given fields: **Name**: It can be Account, Contact Case.. etc to notify your Interfaces **Status**: Deployed (It can be used) **Sequence**: Ranking number (1) **Adapter**: It is the connector **Source Name**: Salesforce Objects (Account, Contact or Case.. etc.) **Operation** **Type**: There are 4 types: – Upsert: To update on existing data and insert new data that doesn’t exist yet in Message Monitoring. –  Update: Only update on data that is already existed in Message Monitoring. –  Insert:  Add all data in the Message Monitoring. – Delete:  Delete all data in Message Monitoring - **Type**: It should be outbound #### How to create an Interface with different processing modes? We will show you how to create an interface to use in a different use case. The following are the different use cases: – Do **real-time** interface using synchronous mode – Do **batch processing** using batch mode – Do **Bulk processing **using bulk mode – Use our standard** CDC** feature to create an interface to push data out #### Synchronous and real-time (Synchronous) - Go to your Integration page. - Click on the **Interface** tab (near to detail tab) - Click On the New Interface button. ![](../images/2018/10/New-Interface.png) **Name**: It can be Account, Contact Case.. etc to notify your Interfaces **Status**: Deployed (It can be used) **Sequence**: Ranking number (1) **Adapter**: It is the connector **Source Name**: Salesforce Objects (Account, Contact or Case.. etc.) **Operation** **Type**: There are 4 types: - Upsert: To update on existing data and insert new data that doesn’t exist yet in Message Monitoring. - Update: Only update on data that is already existed in Message Monitoring. - Insert:  Add all data in the Message Monitoring. - Delete:  Delete all data in Message Monitoring Type: There are two types of interfaces: - Inbound: Import data into Salesforce - Outbound: Export data outside SalesforceNote: Upsert is usually used since it can update the existing data and add new data into Message Monitoring then Save. ![](../images/2018/10/CreateInterface.png) #### Batch (Asynchronous) Batch Mode has been used when there are big amount of data you would like to upload. It is bigger than Synchronous and real-time. When you prefer to use Batch Mode - Clicks on **Interface** - Click on **Edit ** - Checks on** Batch Mode.** ![](../images/2018/10/EditInterface.png) ![](../images/2018/10/CreateInterface.png) #### The bulk (Asynchronous)/span> Bulk Mode has been used when there is a mass amount of data you would like to upload. It is larger than the Batch mode. how to configure bulk mode: –  We have to click on our created **Interface** -> Edit -> checks on **Bulk Mode** ![](../images/2018/10/freesnippingtool.com_capture_20210803023852.png) #### CDC CDC can provide the ability to record all data changes you create on any business object. It will be automatically pushed to your external system at any time you schedule. When you checkbox this flag it means that you activate CDC. This flag is used to activate both CDC and CDD “Use SKYVVA Outbound Scheduler”. - Click on the checkbox Use Skyvva Outbound Scheduler - Set up a date from when you define the changed data to be collected in Agent/CDD Scheduler LastRun. ![](../images/2018/10/freesnippingtool.com_capture_20210803024010.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use interface? Title: 1. How to use IChain Interface with Init Operation ? Slug: 1-how-to-use-ichain-interface-with-init-operation URL: https://help.skyvva.com/#article/1-how-to-use-ichain-interface-with-init-operation ================================================================================ # 1. How to use IChain Interface with Init Operation ? **Learning Objectives:-** - Describe what are the different init-operations for the chained interface. - Comfortably use different init-operation for the chained interface. #### Introduction:- SKYVVA provides different init-operation for the chained interface i,e None, Delete First, Delete specific child, Delete Anyway, and Delete + Upsert & Delete child not present in the payload. In this tutorial, we will learn how to configure these init-operations with Interface which has a hierarchical message type. #### Pre-required: - Upload Hierarchical Message Type. - Create Integration and Inbound Interface. **Step 1:** Upload a Hierarchical Message Type or create a Hierarchical Message Type. - Here's the Hierarchical Message Type ![](../images/2019/07/5-2.png) **Step 2:** Create an Inbound Interface and Linked Message Type. - Here's the Inbound Interface which is linked with Message Type. ![](../images/2019/07/7-2.png) #### - Do mapping ![](../images/2019/07/8-2.png) #### How to configure Ichain? To configure the IChain Interface we need to do mapping in hirachical and then go to Interface Related see the example below. - Go to Interface-Related ![](../images/2019/07/9-1.png) - Scroll Down to find the Ichained Interface and click IChain Interfaces Name. ![](../images/2019/07/10-1.png) - Click the Edit button. ![](../images/2019/07/11-1.png) - Now we can see How many Sections are in IChained  Interface. ![](../images/2018/10/3-6.png) - Parent Interface refers to the Interface that we choose as the parent In this example we use hierarchical mapping so the first mapping is the parent Interface. - Sequence refers to creating an order, an order sequence number is generated and can be used to identify the order. - Child Interfaces refers to the Interfaces that we selected the other interface as the child. In this case, if the user wants to use another Interface they can create a new IChain to config, If the user wants to use the child interface that matches the hierarchical mapping, the user just selects the Child Interface that contains _ParentInterface_ChildInterface_1.2 meaning that this is got from mapping If the mapping has more object in one Interface it will generate the Interface to suffix  1.3,1.4 so on. - Parent Relationship Name / Foreign Field refers to the primary key between the Parent Object and to child Object depending on the primary key of each object. Example: We have many fields to look up to account depending on the ID or depend on the name so we can select the fields that we want to look up meaning that if the records that parents is exits as the same parent payload it will update the parent records and insert the child payload. - Init Operation is the useful functions that allow users to modify the child Interface when we do inbound. In this function there are 6 operations such as None, Delete First, Delete Specific Child, Delete Child anyway,  and Delete+ Upsert (we can be Called delta ).  See the picture below. #### Which are different init-operations for the chained interface? The feature with our inti operation for the chained interface is to handle the deletion of a child from the sending system. There are different init-operation for the chained interface as per the condition. - **None:** Add a new child or update the existing one. - **Delete First:** Delete all child records of a parent. - **Delete specific child:** delete the specific child of the parent. - **Delete Anyway:** This will always delete the children, no matter if you only send Parent or Parent + Children. - **Delete + Upsert: **that is about deleting children does not come along with their parent i.e. Existing accounts with contacts C1, C2, C3. if the system sends account with a contact C2, then C1, C3 will deleted from Account and insert/update C2, So Account has only 1 contact C2. - **Delete child not present in the payload:** this operation includes Delete + Upsert operation which means delete children that do not come along with their parent and delete all children if the user imports only parent record. #### None:- This is the default option when we create an IChained Interface. Nothing is deleted here but the new children added or existing children updated. It is not correlated with previous data So there may be different levels between order items in SAP and Salesforce. - Create Integration - Create two interfaces -Account and contact where the account is the parent interface and contact is a child. - Click on the related tab of the account interface and scroll down the page to the IChained interface. - Click on the new IChained interface. ![](../images/2019/07/image_2022_03_24T07_50_21_198Z.png) #### Delete First:- In this case, when the child record is inserted or updated the previous ones should be deleted. This ensures that the Salesforce page contains only the child, included in the latest payload. We have in the an option the set "Delete First" to delete first the existing children before adding new children. For example, the message comes with message A. If A contains a child record then the deletion works. In this case, we delete all existing children and create the new child coming with the new message. But if we send only the parent data only parent data get updated. No children get deleted. "Delete First" in Chain is that when we have a child record in the message e.g. Parent + Child then it delete first all existing children and then adds the new children that come with the current message. The sender needs always to send all children. The sender cannot send only children which have been changed at the sender system. If he only sends a changed record which has been changed at the sender system the situation on both systems. e.g. sender and Salesforce are not consistent anymore. This mode does not support that the sender sent deltas. This mode works only correctly when the sender always sends in full mode e.g. all children every time! **How to use "Delete First"?** Follow the given steps:- - Create a hierarchical interface Account, Contact where contact is a child interface. - We use init Operation = Delete First. #### Delete specific child:- How to use Delete specific child. **Follow the given steps:-** **Step 1:** Create a hierarchical interface Account, Contact where contact is a child interface. We use init Operation = None **Step 2: **Upload the following data. We have account parent fields Account (Parent fields):- - AccountName=CacaCambo (ExternalID), - BillingCountry=Cambodia and Contact child fields:- - LastName=Jen (ExternalID), - FirstName=Jonh, - Email = jonh@test.com Here are the records account and contact after processed:- ![](../images/2019/07/Untitled5.png) **Step3:** Now We use init Operation = Delete Specific Child in IChained Interfaces to delete some values in child interface data but it is not an External ID value. Now we want to change only email value I,e  jonh@test.com to jen@test.com where, - LastName=Jen (ExternalID), - FirstName=Jonh like before. So the user just pushes the above data again the data will be created again with the last change email= jen@test.com ![](../images/2019/07/Untitled-6-1.png) **Here is the result of contact data on message monitoring change email value:-** ![](../images/2019/07/Untitled-7-1.png) #### Delete Child Anyway:- Delete Child Anyway means that it will delete all children even have one or more and it will create a new child as the payload we sent. - Here's the Interface Delete Child Anyway ![](../images/2019/07/12-1.png) - Here are the records that have to exist in Salesforce. ![](../images/2019/07/12-1.png) - Here's the data that exists in Salesforce ![](../images/2019/07/13-1.png) - Here's the payload for processing that will delete these three contacts and add the new one from the payload. ![](../images/2019/07/14-1.png) - Go to monitor to see the result and click the Related To link to see the account that has been modified. ![](../images/2019/07/15-1.png) - Here's the account in Salesforce ![](../images/2019/07/16-1.png) #### Delete + Upsert :- Deleting children does not contain in the coming payload of their parent, which means deleting all not children based on the parent's external value, and children’s external values are not contained in the payload. **How to use Delete+Upsert. ** **Follow the given steps:- ** **Step 1:** Create a hierarchical interface Account, Contact where contact is a child interface. We use init Operation = Delete + Upsert **Step 2: **Upload the following data. We have Account (Parent Field):- - AccountName = COCA_COLATest1(ExternalID), - BillingCity = pp1 Contact1 (Child Field):- - FirstName = COCA3, - LastName = COLA_3New(ExternalID) Contact2 (Child Field):- - FirstName = COCA2_UpdateNew, - LastName = COLA_2 Here are the records account and contact after processed:- ![](../images/2019/07/image_2022_03_25T12_39_02_955Z.png) In this case, we have a Records Account that contains 2 Contacts whose external IDs are COLA_1 and COLA_2, so when we push the same Account name and 2 contacts whose external IDs are COLA_2 and COLA_3. The processing **Upsert + Delete** will work like to Update the COLA_2, Delete COLA_1, and add COLA_3. Contact2 (Child Field):- - FirstName = COCA2_UpdateNew, - LastName = COLA_2 ![](../images/2019/07/image_2022_03_25T12_55_26_204Z.png) **Here is the result of contact data on message monitoring change Contact FirstName & LastName  value updated:-** ![](../images/2019/07/image_2022_03_25T12_57_51_196Z.png) #### Delete Child not present in the payload :- The **SKYVVA** integration application supports a combined **Delete + Upsert** operation, designed to manage hierarchical data efficiently. This operation ensures that child records not included with their parent are deleted. Additionally, if only the parent record is imported, all associated child records are deleted. This functionality simplifies data management, automatically removing obsolete child records, and ensuring the database remains accurate and up-to-date. The integration application enhances user control over data integrity, providing a streamlined approach to handle complex data structures within the **SKYVVA** environment. ![](../images/2024/05/image_2024_05_23T14_01_38_832Z.webp) Deleting children does not contain in the coming payload of their parent, which means deleting all not children based on the parent's external value, and children’s external values are not contained in the payload. **Follow the given steps:- ** **Step 1:** Create a hierarchical interface Account, Contact where contact is a child interface. We use init Operation = **Delete Child not present in the payload** ![](../images/2024/05/image_2024_05_27T15_27_39_443Z.webp) **Step 2: **Upload the following data. We have Account (Parent Field):- - AccountName = COCA(ExternalID), - BillingCity = Cam Contact1 (Child Field):- - FirstName = Long, - LastName = Bora(ExternalID) Contact2 (Child Field):- - FirstName = Malina, - LastName = Titi(ExternalID) Here are the records account and contact after processed:- ![](../images/2024/05/image_2024_05_23T14_08_46_469Z.webp) In this case, we have a Records Account that contains 2 Contacts whose external IDs are Coca021, so when we push the same Account name and 2 contacts whose external IDs are Coca. The processing **Delete Child not present in the payload** will delete. Contact2 (Child Field):- ![](../images/2024/05/image_2024_05_27T15_30_20_237Z.webp) - Name = Coca021(ExternalID) - Name = Coca(ExternalID) ![](../images/2024/05/image_2024_05_23T14_10_05_107Z.webp) Here is the second screenshot send data to Salesforce and then the child is deleted. #### Summary Now users understand that operations -- None, Delete First, Delete specific child, Delete Anyway, and Delete + Upsert & Delete child not present in the payload within the SKYVVA integration application provide robust data management capabilities, allowing users to maintain data integrity and streamline integration workflows. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: How to configure Microsoft SharePoint adapter? Slug: how-to-configure-microsoft-sharepoint-adapter URL: https://help.skyvva.com/#article/how-to-configure-microsoft-sharepoint-adapter ================================================================================ # How to configure Microsoft SharePoint adapter? **Learning Objectives :-** This unit describes:- - This unit describes the Microsoft SharePoint adapter - Configuration of Microsoft SharePoint adapter #### Introduction The Microsoft SharePoint adapter within the **SKYVVA** integration application is designed to facilitate the seamless data exchange between SharePoint and other systems, including Salesforce. This integration ensures that users can leverage the full capabilities of SharePoint while maintaining data consistency and integrity across different platforms. #### Key Features and Benefits 1. **Bidirectional Data Synchronization** One of the standout features of the Microsoft SharePoint adapter is its ability to perform bidirectional data synchronization. This means that data can flow seamlessly in both directions between SharePoint and Salesforce or other connected systems. For instance, documents and records updated in SharePoint can automatically reflect in Salesforce, ensuring that teams have access to the most up-to-date information without manual intervention. 2. **Ease of Configuration** The **SKYVVA** integration application emphasizes user-friendliness and ease of configuration. The Microsoft SharePoint adapter can be set up with minimal effort, thanks to its intuitive interface and straightforward configuration process. Users do not need extensive technical expertise to get the integration up and running, making it accessible to a wide range of users within an organization. 3. **Support for Hierarchical Data Structures** SharePoint often deals with complex, hierarchical data structures, such as nested folders and documents. The adapter is designed to handle these structures efficiently, ensuring that the integrity and organization of data are maintained during the integration process. This feature is particularly beneficial for organizations that rely on intricate data organization within SharePoint. 4. **Robust Error Handling and Monitoring** Error handling and monitoring are critical components of any integration solution. The Microsoft SharePoint adapter provides robust error-handling mechanisms, ensuring that any issues encountered during data transfer are promptly identified and addressed. Additionally, the **SKYVVA** integration application offers comprehensive monitoring tools, allowing administrators to keep track of data flows and integration performance in real time. 5. **Enhanced Security** Security is a paramount concern when dealing with sensitive data. The Microsoft SharePoint adapter ensures that data transfers are conducted securely, adhering to industry standards and best practices. This includes encryption of data in transit and at rest, as well as authentication mechanisms to prevent unauthorized access. **What is a Microsoft SharePoint adapter?** The Microsoft SharePoint adapter within the **SKYVVA** integration application represents a powerful tool for organizations looking to optimize their data management and collaboration efforts. By providing seamless integration between SharePoint and other enterprise systems, the adapter enhances data consistency, improves workflow efficiency, and ensures that users have access to the information they need when they need it. With features like bidirectional synchronization, hierarchical data support, robust error handling, and enhanced security, the Microsoft SharePoint adapter is a valuable asset for any organization seeking to leverage the full potential of its SharePoint environment. **Pre-required** **Configuration Microsoft SharePoint adapter?** - Configuring the Microsoft SharePoint adapter within the SKYVVA integration application involves steps to establish a seamless connection between SharePoint and other systems like Salesforce. Below is a comprehensive guide to configuring the adapter. 1. **Prerequisites**Before you begin, ensure you have the following: Access to the SKYVVA integration application. - Administrator access to both SharePoint and Salesforce (or other target systems). - Necessary permissions to create and configure adapters within the SKYVVA platform. 2. **Accessing the SKYVVA Integration Application** - **Login:** Login to your Salesforce account where the SKYVVA integration application is installed. - **Navigate:** Go to the SKYVVA integration application through the App Launcher. File type supported for this adapter: - XML - JSON - CSV - CSV Fixed Length - Binary #### How to read data from Microsoft OneDrive and Push to Salesforce (Inbound Adapter) **Expectation: **We can read data from **SharePoint** and push it to Salesforce using our **Microsoft** **SharePoint** connector (Adapter). We have implemented with CSV, XML, JSON, and Binary format when you have been configured with an adapter already you can push it to salesforces**.** - Executing callout records from Salesforce and sending them to Microsoft SharePoint is streamlined using the **SKYVVA** integration application. This process utilizes an adapter that supports various data formats, including CSV, CSV Fixed Length, XML, JSON, and Binary. By configuring the adapter within Salesforce, users can efficiently manage outbound interfaces to execute callouts. - When an outbound interface is set up, the integration application facilitates seamless data transfer between Salesforce and SharePoint. The flexibility in data format support ensures that diverse data structures can be accurately conveyed, catering to different business needs. For instance, CSV is ideal for tabular data, while XML and JSON are preferred for hierarchical data structures. The Binary format can handle complex data types, adding to the versatility of the integration. - The key advantage of using the **SKYVVA** integration application lies in its robust and user-friendly interface. It simplifies the process of setting up and managing callouts, allowing users to focus on their core business processes rather than the intricacies of data integration. The ability to execute callouts based on the outbound interface ensures that data is transferred efficiently and reliably, maintaining data integrity and enhancing operational efficiency. Overall, **SKYVVA's** integration capabilities provide a comprehensive solution for organizations looking to streamline their data management processes between Salesforce and Microsoft SharePoint. **Required step:** - Create an **Integration** - Create an** Inbound Adapter Microsoft SharePoint** Go to** Integration **Detail -> click **Microsoft Control Board** ![](../images/2024/06/image_2024_06_10T07_54_38_648Z.webp) - On the** Microsoft Control Boad** screen -> Click **Adapter** tab -> Create **Inbound** **Adapter** ![](../images/2024/06/image_2024_06_10T07_56_06_826Z.webp) - Click** Ping Connection** ![](../images/2024/06/image_2024_06_11T14_35_43_555Z.webp) - Click on the** Test Connection **Action to check the adapter read the file from** Microsoft SharePoint.** ![](../images/2024/06/image_2024_06_11T14_37_11_746Z.webp) - After clicking on** Test Connection, **you get the** Payload **below ![](../images/2024/06/image_2024_06_11T14_39_18_039Z.webp) - Create an **Inbound** **Interface** - Do** Mapping** ![](../images/2024/06/image_2024_06_11T14_40_24_249Z.webp) - After creating an **Adapter **and** Interface** already, go to the **Interface** **Detail** -> link the **Adapter** with the Interface. ![](../images/2024/06/image_2024_06_11T14_41_27_633Z.webp) - On the** Microsoft Control Boad** screen -> **Interface** tab ![](../images/2024/06/image_2024_06_11T14_42_31_105Z.webp) - The process involves reading files from **Microsoft SharePoint** and pushing them to **Salesforce**. We have three flows: **Manual process, Scheduler, **and** Adapter Scheduler.** Use** the Manual Process **button - Tick on the **Interface** you have a link on the adapter then click on the **Manual Process** button ![](../images/2024/06/image_2024_06_11T14_44_20_393Z.webp) - **Apex Job** ![](../images/2024/06/image_2024_06_11T14_45_29_322Z.webp) - After completing the Apex job, we will get the message monitoring**.** ![](../images/2024/06/image_2024_06_11T14_47_10_906Z.webp) - Use **Scheduler** setting Click on the **Scheduler** tab on the **Microsoft Control Board** page ![](../images/2024/06/image_2024_06_11T14_49_41_087Z.webp) - The **Scheduler** tab has three sections: Run **Scheduler Per Integration**: It checks all interfaces have a link with the adapter on the Integration to processing. **Start scheduler on ProcessPerIntegrationWithInternetDrive** ![](../images/2024/06/image_2024_06_11T14_51_53_619Z.webp) - **Apex Job** ![](../images/2024/06/image_2024_06_11T14_52_51_040Z.webp) - **Message Monitoring** ![](../images/2024/06/image_2024_06_11T14_53_46_155Z.webp) - Run **Scheduler Per Interface Group**: It checks all interfaces stay in the **Interface Group** for processing. ![](../images/2024/06/image_2024_06_11T14_55_04_160Z.webp) - **Start scheduler on ProcessPerInterfaceGroupWithInternetDrive** ![](../images/2024/06/image_2024_06_11T14_56_09_039Z.webp) - **Apex Job** ![](../images/2024/06/image_2024_06_11T14_57_12_914Z.webp) - **Message Monitoring** ![](../images/2024/06/image_2024_06_11T14_58_19_064Z.webp) - Run **Scheduler Per Interface**: It takes an interface to execute processing. **Start scheduler on ProcessPerInterfaceWithInternetDrive** ![](../images/2024/06/image_2024_06_11T14_59_39_970Z-1.webp) - **Apex Job** ![](../images/2024/06/image_2024_06_11T15_01_20_384Z.webp) - **Message Monitoring** ![](../images/2024/06/image_2024_06_11T15_02_20_005Z.webp) - Use **Adapter** **Scheduler** Click on the Adapter tab on the **Microsoft Control Board** page ![](../images/2024/06/image_2024_06_11T15_03_41_588Z.webp) - Click on the **View** action to check **pollingTimeIntervalInMinute:2, **it means the adapter will poll to run that file again after 2min. ![](../images/2024/06/image_2024_06_11T15_05_14_468Z.webp) - Click on **Start** action on the adapter ![](../images/2024/06/image_2024_06_11T15_06_29_681Z.webp) - **Apex Job** ![](../images/2024/06/image_2024_06_11T15_07_48_837Z.webp) - **Message Monitoring** ![](../images/2024/06/image_2024_06_11T15_08_49_461Z.webp) [su_box title="Note" box_color="#ff0000" title_color="#000000"] - The **Microsoft SharePoint** adapter supports CSV, XML, JSON, and Binary formats. - When using CSV files, the adapter supports **Asynchronous** For instance, when processing a file containing 1,000 records, the default inbound processing is configured to handle 50 records per batch job. Consequently, a file with 1,000 records would execute 20 batches per Apex job. - The **Microsoft SharePoint **adapter also supports **Batch** and **Bulk** [/su_box] #### How to execute callout records from Salesforce to Microsoft SharePoint (Outbound Adapter) **Expectation: **We can execute callout records from **Salesforce and **send them to** Microsoft** **SharePoint **using** an Adapter. **We have implemented with CSV, CSV Fixed Length, XML, JSON, and Binary format when you have been configured with an adapter already you can execute callout best on the outbound interface. - Executing callout records from Salesforce and sending them to Microsoft SharePoint using an adapter is a powerful capability of the **SKYVVA** integration application. This process supports various data formats including CSV, CSV Fixed Length, XML, JSON, and Binary, providing flexibility to meet different data handling requirements. Once the adapter is configured, users can efficiently perform callouts based on the outbound interface. - To begin, the user needs to set up the adapter, ensuring it is correctly configured to handle the specific data formats and communication protocols required. With the adapter in place, the SKYVVA integration application facilitates seamless data transfer from Salesforce to SharePoint. This integration enables users to maintain data consistency and streamline workflows between the two platforms. - Using the **SKYVVA** integration application, users can configure and execute callouts without needing extensive coding or manual intervention. The application handles the complexities of data format conversions and communication, allowing for a smooth and efficient integration process. This capability is particularly beneficial for organizations looking to automate data synchronization and improve their operational efficiency. Overall, the **SKYVVA** integration application provides a robust solution for executing callout records from Salesforce to SharePoint, leveraging various data formats and simplifying the integration process through its user-friendly interface and powerful adapter configuration. **Required step:** - Create an **Integration** - Create an** Inbound Adapter Microsoft SharePoint** Go to** Integration **Detail -> click **Microsoft Control Board** ![](../images/2024/06/image_2024_06_11T15_19_03_000Z.webp) - On the** Microsoft Control Boad** screen -> Click **Adapter** tab -> Create **Outbound** **Adapter** ![](../images/2024/06/image_2024_06_11T15_20_44_271Z.webp) - Click** Ping Connection** ![](../images/2024/06/image_2024_06_11T15_21_48_534Z.webp) - Create an **Outbound Interface **->set** Interface API Version: V3 **->** **Do** Mapping **->** **link** Adapter **with interface ![](../images/2024/06/image_2024_06_11T15_22_48_051Z.webp) - Go to **Interface Detail** -> Scroll down to **SOQL Query for filter sObject** -> Set the condition on the file **Filter Query** ![](../images/2024/06/image_2024_06_11T15_23_47_869Z.webp) - Click on the **Manual Process** button to callout the records ![](../images/2024/06/image_2024_06_11T15_24_48_883Z.webp) - After clicking **Send**, we got the **Message Monitoring** ![](../images/2024/06/image_2024_06_11T15_25_54_119Z.webp) - Here is the **File** **Payload** from **Microsoft SharePoint**. ![](../images/2024/06/image_2024_06_11T15_26_51_585Z.webp) - Here is the **Payload** ![](../images/2024/06/image_2024_06_11T15_27_59_172Z.webp) [su_box title="**Result:**" box_color="#2a8af0" title_color="#000000"]When clicking the **Manual Process** button to execute the callout, we receive the **Message Success** along with the payload, which is determined based on the conditions set in the **Filter Query** of the **SOQL Query for filter sObject** section. As a result, Export Data V3 hierarchical in XML File format is implemented for an internet adapter. [/su_box] ![](../images/2024/06/image_2024_06_11T15_28_51_269Z.webp) [su_box title="Note" box_color="#ff0000" title_color="#000000"]The **Microsoft SharePoint** Adapter is categorized under the Internet Adapter, which means it offers similar functionalities to other internet-based adapters such as Google Drive, Dropbox, OneDrive, Google Pub/Sub, and Amazon S3.[/su_box] #### Summary Now user understands how the Microsoft SharePoint adapter in **SKYVVA** supports inbound, outbound, and custom logic, enabling seamless data exchange and enhanced workflow automation between SharePoint and other systems, including Salesforce. ================================================================================ Book: Tutorials Section: Tutorials Subsection: Adapter Title: How to Use the REST Adapter to Transfer Data from One Salesforce Org to Another Salesforce Org? Slug: how-to-use-the-rest-adapter-to-transfer-data-from-one-salesforce-org-to-another-salesforce-org URL: https://help.skyvva.com/#article/how-to-use-the-rest-adapter-to-transfer-data-from-one-salesforce-org-to-another-salesforce-org ================================================================================ # How to Use the REST Adapter to Transfer Data from One Salesforce Org to Another Salesforce Org? #### Introduction Transferring data between Salesforce org using the **SKYVVA** integration application and the REST adapter involves several steps to ensure smooth and efficient data migration. Here's a step-by-step guide on how to accomplish this: - **Setup and Configuration**: Install and configure the **SKYVVA** integration application in both the source and target Salesforce org. - Set up the REST adapter in the source Salesforce org. This involves configuring the necessary endpoints and authentication mechanisms to facilitate communication with the target org. - **Define the Data to Transfer**: Identify the specific data objects and fields that need to be transferred from the source org to the target org. - Create data mappings to ensure that the data is accurately transferred and aligned between the two org. - **Create Integration Flows**: In the **SKYVVA** integration application, create integration flows to define the data transfer process. These flows include source and target connections, data mappings, and any necessary transformations or validations. - Configure the REST adapter as the source connection and the target Salesforce org as the destination. - **Test the Integration**: Before performing the actual data transfer, conduct thorough testing of the integration flows. This helps identify and resolve any issues, ensuring that the data is correctly transferred without any errors or data loss. - **Execute the Data Transfer**: Once testing is successful, execute the integration flows to transfer the data from the source Salesforce org to the target org. Monitor the transfer process to ensure it completes successfully and verify that the data in the target org matches the source data. - **Monitor and Maintain**: Continuously monitor the integration flows for any issues. Perform regular maintenance and updates to the integration configurations as needed to accommodate any changes in data structures as per business requirements. By following these steps, you can effectively use the REST adapter within the **SKYVVA** integration application to transfer data between Salesforce org, ensuring a smooth and accurate data migration process. #### Pre-required **Create a connected app in source org.** - Creating a connected app in the source org is essential for Salesforce to Salesforce integration. The process involves generating a client ID and client secret from the connected app. Alongside a username and password, these four properties are critical for establishing a secure and authenticated connection between Salesforce instances. By configuring these details, seamless data exchange and integration workflows can be facilitated, ensuring efficient and secure communication between the source and target Salesforce environments. **Rest Adapter Template** `{ "Rest Service":{ "Request":{ "URL":{ "PATH Parameter":{ //flat Structure }, "QUERY Parameter":{ //flat Structure } }, " Header ":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } }, "Response":{ "root":{ //web service response } } } }` **Name of Message Type** **Type of Message Type** Rest Service ex:  REST_Upsert_Account_ByExternalId_Service **REST_Service** Request **REST_Request** URL **REST_Request_URL** PATH Parameter **REST_Request_URL_Path_Parameter** QUERY Parameter **REST_Request_URL_Query_Parameter** Header **REST_Request_Header** Body **REST_Request_Body** Response **REST_Response** Root(it should be anything) Ex: Root, response_body, res_body **Plain structure** #### Operation Type: Upsert (Insert or Update) The "Upsert" operation in the **SKYVVA** integration application allows for efficient data management by combining the functionalities of both insert and update operations. When executing an upsert, the application checks if a record already exists based on a specified key. If the record exists, it updates the existing data; if not, it inserts a new record. This dual capability streamlines processes reduces repetition, and ensures data consistency. By simplifying the integration workflow, upsert enhances productivity and ensures that the data remains accurate and up-to-date within the system. **Create Metadata & Repository and REST Template for your service:** - **Metadata: **REST_Org_To_Org_Metadata - **Repository:** REST_Org_To_Org_Repository **(You can able to create multiple rest service templates in a single repository)** **Message Type: **REST_Upsert_Account_ByExternalId_Service ![](../images/2024/06/image_2024_06_12T15_32_37_573Z.webp) - **Integration Name:** REST_Org_To_Org_Integration ![](../images/2024/06/image_2024_06_12T15_34_38_449Z.webp) **Go to the Interfaces tab of your integration and click on the ‘New Interface’ button.** **Here, you need to provide the following details:** - **Interface Name: **REST_Upsert_Account_ByExternalId_OB - **Source object: ex. Account** - **MetaData Provider: **REST_Org_To_Org_Metadata - **Repository:** REST_Org_To_Org_Repository - **Source/Target Message Type: **REST_Upsert_Account_ByExternalId_Service - **Direction: **Outbound - **Status:** Deployed **Outbound Interface: **REST_Upsert_Account_ByExternalId_OB ![](../images/2024/06/image_2024_06_12T15_36_06_074Z.webp) **Mapping: ** - Click on the “Open Mapping” button. - Map source fields to the target side fields will generate a dynamic header, dynamic path, query, and request body for your request. ![](../images/2024/06/image_2024_06_12T15_37_23_053Z.webp) **Go to the Adapter Tab:** - Click on the new button and select type as a REST and Direction as an outbound provide a meaningful name to your adapter - Provide configuration details in various properties based on authentication type. Ex: Auth2.0 and Basic. **Outbound Adapter: REST_Upsert_Account_ByExternalId_OB** ![](../images/2024/06/image_2024_06_12T15_38_59_262Z.webp) - Link REST_Upsert_Account_ByExternalId_OB Outbound adapter with Outbound Interface: - Edit the interface, find the field Outbound Adapter, search REST_Upsert_Account_ByExternalId_OB adapter, and select an adapter. ![](../images/2024/06/image_2024_06_12T15_40_11_578Z.webp) Now that the Request Part is completed, we can send requests from the source to the target system. Now we need to create an inbound interface to process our web service response. **Go to the Interfaces tab of your integration and click on the ‘New Interface’ button.** **Here, the user needs to provide the following details:** - **Interface Name: **REST_Upsert_Account_ByExternalId_IB - **Source object: ex. Account** - **MetaData Provider: **REST_Org_To_Org_Metadata - **Repository:** REST_Org_To_Org_Repository - **Source/Target Message Type: **REST_Upsert_Account_ByExternalId_Service - **Direction: **Inbound - **Status:** Deployed **Inbound Interface: **REST_Upsert_Account_ByExternalId_IB ![](../images/2024/06/image_2024_06_12T15_42_12_240Z.webp) **Go to the Mapping: ** - Click on the “Open Mapping” button. - Map source fields to the target side fields and it will process the response and make changes into Salesforce org. ![](../images/2024/06/image_2024_06_12T15_44_00_138Z.webp) **Link Inbound Interface with Outbound Interface:** - Open the Outbound Interface and select the response interface in the Response Interface field of the Outbound interface. ![](../images/2024/06/image_2024_06_12T15_45_25_320Z.webp) - **Callout: (This will execute your outbound interface and it will generate dynamic data for your request using account '001DM00002PVHAEYA5')** `skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'001DM00002PVHAEYA5'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('REST_Org_To_Org_Integration','REST_Upsert_Account_ByExternalId_OB',ids,'SYNC',c);` **Go to Message Monitoring: (It will display your request and response status)** - Go to the Integration Tab and click on the “**Monitoring**” Tab. - Select your interface Interface Name field and apply different filters in various fields. - Click on the Search button. ![](../images/2024/06/image_2024_06_12T15_48_50_995Z.webp) - **An API Request message** indicates whether your request is processed successfully or not. - **An API Response message** indicates whether your response is processed successfully or not. ![](../images/2024/06/image_2024_06_12T15_51_05_793Z.webp) - If the created flag is true in the response then an account has been created successfully and if it is false then an account has been updated. ![](../images/2024/06/image_2024_06_12T15_52_30_796Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"] - An account is inserted into ***Salesforce org (Source Org)*** successfully and based on inbound interface mapping, we are updating the source message field of an account which indicates that the account is inserted or updated. Ex: created = true (inserted) [/su_box] ![](../images/2024/06/image_2024_06_12T15_56_56_437Z.webp) - When the user executes the callout script again then we will get created = false (updated) field of response and our inbound processing will work based on it. - Ex: The account has been updated successfully. ![](../images/2024/06/image_2024_06_12T15_58_44_179Z.webp) #### Operation Type: GET The "GET" operation type in the **SKYVVA** integration application allows users to retrieve data from Salesforce. This operation is essential for accessing and extracting information stored within the Salesforce environment. Utilizing the feature-rich API, users can perform GET requests to fetch hierarchical data efficiently. This functionality supports seamless data retrieval without the need to specify message types explicitly, enhancing flexibility and ease of use. Consequently, the GET operation simplifies integration processes, enabling users to access necessary data swiftly and integrate it into their workflows with minimal effort. **Create Metadata & Repository and REST Template for your service:** - **Metadata: **REST_Org_To_Org_Metadata - **Repository:** REST_Org_To_Org_Repository **(You can able to create multiple rest service templates in a single repository)** - **Message Type: **REST_GET_Account_ByExternalId_Service ![](../images/2024/06/image_2024_06_13T14_47_32_368Z.webp) - **Integration Name:** REST_Org_To_Org_Integration ![](../images/2024/06/image_2024_06_13T14_48_43_005Z.webp) - **Go to the Interfaces tab of your integration and click on the ‘New Interface’ button.** **Here, the user needs to provide the following details:** - **Interface Name: **REST_GET_Account_ByExternalId_OB - **Source object: ex. Account** - **MetaData Provider: **REST_Org_To_Org_Metadata - **Repository:** REST_Org_To_Org_Repository - **Source/Target Message Type: **REST_GET_Account_ByExternalId_Service - **Direction: **Outbound - **Status:** Deployed **Outbound Interface: **REST_GET_Account_ByExternalId_OB ![](../images/2024/06/image_2024_06_13T14_52_07_480Z.webp) **Go to Mapping: ** - Click on the “Open Mapping” button. - Map source fields to the target side fields will generate a dynamic header, dynamic path, query, and request body for your request. ![](../images/2024/06/image_2024_06_13T14_53_48_712Z.webp) **Go to the Adapter Tab:** - Click on the new button and select type as a REST and Direction as an outbound provide a meaningful name to your adapter and provide configuration details in various properties based on authentication type. Ex: Auth2.0 and Basic. - Outbound Adapter: REST_GET_Account_ByExternalId_OB ![](../images/2024/06/image_2024_06_13T14_55_57_140Z.webp) - Link REST_GET_Account_ByExternalId_OB Outbound adapter with Outbound Interface: - Edit the interface, find the field Outbound Adapter, search REST_GET_Account_ByExternalId_OB adapter, and select an adapter. ![](../images/2024/06/image_2024_06_13T14_57_14_900Z.webp) Now that the Request Part is completed, we can send requests from the source to a target system. Now we need to create an inbound interface to process our web service response. - **Go to the Interfaces tab of your integration and click on the ‘New Interface’ button.** **Here, you need to provide the following details:** - **Interface Name: **REST_GET_Account_ByExternalId_IB - **Source object: ex. Account** - **MetaData Provider: **REST_GET_To_Org_Metadata - **Repository:** REST_Org_To_Org_Repository - **Source/Target Message Type: **REST_GET_Account_ByExternalId_Service - **Direction: **Inbound - **Status:** Deployed **Inbound Interface: **REST_GET_Account_ByExternalId_IB ![](../images/2024/06/image_2024_06_13T14_59_59_807Z.webp) **Go to Mapping: ** - Click on the “Open Mapping” button. - Map source fields to the target side fields and it will process the response and make changes into Salesforce org. ![](../images/2024/06/image_2024_06_13T15_01_30_177Z.webp) **Link Inbound Interface with Outbound Interface:** - Open the Outbound Interface and select Response Interface in the Response Interface field of the Outbound Interface. ![](../images/2024/06/image_2024_06_13T15_03_03_309Z.webp) **Callout: (This will execute your outbound interface and it will generate dynamic data for your request using account '001DM00002PVHAEYA5')** `skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'001DM00002PVHAEYA5'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('REST_Org_To_Org_Integration','REST_GET_Account_ByExternalId_OB',ids,'SYNC',c);` **Go to Message Monitoring: (It will display your request and response status)** - Go to the Integration Tab and click on the “**Monitoring**” Tab. - Select your interface Interface Name field and apply different filters in various fields. - Click on the Search button. ![](../images/2024/06/image_2024_06_13T15_07_01_060Z.webp) - **An API Request message** indicates whether your request is processed successfully or not. - **An API Response message** indicates whether your response is processed successfully or not. ![](../images/2024/06/image_2024_06_13T15_08_17_938Z.webp) ![](../images/2024/06/image_2024_06_13T15_09_22_138Z.webp) - The inbound interface will update account information in the target system. ![](../images/2024/06/image_2024_06_13T15_10_27_945Z.webp) ![](../images/2024/06/image_2024_06_13T15_11_12_739Z.webp) #### Operation Type: Delete The "Delete" operation type in the **SKYVVA** integration application allows users to remove records from Salesforce efficiently. This operation is essential for maintaining data accuracy and cleanliness within the system. By specifying the records to be deleted, users can streamline data management processes and prevent the accumulation of outdated or incorrect information. The **SKYVVA** integration application ensures that the deletion process is executed securely and effectively, minimizing the risk of data loss or errors. This feature supports various integration business scenarios, enhancing overall system performance and reliability by keeping the Salesforce database up-to-date and relevant. **Create Metadata & Repository and REST Template for your service:** - **Metadata: **REST_Org_To_Org_Metadata - **Repository:** REST_Org_To_Org_Repository **(You can able to create multiple rest service templates in a single repository)** **Message Type: **REST_Delete_Account_ByExternalId_Service ![](../images/2024/06/image_2024_06_13T15_14_10_510Z.webp) - **Integration Name:** REST_Org_To_Org_Integration ![](../images/2024/06/image_2024_06_13T15_15_23_582Z.webp) - **Go to the Interfaces tab of your integration and click on the ‘New Interface’ button.** **Here, you need to provide the following details:** **Interface Name: **REST_Delete_Account_ByExternalId_OB - **Source object: ex. Account** - **MetaData Provider: **REST_Org_To_Org_Metadata - **Repository:** REST_Org_To_Org_Repository - **Source/Target Message Type: **REST_Delete_Account_ByExternalId_Service - **Direction: **Outbound - **Status:** Deployed **Outbound Interface: **REST_Delete_Account_ByExternalId_OB ![](../images/2024/06/image_2024_06_13T15_16_41_446Z.webp) **Go to Mapping: ** - Click on the “Open Mapping” button. - Map source fields to the target side fields will generate a dynamic header, dynamic path, query, and request body for your request. ![](../images/2024/06/image_2024_06_13T15_18_02_380Z.webp) **Go to the Adapter Tab:** - Click on the new button and select type as a REST and Direction as an outbound provide a meaningful name to your adapter - Provide configuration details in various properties based on authentication type. Ex: Auth2.0 and Basic. **Outbound Adapter: REST_Delete_Account_ByExternalId_OB** ![](../images/2024/06/image_2024_06_13T15_19_49_810Z.webp) - Link REST_Delete_Account_ByExternalId_OB Outbound adapter with Outbound Interface: - Edit the interface, find the field Outbound Adapter, search REST_Delete_Account_ByExternalId_OB adapter, and select an adapter. ![](../images/2024/06/image_2024_06_13T15_21_02_027Z.webp) Now that the Request Part is completed, we can send requests from the source to the target system. - **Callout: (This will execute your outbound interface and it will generate dynamic data for your request using account '001DM00002PVHAEYA5')** `skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'001DM00002PVHAEYA5'}; List result = skyvvasolutions.Iservices.invokeCalloutV3('REST_Org_To_Org_Integration','REST_Delete_Account_ByExternalId_OB',ids,'SYNC',c);` **Go to Message Monitoring: (It will display your request and response status)** - Go to the Integration Tab and click on the “**Monitoring**” Tab. - Select your interface Interface Name field and apply different filters in various fields. - Click on the Search button. ![](../images/2024/06/image_2024_06_13T15_24_26_368Z.webp) - **An API Request message** indicates whether your request is processed successfully or not. - **An API Response message** indicates whether your response is processed successfully or not. ![](../images/2024/06/image_2024_06_13T15_25_43_880Z.webp) ![](../images/2024/06/image_2024_06_13T15_26_31_241Z.webp) #### Summary Now user understands how to transfer data between Salesforce org using the **SKYVVA** Integration application, and utilizes the REST adapter with the operation type: **(Insert or Update), Get, Delete**. Configure the source and target connections, select the appropriate operation, and map the data fields to facilitate seamless data migration and synchronization. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 2.1 How to Connection Agent to Salesforce Using OAuth2 Client-Credential Authentication Type? Slug: 2-1-how-to-connection-agent-to-salesforce-using-oauth2-client-credential-authentication-type URL: https://help.skyvva.com/#article/2-1-how-to-connection-agent-to-salesforce-using-oauth2-client-credential-authentication-type ================================================================================ # 2.1 How to Connection Agent to Salesforce Using OAuth2 Client-Credential Authentication Type? #### Introduction - Ensuring secure and reliable authentication mechanisms is paramount when establishing connections between systems. - Within the **SKYVVA** integration application's agent control board, administrators can choose between different authentication types, notably the "**Authentication Type**" picklist, which includes "***OAuth2 Client-Credential***" methods. - Conversely, the "***OAuth2 Client-Credential***" authentication method offers a more robust and secure approach. - It leverages the OAuth2 protocol, allowing agents to obtain access tokens from Salesforce by presenting client credentials. - This method is particularly advantageous in scenarios where a higher level of security and control over access is required, as it minimizes the exposure of sensitive information and facilitates seamless integration with Salesforce APIs. ![](../images/2024/04/image_2024_04_05T12_49_45_476Z.webp) When setting up a ping connection agent to Salesforce using the **SKYVVA** integration application via the Agent Control Board, administrators have the flexibility to choose between two authentication types: Basic and OAuth2 Client-Credential. Here's an explanation of each: #### Pre-required **Set Up OAuth2 Credentials**: - **Authentication Type**: OAuth2 Credential - **Consumer Key**: Obtained from the connected app. - **Consumer Secret**: Obtained from the connected app. - **Server Environment**: Production/Sandbox #### OAuth2 Client-Credential Authentication - OAuth2 is an industry-standard protocol for authorization, providing a more secure and flexible way to authenticate and authorize access to resources. - With the Client-Credential grant type, the integration application obtains an access token from Salesforce using a **Consumer Key** and **Consumer secret**, which are securely stored and managed. - OAuth2 authentication is recommended for enhanced security, as it does not require the transmission of user credentials with each request. Instead, it relies on access tokens that have a limited lifespan and can be easily revoked if compromised. - This method is particularly suitable for scenarios where higher security standards are necessary or when integrating with multiple Salesforce instances or other OAuth2-compliant systems. ![](../images/2024/04/image_2024_04_05T12_56_01_625Z.webp) - **Save Connection**: Connection Saved successfully. - **Ping Salesforce Connection**: Salesforce Login successful. By offering the **OAuth2 Client-Credential authentication** type, the **SKYVVA** integration application caters to a wide range of integration requirements, allowing administrators to choose the authentication method that best aligns with their security policies and integration needs. #### Summary Now the user learns how to configure a ping connection agent to Salesforce via the **SKYVVA** integration application's agent control board and chooses OAuth2 Client-Credential authentication type. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 3. How to Connection Agent to Salesforce Using OAuth2 Client-Credential Authentication Type with API User ? Slug: 3-how-to-connection-agent-to-salesforce-using-oauth2-client-credential-authentication-type-with-api-user URL: https://help.skyvva.com/#article/3-how-to-connection-agent-to-salesforce-using-oauth2-client-credential-authentication-type-with-api-user ================================================================================ # 3. How to Connection Agent to Salesforce Using OAuth2 Client-Credential Authentication Type with API User ? #### Introduction Connecting an agent to Salesforce using OAuth2 Client-Credential Authentication with an API user through the **SKYVVA** Integration application involves several essential steps. - First, OAuth2 Client-Credential Authentication, a widely used method, provides a secure and efficient way to authenticate applications. This process begins with setting up the necessary credentials in Salesforce, including creating a connected app that specifies the API user's client ID and client secret. - Next, these credentials are configured within the **SKYVVA** Integration application to enable secure communication between the agent and Salesforce. The application leverages the OAuth2 protocol to obtain an access token, which is then used for authenticated API requests. This ensures the agent can interact with Salesforce data securely, adhering to predefined permissions and scopes. - Additionally, the **SKYVVA** Integration application simplifies the connection setup by providing a user-friendly interface for managing these credentials and configuring the authentication process. Users can easily input the required information, test the connection, and ensure that the integration is functioning correctly. By utilizing OAuth2 Client-Credential Authentication, the **SKYVVA** Integration application ensures robust security while facilitating seamless data exchange between the agent and Salesforce. This method is particularly advantageous for scenarios where machine-to-machine communication is required, offering a scalable and secure solution for integrating various applications with Salesforce. #### Pre-required - **Salesforce Environment Setup:** **Create a Salesforce Connected App:** Navigate to **Setup** in Salesforce. - Search for **App Manager** and click on **New Connected App**. - Fill in the necessary details such as **Connected App Name**, **API Name**, and **Contact Email**. - Under **API (Enable OAuth Settings)**, select **Enable OAuth Settings**. - Specify a **Callback URL** (though not required for Client-Credential Flow, a placeholder URL can be used). - Select **OAuth Scopes** that define the data access permissions for the API user. - **Generate Client ID and Client Secret:** Once the connected app is created, Salesforce will generate a **Client ID** and **Client Secret**. - Note these credentials as they will be required for configuring the Skyvva Integration application. - **Skyvva Integration Application Configuration:** **Login to Skyvva Integration Application:** Ensure you have access to the Skyvva Integration application. - **Configure OAuth2 Settings:** Navigate to the OAuth2 settings within the Skyvva application. - Input the **Client ID** and **Client Secret** obtained from Salesforce. - Specify the **Token URL** provided by Salesforce for obtaining access tokens. - **API User Setup in Salesforce:** **Create an API User:** Ensure there is an API user in Salesforce with the necessary permissions to access the required data. - Assign the appropriate profiles and permission sets to the API user to control data access and operations. - **Grant API Access:** Ensure that the connected app permissions and security settings in Salesforce allow access to the API user By following these pre-required steps, you will establish a secure and functional connection between the agent and Salesforce using OAuth2 Client-Credential Authentication within the Skyvva Integration application. #### How to use agent connection with API User? - Create API User ![](../images/2024/06/image_2024_06_26T06_16_33_127Z.webp) - Create a connection app on Salesforce - Navigate to the search box and type “app…” to find the App Manager menu then click New Connected App to create a new connection on Salesforce ![](../images/2024/06/image_2024_06_26T06_18_16_724Z.webp) - Fill required information ![](../images/2024/06/image_2024_06_26T06_19_09_082Z.webp) ![](../images/2024/06/image_2024_06_26T06_19_45_560Z.webp) - After that click button Save ![](../images/2024/06/image_2024_06_26T06_20_38_004Z.webp) - Click Continue ![](../images/2024/06/image_2024_06_26T06_21_32_398Z.webp) - Here is the client-id (Consumer Key) and Client-Secret (Consumer Secret). But we cannot use those keys immediately as Salesforce has a display of a warning in the red line above. ![](../images/2024/06/image_2024_06_26T06_22_32_866Z.webp) - we have a tick on the Enable Client Credentials Flow ![](../images/2024/06/image_2024_06_26T06_23_25_096Z.webp) - Go to Manage Connected App and then edit Connection app ![](../images/2024/06/image_2024_06_26T06_24_26_844Z.webp) - Select api user to enable access token in the section Client Credentials Flow ![](../images/2024/06/image_2024_06_26T06_25_26_903Z.webp) - Create Remote Site - We need to create a Remote Site to allow Salesforce access to your external system. Put the host URL and Agent port number. - Example: ***http://18.158.217.193:9055*** ![](../images/2024/06/image_2024_06_26T06_27_17_234Z.webp) - Create a new connection name - Provide the credential to Connection Destination Destination -> New - Name-> any name - Description -> optional - Type -> any adapter type, for example, Agent Database. If we work with a Database, so type is “**Agent Database**”. We need to create a connection type depending on the working target ![](../images/2024/06/image_2024_06_26T06_28_51_557Z.webp) Then click on the Continue button - Second, provide the credential of Agent for ping connection from Salesforce to Agent Host URL -> Server address that installs agent - Port Forward -> 9055(default) - Username -> skyvva (default) - Password -> skyvva@12! (default) ![](../images/2024/06/image_2024_06_26T06_29_55_107Z.webp) Then click on the Ping Agent Connection button - Third, provide the credential of Salesforce for ping connection from Agent to Salesforce OAuth 2 Grant Type: client_credentials - Server Environment: Sandbox/Production - Consumer Key and Consumer Secret users get from the connection app from the Salesforce side ![](../images/2024/06/image_2024_06_26T06_30_55_560Z.webp) Then click on the Ping Salesforce Connection button, after we ping successfully we can save the connection name. - Allow Api users to access the skyvva class - Go to setup -> Profile -> click “Salesforce API Only System Integration” profile ![](../images/2024/06/image_2024_06_26T06_32_05_676Z.webp) - Click on Enabled Apex Class Access ![](../images/2024/06/image_2024_06_26T06_33_00_301Z.webp) - Click edit button ![](../images/2024/06/image_2024_06_26T06_33_52_725Z.webp) - Add Apex Class Access ![](../images/2024/06/image_2024_06_26T06_34_49_716Z.webp) Then click the Save button - Create a new permission set license “Salesforce API Integration”. - Go to the permission set -> click the New button ![](../images/2024/06/image_2024_06_26T06_35_51_370Z.webp) - Assign object permission: Read, Create, Delete, … - **Example**: assign permission to sObject Account, click Object Setting -> Accounts ![](../images/2024/06/image_2024_06_26T06_37_36_834Z.webp) - Click Edit button ![](../images/2024/06/image_2024_06_26T06_38_28_707Z.webp) Then click the Save button - Assign this permission set to the API User - Click the Manage Assignments button ![](../images/2024/06/image_2024_06_26T06_39_27_872Z.webp) - Click Add Assignment ![](../images/2024/06/image_2024_06_26T06_40_22_388Z.webp) - Click tick “user api” then click the Next button ![](../images/2024/06/image_2024_06_26T06_41_24_802Z.webp) - Click assign button ![](../images/2024/06/image_2024_06_26T06_42_20_017Z.webp) - Now we successfully assign permission to api user ![](../images/2024/06/image_2024_06_26T06_43_17_252Z.webp) - Push data from Agent via API User - Go to agent control board -> click on Interface tab -> Tick Interface -> click Manual Process button ![](../images/2024/06/image_2024_06_26T06_44_17_052Z.webp) Here is the result on Message Monitor ![](../images/2024/06/image_2024_06_26T06_45_21_033Z.webp) #### Summary Now user learned by following these steps, the user can successfully connect an agent to Salesforce using OAuth2 Client-Credential Authentication with an API user. This involves creating a connected app to obtain a client ID and client secret, configuring OAuth2 credentials, and using this token for authenticated API requests. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 1. How to Connect a New Agent to the Agent Control Board Using OAuth2 Username-Password Authentication? Slug: 1-how-to-connect-a-new-agent-to-the-agent-control-board-using-oauth2-username-password-authentication URL: https://help.skyvva.com/#article/1-how-to-connect-a-new-agent-to-the-agent-control-board-using-oauth2-username-password-authentication ================================================================================ # 1. How to Connect a New Agent to the Agent Control Board Using OAuth2 Username-Password Authentication? #### Introduction: In this tutorial, you will learn the steps to create a Connection Destination using OAuth2 Username-Password Authentication. Once you have created the Connection Destination, you can then use it to work with agents on the Salesforce side. For example, you can use this Connection Destination to import and export data directly through the Salesforce UI. #### Pre-require: - First, you need to create an integration or use an existing one. - Go to the** Integration Detail **page - Please check the Custom Links section. There, you will find the Agent Control Board link. Go ahead and click on it. ![](../images/2024/07/Screenshot-2024-07-09-at-1.54.16-pm.webp) - **Connection Destination **Step: you have to create a new** Connection Destination** Input any name of your Connection Destination - Select a **Type **based on your purpose. For example, if you are working with a file, you should choose the** Agent File** Type. - Click **Continue** Button ![](../images/2024/07/Picture-2.webp) - **Salesforce -> Agent **Step: Enter your Agent** Host URL** - Enter your Agent** Port Forward ** - Enter your Agent's** Username** - Enter your Agent** Password** - Click the **Ping Agent Connection** Button ![](../images/2024/07/Picture-3.webp) - **Agent -> Salesforce **Step: Select **'OAuth2 Username-Password**' as the **Authentication Type**. In this example, we will demonstrate the use of **OAuth2 Username-Password authentication**. - Enter Salesforce** Username ** - Enter Salesforce** Password** - If your Salesforce account requires a **Security Token**, please enter it. If not, you can proceed without entering a Security Token - Select your **Server Environment** based on your organization. For this example, we will use the Sandbox environment. - Enter the **Consumer** **Key** for your organization. - Enter the **Consumer Secret** for your organization. **Note:** If you don't have the **consumer key** and **consumer secret** yet, please refer to the following document to obtain them: [#article/how-to-create-salesforce-connected-app-to-get-client-id-and-client-secret](#article/how-to-create-salesforce-connected-app-to-get-client-id-and-client-secret) - Click the **Ping Salesforce Connection** Button ![](../images/2024/07/Picture-4.webp) - After a successful ping, please save the Connection Destination ![](../images/2024/07/Picture-5.webp) - After saving, please check the cache to verify if it has been synchronized with the Postgres Database. Click on the **Agent Cache** Tab - Select AGENT_SETTING->Select **name**-> Select “**=**”-> Enter your **Connection Destination** Name - Click the **Submit** button ![](../images/2024/07/Picture-6.webp) #### Summary You have now successfully created a Connection Destination using OAuth2 Username-Password Authentication. This will allow you to use the New Agent Control Board on the Salesforce side. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: Introduction Slug: new-agent-introduction URL: https://help.skyvva.com/#article/new-agent-introduction ================================================================================ # Introduction Our New Agent design uses Apache Camel and caching in the PostgreSQL database. This allows the agent to process requests faster than the old agent, as it leverages a caching technique. The new agent also incorporates advanced machine learning algorithms to enhance its performance and provide more accurate results. ![](../images/2024/07/Screenshot-2024-07-13-at-5.56.07-pm.webp) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to Create Salesforce Connected App to Get Client Id and Client Secret? Slug: how-to-create-salesforce-connected-app-to-get-client-id-and-client-secret URL: https://help.skyvva.com/#article/how-to-create-salesforce-connected-app-to-get-client-id-and-client-secret ================================================================================ # How to Create Salesforce Connected App to Get Client Id and Client Secret? #### Introduction: This section will demonstrate how to create a Salesforce connection app. This will allow us to obtain the necessary client ID and client secret for integrating the Connect Agent with Salesforce. Salesforce connection apps provide a secure and controlled mechanism to grant access to external agents, enabling seamless integration between your application and Salesforce. By creating a connection app, you can ensure that sensitive data and functionalities are properly managed and governed, by Salesforce's security and compliance requirements. #### Steps to Create a Salesforce Connection App - Log in to your Salesforce org and navigate to Setup > Apps > App Manager. ![](../images/2024/07/Screenshot-2024-07-13-at-4.51.24-pm-scaled.webp) - Click "New Connected App" to create a new connected app. ![](../images/2024/07/Screenshot-2024-07-13-at-4.52.37-pm-scaled.webp) - Fill out the basic information, such as the app name, contact email ![](../images/2024/07/Screenshot-2024-07-13-at-5.02.48-pm-scaled.webp) - In the "API (Enable OAuth Settings)" section, enable OAuth Settings and configure the callback URL, scope, and other relevant settings. ![](../images/2024/07/Screenshot-2024-07-13-at-5.06.28-pm-scaled.webp) - After clicking the "Add" button, the selected OAuth Scopes will be moved to the "Selected OAuth Scopes" section ![](../images/2024/07/Screenshot-2024-07-13-at-5.18.11-pm-scaled.webp) - Then click Save button ![](../images/2024/07/Screenshot-2024-07-13-at-5.12.22-pm-scaled.webp) - Click **Continue** Button ![](../images/2024/07/Screenshot-2024-07-13-at-5.16.54-pm-scaled.webp) - Click **Manage Consumer Details** button ![](../images/2024/07/Screenshot-2024-07-13-at-5.19.12-pm-scaled.webp) - Enter the **verification code** from the email's user > click **Verify** Buttb ![](../images/2024/07/Screenshot-2024-07-13-at-5.30.08-pm-scaled.webp) - After Verify to access a connected app, locate the "Consumer Key" (client ID) and "Consumer Secret" (client secret) values. - These credentials will be used to authenticate your application with Salesforce during the integration process. ![](../images/2024/07/Screenshot-2024-07-13-at-5.37.34-pm-scaled.webp) #### Implement the Authentication Flow: - Use the client ID and client secret to authenticate your application and obtain an access token from Salesforce. - Implement the OAuth 2.0 authentication flow, such as the Web Server flow or the Username-Password flow, depending on your integration requirements. **For the Username-Password flow:** In the OAuth and OpenID Connect Settings, locate the "Allow OAuth Username-Password Flows" option and ensure it is switched on. ![](../images/2024/07/Screenshot-2024-07-13-at-5.52.38-pm-scaled.webp) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to Import CSV with Header using Agent File Adapter in the protocol: SFTP? Slug: how-to-import-csv-with-header-using-agent-file-adapter-in-the-protocol-sftp URL: https://help.skyvva.com/#article/how-to-import-csv-with-header-using-agent-file-adapter-in-the-protocol-sftp ================================================================================ # How to Import CSV with Header using Agent File Adapter in the protocol: SFTP? #### Introduction: This tutorial explains how to import CSV with header files using the Agent File in the SFTP protocol of the inbound Adapter of our new agent application. The Agent File Adapter provides a streamlined process for seamlessly integrating CSV data into our platform. This functionality is available using the None Interface API Version. #### Pre-require: - **Agent File** **Type** of **Connection Destination**. If you do not know how to create Agent File type of Connection Destination, please follow this document below: **OAuth2 Username-Password Authentication:** [#article/1-how-to-connect-a-new-agent-to-the-agent-control-board-using-oauth2-username-password-authentication](#article/1-how-to-connect-a-new-agent-to-the-agent-control-board-using-oauth2-username-password-authentication) - **OAuth2 Client-Credential Authentication: **(link not available)) - Create an **Inbound Agent File** **Adapter** for CSV format with a header **Fill in all required field** Enter** Name**: Any Name - Select** Type**: Agent File - Select** Status**: Active (in version 2.51.2 up) Inactive (2.51.1 down) - **Select Direction**: Inbound - Select** Protocol**: SFTP - **Host**: Public IP Address - Select** Authentication: **Username_Password - Enter** Host**: SFTP Host - Enter** Username**: SFTP Username - Enter** Password**: SFTP Password - Select** Port**: SFTP Server Port - Select** Content Format**: SKYVVA Message - Select** File Type**: CSV - Enter** Folder**: (Your SFTP Folder Name) ex: /DahuySFTP/Account/CSV - Enter** File Name**: (Your File Name) - **What to do with the file after Processing?**: Delete File - **Connection Destination**: Your destination name - Select** Separator: **“,” - Select** Source encoding:** UTF-8 - Select** What to do with the file after Processing?:** Delete File - Select the **Connection Destination**: Choose the destination name that you created earlier. ![](../images/2024/07/Picture-1.webp) - Create Inbound Interface Give **Interface Name** - **Status**: Deployed - **Operation Type**: Upsert. Note you can use any operation based on your purpose - **Interface API Version**: None - **Interface Direction**: Inbound ![](../images/2024/07/Screenshot-2024-07-14-at-6.30.12-pm-scaled.webp) - Link the interface with the recently created one above ![](../images/2024/07/Screenshot-2024-07-15-at-4.54.14-pm.webp) - Create or Import to create IStructure into Interface Here is the format for the CSV data file ![](../images/2024/07/Screenshot-2024-07-15-at-5.09.12-pm.webp) - To create an IStructure, import this CSV file Go to the Interface Details Page - Scroll down to the Source Definition section - Click the **Choose File** button - Select the **file** to upload - Click **Open** Button ![](../images/2024/07/Screenshot-2024-07-15-at-5.16.19-pm.webp) - Click **Save** Button ![](../images/2024/07/Screenshot-2024-07-15-at-5.19.25-pm.webp) - Do Mapping ![](../images/2024/07/Screenshot-2024-07-15-at-5.45.35-pm.webp) The file is located at the following path on the SFTP server: ![](../images/2024/07/Screenshot-2024-07-15-at-5.55.42-pm.webp) - **Manual Processing** on the **Agent Control Board**: **Note:** Before performing the Manual Process, ensure your cache is synchronized into the Postgres Database. - Navigate to the **Interface Tab** on the **Agent Control Board** - Select the **Interface** you want to process - Click the **Manual Process** Button - Select the "**Read files from local or FTP/FTPs and push to salesforce**" option - Click **Push** Button ![](../images/2024/07/Screenshot-2024-07-15-at-5.51.05-pm.webp) - After clicking the Push button, you will see an alert on the screen, as shown in the screenshot below. This alert indicates that you should check the message on the message monitor. ![](../images/2024/07/SucessfulDoManualProcessing.webp) As a result, you now have the completed message, and all accounts have been created. The CSV file will be deleted on the SFTP server causing selecting "Delete File" on the " **What to do with the file after Processing?**" option ![](../images/2024/07/Screenshot-2024-07-15-at-5.54.35-pm.webp) #### Summarize This document covers the process of importing a CSV file using the Agent File Adapter and the SFTP (Secure File Transfer Protocol). After completing the steps outlined, you will be able to successfully import a CSV file that contains a header row. The Agent File Adapter provides the functionality to connect to an SFTP server and bring in the CSV data into Salesforce. This is done using the None Interface API Version. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to Import CSV with Header using V3 Agent File Adapter in the protocol: SFTP? Slug: how-to-import-csv-with-header-using-v3-agent-file-adapter-in-the-protocol-sftp URL: https://help.skyvva.com/#article/how-to-import-csv-with-header-using-v3-agent-file-adapter-in-the-protocol-sftp ================================================================================ # How to Import CSV with Header using V3 Agent File Adapter in the protocol: SFTP? #### Introduction: This tutorial explains how to import CSV with header files using the Agent File in the SFTP protocol of the inbound Adapter of our new agent application. The Agent File Adapter provides a streamlined process for seamlessly integrating CSV data into our platform. This functionality is available using the V3 Interface API Version. #### Pre-require: - **Agent File** **Type** of **Connection Destination**. If you do not know how to create Agent File type of Connection Destination, please follow this document below: **OAuth2 Username-Password Authentication:** [#article/1-how-to-connect-a-new-agent-to-the-agent-control-board-using-oauth2-username-password-authentication](#article/1-how-to-connect-a-new-agent-to-the-agent-control-board-using-oauth2-username-password-authentication) - **OAuth2 Client-Credential Authentication: **(link not available)) - Create an **Inbound Agent File** **Adapter** for CSV format with a header **Fill in all required field** Enter** Name**: Any Name - Select** Type**: Agent File - Select** Status**: Active (in version 2.51.2 up) Inactive (2.51.1 down) - **Select Direction**: Inbound - Select** Protocol**: SFTP - **Host**: Public IP Address - Select** Authentication: **Username_Password - Enter** Host**: SFTP Host - Enter** Username**: SFTP Username - Enter** Password**: SFTP Password - Select** Port**: SFTP Server Port - Select** Content Format**: SKYVVA Message - Select** File Type**: CSV - Enter** Folder**: (Your SFTP Folder Name) ex: /DahuySFTP/Account/CSV - Enter** File Name**: (Your File Name) - **What to do with the file after Processing?**: Delete File - **Connection Destination**: Your destination name - Select** Separator: **“,” - Select** Source encoding:** UTF-8 - Select** What to do with the file after Processing?:** Delete File - Select the **Connection Destination**: Choose the destination name that you created earlier. ![](../images/2024/07/SFTPMinea1.webp) - Create Meta Data Provider, IStructure Repository, and Message Type. Here is the sample for the CSV data file ![](../images/2024/07/Screenshot-2024-07-15-at-5.09.12-pm.webp) - Create Meta Data Provider and IStructure Repository - Import CSV File to Create Message Type and Message Type field entry Go to your IStructure Repository - Click on the **Import Metadata** Button ![](../images/2024/07/Screenshot-2024-07-16-at-10.48.39-am.webp) - **Chose a file Type**: CSV - Choose **CSV Separato**r: ',' - Click **Next** Button ![](../images/2024/07/Screenshot-2024-07-16-at-10.49.00-am.webp) - Click the **Upload Files** Button ![](../images/2024/07/Screenshot-2024-07-16-at-10.50.16-am.webp) - Select** Your File** to Upload - Click **Open** Button ![](../images/2024/07/Screenshot-2024-07-16-at-10.50.37-am.webp) - **Root MessageType Name**: Any Name - Select **Data Structure**: Flat cause we do only a level ![](../images/2024/07/Screenshot-2024-07-16-at-10.51.04-am.webp) You will get message type and message type field entry based on your header CSV File ![](../images/2024/07/Screenshot-2024-07-16-at-10.52.24-am-copy.webp) - Create Inbound Interface Give **Interface Name** - **Status**: Deployed - **Operation Type**: Upsert. Note you can use any operation based on your purpose - **Interface API Version**: V3 - **Interface Direction**: Inbound - Select **Source Name: **Account - Select **MetaData Provider**: select your MetaData Provider that has been created above - Select **Repository**: select your Repository that has been created above - Select **Source/Target Message Type:** choose your Message Type that has been created above ![](../images/2024/07/Screenshot-2024-07-16-at-11.41.34-am.webp) - Do Mapping ![](../images/2024/07/Screenshot-2024-07-16-at-2.01.48-pm.webp) The file is located at the following path on the SFTP server: ![](../images/2024/07/Screenshot-2024-07-15-at-5.55.42-pm.webp) - **Manual Processing** on the **Agent Control Board**: **Note:** Before performing the Manual Process, ensure your cache is synchronized into the Postgres Database. ![](../images/2024/07/Screenshot-2024-07-16-at-2.39.01-pm.webp) - Navigate to the **Interface Tab** on the **Agent Control Board** - Select the **Interface** you want to process - Click the **Manual Process** Button - Select the "**Read files from local or FTP/FTPs and push to salesforce**" option - Click **Push** Button ![](../images/2024/07/Screenshot-2024-07-16-at-2.42.09-pm.webp) - After clicking the Push button, you will see an alert on the screen, as shown in the screenshot below. This alert indicates that you should check the message on the message monitor. ![](../images/2024/07/Screenshot-2024-07-16-at-3.37.07-pm.webp) As a result, you now have the completed message, and all accounts have been created. The CSV file will be deleted on the SFTP server by selecting "Delete File" on the " **What to do with the file after Processing?**" option ![](../images/2024/07/Screenshot-2024-07-16-at-3.49.48-pm.webp) #### Summarize This document covers the process of importing a CSV file using the Agent File Adapter and the SFTP (Secure File Transfer Protocol). After completing the steps outlined, you will be able to successfully import a CSV file that contains a header row. The Agent File Adapter provides the functionality to connect to an SFTP server and bring in the CSV data into Salesforce. This is done using the V3 Interface API Version. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use Skyvva Event ? Title: How to use skyvvasolutions__Processing__e for raise the Publish Event with postman? Slug: how-to-use-skyvvasolutions__processing__e-for-raise-the-publish-event-with-postman URL: https://help.skyvva.com/#article/how-to-use-skyvvasolutions__processing__e-for-raise-the-publish-event-with-postman ================================================================================ # How to use skyvvasolutions__Processing__e for raise the Publish Event with postman? #### Introduction This tutorial explains how the 'skyvvasolutions__Processing__e' object assists customers in raising public events to execute inbound and outbound interfaces. This feature eliminates the need for customers to create custom events or event triggers. Instead, they can raise the 'SKYVVA Event' to process inbound and outbound data. The 'SKYVVA Event' allows customers to trigger data events for executing inbound interfaces and notify events for executing outbound interfaces. #### Pre-requisite:- **Allow License for user Automated Process: ** - Go to **Setup** - Find **Custom Settings** - **New** ![](../images/2024/07/image_2024_07_18T15_54_51_134Z.webp) - **Input license value** - **Save** ![](../images/2024/07/image_2024_07_18T15_55_01_393Z.webp) #### Inbound Interface: The 'SKYVVA Event' allows customers to trigger the execution of inbound interfaces. By sending a data event using the 'skyvvasolutions__Processing__e' object, the system processes the inbound data and performs the necessary actions based on the interface configuration. **Required step:** - **Create an Integration -> Create an Interface Inbound** - **Do Mapping** ![](../images/2024/07/image_2024_07_18T15_38_22_383Z.webp) - **Using Postman to raise the Publish Data Event to execute the inbound interface with the rest api** `**URL: **{{instanceUrl}}/services/data/v56.0/sobjects/skyvvasolutions__Processing__e **Method: **POST **Body:** { "skyvvasolutions__Integration__c": "M_Event_Integration", //Integration Name "skyvvasolutions__Interface__c": "Event_In", //Interface Name "skyvvasolutions__Direction__c": "InBound", // Direction "skyvvasolutions__Type__c": "Data Event", //Event Type "skyvvasolutions__RequestFormat__c": "xml", // Payload format: xml, json, csv "skyvvasolutions__Mode__c": "Synchronous", // Mode Asynchronous "skyvvasolutions__CSVSeparator__c": null, // for csv payload "skyvvasolutions__TransactionId__c": null, "skyvvasolutions__TransferId__c": null, "skyvvasolutions__cncf_data__c": {{XmlDataString}} // Data in xml/json/csv as string for fields value }` - **Response** ![](../images/2024/07/image_2024_07_18T15_41_51_630Z.webp) - **Message Monitoring ** ![](../images/2024/07/image_2024_07_18T15_43_01_725Z.webp) - **The records will be updated by the user Automated Process** ![](../images/2024/07/image_2024_07_18T15_44_06_044Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]When clicking send from the postman, it will send event data to execute the inbound interface for processing inbound by user Automated Process.[/su_box] #### Outbound Interface: In addition to executing inbound interfaces, the 'SKYVVA Event' can also notify events for executing outbound interfaces. Customers can leverage the 'skyvvasolutions__Processing__e' object to trigger the necessary actions for outbound interface execution. **Required step:** - **Create an Integration -> Create an Interface Outbound ** - **Do Mapping**![](../images/2024/07/18.webp) - **Create an Adapter e.g. Dropbox** ![](../images/2024/07/image_2024_07_18T15_47_02_537Z.webp) ![](../images/2024/07/image_2024_07_18T15_47_43_678Z.webp) - **Link adapter with Interface Outbound** - **Using Postman to raise the Publish Notification Event to execute the outbound interface with the rest api** `**URL: **{{instanceUrl}}/services/data/v56.0/sobjects/skyvvasolutions__Processing__e **Method: **POST **Body:** { "skyvvasolutions__Integration__c": "M_Event_Integration", // Integration Name "skyvvasolutions__Interface__c": "Event_Out", // Interface Name "skyvvasolutions__Direction__c": "Outbound", // Direction "skyvvasolutions__Type__c": "Notification Event", // Event type notification because event just contains the Ids "skyvvasolutions__cncf_data__c": "[\"0019K00000JueO4QAJ\", \"0019K00000JueO5QAJ\"]", // Record ids "skyvvasolutions__Mode__c": "AUTO", "skyvvasolutions__Extension__c": null // any parameter }` - **Response** ![](../images/2024/07/image_2024_07_18T15_50_21_095Z.webp) - **Message Monitoring** ![](../images/2024/07/image_2024_07_18T15_51_07_795Z.webp) - **Payload in Dropbox** ![](../images/2024/07/image_2024_07_18T15_51_50_930Z.webp) - Formatted XML ![](../images/2024/07/image_2024_07_18T15_52_27_322Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]When clicking send on the postman, it will send a notification event to execute the outbound interface for callout records by user Automated Process. [/su_box] #### Summary This tutorial details how the 'skyvvasolutions__Processing__e' object helps customers raise public events for executing inbound and outbound interfaces, eliminating the need for custom events or triggers. By raising the 'SKYVVA Event,' customers can efficiently process inbound data and notify outbound data events using the Skyvva Integration application. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to Import CSV Files Without Header Row Using the SFTP Protocol of the Agent File Adapter? Slug: how-to-import-csv-files-without-header-row-using-the-sftp-protocol-of-the-agent-file-adapter URL: https://help.skyvva.com/#article/how-to-import-csv-files-without-header-row-using-the-sftp-protocol-of-the-agent-file-adapter ================================================================================ # How to Import CSV Files Without Header Row Using the SFTP Protocol of the Agent File Adapter? #### Introduction: This tutorial explains how to import CSV without header files using the Agent File in the SFTP protocol of the inbound Adapter of our new agent application. The Agent File Adapter provides a streamlined process for seamlessly integrating CSV data into our platform. This functionality is available in the version of the V3 Interface API. #### Pre-require: - **Agent File** **Type** of **Connection Destination**. If you do not know how to create Agent File type of Connection Destination, please follow this document below: **OAuth2 Username-Password Authentication:** [#article/1-how-to-connect-a-new-agent-to-the-agent-control-board-using-oauth2-username-password-authentication](#article/1-how-to-connect-a-new-agent-to-the-agent-control-board-using-oauth2-username-password-authentication) - **OAuth2 Client-Credential Authentication: **(link not available)) - Create an **Inbound Agent File** **Adapter** for CSV format without a header **Fill in all required field** Enter** Name**: Any Name - Select** Type**: Agent File - Select** Direction**: Inbound - Select** Status**: Active (in version 2.51.2 up) Inactive (2.51.1 down) - Select** Protocol**: SFTP - Select** Authentication: **Username_Password - Enter** Host**: SFTP Host - Enter** Username**: SFTP Username - Enter** Password**: SFTP Password - Enter** Port**: SFTP Server Port - Select** Content Format**: SKYVVA Message - Select** File Type**: CSV - Enter** Folder**: (Your SFTP Folder Name) ex: /DahuySFTP/Account/CSV - Enter** File Name**: (Your File Name) - Select** Separator: **“,” - Tick Box on** File has no header** - Select** Source encoding:** UTF-8 - Select** What to do with the file after Processing?:** Delete File - Select the **Connection Destination**: Choose the destination name that you created earlier. ![](../images/2024/07/CSVWithoutheader1.webp) ![](../images/2024/07/CSVWithoutheader2.webp) ![](../images/2024/07/CSVWithoutheader3.webp) - Create an **Inbound Interface** Enter any** Name** - Select **Status**: **Deployed ** - Select the **Source Name** that you want to import. - Select **Operation Type** that you want to import - Select **Direction**: Inbound - Select Adapter: Choose the **Adapter** that you created earlier. - Select **Interface API Version: **V3 - Select Your **MetaData** **Provider**, **Repository**, and **Source/Target Message Type. **Note**: **You need to have the message type field entry to do the mapping. The first (A) column value will be stored at the top of the mapping order. ![](../images/2024/07/CSVwithouthheader4.webp) - **Do Mapping:** ![](../images/2024/07/CSVWithoutHeader5.webp) - Here are the sample CSV records to import ![](../images/2024/07/CSVWithoutheader6.webp) => If the AccountNumber source field mapping is the first sequence, the value from Column A will be stored at the top of the mapping order. This will ensure that the Acc0001 source field value is passed to the AccountNumber target field for import into Salesforce. - Check the cache to ensure all cache entries are synchronized before processing. Navigate to the Cache tab and verify that the cache adapter, integration, interface group, interface, and mapping are all present in the cache table. You can use the filter to search the cache. ![](../images/2024/07/CSVWithoutheader7.webp) - Do **Manual Process** Navigate to the Interface tab, select the desired interface, and click the **Manual Process** button. ![](../images/2024/07/CSVWithoutHeader8.webp) - Select the desired **option** and click the **Push** button. ![](../images/2024/07/CSVWithoutHeader9.webp) - Manual processing was successful. ![](../images/2024/07/CSVWithoutHeader10.webp) - The records were successfully created. ![](../images/2024/07/CSVWithoutHeader11.webp) - Message Details ![](../images/2024/07/CSVWithoutHeader12.webp) - Account Record Details ![](../images/2024/07/CSVWithoutHeader13.webp) In summary, after you finish this section, you will learn how to import CSV files without headers using the Agent File Adapter's SFTP protocol of our New Agent. The Agent File Adapter streamlines the integration of CSV data, automating the process and ensuring consistent formatting. The SFTP protocol provides secure, reliable file transfers to meet data governance requirements. This functionality is available in Version 3 of the Interface API, demonstrating our commitment to advanced integration capabilities. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 1. How to Export CSV Files Without Header Row Using the SFTP Protocol of the Agent File Adapter? Slug: 1-how-to-export-csv-files-without-header-row-using-the-sftp-protocol-of-the-agent-file-adapter URL: https://help.skyvva.com/#article/1-how-to-export-csv-files-without-header-row-using-the-sftp-protocol-of-the-agent-file-adapter ================================================================================ # 1. How to Export CSV Files Without Header Row Using the SFTP Protocol of the Agent File Adapter? #### Introduction: This tutorial explains how to export CSV without header files using the Agent File in the SFTP protocol of the Outbound Adapter of our new agent application. The Agent File Adapter provides a streamlined process for seamlessly integrating CSV data into our platform. This functionality is available in the version of the V3 Interface API. #### Pre-require: - **Agent File** **Type** of **Connection Destination**. If you do not know how to create Agent File type of Connection Destination, please follow this document below: **OAuth2 Username-Password Authentication:** [#article/1-how-to-connect-a-new-agent-to-the-agent-control-board-using-oauth2-username-password-authentication](#article/1-how-to-connect-a-new-agent-to-the-agent-control-board-using-oauth2-username-password-authentication) - **OAuth2 Client-Credential Authentication: **(link not available)) - Create an **Inbound Agent File** **Adapter** for CSV format without a header **Fill in all required field** Enter** Name**: Any Name - Select** Type**: Agent File - Select** Direction**: Outbound - Select **Status**: Active - Select** Protocol**: SFTP - Select** Authentication: **Username_Password - Enter** Host**: SFTP Host - Enter** Username**: SFTP Username - Enter** Password**: SFTP Password - Enter** Port**: SFTP Server Port - Select** Content Format**: Text - Select** File Type**: CSV - Enter** Folder**: (Your SFTP Folder Name) ex: /DahuySFTP/Account/CSV - Enter** File Name**: (Your File Name) - Select** Separator: **“,” - Tick Box on** File has no header** - Select** File Handling Mode:** New - Select the **Connection Destination**: Choose the destination name that you created earlier. - Please click **Ping Connection** button - After a successful ping, click the **Save** button. ![](../images/2024/07/Adapter1.webp) ![](../images/2024/07/adapter2.webp) ![](../images/2024/07/adapter3.webp) - Create an **Outbound Interface** Enter any** Name** - Select **Status**: **Deployed ** - Select the **Source Name** that you want to export. - Select **Operation Type**: Query - Select **Direction**: Outbound - Select Adapter: Choose the **Outbound** **Adapter** that you created earlier. - Select **Interface API Version: **V3 - Select Your **MetaData** **Provider**, **Repository**, and **Source/Target Message Type. **Note**: **You need to have the message type field entry to do the mapping. The first (A) column value will be stored at the top of the mapping order. - Click **Save** Button ![](../images/2024/07/createInterface.webp) **Do Mapping:** ![](../images/2024/07/Domapping.webp) - Check the cache to ensure all cache entries are synchronized before processing. Navigate to the Cache tab and verify that the cache adapter, integration, interface group, interface, and mapping are all present in the cache table. You can use the filter to search the cache. ![](../images/2024/07/Cache.webp) - Do **Manual Process** Navigate to the Interface tab, select the desired interface, and then click the **Manual Process** button. ![](../images/2024/07/DommanualProcessing.webp) - Select “**Use The SOQL statement on the interface to select the sObject?**” option and Click **Send** Button ![](../images/2024/07/SelectTheOption.webp) - A record has been sent to a new file. Here is the success message. ![](../images/2024/07/MessageMonitor.webp) - Here is the message detail ![](../images/2024/07/Message-Details.webp) - Here is the sample record sent ![](../images/2024/07/Sample-Records.webp) - Here is the file that was sent to the SFTP Server ![](../images/2024/07/FileZilla.webp) - The record columns are rendered based on your mapping sequence. ![](../images/2024/07/RenderRecordsBasedonThemapping.webp) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use SKYVVA API? Title: 5. How to Use Platform Events to Publish Salesforce Events via Skyvva V4/Integrate? Slug: 5-how-to-use-streaming-api-with-platform-event-using-v4-integrate URL: https://help.skyvva.com/#article/5-how-to-use-streaming-api-with-platform-event-using-v4-integrate ================================================================================ # 5. How to Use Platform Events to Publish Salesforce Events via Skyvva V4/Integrate? #### Introduction - To subscribe to a platform event in Salesforce, the user can use an Apex trigger. This allows users to handle both inbound and outbound events through a generic method that executes the necessary interface. The execution of these interfaces using Apex triggers is a robust Salesforce solution for managing event-driven processes. - However, when using **SKYVVA**, the approach is further enhanced. **SKYVVA** allows users to enrich event data through mapping, which adds a layer of data processing. After mapping the event or message, the user can process the data using the **SKYVVA** comprehensive processing pipeline. This pipeline includes various stages such as workflow, mapping, and processing, providing a structured way to handle incoming messages. - The **SKYVVA** integration application offers a sophisticated method to manage and process platform events. By leveraging its capabilities, you can map the incoming data to the appropriate fields and process it through predefined workflows. This ensures that the data is not only captured but also transformed and utilized effectively according to your business requirements. - While Apex triggers provide a powerful tool for subscribing to and managing platform events in Salesforce, **SKYVVA** enhances this process by enabling enriched data mapping and structured processing, thereby optimizing the overall event handling and integration workflow. #### Prerequisite To effectively create Platform Events, Custom Objects, and Triggers using the **SKYVVA** integration application, several prerequisites and steps must be followed. - Firstly, ensure you have the necessary permissions and licenses in Salesforce. You will need to input the license value specific to your organization's SKYVVA integration app. This is essential for accessing the required features and functionalities. - Next, create the Platform Events. These are used to define the event schema and facilitate communication between Salesforce and external systems. Platform Events are pivotal for real-time data integration and event-driven architecture. - Following this, create the Custom Objects. These objects will hold the data structures specific to your integration needs. Custom Objects allows you to extend the standard Salesforce data model to accommodate your unique business requirements. - Once the Custom Objects are in place, develop the Triggers. Triggers are essential for automating processes and responding to specific events in Salesforce. They will ensure that your integration processes are executed automatically based on defined criteria. - After setting up the Platform Events, Custom Objects, and Triggers, proceed to create the integration itself. This involves defining the Interface using the Skyvva integration application. Specify the Source/Target Name to indicate the origin and destination of the data. - Define the Operation Type, such as create, update, or delete, based on the required data manipulation. Lastly, determine the Interface Type, which could be inbound, outbound, or bidirectional, depending on your integration needs. By following these steps and prerequisites, the user can successfully create a robust integration using the **SKYVVA** integration application. **      Platform Events** **      Integration** - Create Custom - Create an Interface - CreateTriggers - Source/target Name - Custom Settings - Operation Type - Input license value - Interface Type **Steps:** - Go to **Setup** -> quickly find **Platform Events** box -> click **New** ![](../images/2024/07/image_2024_07_25T14_33_23_718Z.webp) - Then **Create Custom** ![](../images/2024/07/image_2024_07_25T14_34_49_202Z.webp) - Create the **Triggers **-> Check** Save **button ![](../images/2024/07/image_2024_07_25T14_35_56_488Z.webp) **Users can copy Trigger** `trigger trgPlatformAccountEvent1 on skyvvasolutions__Platform_Event_Account__e (after insert) { List lst = new List(); for(skyvvasolutions__Platform_Event_Account__e evt: Trigger.New){ Account acc = new Account(); acc.Name = evt.skyvvasolutions__Name__c + 'Event'; acc.AccountNumber = evt.skyvvasolutions__AccountNumber__c + 'Event'; lst.add(acc); } insert lst; }` ![](../images/2024/07/image_2024_07_25T14_38_31_510Z.webp) - Allow License for user **Automated Process** Go to **Setup** -> Find **Custom** **Settings** ![](../images/2024/07/image_2024_07_25T14_39_36_602Z.webp) - New ![](../images/2024/07/image_2024_07_25T14_40_35_595Z.webp) - Input license value - Save ![](../images/2024/07/image_2024_07_25T14_41_55_178Z.webp) #### Platform event Inbound In this scenario, we create an inbound integration/interface for a Salesforce platform event named Platform_Event_Account_e. This platform event is used to facilitate real-time data communication within and between Salesforce applications and external systems using the **SKYVVA** integration application. The integration is designed to operate as a public Salesforce event and follows an event-driven architecture to ensure timely and efficient data processing. - Create an **Integration** -> Create an **Interface -> ** **Source/target Name**: select **Platform Event** Here platform event name is **Platform_Event_Account_e** - **Operation Type**: It should be a **Public Salesforce Event** - **Interface Type**: Event Interface ![](../images/2024/07/image_2024_07_25T14_43_53_209Z.webp) - Do **Mapping** ![](../images/2024/07/image_2024_07_25T14_44_58_151Z.webp) - Push Records from **Postman **Using API **V4/integrate** ![](../images/2024/07/image_2024_07_25T14_45_54_553Z.webp) - The **Message Monitoring** ![](../images/2024/07/image_2024_07_25T14_46_48_847Z.webp) - Record **Account** in Salesforce ![](../images/2024/07/image_2024_07_25T14_47_41_953Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]Update a record in Salesforce using a platform event via the **SKYVVA** integration application. This process guarantees real-time synchronization and precise data updates within Salesforce.[/su_box] #### Summary Now user learned that How To use the streaming API with platform events in the **SKYVVA** integration application V4, configure the integration service, subscribe to platform events, and handle event messages via the streaming API for real-time updates. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 1. How to use Streaming API with PushTopic Event? Slug: 1-how-to-use-streaming-api-with-pushtopic-event URL: https://help.skyvva.com/#article/1-how-to-use-streaming-api-with-pushtopic-event ================================================================================ # 1. How to use Streaming API with PushTopic Event? #### Introduction The Streaming API in Salesforce provides a powerful mechanism for real-time data updates, enabling applications to subscribe to changes in Salesforce data. - PushTopic events, on the other hand, allow users to define custom criteria for real-time notifications based on SOQL queries. When records meeting these criteria are created or updated, notifications are pushed to subscribers, providing a flexible way to respond to specific changes. - Using the Streaming API with PushTopic events in the Agent **SKYVVA** integration application involves several steps. Here’s a comprehensive guide to help you get started: - Understanding PushTopic Events, PushTopic events in Salesforce are a way to receive real-time notifications of changes in data. They are triggered by Salesforce Object Query Language (SOQL) queries that define the events you want to track. When records are created, updated, deleted, or undeleted that match the query criteria, a notification is sent. **SKYVVA** Agent Control Board is a robust integration tool that facilitates the use of these streaming APIs. It enables users to configure PushTopic events seamlessly. By leveraging the **SKYVVA** platform, users can set up flows to handle real-time data updates and automate integration processes. The Agent Control Board simplifies the configuration of streaming events, ensuring that data integration is both efficient and effective. **The Role of Agent Skyvva Integration Application** Agent **SKYVVA** is an advanced integration platform designed to simplify and automate the process of data synchronization across multiple systems. With its robust capabilities, it provides a seamless interface to connect and manage various data sources, including those using PushTopic events and streaming APIs. #### Prerequisites - **Salesforce Setup**: Ensure that you have the necessary permissions to create and manage PushTopics in Salesforce. - **Agent Skyvva Integration Application**: Configure the Agent ping connection **SKYVVA** integration application in your Salesforce environment. **Step-by-Step Guide.** - **Configure Agent Skyvva**: Open the Agent **SKYVVA** application in Salesforce. - Go to **Integration Management**. - Select **Streaming API** under **Interfaces**. - Check on **Streaming CDC Platform Events, Event Type.** - Enter the details for your streaming API, ensuring you reference the PushTopic you created. - **Set Up the Integration Flow**: Define the integration flow by specifying the source (PushTopic) and the target (e.g., another Salesforce object, or external system). - Use the mapping tool in Agent **SKYVVA** to map fields from the PushTopic event to the target fields. - **Monitor**: The integration to start receiving real-time updates. - Monitor the integration using the Agent **SKYVVA** dashboard. You can view logs, track processed events, and handle any errors. **Best Practices** - **Testing**: Before deploying to production, test the PushTopic and integration flow in a sandbox environment. - **Filtering**: Use specific **SOQL** queries to filter events and reduce the volume of data processed. - **Error Handling**: Implement error handling mechanisms within Agent **SKYVVA** to manage and resolve issues. By following these steps, you can effectively use the Streaming API with PushTopic events in the Agent **SKYVVA** integration application, enabling real-time data synchronization and updates. **Expectation: ** The Streaming API (PushTopic Event) is an essential feature for Agents handling real-time data changes. When a new record is inserted or an existing record is updated in Salesforce, this feature ensures that the client-side data is automatically synchronized. By using the Streaming API, notifications are received for Salesforce data changes that align with a predefined SOQL query. This capability is harnessed through the Agent Skyvva integration application, allowing seamless and immediate data updates, thereby enhancing the efficiency and responsiveness of the system in real-time scenarios. **Step:** - Create an **Integration** - Click on** Agent Control Board** ![](../images/2024/07/image_2024_07_26T12_27_29_749Z.webp) - Once the Agent Control Board is open. - We have to configure the agent with config details. ![](../images/2024/07/image_2024_07_26T12_28_32_402Z.webp) - Click on the **Agent Ping Connection **button ![](../images/2024/07/image_2024_07_26T12_29_41_967Z.webp) - Click On the **Ping Salesforce Connection** button - Click **Save Connection** ![](../images/2024/07/image_2024_07_26T12_31_15_228Z.webp) - Create an **Adapter** - Here we are using **Agent File** ![](../images/2024/07/image_2024_07_26T12_32_14_233Z.webp) #### Outbound Interface To create an outbound interface navigate to the Integration section, create the Interface,  "New Interface" follow the "Event-Interface," and ensure that the source name includes "Object," to facilitate the creation of outbound interfaces for various objects, streamlining the integration process within the application. - Go to **Integration** -> **Interface** tab -> Click on New **Interface** button -> We have to Create Outbound Interface Interface type: “**Event-Interface**” - Source name contains “Object” e.g. **Account** Object ![](../images/2024/07/image_2024_07_26T12_33_16_892Z.webp) - We have set on **Event Configuration** ![](../images/2024/07/image_2024_07_26T12_34_05_672Z.webp) - Do **Mapping** ![](../images/2024/07/image_2024_07_26T12_34_56_536Z.webp) - After Mapping, you get a **PushTopic** **Event** object with this interface ![](../images/2024/07/image_2024_07_26T12_35_36_666Z.webp) - Go to New **Agent Control Board** - **Interface** tab -On the Interface tab, there is a streaming button on the interface list - Click Start **Streaming Api** ![](../images/2024/07/image_2024_07_26T12_36_36_712Z.webp) - Update **Account** Records in Salesforce ![](../images/2024/07/image_2024_07_26T12_37_32_549Z.webp) - Message Monitoring. ![](../images/2024/07/image_2024_07_26T12_38_18_828Z.webp) ![](../images/2024/07/image_2024_07_26T12_38_55_827Z.webp) - Here is the CSV Payload. ![](../images/2024/07/image_2024_07_26T12_39_43_310Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]Update a record in Salesforce using a PushTopic event via Agent Control Board **SKYVVA** integration application. This process guarantees real-time synchronization and precise data updates within Salesforce.[/su_box] #### Summary Now the user has learned to use the Streaming API with integrating PushTopic events in Salesforce using Agent Control Board **SKYVVA**. This involves creating and configuring PushTopics, setting up the integration flow, and activating it to enable real-time data updates and synchronization. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 2. How to use Streaming API with CDC Event? Slug: 2-how-to-use-streaming-api-with-cdc-event URL: https://help.skyvva.com/#article/2-how-to-use-streaming-api-with-cdc-event ================================================================================ # 2. How to use Streaming API with CDC Event? #### Introduction The Streaming API in Salesforce provides a powerful mechanism for real-time data updates, enabling applications to subscribe to changes in Salesforce data. This API includes two key event types: - Change Data Capture (CDC) events, CDC events are designed to deliver notifications about changes to Salesforce records, including inserts, updates, and deletes. They are particularly useful for tracking data changes in near real-time and integrating them with external systems. - Understanding Streaming API and CDC Events: Streaming APIs are crucial for enabling real-time data flow between systems. They allow applications to subscribe to data streams and receive updates instantly as changes occur. Change Data Capture (CDC) is a method used to track and capture changes in a database, ensuring that any modifications, such as inserts, updates, and deletes, are recorded and made available for further processing. **SKYVVA** Agent Control Board is a robust integration tool that facilitates the use of these streaming APIs. It enables users to configure and manage CDC events seamlessly. By leveraging the **SKYVVA** platform, users can set up flows to handle real-time data updates and automate integration processes. The Agent Control Board simplifies the configuration of streaming events, ensuring that data integration is both efficient and effective. Integrating a streaming API with Change Data Capture (CDC) events using the Agent **SKYVVA** integration application can significantly enhance real-time data processing and synchronization across various systems. This guide aims to provide a comprehensive introduction to this process, facilitating a seamless integration experience. **The Role of Agent Skyvva Integration Application** Agent **SKYVVA** is an advanced integration platform designed to simplify and automate the process of data synchronization across multiple systems. With its robust capabilities, it provides a seamless interface to connect and manage various data sources, including those using CDC events and streaming APIs. #### Prerequisites 1. **Setup Agent Skyvva Integration Application** - **Installation**: Ensure the Agent **SKYVVA** package is installed in your Salesforce environment. This package facilitates the integration process by providing necessary tools and connectors. - **Configuration**: Configure the Agent **SKYVVA** app by setting up the necessary credentials and endpoints to communicate with your external system. 2. **Enable Change Data Capture in Salesforce** - **CDC Configuration**: Go to Salesforce Setup and search for "Change Data Capture." Select the objects you want to track for changes. This could be standard or custom objects. - **Event Subscription**: Once CDC is enabled for the required objects, Salesforce will start generating CDC events whenever changes occur. 3. **Integrate with Agent Skyvva** - **Outbound Interface**: In the Agent **SKYVVA** application, create an outbound interface to process incoming CDC events. This interface will define how the data is mapped and transformed before being sent to the external system. - **Mapping**: Define the data mapping rules within Agent **SKYVVA**. This ensures that the data captured from Salesforce CDC events is correctly formatted and ready for the external system. 4. **Monitoring** - **Monitoring**: Use the Agent **SKYVVA** message to monitor the flow of data. Look out for any errors or issues in the integration process and address them promptly. By following these steps, you can effectively use the Streaming API with CDC events in conjunction with the Agent **SKYVVA** integration application, ensuring real-time data synchronization between Salesforce and your external systems. **Expectation:** In this scenario, CDC (Change Data Capture) events are used to send all changed data as events to the Agent automatically. To configure CDC events, set the flag and select the corresponding xxxChangeEvent object in the interface's 'Source/Target' field—such as AccountChangeEvent, LeadChangeEvent, OpportunityChangeEvent, and so on. In the message type, specify the external message type. Then, map the sObject fields to the external message type. Whenever a user changes, inserts, deletes, or undeletes data, an event is created and sent to the Agent, containing all the changed fields. The Agent checks the mapping, transforms the event data into the external structure, and raises an error if no mapping is available, logging it using the Agent Skyvva integration application. **Step:** - Go to **Setup** - Find **Change Data Capture** in the Quick Find box - Select **Object** - **Save** ![](../images/2024/07/image_2024_07_29T14_22_05_192Z.webp) ![](../images/2024/07/image_2024_07_29T14_22_45_267Z.webp) - Create an **Integration ** - Click on** Agent Control Board** ![](../images/2024/07/image_2024_07_29T14_23_38_593Z.webp) - Once the Agent Control Board is open. - We have to configure the agent with config details. ![](../images/2024/07/image_2024_07_29T14_24_34_492Z.webp) - Click on the **Ping Agent Connection **button ![](../images/2024/07/image_2024_07_29T14_25_47_188Z.webp) - Click **Ping Salesforce Connection** - Click **Save Connection**. ![](../images/2024/07/image_2024_07_29T14_26_44_231Z.webp) - Create an **Adapter**. - Here we are using **Agent File-Type ** ![](../images/2024/07/image_2024_07_29T14_27_39_921Z.webp) #### Outbound Interface To create an outbound interface in the **SKYVVA** integration application, navigate to the Integration tab, then click on the Interface tab and select the New Interface button. Set the interface type to "Event-Interface" and ensure that the source name contains "ChangeEvent," such as "AccountChangeEvent." Complete the configuration according to your specific integration requirements. This setup will enable the outbound interface to handle change events using the Skyvva integration application. - Go to **Integration** -> **Interface** tab -> Click on New **Interface** button -> We have to Create Outbound Interface Interface type: “**Event-Interface**” - Source name contains “ChangeEvent” e.g. **AccountChangeEvent** ![](../images/2024/07/image_2024_07_29T14_28_42_903Z.webp) - We have set on **Event Configuration** - Enable- **Streaming CDC and Platform Event** - Event Type-** CDC Event** ![](../images/2024/07/image_2024_07_29T14_29_50_554Z.webp) - Do **Mapping** ![](../images/2024/07/image_2024_07_29T14_30_40_842Z.webp) Go to New **Agent Control Board** - **Interface** tab - On the Interface tab, there is a streaming button on the interface list - Click Start **Streaming Api** ![](../images/2024/07/image_2024_07_29T14_31_58_057Z.webp) - Change an **Account** **Salesforce** ![](../images/2024/07/image_2024_07_29T14_32_52_789Z.webp) - After changing the record in Salesforce, you will see the record is pushed to your external system. ![](../images/2024/07/image_2024_07_29T14_33_54_738Z.webp) - Message Monitoring ![](../images/2024/07/image_2024_07_29T14_34_50_169Z.webp) ![](../images/2024/07/image_2024_07_29T14_34_59_536Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]After updating a record in Salesforce, the change will be reflected in your external system via CDC (Change Data Capture) Events. This process guarantees real-time synchronization and precise data updates within Salesforce.[/su_box] #### Summary Now the user has learned to use the Streaming API with CDC Events in Salesforce using Agent Control Board **SKYVVA**. This involves creating and configuring CDC Events, setting up the integration flow, and activating it to enable real-time data updates and synchronization. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 2. How to use Custom Payload Class for Callout Row CSV? Slug: 2-how-to-use-custom-payload-class-for-callout-row-csv URL: https://help.skyvva.com/#article/2-how-to-use-custom-payload-class-for-callout-row-csv ================================================================================ # 2. How to use Custom Payload Class for Callout Row CSV? #### Introduction - In this tutorial, we will guide you through the process of exporting Row CSV using an Agent File Adapter with a Custom Payload Class, utilizing the **SKYVVA** Integration App's Agent Control Board. The Custom Payload Class is a tailored solution designed to generate payloads that meet your specific business needs. By customizing this class, you can ensure that the data exported aligns perfectly with your organizational requirements. - The **SKYVVA** Integration App is a powerful tool for managing and streamlining data integration processes within Salesforce. The Agent Control Board component allows for efficient configuration and management of data agents, ensuring smooth and accurate data handling. - Through this tutorial, you will learn how to set up the Agent File Adapter, create and implement the Custom Payload Class, and configure the necessary settings within the Agent Control Board. Whether you need to export customer data, sales reports, or any other vital information, this tutorial will provide you with the knowledge and skills to perform these tasks efficiently. By the end of this tutorial, you will be equipped to customize your payloads and export data seamlessly, leveraging the robust capabilities of the **SKYVVA** Integration App. Let's dive in and start optimizing your data export processes! #### Prerequisites - **Salesforce Environment Setup**: Ensure you have a Salesforce org with administrative access to create and configure custom objects, classes, and interfaces. You should also have the **SKYVVA** integration app installed and properly licensed. - **Basic Knowledge of Salesforce**: Familiarity with Salesforce concepts like custom objects, fields, Apex classes, and triggers is essential. Understanding the basics of the **SKYVVA** integration app and its components, such as the Agent Control Board and Adapters, is also crucial. - **Agent Control Board Configuration**: Ensure that the Agent Control Board within the **SKYVVA** app is properly configured. This involves setting up connections to external systems, defining integration endpoints, and configuring security settings. - **Creating a Custom Payload Class**: You need to create a custom Apex class to define the structure and format of the payload for data integration. This class will handle the mapping and transformation of data between Salesforce and external systems. - **Adapter Creation**: Create and configure an Adapter in the Agent Control Board to facilitate communication between Salesforce and the external system. This involves setting up connection details, authentication, and data mapping rules. - **Outbound Interface Setup**: Define an Outbound Interface within the SKYVVA app to manage the data flow from Salesforce to the external system. This includes specifying the data source, mapping fields, and configuring triggers or events to initiate data transfer. - **Custom Payload Class for Callout Row Configuration**: For the callout row configuration, customize the payload class to handle specific requirements of the external system's API. This may involve additional field mappings, data transformations, and error-handling mechanisms. - **Testing and Validation**: Before going live, thoroughly test the integration setup to ensure data flows correctly between Salesforce and the external system. Validate that the custom payload class and outbound interface work as expected. By meeting these prerequisites, you'll be well-prepared to set up and manage integrations using the **SKYVVA** integration app and the Agent Control Board. #### Custom Payload Class for Callout Row CSV(Outbound) - Using the Outbound Custom Payload Class involves creating a specific class in Salesforce that formats the data into a CSV structure suitable for the external system’s API. This class can be tailored to include only the necessary fields and handle any required data transformations. - With the **SKYVVA** Agent Control Board, you can configure this class and map it to the appropriate callout row, ensuring seamless data integration. This process enhances data accuracy, reduces integration errors, and supports efficient data management across platforms. In this guide, we'll walk you through the steps to set up and use the Outbound Custom Payload Class effectively for your callout row CSV needs. **Steps:** - Create an** Integration ** Create new Integration by following the guide, a link is given below: ***–  [What is an integration and how to create it?](#article/what-is-an-integration-and-how-to-create-it)*** - Create a** Custom Payload Class** Go to **Setup ** - Search for **Apex Class** - Create a **New** Apex class - **Save** ![](../images/2024/08/image_2024_08_05T14_52_17_750Z.webp) ![](../images/2024/08/image_2024_08_05T14_53_00_042Z.webp) - **The Sample Code****:** This Custom Class is an example of creating a custom row CSV payload for the callout record with the Agent File Adapter. `global class CustomAccountOutFileAdapter extends skyvvasolutions.V3OutboundPayloadBuilder{ global override Object createPayload(Map mapRef, List msgTrees){ //String a; List records = new List(); records.add('Tabelle;SFID;ParentSFID;ParentTabelle;SageID;FeldName;Wert;IsNull'); Account acc = [select id,Name,AccountNumber,Site,AccountSource,Description,BillingCity,BillingCountry,BillingPostalCode,BillingStreet from Account where Id='0019b00000OaufPAAR']; //if (acc != null) // a = acc.id; records.add('Account;'+acc.Id+';ParentTabelle;SageID;Name;'+acc.Name+';false'); records.add('Account;'+acc.Id+';ParentTabelle;SageID;AccountNumber;'+acc.AccountNumber+';false'); records.add('Account;'+acc.Id+';ParentTabelle;SageID;Site;'+acc.Site+';false'); records.add('Account;'+acc.Id+';ParentTabelle;SageID;AccountSource;'+acc.AccountSource+';false'); records.add('Account;'+acc.Id+';ParentTabelle;SageID;Description;'+acc.Description+';false'); records.add('Account;'+acc.Id+';ParentTabelle;SageID;BillingCity;'+acc.BillingCity+';false'); records.add('Account;'+acc.Id+';ParentTabelle;SageID;BillingCountry;'+acc.BillingCountry+';false'); records.add('Account;'+acc.Id+';ParentTabelle;SageID;BillingPostalCode;'+acc.BillingPostalCode+';false'); records.add('Account;'+acc.Id+';ParentTabelle;SageID;BillingStreet;'+acc.BillingStreet+';false'); return String.join(records,'\n'); } }` - Configuration on the** Agent Control Board **and create an** Adapter** - Create a **Connection Destination** Navigate to **AGENT Control** ![](../images/2024/08/image_2024_08_05T14_56_09_574Z.webp) - In the Configuration tab enter the connection destination name and click on the button “Continue” ![](../images/2024/08/image_2024_08_05T14_57_03_872Z.webp) - Fill in all the required details - Click the button **Ping Agent Connection** ![](../images/2024/08/image_2024_08_05T14_57_50_583Z.webp) - Fill in all the required details - Click the button **Ping Salesforce Connection ** - Click** Save** ![](../images/2024/08/image_2024_08_05T14_58_38_195Z.webp) - Create an **Outbound Adapter** - Navigate to the **Adapter** tab after that click the button **New** ![](../images/2024/08/image_2024_08_05T14_59_21_771Z.webp) - Name: any Name - Type: Agent File - Direction: Outbound - Protocol: Local - Content Format: Custom - File Type: CSV - Folder: (your folder location) - File Name: (your file name) - File Handling Mode: (choose file mode) - Custom Processing Class: (Input your custom class name) - Connection Destination: (your destination name) ![](../images/2024/08/image_2024_08_05T15_00_10_955Z.webp) Create an** Interface** - To create the interface need to follow this guide [***–  What is an Interface and How to create it?***](#article/1-what-is-an-interface-and-how-to-create-it) - Create an** Outbound Interface** ![](../images/2024/08/image_2024_08_05T15_00_59_967Z.webp) - Check **cache **status - Go to **Agent Control Board** - Click **Cache Monitor** ![](../images/2024/08/image_2024_08_05T15_01_51_239Z.webp) - **Manual process** Navigate to the **Interface** tab and select the interface ![](../images/2024/08/image_2024_08_05T15_02_46_393Z.webp) - Click on the **Manual Process** button and choose the second radio - Click **Send** ![](../images/2024/08/image_2024_08_05T15_03_44_169Z.webp) - As a result of **Message Monitoring**, the record has been sent from **Salesforce** to file ![](../images/2024/08/image_2024_08_05T15_04_29_988Z.webp) - CSV File ![](../images/2024/08/image_2024_08_05T15_06_59_236Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]After clicking **Manual Process** for the callout record, you get the payload **Row CSV** file, based on the **Custom Class** you have created. [/su_box] ![](../images/2024/08/image_2024_08_05T15_07_49_426Z.webp) - **Payload **open with NotePad++ [su_box title="Note" box_color="#E4080A" title_color="#000000"]This Custom Class is an example only used for a callout record, as we have defined a Record or Field in the Custom Class so there is no need for Mapping.[/su_box] #### Summary Now users understand this tutorial explains how to export Row CSV using an Agent File Adapter with a Custom Payload Class in the **SKYVVA** integration app, guiding you through setup and configuration to meet specific business data handling needs. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use interface? Title: 2. How to use Merge or Override option for uploading an IStructure on the Interface ? Slug: 2-how-to-use-merge-option-for-uploading-a-istructure-on-the-interface URL: https://help.skyvva.com/#article/2-how-to-use-merge-option-for-uploading-a-istructure-on-the-interface ================================================================================ # 2. How to use Merge or Override option for uploading an IStructure on the Interface ? **Learning Objectives** After completing this unit, you’ll be able to: - Describe what the Interface is. - Comfortably use the Interface. - Merge or Override option for uploading an IStructure on the Interface #### Introduction The **SKYVVA** Integration App provides powerful tools to simplify and automate data integration within Salesforce. One of its key features is the ability to manage complex data structures (IStructures) that facilitate smooth data exchange between Salesforce and external systems. When working with IStructures in an interface, the "Override" option plays a crucial role in ensuring data integrity and accuracy during the uploading process. - The "Override" option allows you to upload an updated or modified IStructure while retaining the existing interface configuration. This is especially useful when you need to make changes to the data structure—such as adding new fields, updating data formats, or adjusting mappings—without disrupting the current interface logic. Instead of manually reconfiguring the interface, the Override option streamlines the process by automatically replacing the old IStructure with the new one while preserving the overall structure and settings. - Using this option helps prevent data inconsistencies, reduces the risk of integration errors, and ensures that updates are applied quickly and efficiently. This guide will walk you through the steps to effectively use the Override option for uploading an IStructure, enabling smooth, error-free integration in your Salesforce environment with **SKYVVA**. **What is Interface?** The interface is the second main object in **SKYVVA** after the integration. The interface describes the IStructure of data to exchange between Salesforce and other applications. - Inbound Interface The next property of the interface defines the processing mode. e.g. Synchronous and real-time (synchronous) Batch (asynchronous) and Bulk (asynchronous). #### Prerequisites - You have your salesforce organization - You have installed **SKYVVA** in your salesforce organization. - You have created [integration](http://what%20is%20an%20integration%20and%20how%20to%20create%20it/?). **How to create an inbound Interface?** - Click on the interface tab - Fill in the following field: – Name – Source name – Status – operation Type –  Type - Click on the Save button - Scroll down to the Source Definition Section ![](../images/2024/09/image_2024_09_13T15_35_52_518Z.webp) - Choose and upload the XML/CSV File - The message pops up on the dialogue box "Do you want to merge the new fields with the oldones? Click okay to confirm, or Cancel to overwrite old fields." The **SKYVVA** Integration application offers a user-friendly interface for managing data fields during integrations. When working with existing data, a user may need to merge new fields with old ones to ensure that their datasets are up-to-date without losing valuable information. The application provides an option where, upon detecting new fields, you can choose to merge them with the old ones by clicking "OK" to confirm. Alternatively, selecting "Cancel" will overwrite the old fields with the new data. This functionality ensures flexibility and control in handling your integration updates efficiently. - Click on Save ![](../images/2024/09/image_2024_09_13T15_36_34_186Z-1.webp) - ISructures saved successfully - click on the OK button ![](../images/2024/09/image_2024_09_13T15_37_26_650Z.webp) - Go to the IMapping section - See the Source fields Merge or Override successfully ![](../images/2024/09/image_2024_09_13T15_38_10_274Z.webp) - Now Check on the Mapping - Source fields Merge or Override successfully - Save the mapping #### Summary Now the user understands, How **SKYVVA** Integration App's "Override" option simplifies updating IStructures in interfaces without disrupting existing configurations. It allows seamless uploads of modified data structures, ensuring smooth data integration and reducing errors. This feature enables efficient updates while maintaining interface logic, and streamlining Salesforce integration processes. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use Integration? Title: 3. Add filter criteria to search in ilog screen Slug: 3-add-filter-criteria-to-search-in-ilog-screen URL: https://help.skyvva.com/#article/3-add-filter-criteria-to-search-in-ilog-screen ================================================================================ # 3. Add filter criteria to search in ilog screen #### Introduction **SKYVVA** Integration App, efficient log management is crucial for tracking and troubleshooting integration processes. In the "ILogs" section, the runtime writes log entries into the **ILog2__c** table, ensuring all relevant data is captured for each process execution. This table stores log information, which can be used for monitoring and diagnostics. - However, searching for specific log entries in the **ILog2__c** table can be challenging when handling large volumes of data. To enhance the user experience, we aim to implement a search functionality similar to the "Process Logs (Attachments)" section, available on the same screen within the Skyvva app. This feature allows users to filter and find relevant log information quickly, streamlining their workflow and reducing time spent navigating logs manually. - By incorporating a search function in the **ILog2__c** table, users can perform detailed queries on log entries, helping them monitor integration processes more effectively. This alignment with the "Process Logs (Attachments)" functionality ensures consistency across the platform and enhances the overall user experience, contributing to smoother integrations and faster problem resolution. - In the **SKYVVA** Integration App, searching for interfaces and interface groups on the iLog screen is crucial for managing integration processes. To filter for specific interfaces or groups, navigate to the iLog screen and utilize the filtering options available. - This allows users to quickly locate the relevant interface by entering parameters such as the interface name or group. Once filtered, users can view detailed **iLog** information, which helps monitor, troubleshoot, and analyze integration activities. The Skyvva app streamlines these tasks, making it easier to ensure smooth data flows between systems with accurate logging and real-time tracking capabilities. #### Expectation - **SKYVVA** Integration App, users have the option to apply mixed filters in the iLog screen to refine their search results. - This feature enhances data management by allowing users to narrow down records based on multiple criteria simultaneously. Once filters are applied, the system is expected to indicate that the displayed records are a result of the selected filters. - This functionality simplifies the search process, enabling users to focus on relevant data without sifting through unnecessary information. With the filters in place, Skyvva ensures that users can efficiently manage, track, and monitor their integrations, improving overall productivity and accuracy in data handling. - This intuitive interface not only streamlines workflows but also provides users with a clear visual representation of their filtered search, ensuring they are aware of the active filters applied to the iLog screen. #### Pre-requisites To search logs using the Skyvva Integration app, follow these steps: - Click on **Integration**. - Select **Log**. - Scroll down to view available logs. - Use the search function to find specific entries. This ensures easy access to your integration logs. ![](../images/2024/09/image_2024_09_19T15_30_45_215Z.webp) - **Filter on Interface** Select any Interface for Apply Filters to Search in the Ilog Screen. For example, filter Account_test ![](../images/2024/09/image_2024_09_19T15_31_48_071Z.webp) [su_box title="Result" box_color="#2a8af0" title_color="#000000"]After a search, it will display a log for the Account_test  interface.[/su_box] - **Filter on some fields** Select some mixed filter Ilog Screen as below Application = Salesforce - Application Component = Adapter soap - Error Text = Error Level Debug - Log Level = Debug - Sort by = Creation Date then click the search button ![](../images/2024/09/image_2024_09_19T15_36_40_749Z.webp) [su_box title="Result" box_color="#2a8af0" title_color="#000000"]After the search, it will display all fields that we filter.[/su_box] - **Search on Date From Date and To Date** Select Date for Apply Filter. For example, we select the date From Date 15-02-2023 to 21.02.2023, 11:00 AM. ![](../images/2024/09/image_2024_09_19T15_40_14_028Z.webp) [su_box title="Result" box_color="#2a8af0" title_color="#000000"]It will take a log that has the creation date from 15-02-2023 to 21.02.2023, 11:00 am.[/su_box] ![](../images/2024/09/image_2024_09_19T15_42_15_241Z.webp) - Select Modification Date for Apply Filter. For example, we select the date from date 15-02-2023, 03:00 pm to 15.02.2023, 03:17 pm. ![](../images/2024/09/image_2024_09_19T15_43_20_680Z.webp) [su_box title="Result" box_color="#2a8af0" title_color="#000000"]It will take a log that has the modification date from 15.02.2023, 03:00 pm to 15.02.2023, 03:17 pm.[/su_box] - Select CREATED DATE for Apply Filter ![](../images/2024/09/image_2024_09_19T15_46_14_771Z.webp) For example, we select the date from date 17-02-2023, 02:16 pm to 17.02.2023, 04:12 pm. ![](../images/2024/09/image_2024_09_19T15_48_03_031Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will take a log that has the modification date from 17.02.2023, 02:16 pm to 17.02.2023, 04:12 pm.[/su_box] - Select SYSTEMMOSDTAMP DATE for Apply Filter ![](../images/2024/09/image_2024_09_19T15_51_39_555Z.webp) For example, we select the date from date 17-02-2023, 02:16 pm to 01.03.2023, 05:00 pm. ![](../images/2024/09/image_2024_09_19T15_53_28_423Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will take a log that has the systemmodstamp date 17-02-2023, 02:16 pm to 01.03.2023, 05:00 pm.[/su_box] - **Filters on Order By ****field ** Select Descending for filter Ilog Screen as below ![](../images/2024/09/image_2024_09_19T15_56_18_190Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will display the record's last update under old records.[/su_box] - Select Ascending for filter Ilog Screen as below ![](../images/2024/09/image_2024_09_19T15_58_43_939Z.webp) **Result**: It will display the record's last update on top of old records. - **Filter on Interface Group** Select Interface Group for Apply Filters to Search in the Ilog Screen ![](../images/2024/09/image_2024_09_19T16_00_49_339Z.webp) [su_box title="Result" box_color="#2a8af0" title_color="#000000"]After the search, it will display on Log for Skyvva_DefaultIG_Outbound.[/su_box] - **Test on the View Log button** Click search then you will see the View Log button on each ilog record ![](../images/2024/09/image_2024_09_19T16_03_13_972Z.webp) ![](../images/2024/09/image_2024_09_19T16_04_15_342Z.webp) [su_box title="Result:" box_color="#2a8af0" title_color="#000000"]It will display the pop-up screen to View Ilog Details.[/su_box] - **Test on Delete Button ** Click search then you will see the Delete button on each ilog record ![](../images/2024/09/image_2024_09_19T16_06_19_634Z.webp) - Before we click on the button delete it has 10 records ![](../images/2024/09/image_2024_09_19T16_07_05_093Z.webp) - After we click on the button delete it has 9 records ![](../images/2024/09/image_2024_09_19T16_07_45_096Z.webp) #### Summary Now users understand how To refine searches in the iLog screen with the Skyvva integration app and apply specific filter criteria. This allows for targeted data retrieval by setting parameters such as date range, log type, or status, enhancing the efficiency and relevance of search results. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new Data Loader? Title: How to create file name into transfer Id via DataLoader ? Slug: how-to-create-file-name-into-transfer-id-via-dataloader URL: https://help.skyvva.com/#article/how-to-create-file-name-into-transfer-id-via-dataloader ================================================================================ # How to create file name into transfer Id via DataLoader ? #### Introduction **SKYVVA** Integration App to import files in CSV, XML, or JSON formats, it is essential to automate assigning a unique identifier to each record. One effective approach is to populate the "Transfer Id" column with the file name. This method helps in tracking and managing the data more efficiently, ensuring that each entry is easily traceable to its source. - To accomplish this, you first need to import the file into the Skyvva Integration App. During this process, configure the data mapping so that the file name is automatically assigned to the "Transfer Id" column. This step is crucial for maintaining data integrity, as it allows you to identify which file each record originated from, especially when dealing with multiple files. - Implementing this strategy with CSV, XML, and JSON file types ensures a consistent and streamlined data import process. Skyvva's flexibility in handling different file formats makes it an ideal solution for integrating and managing data from various sources. By using the file name as the "**Transfer ID**," the user can enhance data tracking, reduce errors, and simplify troubleshooting, ultimately leading to more efficient data management and integration within your organization. - Testing the message monitoring and filtering of the Transfer ID column using the **SKYVVA** integration app ensures accurate data handling and tracking. With Skyvva, the process becomes more streamlined, enabling the monitoring of all messages exchanged during data transfers. By focusing on the Transfer ID column, you can effectively track and filter specific data sets, making error detection and issue resolution more efficient. This feature helps maintain data integrity, as it provides clear visibility into message statuses. Utilizing Skyvva's robust integration capabilities ultimately enhances the accuracy and reliability of data management within your organization's ecosystem. #### Expectation After applying a filter on message monitoring by selecting specific columns in the **SKYVVA** integration app, and clicking the "Search" button, the system is expected to display the relevant messages that match the filter criteria. The **SKYVVA** app's functionality enables users to monitor and track messages effectively, ensuring that the search operation filters through the data accurately. This feature streamlines the process of identifying particular messages, allowing for efficient tracking and analysis of message flows. The integration app is designed to improve data visibility and control within Salesforce, enhancing the overall message management experience for users. **Case 1: ** - Creating a new interface for importing CSV files with mapping using the **SKYVVA** integration app streamlines data integration processes. - Skyvva's user-friendly platform allows users to define custom mappings, ensuring that CSV data fields align with your Salesforce objects and requirements. By leveraging our app capabilities, users can automate data transformation, validation, and error handling, reducing manual effort and increasing data accuracy. - This interface supports complex data structures and provides a seamless way to integrate data from external systems into Salesforce. The result is a more efficient, reliable, and scalable solution for handling large volumes of data with minimal configuration. **Required step:** - Create a new interface for CSV with mapping ![](../images/2024/10/image_2024_10_08T15_04_24_848Z.webp) - Go to the Integration Details page and click Data Loader - Import file CSV ![](../images/2024/10/image_2024_10_08T15_05_45_322Z.webp) - Filters on message monitoring - Before Filter on massage monitoring ![](../images/2024/10/image_2024_10_08T15_07_24_366Z.webp) - After Filter on message monitoring ![](../images/2024/10/image_2024_10_08T15_08_22_053Z.webp) **Case ****2:** - Our Skyvva Integration App offers a powerful feature for creating a new interface to import XML data with mapping. - This process involves defining data transformation rules, making it easier to map XML elements to your Salesforce fields seamlessly. The app provides a user-friendly interface where you can visually create and modify these mappings, ensuring data accuracy and consistency. - By using Skyvva's drag-and-drop capabilities, user can quickly design their integration without extensive coding knowledge. This approach streamlines data imports, reduces manual errors, and accelerates your Salesforce integration process, making it ideal for businesses looking to optimize their data workflows. **Required step:** - Create a new interface for XML and mapping ![](../images/2024/10/image_2024_10_08T15_09_12_268Z.webp) - Go to the integration details page and click Data Loader - Import file XML ![](../images/2024/10/image_2024_10_08T15_10_09_593Z.webp) - Filter on message monitoring - Before Filter on message monitoring ![](../images/2024/10/image_2024_10_08T15_10_59_745Z.webp) - After Filtering on message monitoring already ![](../images/2024/10/image_2024_10_08T15_11_52_946Z.webp) **Case 3:** - To create a new interface for importing JSON with mapping using the Skyvva integration app, begin by defining the JSON structure to be imported. Utilize the app's built-in mapping tool to specify how each JSON field corresponds to your target system fields. - This involves selecting source fields from the JSON data and aligning them with the appropriate fields in your database or application. Implement data transformation rules if necessary, such as formatting dates or converting values. - Finally, test the interface with sample JSON files to ensure proper functionality and validate that the data is imported accurately, maintaining data integrity throughout the process. **Required step:** - Create a new interface for JSON with mapping ![](../images/2024/10/image_2024_10_08T15_12_59_657Z.webp) - Go to the Integration Details page and click Data Loader - Import file JSON ![](../images/2024/10/image_2024_10_08T15_14_10_316Z.webp) - Filter on message monitoring - Before filter on message monitoring ![](../images/2024/10/image_2024_10_08T15_15_04_599Z.webp) - After filter on message monitoring ![](../images/2024/10/image_2024_10_08T15_15_56_681Z.webp) #### Summary Now user understands how the **SKYVVA** integration app allows users to convert file names into transfer IDs by importing data in CSV, XML, and JSON formats using DataLoader. This feature streamlines data migration processes, enhancing efficiency and accuracy in managing data transfers between systems, while ensuring compatibility with various file formats. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use mapping? Title: How to use Copy Node and Copy Field on the Mapping? Slug: how-to-use-copy-node-and-copy-field-on-the-mapping URL: https://help.skyvva.com/#article/how-to-use-copy-node-and-copy-field-on-the-mapping ================================================================================ # How to use Copy Node and Copy Field on the Mapping? #### Introduction In this tutorial, we will explore how to effectively use the **Copy Node** and **Copy Field** functionalities within **Mapping** in the **SKYVVA** integration app. These features allow for enhanced flexibility when working with data structures, making it easier to manage and manipulate data during integrations. - The **Copy Node** function enables you to clone an existing node to a new node. This cloned node can be identical to the original, preserving all its attributes and structure. This is particularly useful when you need to generate a payload with a new node or field for a specific callout, without the need to create a new message type. By leveraging this feature, user can streamline their integration process and ensure efficiency when handling repetitive or complex data transformations. - Similarly, the **Copy Field** functionality lets you duplicate individual fields from one node to another, allowing for precise control over how data is transferred and managed. Throughout this guide, we will demonstrate how to implement these functions, ensuring you understand the best practices for utilizing them effectively in your Skyvva integration projects #### Pre-required - Create an **Integration** - Create an **Adapter** (e.g. SAP CPI Adapter) - Create an **Outbound Interface **(Use API Version V3) - **The Configuration of Execute callout records by using Copy Node on the Mapping** Create an** Integration ** Create new Integration by following the guide, the link is given below: –  [What is an Integration and how to create it?](#article/what-is-an-integration-and-how-to-create-it) - Create an **Adapter** (e.g. SAP CPI Adapter) ![](../images/2024/10/image_2024_10_22T13_10_10_062Z.webp) - Create an** Interface ** To create the interface need to follow this guide –  [What is an Interface and How to create it?](#article/1-what-is-an-interface-and-how-to-create-it) - Create an Outbound Interface ![](../images/2024/10/image_2024_10_22T13_11_47_571Z.webp) - **Do Mapping ** Right-click on the node you want to copy ![](../images/2024/10/image_2024_10_22T13_12_48_775Z.webp) - Click on the **Copy Mode**, it alerts the pop-up screen and you can rename that node based on the payload you want to generate. ![](../images/2024/10/image_2024_10_22T13_13_35_079Z.webp) - After clicking 'Ok,' we received the new Node containing all the same fields as that node ![](../images/2024/10/image_2024_10_22T13_14_42_945Z.webp) - After that, you can map the fields from the Source by dragging and dropping the fields onto the Target. ![](../images/2024/10/image_2024_10_22T13_15_33_635Z.webp) - Click on the Save button ![](../images/2024/10/image_2024_10_22T13_16_26_659Z.webp) - Go to **Interface** - Link **Adapter** on the interface ![](../images/2024/10/image_2024_10_22T13_17_16_943Z.webp) [su_box title="Example:" box_color="#2a8af0" title_color="#000000"]I have an account record and have many contacts that look the same but I just want to execute a callout of the records of two contacts by the last CreateDate[/su_box] ![](../images/2024/10/image_2024_10_22T13_18_10_607Z.webp) - **Setting some conditions on the SOQL query on the Child Interface** ![](../images/2024/10/image_2024_10_22T13_19_07_509Z.webp) ![](../images/2024/10/image_2024_10_22T13_19_39_418Z.webp) - **Execute Callout record by Manual Process ** ![](../images/2024/10/image_2024_10_22T13_20_59_645Z.webp) - **Message Monitoring** ![](../images/2024/10/image_2024_10_22T13_22_34_784Z.webp) - **Here is the payload JSON/XML** ![](../images/2024/10/image_2024_10_22T13_23_46_688Z.webp) ![](../images/2024/10/image_2024_10_22T13_24_16_480Z.webp) ![](../images/2024/10/image_2024_10_22T13_24_54_312Z.webp) [su_box title="Result:" box_color="#00d9a6;" title_color="#000000"]After selecting '**Manual Process**' for the callout record, the JSON payload will be generated. This payload is created according to the conditions defined in the Interface configuration.[/su_box] #### Summary Now the user understands, this tutorial explains how to use the Copy Node and Copy Field functionalities in Skyvva integration. The Copy Node function allows you to clone a node and generate a payload with a new node or field added for a callout, without needing a new message type. It enables efficient data mapping and integration by duplicating nodes, ensuring consistency and flexibility in payload generation for various integrations within the **SKYVVA** app. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to import file (binary/attachment) to salesforce using New agent? Slug: how-to-import-file-binary-attachment-to-salesforce-using-new-agent URL: https://help.skyvva.com/#article/how-to-import-file-binary-attachment-to-salesforce-using-new-agent ================================================================================ # How to import file (binary/attachment) to salesforce using New agent? #### Introduction Importing files such as binary attachments into Salesforce can be crucial for businesses seeking to streamline data management and integrate with various systems effectively. Using the **Skyvva Integration App**, a versatile tool for handling complex data operations, simplifies this process. **SKYVVA** facilitates seamless connections between Salesforce and external systems through comprehensive integration capabilities, supporting agents in managing data flows more efficiently. - To import a file (binary/attachment) into Salesforce using a new agent, ensure your Skyvva Integration App is properly configured within your Salesforce environment. Skyvva's agents are components designed to automate data exchanges, making it easier to manage file imports, including attachments like PDFs, images, or other documents. - Setting up an agent involves defining parameters such as data sources, mappings, and scheduling preferences. Once configured, the agent serves as a conduit, receiving the file, converting it into a compatible format, and placing it in the appropriate location within Salesforce. This process supports different attachment types while preserving data integrity and reducing manual work. - With **SKYVVA's** robust integration and automation features, importing files becomes a streamlined and efficient task, enhancing productivity and ensuring that Salesforce remains a comprehensive repository for essential business documents. #### Pre-require - Create a MetaData provider and repository for the upload message type - Connection destination and create an adapter - Create Integration and Inbound Interface #### How to import Attachment to Account by using ContentVersion? - Importing an attachment to an account using **ContentVersion** through the **Skyvva Integration App** can streamline data handling within Salesforce. Skyvva, known for enhancing integration capabilities, leverages Salesforce's robust ContentVersion object to manage document attachments effectively. ContentVersion is the primary data structure for storing files in Salesforce, enabling users to link and organize content efficiently across various records. - To begin the process, it’s crucial to prepare the file, including metadata like title, description, and file extension, to ensure it matches Salesforce's requirements. Using Skyvva, data mapping, and transformation steps guide the attachment import to the designated account. This mapping ensures the correct association of the ContentVersion record to the appropriate Account object. The integration process through Skyvva streamlines importing, linking, and maintaining data integrity across records, significantly improving document management and operational efficiency within Salesforce. #### Case1: Configuration of importing Attachment binary by using Account ID - Integrating attachments effectively into your Salesforce system is crucial for seamless data management and workflow optimization. This guide focuses on the configuration of importing attachment binaries by using the Account ID within the **SKYVVA** Integration App. - **SKYVVA**, known for its powerful data integration capabilities, allows businesses to streamline processes between Salesforce and various external systems. This configuration ensures that documents, images, and relevant files linked to specific accounts are efficiently imported and stored, enhancing data accessibility and record completeness. - By setting up the import process using the Account ID, you align attachments directly with their associated accounts, maintaining data consistency and minimizing manual intervention. Whether handling client documents, contracts, or other vital records, this integration step supports a more cohesive Salesforce environment. Read on to understand the step-by-step configuration process to enable this functionality and optimize the attachment import workflow using Skyvva’s robust integration features. ![](../images/2024/11/image_2024_11_11T14_06_13_822Z.png) - sObject: Type Plain structure - Account: Type Salesforce sObject - ContentVersion: Type Salesforce sObject ![](../images/2024/11/image_2024_11_11T14_09_07_016Z.png) - Message Type Field Entry ![](../images/2024/11/image_2024_11_11T14_14_09_778Z.png) - **We go to the Agent control board to connect the destination. How to use the Agent control board.** Connection Destination in Agent Control board ![](../images/2024/11/image_2024_11_11T14_22_12_553Z.png) - Create an Adapter in the Agent control board, We need the Adapter to transfer the data from one System to another system or computer. ![](../images/2024/11/image_2024_11_11T14_23_47_096Z.png) - Here’s an example below. Go to the Adapter on the Agent Control Board Create Agent Adapter property filetype: binary filename(extensions): .png ![](../images/2024/11/image_2024_11_12T07_56_22_553Z.png) Hit button Ping Connection The adapter (Inbound) is created successfully - We need an Inbound Interface to import data from Salesforce. - Create Integration and Inbound Interface with the message types that we uploaded. Put an adapter, MetaData Provider, Repository, and Message Type, and click the button save. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Source Name we choosing ContentVersion.[/su_box] ![](../images/2024/11/image_2024_11_12T08_01_27_158Z.png) - Scroll down to Inbound Adapter ![](../images/2024/11/image_2024_11_12T08_03_31_125Z.png) - Open Mapping - ContentVersion (Source) to ContentVersion (Target) - Title ExId’s ![](../images/2024/11/image_2024_11_12T08_06_08_867Z.png) - Save Select your Interface Click on the Manual Process button ![](../images/2024/11/image_2024_11_12T08_09_55_495Z.png) - Manual Execution Option - Click on Push-button ![](../images/2024/11/image_2024_11_12T08_11_12_012Z.png) - Go to Message Monitor ![](../images/2024/11/image_2024_11_12T08_14_59_481Z.png) - Click on the search button - Binary file successfully imported #### Case2: Configuration of importing Attachment binary by using vlookup - The **SKYVVA** integration app streamlines data management between Salesforce and external systems, providing enhanced functionality for efficient data handling. One of its advanced features includes the configuration of importing attachment binaries combined with the power of VLOOKUP to simplify and automate data processes. - This approach allows users to integrate attachments seamlessly, ensuring important document data is imported accurately and linked properly within Salesforce. By employing VLOOKUP, the system intelligently matches records and associates attachments based on unique identifiers, reducing manual intervention and errors. This method proves invaluable for businesses needing bulk data transfers or managing high volumes of attachment imports while maintaining data integrity. - Setting up this configuration not only boosts productivity but also strengthens data reliability within Salesforce environments. This guide will walk you through the essential steps to implement this configuration effectively, ensuring a seamless integration experience. ***The user must follow all the previously mentioned steps, including integration, interface setup, and linking the inbound adapter.*** ![](../images/2024/11/image_2024_11_12T08_26_15_608Z.png) - Mapping ![](../images/2024/11/image_2024_11_12T08_28_33_386Z.png) - Open Mapping - ContentVersion (Source) to ContentVersion (Target) - Define vlookup -VLOOKUP(Account,Id,Name,'Thea_Binary') - Title ExId’s ![](../images/2024/11/image_2024_11_12T08_31_40_337Z.png) - Manual Execution Option - Click on Push-button ![](../images/2024/11/image_2024_11_12T08_33_43_273Z.png) - Manual Process has been executed ![](../images/2024/11/image_2024_11_12T08_56_55_468Z.png) - Go to Message Monitoring ![](../images/2024/11/image_2024_11_12T09_00_39_133Z.png) - Click on the search button - Binary file successfully imported #### Summary In this tutorial, we learned Importing files (binary/attachments) to Salesforce using the new agent in the **SKYVVA** Integration App involves a structured process. First, set up an integration to connect external systems with Salesforce. Configure an interface specifically designed for file handling and link it with the inbound adapter. Ensure the new agent is installed and properly configured to facilitate data transfer. Execute the import job, which processes and maps files to the relevant Salesforce records, ensuring seamless attachment integration into the platform. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: How to use Agent Log and Salesforce Log ? Slug: how-to-use-agent-log-and-salesforce-log URL: https://help.skyvva.com/#article/how-to-use-agent-log-and-salesforce-log ================================================================================ # How to use Agent Log and Salesforce Log ? Introduction - Agent Log is an essential feature in the **SKYVVA** Integration App, designed to simplify and enhance monitoring and debugging integration processes. It gives users real-time visibility into transaction logs, error tracking, and process performance, ensuring seamless data flow between Salesforce and external systems. Whether you're troubleshooting failed integrations or analyzing transaction details, the Agent Log is a powerful tool to help you maintain control and transparency in your integration workflows. - With the Skyvva Integration App, the Agent Log offers a user-friendly interface that captures detailed records of each transaction the integration agent executes. This includes transaction ID, status, error messages, processing time, and payload data. By leveraging this functionality, users can identify and resolve issues quickly, reducing downtime and enhancing system reliability. - Using the Agent Log effectively begins with understanding its layout and features. The log is accessible from the Skyvva app’s dashboard, where users can filter and sort entries based on criteria such as date, transaction type, and status. This enables targeted searches, saving valuable time during troubleshooting. Additionally, the log’s drill-down feature allows users to examine individual transactions in-depth, offering a granular view of error codes and messages for precise debugging. - Skyvva also integrates advanced capabilities, such as automated error handling and notifications, that work seamlessly with the Agent Log. When paired with the app’s comprehensive integration capabilities, the Agent Log ensures you can monitor and maintain integrations effortlessly, even as your business scales. - In this guide, we will walk you through the steps to access, utilize, and maximize the benefits of the Agent Log in the Skyvva Integration App, empowering you to achieve smoother and more efficient integration management. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 2. How to install Agent 3.06 for Windows? Slug: 2-how-to-install-agent-3-06-for-windows URL: https://help.skyvva.com/#article/2-how-to-install-agent-3-06-for-windows ================================================================================ # 2. How to install Agent 3.06 for Windows? #### System Requirements ![](../images/2020/04/image_2020_11_23T06_37_45_906Z.png) #### Approach - User/Admin has bought a valid **SSL** certificate from the trusted vendors of Salesforce. –  [Outbound Messaging SSL CA Certificates](https://cs89.salesforce.com/cacerts.jsp) - User/Admin has got the deployment package and transferred it to the deployment server. #### Installation New Agent 3.06 with Mode 'Opening-Firewall' In the **'Opening-Firewall'** installation mode, the user can only use the connection mode. - **Opening-Firewall** 1. Once we have the Skyvva Integration Agent setup file available. We can execute it by double-clicking on it. ![](../images/2025/01/1-16-2025-3-15-38-PM.png) 2. Hit Next, it will ask you to accept the License Agreement. Read the agreement and accept it. This is mandatory to proceed further with the installation. ![](../images/2025/01/1-16-2025-3-18-17-PM.png) 3. Hit **I Agree**, it will take you to Choose the installation directory. By default, it will be C:\Program Files\Skyvva Integration Agent You can update it or leave it as is. ![](../images/2025/01/1-16-2025-5-02-02-PM.png) Then click Next. 4. It will take you to choose the Start Menu Folder name, by default it will be Skyvva Integration Agent. ![](../images/2025/01/1-16-2025-5-03-09-PM.png) Then click Next. 5. Input Agent Service Port, Agent Username and Agent Password. **Sample: Port: 9057, Username: skyvva, Password: skyvva@12!** ![](../images/2025/01/1-16-2025-5-04-55-PM.png) 6. Enter your database password, and you can rename the database schema following **'skyvva_'** with the agent port. ****Note:****Database Schema defulft name**** 'skyvva'*** ![](../images/2025/01/1-16-2025-5-15-06-PM.png) Then click Next. 7. For the **'Opening-Firewall'** mode, you don't need to select an **Authentication Type**, as this option does not require. ![](../images/2025/01/1-17-2025-5-25-17-PM.png) Then click Next. ![](../images/2025/01/1-16-2025-5-39-11-PM.png) Then click Next. ![](../images/2025/01/1-16-2025-5-39-18-PM.png) Then click 'Install' ![](../images/2025/01/1-16-2025-5-39-58-PM.png) Then click 'OK' ![](../images/2025/01/1-16-2025-5-40-07-PM.png) Then click 'OK' ![](../images/2025/01/1-16-2025-5-40-21-PM.png) Then click 'OK' 8. The final step click 'Finish' your Agent service will start. ![](../images/2025/01/1-16-2025-5-40-30-PM.png) 9. You can find the installer artifacts in the folder that was selected during the installation. ![](../images/2025/01/1-17-2025-2-14-45-PM.png) 10. Here's the schema name in the PostgresSQL. ![](../images/2025/01/1-17-2025-3-58-38-PM.png) #### Installation New Agent 3.06 with Mode 'Non-Opening-Firewall' In the** 'None-Opening-Firewall**' installation mode, the user can use boths the connection mode. - **Opening-Firewall** - **None-Opening-Firewall** 1. Once we have the Skyvva Integration Agent setup file available. We can execute it by double-clicking on it. 2. Hit Next, it will ask you to accept the License Agreement. Read the agreement and accept it. This is mandatory to proceed further with the installation. 3. Hit **I Agree**, it will take you to Choose the installation directory. By default, it will be C:\Program Files\Skyvva Integration Agent You can update it or leave it as is. ![](../images/2025/01/1-17-2025-2-49-08-PM.png) Then click Next 4. It will take you to choose the Start Menu Folder name, by default it will be Skyvva Integration Agent. ![](../images/2025/01/1-17-2025-2-49-42-PM.png) Then click Next 5. Input Agent Service Port, Agent Username and Agent Password. **Sample: Port: 9058, Username: skyvva, Password: skyvva@12!** ![](../images/2025/01/1-17-2025-2-50-21-PM.png) Then clcik Next. 6. Enter your database password, and you can rename the database schema following **'skyvva_'** with the agent port. **Note: Database Schema defulft name 'skyvva'** ![](../images/2025/01/1-17-2025-2-50-37-PM.png)  7. Please select Agent Mode, first mode** 'NON-Opening-Firewall'** with Authentication Type **'OAuth2 Username-Password'.** ****Note:*** In this step, you can choose installation with 2 authentication types: ***OAuth2 Username-Password or OAuth2 Client-Credential.*** - Select Authentication Type: ***OAuth2 Username-Password*** ![](../images/2025/01/1-17-2025-2-53-29-PM.png)  Plase Input information form your Salesforce Org. ![](../images/2025/01/1-17-2025-2-59-53-PM.png) - Select Authentication Type: ***OAuth2 Client-Credential.*** ![](../images/2025/01/1-17-2025-2-53-19-PM.png) Plase Input information form your Salesforce Org. ![](../images/2025/01/1-17-2025-2-52-20-PM.png) Then Click Install. ![](../images/2025/01/1-17-2025-3-06-55-PM.png) Then Click 'OK' ![](../images/2025/01/1-17-2025-3-01-33-PM.png) Then click 'OK' ![](../images/2025/01/1-17-2025-3-01-43-PM.png) Then click 'OK' ![](../images/2025/01/1-17-2025-3-01-59-PM.png) Then click 'OK' ![](../images/2025/01/1-17-2025-3-02-09-PM.png) Then clcik 'OK' ![](../images/2025/01/1-17-2025-3-02-19-PM.png) 8. The final step click 'Finish' your Agent service will start. ![](../images/2025/01/1-17-2025-3-02-27-PM.png) 9. You can find the installer artifacts in the folder that was selected during the installation. ![](../images/2025/01/1-17-2025-3-51-07-PM.png) 10. Here's the schema name in the PostgresSQL. ![](../images/2025/01/1-17-2025-3-55-39-PM.png) #### How to Upgrade the Agent to the New Patch or Version 1. In case if we want to upgrade Skyvva Integration Agent to a new patch, then all we have to do is just install the new upgrade file. 2. While upgrading, the installer will not touch the database file, so we don’t have to bother about that file at all. #### Uninstall Agent 1 Stop the Agent Service first by run SkyvvaIntegrationAgent-stop.bat ![](../images/2025/01/1-20-2025-4-03-33-PM-1.png) 2. If you are using a certificate, please make a backup of it. ![](../images/2025/01/1-20-2025-4-26-19-PM.png) 3. Backup skyvva_application.properties file. ![](../images/2025/01/1-20-2025-2-56-32-PM.png) 4. Uninstall the old version 3.5.14 C:\Program Files\Skyvva Integration Agent  ![](../images/2025/01/1-20-2025-4-37-34-PM.png) 5. Look for the uninstall.exe, and execute it by double-clicking on it. ![](../images/2025/01/1-20-2025-1-54-23-PM.png) 6. After completing the uninstallation process, please install the new version of the Agent 3.06 with old database schema. ![](../images/2025/01/1-20-2025-2-13-02-PM.png) 4. Input Agent Service Port, Agent Username and Agent Password. ![](../images/2025/01/1-20-2025-2-13-59-PM.png) 5.Please copy the **'Database Schema'** from the backed-up skyvva_application.properties file. ![](../images/2025/01/1-21-2025-10-31-46-AM.png) 6. Enter your database password and ensure that it matches your old schema. ![](../images/2025/01/1-20-2025-2-14-22-PM.png) 6. After completing the other steps, proceed to the final step **'Finish'** to start the Agent service. ![](../images/2025/01/1-20-2025-2-17-49-PM.png) 8. Restore the certificate back. ![](../images/2025/01/1-20-2025-4-26-19-PM-1.png) 9. Please locate the previous skyvva_application.properties file, copy the entire **'Agent SSL Properties'** section, replace the corresponding section in the new skyvva_application.properties file, and then remove the '#' to enable it.e. ![](../images/2025/01/1-21-2025-5-17-34-PM.png) 10. Check the Agent Service and ping the Agent via local URL: [http://localhost:9059/application/systemInfo/getSystemInfo](http://localhost:9059/application/systemInfo/getSystemInfo) ![](../images/2025/01/1-20-2025-4-59-48-PM.png) #### Setup SSL for Agent Instance `We need a valid **SSL** certificate in .pfx format available to setup **SSL** for Agent Instance. Please check out the list of available trusted vendors ([Outbound Messaging SSL CA Certificates](https://cs32.salesforce.com/cacerts.jsp)) from which you can purchase an **SSL** certificate.` **1.** Copy the new valid SSL certificate to the deployment directory i.e. C:\skyvva-agent **2.** Once we have copied the new **SSL** certificate to the deployment directory, we need to change the property file so that the Agent Instance can pick up the **SSL** certificate. Open the property file with the name skyvva_application.properties and look for the properties mentioned below. **1. **If the user is using SSL, please navigate to the installation directory and click on** 'config'.** ![](../images/2025/01/1-20-2025-4-03-33-PM.png) **2.** Click on **'skyvva_application.properties'** ![](../images/2025/01/1-20-2025-2-56-32-PM.png) **3.** Copy from** 'skyvva_application.properties'.** `================================== # Agent SSL Properties # ==================================` # Change this to true, if SSL has to be enabled skyvva.h2.db.ssl.enabled=false # Uncomment the following properties to enable SSL for Agent Services #server.ssl.key-store-type=PKCS12 #server.ssl.key-store=C:\\skyvva-agent\\ssl-certificate.pfx #server.ssl.key-store-password=Skyvva@12! #server.ssl.key-alias=1 #security.require-ssl=true **4.** As we can see above, all the properties except one have been commented out (which means starts with ‘**#**’). We will have to uncomment them i.e. remove ‘**#**’ from the starting of the lines. Once done it will look like as shown below. # ================================== # Agent SSL Properties # ================================== # Change this to true, if SSL has to be enabled #skyvva.h2.db.ssl.enabled=false # Uncomment the following properties to enable SSL for Agent Services **server.ssl.key-store-type=PKCS12** **server.ssl.key-store=C:\\Program Files\\Skyvva Integration Agent Upgrade 3.5.14 to 3.06\\certificate\\testingcertificate.pfx** **server.ssl.key-store-password=Skyvva@12!** **server.ssl.key-alias=1** #security.require-ssl=true **5.** Now we will have to change only 4 properties to enable the **SSL** for **SKYVVA** Agent. Those 4 properties are as follows. `skyvva.h2.db.ssl.enabled=true server.ssl.key-store=C:\\skyvva-agent\\Add the name of the new SSL certificate file server.ssl.key-store-password=SSL certificate store password server.ssl.key-alias=Alias of the SSL certificate` **Once we have replaced the highlighted values with the right possible values, we can restart the Agent Instance.** ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 3.1 How to Install Agent 3.06.01 for Windows? Slug: 3-1-how-to-install-and-upgrade-agent-3-06-01-for-windows URL: https://help.skyvva.com/#article/3-1-how-to-install-and-upgrade-agent-3-06-01-for-windows ================================================================================ # 3.1 How to Install Agent 3.06.01 for Windows? #### System Requirements ![](../images/2020/04/image_2020_11_23T06_37_45_906Z.png) #### Approach - User/Admin has bought a valid **SSL** certificate from the trusted vendors of Salesforce. –  [Outbound Messaging SSL CA Certificates](https://cs89.salesforce.com/cacerts.jsp) - User/Admin has got the deployment package and transferred it to the deployment server. #### Installation New Agent 3.06.01 In Agent 3.06.01, the installation does not allow you to choose between the two modes: 'Opening-Firewall' and 'Non-Opening-Firewall'. After installation, a default connection with 'Non-Opening-Firewall mode' is automatically created and can be used for both modes. 1. Once we have the Skyvva Integration Agent setup file available. We can execute it by double-clicking on it. ![](../images/2025/05/5-5-2025-10-45-54-AM.png) Then click Next. 2. Hit Next, it will ask you to accept the License Agreement. Read the agreement and accept it. This is mandatory to proceed further with the installation. ![](../images/2025/05/5-5-2025-10-46-12-AM.png) Then click I Agree. 3. Please Select Agent Install Mode. ![](../images/2025/05/5-5-2025-10-46-28-AM.png) Then click Next. 4. Hit **I Agree**, it will take you to choose the installation directory. You can update it or leave it as is. ![](../images/2025/05/5-5-2025-10-52-33-AM.png) Then click Next. 5. It will take you to choose the Start Menu Folder name, by default it will be Skyvva Integration Agent. ![](../images/2025/05/5-5-2025-10-52-58-AM.png) Them click Next. 6. Input Agent Service Port, Agent Username and Agent Password. **Sample: Port: 9098, Username: skyvva, Password: skyvva@12!** ![](../images/2025/05/5-5-2025-10-55-17-AM-1.png) 7. Enter your database password, and you can rename the database schema following **'skyvva_9098'** with the agent port. ****Note:****Database Schema defulft name**** 'skyvva'*** ![](../images/2025/05/5-5-2025-11-37-26-AM.png) Then click Next. 7. seclect with **'OAuth2 Username-Password'** mode. ![](../images/2025/05/5-5-2025-11-44-11-AM.png) Then click Next. 8. Enter the Salesforce org information. After installation, it will automatically create a default connection name with Non Opening Firewall mode. ![](../images/2025/05/5-5-2025-11-58-23-AM.png) Then click Next. 9. This step shows a summary of the installation configuration. Then, click Install. ![](../images/2025/05/5-5-2025-11-59-57-AM.png) 10. When the installation is successful, click Finish. ![](../images/2025/05/5-5-2025-1-46-27-PM.png) 11. Go to the Agent Control Board and find the default connection. The user can then ping this connection and proceed with processing in Non-Opening Firewall mode. ![](../images/2025/05/5-5-2025-2-03-35-PM.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 3.2 How to Upgrade the Agent to the New Patch or Version? Slug: how-to-upgrade-the-agent-to-the-new-patch-or-version URL: https://help.skyvva.com/#article/how-to-upgrade-the-agent-to-the-new-patch-or-version ================================================================================ # 3.2 How to Upgrade the Agent to the New Patch or Version? #### Upgrade New Agent 3.05.xx to 3.06.xx The Upgrade New Agent Version only supports the New Agent Version using a PostgreSQL database. 1. In case if we want to upgrade Skyvva Integration Agent to a new patch, then all we have to do is just install the new upgrade file. 2. While upgrading, the installer will not touch the database file, so we don’t have to bother about that file at all. #### 1. Please Select Agent Upgrade Mode. We have upgraded from 3.06.00 to 3.06.01 up ![](../images/2025/05/5-5-2025-4-44-20-PM.png) 2. The default destination folder is C:\Program Files. Click the 'Browse...' button to select the installation folder for the previous agent version. ![](../images/2025/05/5-15-2025-9-59-42-AM.png) 3.This is the installation folder for the previous agent version. Please click Next to continue D:\new-agent\Skyvva Integration Agent 3.06.00 ![](../images/2025/05/5-5-2025-4-51-38-PM.png) 4. This step shows a summary of the upgrade configuration. Then, click Install. ![](../images/2025/05/5-5-2025-5-26-45-PM.png) 4. After a successful upgrade, click Finish. ![](../images/2025/05/5-5-2025-5-34-21-PM.png) 5. Here's the folder after the upgrade. ![](../images/2025/05/5-6-2025-10-05-13-AM.png) 6. Here's the properties file after a successful upgrade: SSL remains enabled, and new property lines have been added for Salesforce Pub/Sub. ![](../images/2025/05/5-15-2025-10-21-12-AM.png) 7.  Access the login agent from local web app with via a local URL:[http://localhost:9067/admin/sys_info](http://localhost:9067/admin/sys_info) ![](../images/2025/05/5-15-2025-11-03-15-AM.png) 8. Here's the System Information screen showing the Agent Instance Version: 3.06.01 ![](../images/2025/05/5-19-2025-4-31-17-PM.png) 9. If you are already using a non-open firewall, there is no need to register the organization again. However, if you wish to switch from an open firewall to a non-open firewall, you will need to register a new connection destination. ![](../images/2025/05/5-15-2025-11-09-44-AM.png) 10. After successful registration, click on the Connection page to view the connection. ![](../images/2025/05/5-15-2025-11-18-57-AM.png) #### ================================================================================ Book: Tutorials Section: Tutorials Subsection: Skyvva Formula Title: 4. New SPLIT function for Formula Editor Slug: 4-new-split-function-for-formula-editor URL: https://help.skyvva.com/#article/4-new-split-function-for-formula-editor ================================================================================ # 4. New SPLIT function for Formula Editor #### Introducing - In modern data integration and transformation workflows, the ability to efficiently manipulate and parse text strings is crucial. The Skyvva Integration App, a native Salesforce solution, offers a comprehensive formula editor that supports various text functions. However, it currently absence a dedicated SPLIT function, which is essential for dividing strings based on specific delimiters. - Introducing aSPLIT function would significantly enhance the formula editor's capabilities. This function would allow users to divide a text string into an array of substrings using a specified separator. For instance, it SPLIT("a|b|c","|") would yield ["a","b","c"]. Such functionality is particularly beneficial when dealing with delimited data fields, enabling more straightforward data parsing and transformation within integration processes. The proposed implementation of the `SPLIT` Function in the Skyvva Integration App's formula editor would be as follows: ![](../images/2025/05/clipboard-202505131521-ix7rw.png) #### Prerequisite To enhance the text processing capabilities within the **SKYVVA** Integration App's Formula Editor, a new '**SPLIT**' function is proposed. This function aims to provide users with a straightforward method to divide strings based on specified delimiters, thereby facilitating more efficient data transformation and mapping processes. **Function Definition:** - **Name: **SPLIT - **Syntax:** SPLIT(text, separator) - **Description:** The SPLIT function returns an array of substrings by dividing the input 'text' at each occurrence of the specified 'separator'. This is particularly useful for parsing delimited strings into individual components. - **Example:** SPLIT("a|b|c", "|") yields ["a", "b", "c"]. **Use Cases:** - **Data Parsing:** Extracting individual data elements from concatenated strings, such as CSV, JSON, and XML formats. - **Field Mapping:** Assigning specific segments of a string to corresponding fields in target systems during data integration. - **Data Validation:** Ensuring that input strings conform to expected formats by checking the number and content of resulting substrings. #### Summary The SPLIT function is a newly introduced feature in the SKYVVA Integration App's formula editor. It enables users to divide a text string into an array of substrings based on a specified separator. The function is defined as SPLIT(text, separator) and is categorized under the 'Text' group. For instance, SPLIT("a|b|c", "|") returns ["a", "b", "c"]. This enhancement facilitates more efficient text manipulation within integration mappings. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to Use New Agent? Title: 2. How to generate an access token ? Slug: 2-how-to-generate-an-access-token URL: https://help.skyvva.com/#article/2-how-to-generate-an-access-token ================================================================================ # 2. How to generate an access token ? #### Intoduction - Generating an access token in Salesforce using the Client Credentials Flow is ideal for server‑to‑server integrations like the **SKYVVA** iPaaS. Unlike user‑context authentication, this method enables your application to authenticate using only its credentials—no interactive login required. It involves two main configuration steps in Salesforce: #### Pre-require Before attempting to generate an access token, ensure your Salesforce org is configured correctly: - **Configure the Connected App**Navigate to **Setup → App Manager**, locate your existing Connected App, and click **Edit**. Scroll to **API (Enable OAuth Settings)** and **check “Enable Client Credentials Flow.”** Define the necessary OAuth scopes (e.g., “API”), then save your changes. This enables Salesforce to issue tokens for your app. - **Connected App Creation** Navigate to **Setup → App Manager**, edit an existing one. ![](../images/2025/06/WhatsApp-Image-2025-06-09-at-20.56.44_f511c94a.jpg) - **Configure the Connected App**Navigate to **Setup → App Manager**, locate your existing Connected App, and click **Edit**. Scroll to **API (Enable OAuth Settings)** and **check “Enable Client Credentials Flow.”**  Define the necessary OAuth scopes (e.g., “API”), then save your changes. This enables Salesforce to issue tokens for your app. - **Tick on Enable Client Credentials Flow** ![](../images/2025/06/WhatsApp-Image-2025-06-09-at-21.00.31_7aef6da3.jpg) **Step 2: Go to Manage Connected Apps and then edit Connected Apps ** ![](../images/2025/06/WhatsApp-Image-2025-06-09-at-21.02.19_5bc88bb1.jpg) **Select any User to enable access token in the section ****Client Credentials Flow** **![](../images/2025/06/WhatsApp-Image-2025-06-09-at-21.04.21_12f57043.jpg)** **Postman screen side.** **URL: **https://enterprise-ruby-3909-dev-ed.scratch.my.salesforce.com/services/oauth2/token **KeyWord** - grant_type = client_credentials - client_id = …? - client_secret= …? ![](../images/2025/06/WhatsApp-Image-2025-06-09-at-21.05.57_e5804eef.jpg) #### Summary Now, users learn how to obtain an access token with the **SKYVVA** Integration App, following the OAuth 2.0 Client Credentials flow. Start by registering your integration and obtaining a client ID and client secret within **SKYVVA**. Then send a POST request to the OAuth endpoint`/V4/integrate`, including these credentials along with requested permission scopes. **SKYVVA** validates the credentials and issues an access token in the response. Store this token securely, as it authorizes your API calls. Tokens may expire, so implement logic to refresh or request a new token as needed. This method ensures secure, automated access from user integration without using user credentials. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new Data Loader? Title: What is the new Data Loader? Slug: what-is-the-new-data-loader URL: https://help.skyvva.com/#article/what-is-the-new-data-loader ================================================================================ # What is the new Data Loader? #### Introduction SKYVVA´s Free Dataloader is part of the SKYVVA´s Integration Cloud App and is a ]\native force.com App. As a true Cloud Service data can be uploaded over the Web without the need to install any software or hardware. SKYVVA´s Free Dataloader is perfectly suited for a business analyst and administrator to manage the import of critical business information such as accounts, contacts, assets products, leads, or orders on time without being reliant on limited IT resources. Based on an intuitive (Salesforce Look & Feel) Web interface SKYVVA´s Free Dataloader is very easy to configure (No Coding) and maintain. The Free Dataloader is installed as a tab ‘Integration’ directly in the Salesforce menu bar. Fields are mapped by a visual editor, data are transformed using a formula editor. All operations are executed in the familiar Salesforce Look & Feel. Business analysts or administrators get alerted about failures in the service and are enabled to resolute data transforming or process logic without IT help via a message board. You can use Data Loader in two different ways: - User interface—When you use the user interface, you work interactively to specify the configuration parameters, CSV files used for import and export, and the field mappings that map the field names in your import file with the field names in Salesforce. - Command line (Windows only)—When you use the command line, you specify the configuration, data sources, mappings, and actions in files. This enables you to set up Data Loader for automated processing. Data Loader offers the following key features: - An easy-to-use wizard interface for interactive use - An alternate command-line interface for automated batch operations (Windows only) - Support for large files with up to 5 million records - Drag-and-drop field mapping - Support for all objects, including custom objects - Can be used to process data in both Salesforce and Database.com - Detailed success and error log files in CSV format - A built-in CSV file viewer - Support for Windows and Mac #### Pre-requisite **Why do we need to open the firewall or make the local IP become a public IP?** - For the run-time e.g. when the agent process the file user doesn't need to access from Salesforce to the agent. The problem with why user still needs to open the firewall or make their PC have a public IP is because users need to push the cache down to the agent. - This action is triggered from Salesforce and thus the public IP is needed. But why not read the catch from the agent before processing an interface? This is in fact possible but when the user wants to run the interface using our manual process function from the agent control board again we need to call an API from the agent to execute the interface because the interface is an inbound interface and also we have to execute the interface from the agent. - But the user is sitting in Salesforce and triggers the action from the agent control board UI. Because of this function user need the public IP address of the agent to be able to execute the inbound interface e.g. call an API to start the interface execution from the agent to Salesforce. **Salesforce ****Data loader** **SKYVVA App ****Data loader** Need to download on local machine separately No need to download it comes along with **SKYVVA** App Simple Import Free is your cloud-based, user-friendly spreadsheet data loader solution. Salesforce Data loader supports **flat** CSV file format only **Import/Export** Free is your cloud-based, user-friendly spreadsheet SKYVVA App data loader solution. **SKYVVA App** Data loader supports **flat/hierarchical** both with CSV, and XML. JSON formats. Simple Import Free allows both Administrators & non-Administrator users to quickly and easily **import** CSV  into Salesforce all for FREE. **Import/Export** Free allows both Administrators & non-Administrator users to quickly and easily **import/Export** CSV, and XML. JSON formats into Salesforce all for FREE. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] 1. Currently we are supporting - Protocol: Local - Integration Mode: SFDCBulkV2 - File Type: CSV, JSON, XML - License key: not required - Direction: Inbound - Processing: Manually Please hit these link 2. [How to use the Agent on a local PC with a public IP Address?](https://apsara-consulting.com/docs/tutorial-v2-41-lightning/114-how-to-use-the-agent-on-a-local-pc-with-a-public-ip-address/) Users can run the agent on Windows and Linux. 3. [Install Agent for Windows](https://apsara-consulting.com/docs/camel-agent-administration-guide/2-how-to-install-the-agent/3-1-install-agent-for-windows/) 4. [Install Agent for Linux](https://apsara-consulting.com/docs/camel-agent-administration-guide/2-how-to-install-the-agent/3-2-install-agent-for-linux/) [/su_box] Since our Data Loader is a Salesforce App that runs inside Salesforce we build the UI in Salesforce. But to support the Salesforce bulk mode we have to run a client application similar to the Salesforce data loader. Therefore we use the agent as the external client application and use the Salesforce bulk API (we use only version 2 of the bulk API at run time from the Agent) to load millions of records to Salesforce. But the users need to do is to create the interface at the design/configuration time with Skyvva and then use the agent control board to execute the interface. This UI is enough to do this work. Therefore we don't need a separate UI from the old agent. #### Objectives This document describes administrative tasks required to manage the data integration from your system to salesforce. #### Scope and Advantage Currently, our data loader import the file and the user needs to wait until the import process finishes. Sometimes for big-size files, it takes too long and they should have the option to choose the mode e.g. online import or using our batch mode. In batch mode, we will create the file and store the record for processing with our batch scheduler. #### Architecture Overview ![](../images/2021/01/Untitled1.png) SKYVVA´s Dataloader is a native Salesforce App and is designed to integrate data supporting CSV/XML format via a manual file upload. It is simple, intuitive, and powerful to build integration in minutes. It is a Config&Click graphical mapping tool. Skyvva data loader is used to upsert, insert, update, delete, or export Salesforce records. Data Loader is running in Bulk mode. If we want to send data to email, we can check the flag batch mode. But to use this mode we need to make sure that we have the library SKYVVA__Workspace. If not go to create it. **Where do you find the Dataloader?** "Dataloader" is located on the integration level in the form of a custom link. ![](../images/2021/02/1.png) This Custom link to the Data loader dashboard. ![](../images/2021/02/2-1.png) On this first tab, we can select a function that we want to execute. Either you can Import data or export from salesforce. - **Import Data: **The DataLoader is mainly used for importing data from files in CSV, XML, or JSON format. We can do import Starting from the inbound interface. - **Export function**: Like the import function, Dataloader is used for exporting data in files in CSV, XML, or JSON format. We can do Export Starting from outbound interface the first screen of data loader: ![](../images/2021/02/3-4.png) Select the Interface name and click Next ![](../images/2021/02/Untitled3.png) Summary Data Loader is a client application for the bulk import or export of data. Use it to insert, update, delete, or export Salesforce records. When importing data, Data Loader reads, extracts, and loads data from comma-separated values (CSV) files or from a database connection. When exporting data, it outputs CSV files. In the chapter also classified the difference between Salesforce Data Loader and Skyvva App Data Loader. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to use new Data Loader? Title: How to export csv data using the Data Loader? Slug: how-to-export-csv-data-using-the-data-loader URL: https://help.skyvva.com/#article/how-to-export-csv-data-using-the-data-loader ================================================================================ # How to export csv data using the Data Loader? The DataLoader is used for importing and exporting data from/in CSV, XML, or JSON file format. We can do **export **Starting from the **Outbound interface. ** Data Loader is running in Bulk mode. If we want to send data to email, we can check the flag batch mode. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] To use this mode please make sure that we have the library SKYVVA__Workspace. If not go to create it.[/su_box] #### Usecase1: #### Objective: Export CSV File with outbound Interface **without** message type. #### Pre-requisite: - Create Integration and outbound Interface. - Upload Istructure. - Do mapping. #### Steps to use CSV File with Outbound Interface Step 1: Create Integration and Outbound Interface. - Here’s Interface. ![](../images/2021/02/Untitled1-4.png) Step 2:do mapping ![](../images/2021/02/Untitled2-4.png) Step3: Go to Integration detail and click data loader. ![](../images/2021/02/Untitled3-5.png) - Click export it will download automatically. ![](../images/2021/02/Untitled4-3.png) #### Usecase2: #### Objective: Import CSV File with outbound Interface with message type. #### Pre-requisite: - Upload message Type flat CSV. - Create Integration and Inbound Interface. - Do mapping. #### Steps to use CSV File with Outbound Interface: Step 1: Upload Message Type flat CSV. ![](../images/2021/02/Untitled1-5.png) Step2:  Create Integration and outbound Interface linked with message type. - Here’s Outbound Interface. ![](../images/2021/02/Untitled2-5.png) Step 2: Do mapping. - Here’s mapping ![](../images/2021/02/Untitled3-6.png) Step3: Go to Integration detail and click data loader. ![](../images/2021/02/Untitled4-5.png) - Click export it will download automatically. ![](../images/2021/02/Untitled5-5.png) ================================================================================ Book: Tutorials Section: Tutorials Subsection: API Version V4 (/V4/integrate) Title: 6. How to processing Headerless CSV Payloads with SKYVVA V4/integrate API Slug: 6-how-to-processing-headerless-csv-payloads-with-skyvva-v4-integrate-api URL: https://help.skyvva.com/#article/6-how-to-processing-headerless-csv-payloads-with-skyvva-v4-integrate-api ================================================================================ # 6. How to processing Headerless CSV Payloads with SKYVVA V4/integrate API # **Overview** This tutorial walks you through the full process of sending a headerless CSV payload to Salesforce using the SKYVVA V4/integrate API. Because the CSV has no header row, the integration layer parses and maps field values by column position rather than by header names. ![csv-no-header](../images/2026/04/paste-1776826241717.png "Figure 1: SKYVVA V4/integrate API integration flow — data is parsed by column position and mapped to Salesforce fields") # **Prerequisites** Before starting, make sure the following are available: * Access to the SKYVVA V4/integrate API endpoint * Postman (or equivalent HTTP client) installed and configured * A Salesforce org with the SKYVVA package installed and appropriate permissions * A SKYVVA Repository and Metadata Provider already configured # **Part 1: Configuration** Complete the following three steps once to set up the integration. If the MessageType, Inbound Interface, and mapping are already configured, you can skip directly to Part 2\. ## **Step 1: Create the MessageType** Use the Open Editor to generate the MessageType and its FieldEntry definitions. The column headers you enter must match the order of the data columns in your payload. 1. Go to the Repository details page and click Open Editor. 2. Choose file type: CSV. 3. Set CSV Separator: , (comma). The API also supports semicolon ( ; ), tab ( \\t ), and pipe ( | ) delimiters. To use a different delimiter, simply select the corresponding separator here and update your payload format accordingly. 4. Click Next. 5. Enter the column headers in the order they correspond to the data columns. The separator used here must match the CSV Separator selected in step 3 (e.g. use comma if your payload uses comma): `Accnumber,accname,accbillingcity,accbillingcountry,accdescription,acccreatedate,accdatetime,accamount,accquantity,accpercentage` 6. Click Next. 7. Set Root MessageType Name: AccountCSV. 8. Set Data Structure: flat. 9. Click Save. The MessageType FieldEntry is generated with sequentially assigned sequence numbers: ![image](../images/2026/04/paste-1776828082238.png "Figure 2: MessageType FieldEntry generated with sequentially assigned sequence numbers") ## **Step 2: Create the Inbound Interface** Create an Inbound Interface and link it to the Metadata Provider, Repository, and the MessageType created in Step 1\. ![image](../images/2026/04/paste-1776828117076.png "Figure 3: Inbound Interface linked to the Metadata Provider, Repository, and MessageType (CSV without a header") ## **Step 3: Configure the Field Mapping** Open the Mapping tool and map each FieldEntry (source column) to its corresponding Salesforce object field (target). Each column position in the CSV must be mapped to the correct Salesforce field. ![image](../images/2026/04/paste-1776828219274.png "Figure 4: Field mapping configuration in the Mapping tool") # **Part 2: Sending the Payload and Verifying Results** With the configuration in place, follow these steps to send the CSV payload and confirm it is processed correctly. ## **Step 4: Send the CSV Payload via Postman** In Postman, send the CSV payload to the SKYVVA V4/integrate API endpoint. Set the query parameter csvHasNoHeader=true to instruct the integration layer to process the file without a header row. The screenshot below shows a comma delimiter; if you are using a different delimiter, ensure your payload matches the separator configured in Step 1\. ![image](../images/2026/04/paste-1776828326519.png "Figure 5: Setting the csvHasNoHeader=true query parameter in Postman") Use the following comma-delimited payload (3 sample records). If using a different delimiter, update the payload format to match the separator configured in Step 1: ![image](../images/2026/04/paste-1776828261743.png "Figure 6: Sending a CSV payload via Postman — update the delimiter in the payload to match your CSV Separator setting") ## **Step 5: Verify in Message Monitoring** After sending the payload, open Message Monitoring in SKYVVA and confirm that the message status is green. A green status means the payload was received and processed without errors ![image](../images/2026/04/paste-1776828594028.png "Figure 7: Message Monitoring showing a green status — the CSV payload was processed successfully") ## **Step 6: Verify Salesforce Field Values** Navigate to the Salesforce records created by the integration. Confirm that all field values are populated correctly and match the data in the CSV payload, following the column order defined in the mapping. ![image](../images/2026/04/paste-1776828632047.png "Figure 8: Salesforce fields correctly populated according to the configured mapping") # **Summary** In this tutorial, you configured the SKYVVA V4/integrate API to process a headerless CSV payload using a comma delimiter. The integration layer parsed the data by column position and mapped it to Salesforce fields according to your mapping configuration. Always set csvHasNoHeader=true when your CSV has no header row, and ensure the column headers in the MessageType match the exact order of your data columns. A green status in Message Monitoring confirms successful processing. The same configuration pattern applies to semicolon, tab, and pipe delimiters — simply update the CSV Separator in Step 1 \. ================================================================================ Book: Tutorials Section: Tutorials Subsection: SKYVVA Bulk Data Loader Title: 2. How to install SKYVVA Bulk Data Loader Slug: 2-how-to-install-skyvva-bulk-dataloader URL: https://help.skyvva.com/#article/2-how-to-install-skyvva-bulk-dataloader ================================================================================ # 2. How to install SKYVVA Bulk Data Loader ### Introduction This guide provides a detailed walkthrough for installing the **SKYVVA Bulk Data Loader**. This tool is essential for high-volume data processing, allowing you to synchronize large datasets between your local environment and Salesforce with high performance. The **SKYVVA Bulk Data Loader** is a cross-platform application.Please ensure you have downloaded the correct installer for your operating system: * Windows * macOS ![image](../images/2026/04/paste-1777019318511.png "Installation SKYVVA Bulk Dataloader") ### Prerequisites * Java Runtime Environment (JRE): Ensure Java 8 or higher is installed. * System Permissions: You may need Administrative rights to install to certain directories. * Installer File: Ensure you have the `.exe` or `.dmg` setup file downloaded from the Skyvva website. ### Installation Steps #### 1. Welcome Screen Locate your downloaded installer and double-click to run it * The "Welcome to the Skyvva Bulk Dataloader Setup Wizard" will appear. * Click Next to initiate the configuration. ![image](../images/2026/04/paste-1776922411909.png "Welcome screen SKYVVA Bulk Dataloader") #### 2. License Agreement The terms of Service: * Check the box labeled "**I accept the terms in the License Agreement**". * The Next button will now become active; click it to proceed. ![image](../images/2026/04/paste-1776923317217.png "The terms of Service") #### 3. Destination Folder Choose where the application files will live: * Default Path: Typically C:\Users\YourUser\]\AppData\Local\Skyvva\. * Custom Path: Click Change if you prefer to install it on a secondary drive or a specific Program Files folder. * Click Next once the path is confirmed. ![image](../images/2026/04/paste-1776922495961.png "Destination folder") #### 4. Ready to Install This is the final confirmation screen: * Click Install. (Note: If prompted by Windows User Account Control, click Yes). ![image](../images/2026/04/paste-1776922547424.png "Ready to install SKYVVA Bulk Loader") #### 5. Installation Progress No user interaction is required here: * The wizard will extract files, register components, and create shortcuts. * This usually takes less than 1 minute. ![image](../images/2026/04/paste-1776922585193.png "Installation process") #### 6. Finish * Click the Finish button. ![image](../images/2026/04/paste-1776922620653.png "Finish installation") * You can now find the Skyvva Bulk Dataloader icon on your Desktop or in the Start Menu. ![image](../images/2026/04/paste-1776943087214.png "SKYVVA Bulk Dataloader") #### Summary After following the installation guide, you should now understand and be able to perform the following: * Environment Readiness: You know how to verify prerequisites like Java (JRE) and system permissions. * Wizard Navigation: You can move through the setup screens, from License Acceptance to Destination Selection. * Path Management: You understand where the application is installed (default AppData vs. custom paths). * Final Deployment: You know how to verify a successful install and locate the application shortcut to launch the tool. ================================================================================ Book: Tutorials Section: Tutorials Subsection: SKYVVA Bulk Data Loader Title: 1. Why SKYVVA Bulk Data Loader? Slug: 1-why-skyvva-bulk-data-loader URL: https://help.skyvva.com/#article/1-why-skyvva-bulk-data-loader ================================================================================ # 1. Why SKYVVA Bulk Data Loader? ### Introduction In the modern data landscape, moving information between Salesforce and external systems requires more than just a simple "upload" or "download" tool. The **SKYVVA Bulk Data Loader** is an enterprise-grade integration engine designed for high-performance, large-scale bidirectional synchronization. While standard tools exist for small tasks, **SKYVVA** is built for organizations that demand scalability, file flexibility, and deep visibility into both their Inbound and Outbound integration processes—all provided as a free-to-use utility for the community. ![image](../images/2026/04/paste-1777266518418.png "SKYVVA Bulk Dataloader Overview") ### Core Capabilities #### 1. Cost-Effective Solution ![image](../images/2026/04/paste-1776952832177.png "Cost-Effective Solution") A major advantage of this tool is its accessibility. The **SKYVVA Bulk Data Loader** is free, providing enterprise-level features—like JSON/XML support and cloud monitoring—that are often only found in expensive, paid middleware subscriptions. #### 2. Multi-Format & Complex File Support ![image](../images/2026/04/paste-1777268247174.png "Multi-Format & Complex File Support") **SKYVVA** eliminates the need for time-consuming data reformatting by supporting various local file structures for both Inbound and Outbound integrations. * Beyond CSV: It natively supports JSON and XML alongside standard CSV, allowing you to ingest external data or export Salesforce records into the specific format required by third-party systems. * Complex Structures: The tool seamlessly parses and generates "Nested Data" (e.g., a single file containing an Account and all its related Contacts). This ensures you can maintain complex relational hierarchies during imports or preserve data integrity when sending multi-object payloads to external endpoints. * Bidirectional Synchronization: By automating the mapping of these structures in both directions, Skyvva ensures that your external systems and Salesforce remain perfectly synced without the need for manual file splitting or external conversion tools. #### 3. The "Skyvva Advantage": Message Monitoring ![image](../images/2026/04/paste-1776952859722.png "Skyvva Message Monitoring") Unlike standard loaders that save error logs only as local files on your computer, Skyvva centralizes all results in the cloud. Message Board: Every record's status (Completed vs. Failed) is sent to the Salesforce Message Board. Audit & Collaboration: Admins can audit results directly in Salesforce. Any authorized team member can troubleshoot failure reasons without needing access to the original user's local machine. #### 4. Million-Record Scalability ![image](../images/2026/04/paste-1777267875641.png "Million-Record Scalability") **SKYVVA Bulk Data Loader** is specifically engineered to handle millions of records in a single session, providing a robust solution for both massive data ingestions and large-scale exports without compromising system stability. * Bulk API 2.0 Integration: By natively leveraging Salesforce’s Bulk API 2.0, Skyvva processes enormous datasets asynchronously. This ensures that whether you are pushing data into Salesforce or pulling it out for external use, the transfer is handled with maximum efficiency. * Bidirectional Performance: It maintains maximum throughput for inbound and outbound streams, ensuring your Salesforce Org remains responsive and stays strictly within governor limits regardless of the data direction. * Scalability: The engine is designed to manage the complexities of bidirectional synchronization, allowing for high-speed updates to Salesforce records or the generation of high-volume local data files simultaneously. #### 5. Advanced Mapping & Data Governance ![image](../images/2026/04/paste-1777268039769.png "Advanced Mapping & Data Governance") * Skyvva provides the essential tools to maintain data integrity during high-volume Inbound and Outbound transfers. * Smart Mapping: Apply complex logic and formulas to transform data on the fly. This ensures data is normalized before entering Salesforce or reformatted correctly when exported for external consumption. * External ID Support: Seamlessly perform Upsert operations for incoming data or use unique keys to synchronize updates to external systems. This prevents duplicate records and maintains data consistency across millions of rows, even when managing complex relationships across multiple objects in both directions. * Structural Consistency: By leveraging External IDs, Skyvva ensures that your Salesforce Org and external databases remain perfectly aligned, regardless of whether you are importing new records or extracting system updates. ### Summary By choosing the Skyvva Bulk Data Loader, you gain critical business advantages at no cost: High-End Performance: Process millions of records using the fastest API technology available (Bulk API 2.0). Unmatched Flexibility: Skip manual data prep by importing JSON and XML files directly into Salesforce. Enhanced Governance: Maintain a clear, cloud-based audit trail of every success and failure through Message Monitoring, making team-based troubleshooting significantly faster. ================================================================================ Book: Tutorials Section: Tutorials Subsection: SKYVVA Bulk Data Loader Title: 3. SKYVVA Bulk Dataloader – Import Data Phase (Inbound) Slug: 3-skyvva-bulk-dataloader-import-data-phase-inbound URL: https://help.skyvva.com/#article/3-skyvva-bulk-dataloader-import-data-phase-inbound ================================================================================ # 3. SKYVVA Bulk Dataloader – Import Data Phase (Inbound) ### Introduction The Import Phase focuses exclusively on Inbound data flow—moving information from your local environment into Salesforce. Because Skyvva leverages the Salesforce Bulk API 2.0, this process is asynchronous, meaning the data is uploaded in high-speed batches and processed by Salesforce in the background. ![image](../images/2026/04/paste-1777002883068.png "Import Data") ### Step-by-Step Configuration #### Step 1: Authentication (Secure API Connection) Instead of using your personal Salesforce password, the Skyvva Bulk Dataloader requires credentials from a Salesforce Connected App. This ensures the highest level of security for high-volume data transfers. * **Server URL**: Enter your domain URL in format: https://{YourDomainName}.my.salesforce.com * **ClientId & ClientSecret**: Paste the unique keys generated from your Salesforce Connected App. Once all three fields are populated, click the LOGIN button to establish a secure handshake between your computer and your Salesforce Org. ![image](../images/2026/04/paste-1776935164609.png "SKYVVA Bulk Dataloader crendentail form") #### Step 2: Selecting Integration & Interface This step links the local tool to your cloud configuration. * **Integration**: Select your integration name. * **Direction**: Select **Import Data**. (Note: This is mandatory to see your import interfaces). * **Interface**: Choose the specific interface you created for this data (e.g., AccountCsv). This stage ensures the tool uses the correct Mapping Logic and Message Type for your Inbound records. * Click **Next** to choose the file format ![image](../images/2026/04/paste-1777003461351.png) #### Step 3: File Loading (CSV) In this stage, you define how the Dataloader should read your file. For this specific tutorial, we are configuring the tool to process a standard CSV file using a Comma separator. * Data Type: Select CSV from the dropdown menu. * Separator: Choose Comma. This tells the engine that each data field in your file is separated by comma (,) * Remove the header line?: checking this ensures Skyvva only imports the actual data rows. Click the **Next** button to move to the file selection. ![image](../images/2026/04/paste-1777003507612.png) #### Step 4: File Selection & Execution Now the format is configured, you must identify the source file on your local machine to begin the data transfer. * Choose File: Click the orange button to browse your local folders. * Select File: Once chosen, the filename (e.g., bulk2000.csv) will appear below the button. Ensure this is the correct file before proceeding. * Import Data: Click this button to initiate the transfer. The tool will begin chunking your data and sending it to the Salesforce Bulk API Queue. * Cancel/Back: Use these options if you need to re-verify your Interface or Format settings. ![image](../images/2026/04/paste-1777003630262.png) #### Step 5: Execution & Background Processing Once you click the **Import Data** button, the tool begins the secure transmission of your local file to the Salesforce cloud environment. * Processing Window: A pop-up will appear with a loading indicator and the message "Loading Integration..." -> "Running Integration..." -> "Processing... please wait." * Asynchronous Upload: Because the tool is optimized for millions of records, it uses an asynchronous process. This means it uploads the data in high-speed batches directly into the Salesforce Bulk Queue. * Stop Button: Use the red Stop button only if you need to abort the transfer immediately (e.g., if you realized the wrong file was selected). ![image](../images/2026/04/paste-1777003688855.png) #### Step 6: Upload Completion When the progress bar finishes, an INFO dialogue box will appear with the message: "The process is completed!" * Local Confirmation: This means 100% of your data has been successfully transmitted from your computer to the Salesforce Bulk API. * Click OK to close the dialogue box. ![image](../images/2026/04/paste-1777003923773.png) You may now safely close the Skyvva Bulk Dataloader application. Your local workstation's task is officially finished. #### Step 7: Result Validation via Message Monitoring Once the asynchronous processing is finished, the Skyvva Message Board provides a transparent audit trail of your data load. This interface allows you to see the functional outcome of every single record, enabling you to distinguish between successful imports and those requiring data correction. As seen in the results, Skyvva categorizes every record using visual status icons and a hierarchical message structure: ![image](../images/2026/04/paste-1776942493098.png) **The Root Message** The top row is the Root Message. It acts as a container for your entire batch of records. * Partial Status: If the Root Message shows a Partial status, it means the batch contains at least one failed record. * Action: You must expand the Root Message to see the specific successful and failed records inside. **Successful Records (Green Flag)** * Status: Marked with a Green Flag. * Comment: Displays "Creation of Account" or "Update of Account." * Meaning: These records passed all mapping logic and Salesforce validation rules. They are now live in your Salesforce Org (e.g., Account A-100002). **Failed Records (Red Flag)** * Status: Marked with a Red Flag. * Comment: Provides the exact error reason from Salesforce. * Common Observed Errors: * MISSING_ARGUMENT: The External ID or a required link field is empty. * REQUIRED_FIELD_MISSING: A mandatory Salesforce field (like "Name") was not provided in the source file. The Skyvva Advantage: You can read these error stack traces directly in Salesforce to understand exactly why a record failed. ### Summary By completing these steps, you have mastered the Inbound Import Workflow for CSV data: * Local Hand-off: The Dataloader successfully uploaded the CSV rows to the Salesforce Bulk Queue. * Asynchronous Processing: Salesforce processed the records in the background using your pre-defined mapping. * Root Status Logic: You understand that a Partial root message is a "warning light" signaling that your batch contains failed records. * Final Audit: You know that a Green Flag is the only definitive proof that your CSV data is now a live Salesforce record. ================================================================================ Book: Tutorials Section: Tutorials Subsection: SKYVVA Bulk Data Loader Title: 4. SKYVVA Bulk Dataloader – Export Data Phase (Outbound) Slug: 4-skyvva-bulk-dataloader-export-data-phase-outbound URL: https://help.skyvva.com/#article/4-skyvva-bulk-dataloader-export-data-phase-outbound ================================================================================ # 4. SKYVVA Bulk Dataloader – Export Data Phase (Outbound) ### Introduction The Export Phase focuses on the Outbound data flow—retrieving large volumes of records from Salesforce and saving them to your local environment. By leveraging the Salesforce Bulk API 2.0, the **SKYVVA Bulk Dataloader** can extract up to 100 million records per day asynchronously. This ensures high-speed data retrieval without impacting your organization’s real-time performance or exceeding standard synchronous governor limits. ![image](../images/2026/04/paste-1777031265717.png "SKYVVA Bulk Dataloader – Export Data Phase overview") ### Step-by-Step Configuration #### Step 1: Authentication (Secure API Connection) Instead of using your personal Salesforce password, the **SKYVVA Bulk Dataloader** requires credentials from a Salesforce Connected App. This ensures the highest level of security for high-volume data transfers. * **Server URL**: Enter your domain URL in format: https://{YourDomainName}.my.salesforce.com * **ClientId & ClientSecret**: Paste the unique keys generated from your Salesforce Connected App. Once all three fields are populated, click the LOGIN button to establish a secure handshake between your computer and your Salesforce Org. ![image](../images/2026/04/paste-1776935164609.png "SKYVVA Bulk Dataloader crendentail form") #### Step 2: Defining the Outbound Path This stage ensures the **SKYVVA Bulk Dataloader** uses the correct Interface and Mapping logic for your data export. * Integration: Select your Integration name. * Direction: Select **Export Data**. (This is mandatory to see your export interfaces). * Interface: Choose the specific interface created for data extraction. Click the **Next** button to move to the file format selection. ![image](../images/2026/04/paste-1777014016755.png) #### Step 3: Data Format & Execution While Skyvva natively supports XML and JSON for complex hierarchical needs, this process focuses on CSV configuration: * Data Type: Select CSV from the dropdown menu. * Separator: Choose Comma. This tells the engine that each data field in your file is separated by comma (,) * Remove the header line?: checking this ensures Skyvva only export the actual data rows. ![image](../images/2026/04/paste-1777014974919.png) #### Step 4: File Configuration This stage is where you define where the exported CSV file will be saved on your computer and what it will be named. * Choose Export Folder * Click the Choose Folder button (A file explorer window will open. Select the local directory on your computer where you want the exported data to be stored.) * Once selected, the text "No folder selected" will change to display your chosen file path. * Enter File Name * Enter output file name (e.g., Account_Export_April2026). * Note: You do not need to add the .csv extension; it typically handles the format based on your previous "ExportCSV" selection in Step 3. * Finalize the Step * Once both fields are filled, the Export Data button at the bottom will become active. * Click **Export Data** to begin the actual extraction of data from Salesforce to your local folder. ![image](../images/2026/04/paste-1777015261338.png) #### Step 5: Execution & Monitoring During the active processing stage, Skyvva provides real-time status updates until the final confirmation is reached. * The "Exporting…" message and loading spinner indicate that Skyvva is retrieving records from Salesforce and writing them to your local drive. * Once complete, a confirmation alert will appear indicating a successful export. ![image](../images/2026/04/paste-1777015326788.png) #### Step 6: Final Phase This stage signifies that the integration process has moved from "Processing" to "Completed." * A pop-up confirms "Export Data Successful," indicating all records were retrieved without critical errors. * The file Account_Export_April2026.csv is now available in your local directory (C:\Export Data Test). ![image](../images/2026/04/paste-1777022695774.png) #### Step 7: Completion & Verification **1. Status & File Confirmation** * A pop-up message confirms "Export Data Successful." indicating that all records were retrieved and processed without critical errors. * The file "AccountExportApril2026.csv" is now available in the configured local directory: C:\Export Data Test. * The export follows the defined MessageType mapping and Field Entries in the ExportCSV interface. **2. Post-Export Verification Steps** To ensure complete data accuracy, perform the following checks: * Skyvva Message Monitoring: ![image](../images/2026/04/paste-1777021785838.png "Skyvva Message Monitoring for Export Data") * Verify the file exists local directory and check the file size to ensure it matches your expectations for the volume of data exported. #### Summary The Export Data Phase confirms the successful journey of your data from Salesforce to your local environment. * Message Monitoring: the Green Status Flag in Skyvva Message Monitoring is your definitive proof of success. It validates that the ExportCSV interface processed the records without errors, ensuring 100% data integrity and providing a traceable audit trail for the job. * Multi-Format Support :the final output is a physical file saved to your configured directory (e.g., C:\Export Data Test). While this process used CSV, Skyvva natively supports XML and JSON formats as well. This ensures your data—whether flat or hierarchical—is perfectly formatted for any external system. * The process is complete when the Success Notification matches the Green Message in Salesforce and the verified file on your drive. Your data is now synchronized, validated, and ready for use. ================================================================================ Book: Tutorials Section: Tutorials Subsection: API Version V4 (/V4/integrate) Title: 7. How to use Copy Node in Skyvva Inbound Integration Slug: 7-how-to-use-copy-node-in-skyvva-inbound-integration URL: https://help.skyvva.com/#article/7-how-to-use-copy-node-in-skyvva-inbound-integration ================================================================================ # 7. How to use Copy Node in Skyvva Inbound Integration # Introduction In some integration scenarios, a single source record may need to be transformed into multiple records in Salesforce. The **Copy Node** function (also referred to as Duplicate Node) in the Skyvva graphical Mapping Tool allows a single target object node to be duplicated, enabling one inbound payload — from flat source data such as CSV, JSON, or XML — to create multiple Salesforce records, each mapped independently. When applied, Skyvva duplicates the node and auto-generates a child interface for each copy — no manual interface creation or custom logic required. ![image](../images/2026/05/paste-1778147421508.png "Copy Node Skyvva inbound Integration") This tutorial walks through the complete setup and test flow for the Copy Node feature: * Generate a Message Type from the JSON payload. * Create an Inbound Interface and link it to the Message Type. * Map Case and CaseComment nodes and fields in the Mapping Tool — apply Copy Node on CaseComment to duplicate it. * Save the mapping — child interfaces are auto-generated. * Change each child interface operation from Upsert to Insert. * Post JSON data from Postman to the Skyvva API v4/integrate endpoint. * Verify the result in Message Monitoring and Salesforce. # Step-by-Step Guide Follow these steps in order. Each step maps directly to the overview flow above: ### Step 1: Initial Setup * Generate a Message Type — Go to Metadata Provider → Repository, upload the source payload (in this example, a JSON file) to auto-generate the Message Type. * Create an Inbound Interface for the Case object with an Upsert operation and link the Metadata Provider, Repository, and Message Type generated above. This establishes the entry point for your source data. ### Step 2: Mapping Go to the Interface details and open the Mapping tool. Perform the following mappings for both target objects: * Case (Parent Node) — map the source node to the Case target node first, then map the fields. * CaseComment (Original Node and Copy Node) — the CaseComment node already exists in the Mapping. Map the source node to the CaseComment target node, then map the fields (this becomes the Original node). Then right-click the CaseComment node and select **Copy Node** — a form will appear allowing you to keep the same node name or rename it. Map the fields of the duplicated node (CaseComment Copy) separately. ![image](../images/2026/05/paste-1778147548679.png "Copy node menu") Configure the field mappings for each node as follows: ![image](../images/2026/05/paste-1778147622064.png "Mapping copy node of CaseComment object") ### Step 3: Save Mapping Interfaces are created automatically after saving the mapping, Skyvva automatically creates the corresponding interfaces: * **Main Interface** — handles the Case (parent) record upsert * **Child Interface (1)** — handles CaseComment (Original) record upsert (to be changed to Insert in Step 4\) * **Child Interface (2)** — handles CaseComment (Copy) record upsert (to be changed to Insert in Step 4\) No manual interface creation is needed for the child objects — Skyvva generates them from the Copy Node. ### Step 4: Change Child Interface Operation from Upsert to Insert After saving, Skyvva auto-generates a child interface for each CaseComment node, inheriting the **Upsert** operation from the parent interface by default. However, **CaseComment** does not have an External ID field — it is always a new record created as a child of a Case, so **Insert**. To do this for each child interface (CaseComment Original and CaseComment Copy): * Navigate to the child interface. * Locate the **Operation** field and change it from **Upsert** to **Insert**. * Save the interface. Repeat for the second child interface. > **Note:** This applies specifically to objects like CaseComment that do not support External IDs. For objects that do support External IDs (such as Case), Upsert remains valid and should be kept. ### Step 5: Post Data from Postman With all interfaces configured, send your JSON data to the **Skyvva API V4/integrate** endpoint using Postman. Ensure your payload includes all required fields for both Case and CaseComment. Example payload structure (JSON): ``` { "caseExternalId": "C-10045", "subject": "Login Issue", "description": "User unable to login to portal", "priority": "High", "comment1_text": "User reported issue at 9 AM", "comment1_author": "Support Agent A", "comment2_text": "Support team has started working on this case.", "comment2_author": "Support Agent B" } ``` The response returns 200 OK with three completed operations: * Case created — confirmed by "Creation of Case" with ExtValue: "C-10045" * CaseComments inserted — both entries in ListOfCaseComment show "MessageStatus": "Completed" with a Salesforce record ID each A single POST to the **Skyvva API V4/integrate** endpoint successfully produced all three records. ![image](../images/2026/05/paste-1778147801495.png "Push json data from Postman and create multiple record") ### Step 6: Verify in Message Monitoring and Navigate to Salesforce Records After posting, open **Message Monitoring** in Skyvva to verify the records were processed successfully. From the monitoring record, you can navigate directly to the created records in Salesforce to confirm the data is correct. * A **MessageStatus: Completed** on all interfaces confirms the records were successfully inserted into Salesforce. ![image](../images/2026/05/paste-1778147888929.png "Message Moniotring showing the message complete status of Copy Node function") In Message Monitoring, the **sObject** column displays the Salesforce object for each processed record. Click on **Case** to navigate directly to the Case record in Salesforce. The following confirms the integration worked correctly: * Case record created — the case title, Subject, and Description reflect the values sent in the payload. * External ID mapped correctly — the Case\_ExID field shows the value from the payload (e.g., C-10045), confirming the upsert key was applied correctly. * Two CaseComments created — the Feed section on the Case record shows both comments as separate entries, confirming that Copy Node successfully duplicated the CaseComment and inserted each one independently. ![image](../images/2026/05/paste-1778148028623.png "Case comment created") # Summary The **Copy Node** function in Skyvva allows a single inbound payload to generate multiple Salesforce records within a single interface — child interfaces are auto-generated, no manual creation required. In this guide, one JSON payload produced a Case and two linked CaseComment records via the **Skyvva API V4/integrate**. The same approach can be extended to any target object that requires multiple record inserts from a single payload. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to create MessageTypes from file payloads: CSV, XML, and JSON Title: 1. How to create MessageTypes from CSV file payloads Slug: 1-how-to-create-messagetypes-from-csv-file-payloads URL: https://help.skyvva.com/#article/1-how-to-create-messagetypes-from-csv-file-payloads ================================================================================ # 1. How to create MessageTypes from CSV file payloads ## **Introduction** Skyvva's metadata engine supports integration scenarios where systems exchange data through structured CSV payloads. When a CSV file is uploaded, the engine analyzes its header columns and automatically generates MessageTypes and Field Entries based on the detected structure — whether flat or hierarchical. CSV is a widely used format for data exchange due to its simplicity and compatibility. In Skyvva, CSV payloads drive metadata creation through the Open Editor, enabling you to quickly define the data structures needed for Inbound and Outbound integration interfaces. While CSV is a commonly used format across many data exchange scenarios, this guide focuses specifically on CSV file payloads uploaded through the Open Editor. Other use cases that involve CSV data, such as API responses or external data streams, are not covered here. This guide covers two key scenarios: uploading a flat CSV (all columns in one object) and uploading a hierarchical CSV (columns spanning multiple related objects such as Account and Contact). Both result in reusable MessageTypes that can power your integration configuration. ![image](../images/2026/05/paste-1778779190361.png "CSV Payload Overview Diagram") ## **Scenario 1: Upload CSV — Flat Structure** This scenario applies when your CSV contains data from a single object — for example, a list of Accounts. All columns map to one flat MessageType with a linear sequence of Field Entries. ### **Step 1 – Upload Payload** Upload a CSV file containing flat data (e.g., Accounts only): * Go to Repository details → click Open Editor * Select file type: CSV, separator: , (comma) * Paste your CSV payload (separator must match) → Click Next ```csv AccNumber,AccName,AccBillingCity,AccCountry,AccDescription A-2001,AccountTest1,Berlin,Germany,Test Description ``` * Set Root MessageType Name: AccountCSV, Data Structure: ***Flat*** ![image](../images/2026/05/paste-1778774220966.png "Root MessageType Name: AccountCSV, Data Structure: Flat") * Click Save to confirm metadata generation. ### **Step 2 – Metadata Generation Result** Once saved, the page refreshes and displays the generated MessageType in the list view. Field Entries are created with sequentially assigned sequence numbers, one per CSV column header. ![image](../images/2026/05/paste-1778774346276.png "Repository list — AccountCSV MessageType generated") Navigate into *AccountCSV* MessageType to verify the Field Entries ![image](../images/2026/05/paste-1778774386530.png "[ Screenshot: AccountCSV — Field Entries list view") > **Note:** The generated Field Entries are now ready to use in the next step of your Interface configuration. ## **Scenario 2: Upload CSV — Hierarchical (Parent-Child) Structure** This scenario applies when your CSV contains data from two related objects — for example, Account (parent) and Contact (child). Rather than treating all columns as one flat MessageType, you define a parent MessageType and add child MessageTypes to represent the relationship between data objects. Key difference from Scenario 1: After uploading the payload, you use the Open Editor tree view to manually assign which fields belong to the parent and which belong to each child node. ### **Step 1 – Upload Payload** Upload a CSV file containing hierarchical data (e.g., Accounts with related Contacts): * Go to Repository details → click Open Editor * Select file type: CSV, separator: , (comma) → click Next * Paste your CSV payload (separator must match) → click Next ```csv AccNumber,AccName,AccBillingCity,AccCountry,Cont_FirstName,Cont_LastName,Cont_Email 2001,Test1,Berlin,Germany,First_Test1,Last_Test1,info@mymail.com ``` * Set Root MessageType Name: AccountParent, Data Structure: **Hierarchical** → click Next ![image](../images/2026/05/paste-1778818905233.png "Root MessageType Name: AccountParent, Data Structure: Hierarchical") * Once the tree is displayed, *AccountParent* is set as the root node. Click AccountParent → Edit on AccountParent to assign parent-level fields. ![image](../images/2026/05/paste-1778818952571.png "Editor tree view — AccountParent as root node") * Specify the field name, select the desired field, and click Save. ![image](../images/2026/05/paste-1778819006606.png "Field assignment form — AccountParent fields") * The Editor tree refreshes * Click **Add Child** to add a child node (Contact). Specify the field name, select the desired field, and click **Save**. The Editor tree refreshes showing *AccountParent* and *ContactChild* configured. the form return to Editor tree ![image](../images/2026/05/paste-1778819091961.png "AccountParent-root and Contact-child configured") * Click Save to generate metadata. ### **Step 2 – Metadata Generation Result** Once saved, the Repository list refreshes and displays the parent and child MessageTypes: * AccountParent at Level 0 (root, hasChild = true) * ContactChild at Level 1 (child, Parent = AccountParent) ![image](../images/2026/05/paste-1778819164058.png "Repository list — AccountParent-Level 0 and Contact-Level 1") Navigate into each MessageType to verify the Field Entries: * AccountParent * ContactChild > **Note:** The generated Field Entries for both AccountParent and Contact are now ready to use in the next step of your Interface configuration. # **Summary** * CSV payloads enable rapid metadata generation through the Skyvva Open Editor. * Flat CSV files produce a single MessageType with one Field Entry per column header. * Hierarchical CSV files (with data spanning multiple objects) require manual parent-child assignment via the Open Editor tree view. * The resulting MessageTypes are structure-based and reusable — the same structure generated from CSV can be applied across Inbound and Outbound interfaces, and even reused when switching to other formats such as XML or JSON, as long as the field structure is consistent. * No manual schema definition is required; the engine derives everything from the CSV payload automatically. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to create MessageTypes from file payloads: CSV, XML, and JSON Title: 2. Creating MessageTypes from XML file payloads Slug: 2-creating-messagetypes-from-xml-file-payloads URL: https://help.skyvva.com/#article/2-creating-messagetypes-from-xml-file-payloads ================================================================================ # 2. Creating MessageTypes from XML file payloads ## **Introduction** Skyvva's metadata engine supports integration scenarios where systems exchange data through structured XML payloads. Unlike CSV, XML does not require column definitions or separators — the system reads the XML tag names directly as field names and detects the data structure from the payload hierarchy. When an XML file is uploaded via the Open Editor, the engine automatically parses the tag structure and generates MessageTypes and Field Entries. This works for both flat XML (repeating records with no nesting) and hierarchical XML (nested parent-child elements such as Orders containing OrderItems). While XML is a widely used format across many integration scenarios in Skyvva, this guide focuses specifically on XML file payloads uploaded through the Open Editor. Use cases such as API-based integrations or external system calls that also rely on XML are not covered here. This guide covers two key scenarios: uploading a flat XML payload and uploading a hierarchical XML payload. In the hierarchical case, Skyvva automatically detects the parent-child relationships from the XML nesting — no manual tree assignment is required. ![image](../images/2026/05/paste-1778778979703.png "XML Payload Overview Diagram") ## **Scenario 1 : Upload XML — Flat Structure** This scenario covers uploading an XML file that contains repeating flat records, where each record contains only a single level of fields with no nested child objects. The system reads the XML tags and automatically generates one MessageType with corresponding Field Entries. Although the XML may contain a root wrapper element (e.g., OrdersMessage) and repeating child nodes (e.g., Order), the structure remains flat as long as no nested child elements exist within each record. ### **Step 1 – Upload Payload** Upload an XML file containing flat repeating records (e.g., multiple Orders with no nested child objects): * Go to Repository details → click Open Editor * Select file type: XML → click Next * Paste your XML payload (example below) → click Save ```xml ORD-2026-1001 2026-05-08 Draft EUR 2450.00 ORD-2026-1002 2026-05-08 Draft EUR 2460.00 ``` > **Note:** Unlike CSV, XML does not require an intermediate configuration step. After pasting the payload, click Save directly — the system reads the tag structure and generates MessageTypes automatically. ### **Step 2 – Metadata Generation Result** Once saved, the page refreshes and the generated MessageTypes appear in the Repository list. The system identifies: * OrdersMessage — the root wrapper node * Order — the repeating flat record structure ![image](../images/2026/05/paste-1778819736982.png "Repository list — OrdersMessage and Order MessageTypes generated") The following Field Entries are automatically generated from the Order node, each with a sequential sequence number: * OrderNumber * EffectiveDate * Status * CurrencyIsoCode * TotalAmount ![image](../images/2026/05/paste-1778819866955.png "Order MessageType — Field Entries list view") > **Note:** The generated MessageTypes and Field Entries are now ready to be used in the next step of the Interface configuration. ## **Scenario 2: Upload XML — Hierarchical (Parent-Child) Structure** This scenario applies when the XML contains nested elements representing two or more related objects — for example, an Order (parent) containing OrderItems (children). The system detects the nested structure and automatically generates a parent MessageType and one or more child MessageTypes to represent the relationship. Key difference from CSV: After the XML payload is uploaded, Skyvva automatically generates the MessageType structure, including the full parent-child hierarchy, based on the payload structure. No manual tree assignment is required. ### **Step 1 – Upload Payload** Upload an XML file containing hierarchical data (e.g., Order with nested Account, BillingAddress, and OrderItems): * Go to Repository details → click Open Editor * Select file type: XML → click Next * Paste your XML payload (example below) → click Save ```xml ORD-2026-1001 CUST-10045 Berlin Tech Solutions GmbH 2026-05-08 Draft EUR Alexanderplatz 12 Berlin Germany 2450.00 1 LAPTOP-PRO-15 2 950.00 1900.00 ``` **Step 2 – Metadata Generation Result** Once saved, the page refreshes and Skyvva automatically analyzes the XML hierarchy, detects nested nodes, and generates the full parent-child MessageType structure. The Repository list displays: * OrdersMessage — root wrapper node * Order — parent MessageType * OrderItem — repeating child MessageType under OrderItems ![image](../images/2026/05/paste-1778820165998.png "Repository list — Order-parent and OrderItem-child MessageTypes generated") > **Note:** Nested wrapper elements such as Account, BillingAddress, and OrderItems are recognized based on hierarchy. Their child elements (e.g., ExternalCustomerId, Street, LineNumber) are automatically generated and assigned under the corresponding parent node. > Navigate to the Order MessageType to review its Field Entries, then navigate to OrderItem to inspect its Field Entries — each assigned sequential sequence numbers. * Order: ![image](../images/2026/05/paste-1778820281272.png "Order MessageTypes — Field Entries list view") * OrderItem: ![image](../images/2026/05/paste-1778820344137.png "OrderItem MessageTypes — Field Entries list view") > **Note:** Once all Field Entries are verified, they are ready to be used in the next step of the Interface configuration. # **Summary** * XML payloads are parsed by tag name — no separators or column definitions are needed. * Flat XML (repeating records with no nested child elements) generates a single MessageType with one Field Entry per tag. * Hierarchical XML (nested parent-child elements) triggers automatic hierarchy detection — Skyvva generates the full parent-child MessageType structure without requiring manual tree assignment. * Nested wrapper elements (e.g., Account, BillingAddress) are recognized and their child tags are mapped as Field Entries under the appropriate MessageType level. * The generated MessageTypes are reusable and serve as the structural foundation for Inbound and Outbound interface configuration. ================================================================================ Book: Tutorials Section: Tutorials Subsection: How to create MessageTypes from file payloads: CSV, XML, and JSON Title: 3. Creating MessageTypes from JSON File Payloads Slug: 3-creating-messagetypes-from-json-file-payloads URL: https://help.skyvva.com/#article/3-creating-messagetypes-from-json-file-payloads ================================================================================ # 3. Creating MessageTypes from JSON File Payloads ## **Introduction** Skyvva's metadata engine supports integration scenarios where systems exchange data through structured JSON payloads. Unlike CSV, JSON does not require separators or column definitions. Unlike XML, it uses key-value pairs instead of tags. The system reads JSON key names directly as field names, making schema setup fast and intuitive. When a JSON file is uploaded via the Open Editor, the engine parses the key structure and automatically generates MessageTypes and Field Entries. This works for flat JSON (all keys at the root level) and hierarchical JSON (nested objects and arrays representing parent-child relationships such as Orders containing OrderItems). While JSON is a widely used format across many integration scenarios in Skyvva, this guide focuses specifically on JSON file payloads uploaded through the Open Editor. Use cases such as API-based integrations that also rely on JSON are not covered here. This guide covers two key scenarios: uploading a flat JSON payload and uploading a hierarchical JSON payload. In the hierarchical case, you define the parent-child structure manually using the Open Editor tree view, assigning keys to the appropriate MessageType levels. ![image](../images/2026/05/paste-1778821252266.png " JSON Payload Overview Diagram") ## **Scenario 1: Upload JSON — Flat Structure** This scenario covers uploading a JSON file that contains a flat structure, where all fields exist directly under the root object with no nested child objects or arrays. The system reads the JSON keys and automatically generates one MessageType with corresponding Field Entries. ### **Step 1 – Upload Payload** Upload a JSON file containing flat data (e.g., a simple Order with no nested objects): * Go to Repository details → click Open Editor * Select file type: JSON → click Next * Paste your JSON payload (example below) → click Next ```json { "OrderNumber": "ORD-2026-1001", "EffectiveDate": "2026-05-08", "Status": "Draft", "CurrencyIsoCode": "EUR", "TotalAmount": 2450.00 } ``` * Enter a root name: Order → click Save to confirm metadata generation ### **Step 2 – Metadata Generation Result** Once saved, the page refreshes and the Order MessageType appears in the Repository list. ![image](../images/2026/05/paste-1778821434833.png "Repository list — Order MessageType generated") The system reads each JSON key as a field name and auto-generates one Field Entry per key, each assigned a sequential sequence number. ![image](../images/2026/05/paste-1778821736443.png "Order MessageType — Field Entries list view") > **Note:** The generated Field Entries are now ready to use in the next step of your Interface configuration. ## **Scenario 2: Upload JSON — Hierarchical (Parent-Child) Structure** This scenario applies when the JSON contains nested objects representing two or more related entities — for example, an Order (parent) containing OrderItems (child array). The system detects the nested structure and automatically generates a parent MessageType and child MessageTypes based on the JSON nesting. Key difference from CSV: After the JSON payload is uploaded, Skyvva automatically generates the MessageType structure, including the full parent-child hierarchy, based on the JSON nesting. No manual tree assignment is required. ### **Step 1 – Upload Payload** Upload a JSON file containing hierarchical data (e.g., Order with nested Account, BillingAddress, and OrderItems): * Go to Repository details → click Open Editor * Select file type: JSON → click Next * Paste your JSON payload (example below) → click Next ```json { "OrderNumber": "ORD-2026-1001", "Account": { "ExternalCustomerId": "CUST-10045", "Name": "Berlin Tech Solutions GmbH" }, "EffectiveDate": "2026-05-08", "Status": "Draft", "CurrencyIsoCode": "EUR", "BillingAddress": { "Street": "Alexanderplatz 12", "City": "Berlin", "Country": "Germany" }, "TotalAmount": 2450.00, "OrderItems": [ { "LineNumber": 1, "ProductCode": "LAPTOP-PRO-15", "Quantity": 2, "UnitPrice": 950.00, "TotalPrice": 1900.00 } ] } ``` * Enter a root name: Order → click Save ### **Step 2 – Metadata Generation Result** Once saved, the page refreshes and Skyvva automatically analyzes the JSON structure, detects nested objects and arrays, and generates the MessageTypes. The Repository list displays: * Order — root-level parent MessageType * OrderItem — repeating child MessageType within the OrderItems array ![image](../images/2026/05/paste-1778821945645.png "Repository list — Order-parent and OrderItem-child MessageTypes generated") > **Note:** Nested objects such as Account and BillingAddress are recognized as grouping nodes. Their child keys (e.g., ExternalCustomerId, Street, City) are mapped as fields belonging to their respective MessageType level. Arrays such as OrderItems are treated as repeating child nodes. Navigate to Order to review its Field Entries, then navigate to OrderItem to inspect its Field Entries — each assigned sequential sequence numbers. * Order: ![image](../images/2026/05/paste-1778822020496.png "Order MessageTypes — Field Entries list view") * OrderItems: ![image](../images/2026/05/paste-1778822142387.png "OrderItem MessageTypes — Field Entries list view") > **Note:** Once all Field Entries are confirmed, they are ready to be used in the next step of the Interface configuration. # **Summary** * JSON payloads use key names directly as field names — no separators or tag definitions are needed. * Flat JSON (all keys at the root level, no nesting) generates a single MessageType with one Field Entry per key. * Hierarchical JSON (nested objects and arrays) triggers automatic hierarchy detection — Skyvva generates the full parent-child MessageType structure without requiring manual tree assignment. * Nested objects (e.g., Account, BillingAddress) are recognized as grouping nodes; their keys are mapped as Field Entries under the appropriate MessageType level. Arrays are treated as repeating child nodes. * The generated MessageTypes are reusable and serve as the structural foundation for Inbound and Outbound interface configuration. ================================================================================ Book: Tutorials Section: Tutorials Title: 171. How to applying SKYVVA global settings license for Salesforce System Automations? Slug: 171-how-to-applying-skyvva-global-settings-license-for-salesforce-system-automations URL: https://help.skyvva.com/#article/171-how-to-applying-skyvva-global-settings-license-for-salesforce-system-automations ================================================================================ # 171. How to applying SKYVVA global settings license for Salesforce System Automations? ## Introduction When designing enterprise integrations using SKYVVA, relying solely on individual user license assignments introduces a major architectural vulnerability. Salesforce includes several native background engines that intentionally drop the active human user's session token and shift execution context to system identities like the Automated Process User or Default Workflow User. Because these headless system accounts do not have accessible user detail pages where a license can be manually assigned, any background integration step will instantly crash with a license validation error. This tutorial provides a comprehensive guide to identifying these system context tools and applying a global SkyvvaSetting configuration to ensure uninterrupted execution of your integration pipelines. ![image](../images/2026/06/paste-1780899163746.png "Diagram of Skyvva global license") ## Table of Contents 1. The General License Error Pattern 2. Salesforce Automation Tools Using System Contexts 3. Summary Table of System Context Tools 4. Step-by-Step Implementation Guide 5. Troubleshooting #### Section 1: The General License Error Pattern When any background tool transitions execution away from a standard human profile, it hits a licensing wall if credentials are only stored at the individual user level. The SKYVVA package rejects the transaction and the failure surfaces in two places: in the Message Monitoring, and the Salesforce debug logs. **On the SKYVVA Message Monitoring** The failed integration record will show the following error in its Message Comment column: ``` ERROR: No Skyvva Integration Suite License key for this user: Automated Process in /. Enter a valid key for field SKYVVA LICENSE KEY on the user page ``` This error will also appear in the Salesforce debug log. Depending on the specific platform feature invoked, the identity flagged will be Automated Process, Default Workflow User, or Platform Integration User. > **Important**: The error message instructs you to Enter a valid key for field SKYVVA LICENSE KEY on the user page. This guidance is misleading for system context failures. The Automated Process user does not have an accessible user detail page, so setting the key at the user level is impossible. The correct fix is to apply the license key at the Default Organization Level Value in SkyvvaSetting, as described in Section 4. #### Section 2: Salesforce Automation Tools Using System Contexts The following native Salesforce mechanisms drop the active human session and hand execution over to background system users, making them susceptible to this licensing failure: ##### 1. Platform Event Triggers * The Mechanism: An external middleware system or internal Apex process publishes a message event to a high-volume event bus. * The Context: The asynchronous subscriber trigger designed to catch this event executes entirely under the Automated Process User. ##### 2. Change Data Capture (CDC) Triggers * The Mechanism: When a record changes, Salesforce automatically streams a data change event. * The Context: Any Apex trigger written to subscribe to these streaming updates runs exclusively under the Automated Process User. ##### 3. Salesforce Flow Asynchronous Actions * The Mechanism: Lightning Flows configured with an Asynchronous Path (Run Asynchronously) split the execution thread to run later. * The Context: The initial transaction runs as the logging user, but the secondary asynchronous path is picked up and executed by the Automated Process User. ##### 4. Salesforce Flow Pause Elements * The Mechanism: When a flow hits a Pause element (waiting for a time duration or an external signal), the user session terminates. * The Context: When the pause condition is met and the flow resumes, it wakes up under the background context of the Automated Process User. ##### 5. Time-Dependent Actions (Workflow Rules & Process Builder) * The Mechanism: Automation rules scheduled to execute at a delayed offset. * The Context: When the time queue processes the task, the engine fires the transaction under the Default Workflow User. ##### 6. Salesforce Omni-Studio & Cross-Cloud Core Engines * The Mechanism: Automated background tasks driven by Einstein features or native cross-cloud synchronization packages. * The Context: These platform mechanisms execute operations under the Platform Integration User. #### Section 3: Summary Table of System Context Tools | Salesforce Automation Tool | Specific Feature/Trigger | Execution Context Identity | Impact on SKYVVA | | ----- | ----- | ----- | ----- | | Platform Events | Inbound/Outbound event triggers | Automated Process User | Fails with License Error | | Change Data Capture | Event-driven change triggers | Automated Process User | Fails with License Error | | Lightning Flows | Asynchronous Paths | utomated Process User | Fails with License Error | | Lightning Flows | Pause / Wait Elements | Automated Process User | Fails with License Error | | Workflow Rules | Time-Dependent Actions | Default Workflow User | Fails with License Error | | Process Builder | Scheduled Actions | Default Workflow User | Fails with License Error | | Cross-Cloud Sync | Einstein / Cloud Connectors | Platform Integration User | Fails with License Error | #### Section 4: Step-by-Step Implementation Guide To resolve these errors, you must establish an organization-wide license key by applying the SKYVVA license key at the global level: ##### Step 1: Navigate to SkyvvaSetting 1. Log into your Salesforce environment as an administrator. 2. Click the Gear Icon in the top right and select Setup. 3. In the left-hand Quick Find box, type "Custom Settings" and select it from the results. Alternatively, navigate to Custom Code ➔ Custom Settings. Using the Quick Find search is the most reliable method, as the exact menu path may vary depending on your org configuration. 4. Scroll through your list of custom settings to find SkyvvaSetting. 5. Click the **Manage** link located directly to the left of SkyvvaSetting. ![image](../images/2026/06/paste-1780899441883.png) ##### Step 2: Initialize Default Organization Level Value 1. Look at the top section labeled Default Organization Level Value. 2. Click the New button located right above the organizational data table. ![image](../images/2026/06/paste-1780899465685.png) > **Note:** Do not use the lower "New" button in the list section. That section targets specific profiles or users, and since you cannot select the hidden Automated Process system user from a standard user lookup field, user-level targeting will fail. ##### Step 3: Populate and Save the License Value 1. On the SkyvvaSetting Edit configuration page, locate the Value entry box. 2. Paste your corporate SKYVVA license key directly into this field. If you do not have your key, contact SKYVVA support or retrieve it from your organization's SKYVVA admin portal. 3. Click the Save button to commit your configuration changes to the application cache. ![image](../images/2026/06/paste-1780899491910.png) #### Section 5: Troubleshooting If errors persist after applying the global license key, use the following checklist to diagnose the issue: 1. Confirm the key was saved in the **Default Organization Level Value** section — not in the user-level or profile-level section below it. 2. Verify there are no leading or trailing spaces in the key value. Paste it directly from your SKYVVA admin portal or vendor-provided credentials document without reformatting. 3. If you do not yet have a license key, contact SKYVVA support or your organization's SKYVVA administrator to obtain one before attempting the configuration. 4. If the error names a different identity (for example, Platform Integration User instead of Automated Process User), the same global fix applies — the Default Organization Level Value covers all system context identities. 5. After saving, re-trigger the automation and check both the SKYVVA Monitoring page Message column and the Salesforce debug log to confirm the license error no longer appears. ## Summary You have now configured a global license key in SkyvvaSetting that covers every background execution context in your Salesforce org. Platform Events, Change Data Capture triggers, asynchronous Flow paths, Pause elements, time-dependent Workflow actions, and Cross-Cloud synchronization engines will all resolve the license correctly without requiring any changes to individual user assignments. To verify the configuration is working, trigger one of the automation types listed in Section 2 and confirm that no license exception appears in your Salesforce debug logs. If errors persist, refer to Section 5 for a full troubleshooting checklist. ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: (General) Title: 1. Agent Old Administration Guide Slug: agent-administration-guide URL: https://help.skyvva.com/#article/agent-administration-guide ================================================================================ # 1. Agent Old Administration Guide ## Agent Old Administration Guide using Agent Control Board Up to Version 1.48 ### Agents? Many network and server monitoring solutions use what are called “Agents” to get values from the machines they are monitoring. Agents are programs that run on the remote machines and communicate with the main monitoring system. Some merchant try to hide the fact that they use Agents. They will try to deliver things like they “deploy” to remote systems or use other words, but it all compress to installing custom software on the remote machines. This guide gives our user an cosmetic overview of Administration part to maintain our SKYVVA Agent software. Guide also explains to user, How to install SKYVVA Agent software (New version) ,features and working. ##### This communication, along with any documents, files or attachments, is intended only for the use of the addressee and may contain legally privileged and confidential information. If you are not the intended recipient, you are hereby notified that any circulation, distribution or copying of any information contained in or attached to this communication is strictly prohibited. If you have received this message in error, please notify the sender immediately and destroy the original communication and its attachments without reading, printing or saving in any manner. This communication does not form any contractual obligation on behalf of the sender .This communication, along with any documents, files or attachments may not be reproduced or distributed without the express written approval of the sender. ### System Requirement with Windows Server This details system requirements that apply to SKYVVA Data Loader. #### Prerequisites #### Windows These are required for **SKYVVA** Data Loader installation on a Windows system: - **Windows updates: **Install all Windows security and 'critical' updates prior to installing or upgrading **SKYVVA** Data Loader. There are known Microsoft issues when installing on systems that don’t have the latest updates . - **NTFS:** The install partition must be NTFS-formatted. - **Compression:** It is not recommended to use Windows compression on the **SKYVVA** folder or temp folder on the machine where **SKYVVA** is installed and running because of the I/O involved by the nature of an integration application. Using Windows compression may drastically slow down processing of **SKYVVA** operations/transformations. #### Operating System Requirements **SKYVVA** recommends these operating system specifications for **SKYVVA** Data Loader. **NOTE:** **SKYVVA** automatically installs the required Java Runtime Environment specifically for **SKYVVA** to use so that it does not conflict with other Java installations that may already be installed. #### Windows **SKYVVA** Data Loader is supported  Windows server #### Hardware Requirements These are the minimum requirements for hardware and virtual machines for **SKYVVA** Data Loader: - Quad-core and up processor - 8 GB RAM - 50 GB hard drive space free - Minimum of 50 megabytes/second transfer rate on the hard drive - High-speed Internet connection** 24x7** - Optimal configuration of the system and overall environment **WARNING:** If not optimally configured, sporadic and unpredictable problems can result from poor disk IO, limited/out of memory, limited/out of disk space, power failures, and/or abrupt system restarts. ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Setup and Installation of the Agent Title: 1. Setup and Installation of the Agent Slug: skyvva-integration-agent URL: https://help.skyvva.com/#article/skyvva-integration-agent ================================================================================ # 1. Setup and Installation of the Agent #### Introduction - Agent(Data Connect) is an easy tool that helps users to get your data into Salesforce objects. - The agent can also be used to extract data from database objects into any of the destinations as per business requirements. - Similarly, Agent can use to perform bulk deletions by exporting the ID fields for the data we wish to delete and using that source to specify deletions through the Agent. #### Agents? Many network and server monitoring solutions use what are called “Agents” to get values from the machines they are monitoring. Agents are programs that run on the remote machines and communicate with the main monitoring system. Some merchants try to hide the fact that they use Agents. They will try to deliver things like they “deploy” to remote systems or use other words, but it all compresses to installing custom software on the remote machines. These Articles provide users a cosmetic overview of the Administration part to maintain our SKYVVA Agent software. Articles also explain to the user, How to install SKYVVA Agent software (New version), features, and working. ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Agent architecture and component Title: 2. Agent architecture and component Slug: basic-skyvva-integration-agent URL: https://help.skyvva.com/#article/basic-skyvva-integration-agent ================================================================================ # 2. Agent architecture and component **Agent Component & detail : **There are different types of component and these component are very important that user have to go through. - Integration.properties - Logs file - SKYVVA agent.bat - SKYVVA Integration Agent Service **How to run Integration Agent** - Integration Properties Setup - Integration Wizard **File Base Integration (CSV, Excel, XML, FTP) : **File-base Integration includes CSV, Excel, XML, and FTP Integration. - SF – Agent: CSV Integration - SF – Agent: FTP Integration **Database Integration (JDBC) : **Database Integration includes Oracle, SQL Server, Ms Access, and MySQL Integration. - SF – Agent: JDBC Oracle Integration - Agent – SF: JDBC Oracle Integration - MySQL Integration - Oracle Integration - SQL Server Integration - Access Integration** ** **Integration Scheduling : ****SKYVVA**, operations can be executed a number of ways, such as manually, automatically via an API call, or automatically via a schedule. This Integration Control Board setting up a schedule to run user operation automatically. Schedules contain information about when an operation will automatically be activated. SKYVVA lets user define virtually any type of schedule you need, such as every Monday at 5 pm, the last Monday , or every hour for one day. **File and Content : **With Adapter CSV, Excel, Xml, and FTP, we have two File Upload Mode to choose: - CONTENT: use for integrate content in the file like CSV, Excel, and Xml. - FILE: use for integrate file attachment into Attachment Object. ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Integrating data from Agent to Salesforce Title: 4. Integrating data from Agent to Salesforce Slug: advanced-features URL: https://help.skyvva.com/#article/advanced-features ================================================================================ # 4. Integrating data from Agent to Salesforce ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Agent architecture and component Title: 2.1 Agent Component Slug: agent-component URL: https://help.skyvva.com/#article/agent-component ================================================================================ # 2.1 Agent Component #### Agent Component There are different types of component and these component are very important that user have to go through. - Integration.properties - Logs file - Skyvvaagent.bat - SKYVVA Integration Agent Service ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Agent architecture and component Title: 2.2 Agent Component detail Slug: agent-component-detail URL: https://help.skyvva.com/#article/agent-component-detail ================================================================================ # 2.2 Agent Component detail #### 2.2.1  Properties file The properties file is a file extension for files mainly used in Java related technologies to store the configurable parameters of an application. Commons Configuration supports this format and enhances significantly the basic java.util.Properties class. They can also be used for storing strings for Internationalization and localization these are known as Property Resource Bundles. #### 2.2.2  Log file Log files are files that contain messages about the system, including services and applications running on it. There are different log files for different information. For example, there is a default system log file, a log file just for security messages. ![](../images/2018/10/Screenshot-433.png) #### 2.2.3  Skyvvaagent.bat Skyvvaagent.bat is a batch script to start the **Agent** Control board. A batch file is usually created for command sequences for which a user has a duplicate use. It batches (bundles or packages) into a single file a set of commands. We initiate the sequence of commands in the batch file by simply entering the name of the batch file on a command line. #### 2.2.4  SKYVVA Integration Agent Service SKYVVA Integration Agent Service is a service for the **Agent** Schedule job. If we want to run the **Agent** schedule, we will have to start the service, or else it will not work properly. There are different approaches to start Agent Service. **1.  Approach** - Right-click on Status Bar and select Task Manager and click on Service - Right-click on SKYVVA Integration Suite to start/stop the service. ![](../images/2018/10/Screenshot-434.png) ![](../images/2018/10/Screenshot-435.png) **2.  Approach** - START and type “Service“ to search - Select View Local Service - Right-click on SKYVVA Integration Suite and select Start ![](../images/2018/10/Screenshot-436.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]wait for a while for to open Service(Local).[/su_box] ![](../images/2018/10/Screenshot-437.png) ** 3.  Approach** - **Start Agent on SKYVVA Agent Control board** ![](../images/2019/01/image_2020_09_10T10_27_52_330Z.png) The **SKYVVA Integration Service** account is a predefined local account used by the service control manager. It has minimum privileges on the local computer and presents anonymous credentials on the network. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]JavaService utility runs Java applications as services. See http://javaservice.objectweb.org[/su_box] ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Agent architecture and component Title: 2.3 How to run Integration Agent Slug: how-to-run-integration-agent URL: https://help.skyvva.com/#article/how-to-run-integration-agent ================================================================================ # 2.3 How to run Integration Agent - For Windows 10 ![](../images/2018/10/Screenshot-439.png) Start Integration Agent, the Agent control board will appear ![](../images/2019/01/image_2020_09_10T10_27_52_330Z.png) On the Integration Control Board - **Integration Properties Setup - **to configure your SF connection and integration setup as prefer. - **Integration Wizard - **to create a new integration. #### 2.3.1 Integration Properties Setup On the Integration Control Board, click on “Integration Properties Setup” ![](../images/2018/10/image-1.png) Continue ![](../images/2018/10/Screenshot-442.png) **A.** Supply your SF login information and click “Test Salesforce Connection” or button on the left of “New Integration” button. **Salesforce settings:  ** - **Username****: **user’s name that you use to log to salesforce instance e.g. (agent@skyvva.com) - **Password****: **the password of that user (agent@skyvva.com) - **Security Token****: **the security token provided by salesforce for the user (agent@skyvva.com) - **Server environment****: **This should be “Production/Developer” or “Sandbox”. - **Test Salesforce Connection:** test connection. **SKYVVA Integration Agent: ** - Integration (Agent-SF): Integration name from Agent to Salesforce. - Integration (SF-Agent): Integration name from Salesforce to Agent. - Click Save to write your integration properties to a file. **Go to Salesforce Org.** - ** **Create New Integration ![](../images/2018/10/image-2-1.png) - Create New Interface - Click ![](../images/2018/10/image-3.png) - Scroll down to mapping section - Select Name Ext Id ![](../images/2018/10/Screenshot-443.png) - Save #### 2.3.2  Integration Wizard ![](../images/2018/10/image-4.png) ![](../images/2018/10/image-5.png) **Integration Name:** Refresh Integration wizard select your integration and Interface which you already created in org & click on the **Edit Interface** button. ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Setup and Installation of the Agent Title: 1.1 Install Skyvva Agent Slug: install-skyvva-agent URL: https://help.skyvva.com/#article/install-skyvva-agent ================================================================================ # 1.1 Install Skyvva Agent - Double click on Agent 1.48 and simple press bottom “I Agree“ as we do in every software installation process. ![](../images/2018/10/Screenshot-416.png) - Press “Next“ ![](../images/2018/10/Screenshot-417.png) Click ‘I Agree‘then‘Next‘ ![](../images/2018/10/Screenshot-418.png) ![](../images/2018/10/Screenshot-419.png) - Click the “Install“ button then finish. ![](../images/2018/10/Screenshot-420.png) - SKYVVA Agent installation is completed successfully. - Right-click on “Run Agent UI“ shortcut icon and further click on "Open" ![](../images/2018/10/Screenshot-421.png) ### What is Agent Control Board? Agent Control Board is used to set up integration property to be connected to Salesforce. You can either create an adapter and set a scheduler to run the integration service. Likewise, it allows you to set up the Agent server credential for using SKYVVA Agent Control Board. ## Server configuration in Agent To be able to access to Agent Control Board, there are things you need to know. You have to configure the server in Agent by doing that it allows you to set up the Agent credential for **SKYVVA** Agent Control Board. - Navigate to AgentUI and enter Server Configuration ![](../images/2019/01/image_2020_09_10T10_27_52_330Z.png) - Fill in Username => Password => Port Application => Click Save ![](../images/2018/10/agent-2.png) Note: Only one user can use this. - Go to router configuration =>  Set static ip => forward port ![](../images/2018/10/agent-3.png) ## Firewall Port configuration This configuration allows you to set up the Agent Server credential for use with SKYVVA Agent control. You need to create a local port, as it is a requirement. To create a local port you need to follow the steps below: Configuration with both Inbound and Outbound - Navigate to Search Button and type Window Defender Firewall With Advanced on your desktop => Click Inbound Rule =>Click New Rule => Tick Port => Click Next Button ![](../images/2018/10/agent-4.png) - Fill port number that in Specific Local Ports ![](../images/2018/10/agent-5.png) - Tick Allow The Connection => Click Next Button ![](../images/2018/10/agent-6.png) - Tick all box => Click Next Button ![](../images/2018/10/agent-7.png) - Fill Name => Click Finish Button ![](../images/2018/10/agent-8.png) ## To configure the Agent Control Board You have to configure this step in order to connect to AgentUI. To configure this, there are steps you must follow: **Create Remote Site Setting** To create Remote Site Setting you can follow the steps below: - Navigate Setup => Type Remote Site Setting in Quick Find => click Remote Site Settings ![](../images/2018/10/agent-9.png) - Click on the New Remote Site Setting button ![](../images/2018/10/agent-10.png) - Fill in Remote Site Name => Remote Site URL ( Public IP+ “:”Forward Port) => click Save ![](../images/2018/10/agent-11.png) **Configure Agent Control Board in SKYVVA tool** To configure the Agent Control Board in the SKYVVA tool you can: -          Navigate to Agent Control Board => click configuration tab => Agent Setting => Agent Server Credential => Fill username => Fill Password => Fill Hostname/Public IP => Fill Port/Forwarding Port => click Ping Agent Connection = ![](../images/2018/10/agent-12.png) - Fill username => Password => Security Token => Select Server Environment => click Ping Salesforce Connection => click Save button ![](../images/2018/10/agent-13.png) **Test AGENT / OS INFORMATION** When you enter AGENT/ OS INFORMATION it will show the PC system. ![](../images/2018/10/agent-14.png) ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Setup and Installation of the Agent Title: 1.2 Uninstall Skyvva Agent Slug: uninstall-skyvva-agent URL: https://help.skyvva.com/#article/uninstall-skyvva-agent ================================================================================ # 1.2 Uninstall Skyvva Agent #### Uninstall Skyvva Agent Through Control Panel The control panel, in the context of Windows, is a software module used to perform administrative and management operating system tasks and/or provide access to specific software features. The control panel is used to configure and manage almost all aspects of Windows, including keyboard and mouse functionality, users and passwords, power options, network settings, desktop background, display settings, sound settings, mouse settings, hardware and software options, installation and removal of programs, parental control, speech recognition, etc. - Press Windows key on the keyboard ![](../images/2018/10/Screenshot-422.png) - Write Control Panel in search box ![](../images/2018/10/Screenshot-423.png) - Click ‘Uninstall a program‘ ![](../images/2018/10/Screenshot-424.png) - Right-click on SKYVVA Integration Agent - Click on Uninstall/Change ![](../images/2018/10/Screenshot-425.png) ![](../images/2018/10/Screenshot-426.png) ![](../images/2018/10/Screenshot-427.png) - Click ‘Uninstall‘ - Read this message carefully & copy (integration) in which users credential are save that is a User name, password, org ID, security token, license key ![](../images/2018/10/Screenshot-428.png) ![](../images/2018/10/Screenshot-429.png) ![](../images/2018/10/Screenshot-430.png) ![](../images/2018/10/Screenshot-431.png) ![](../images/2018/10/Screenshot-432.png) - Finish ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Agent architecture and component Title: 2.4 File Base Integration Slug: file-base-integration-csv-excel-xml-ftp URL: https://help.skyvva.com/#article/file-base-integration-csv-excel-xml-ftp ================================================================================ # 2.4 File Base Integration **We have Adapter:** - File Base Integration (CSV, Excel, XML) - Database Integration (JDBC, ODBC) - FTP data Integration #### 2.4.1 File Base Integration (CSV, Excel, XML, FTP) File-base Integration includes CSV, Excel, XML, and FTP Integration. ![](../images/2018/10/image-8.png) - Click “Test Source Connection” to test the connection to be specified folder and file Click “Save” to save the Integration, Adapter, and Properties to create a New Interface and write the  info as shown in the screenshot : ![](../images/2018/10/image-9.png) - Interface Name: set Name your interface. - Status: Deployed or Development - Choose type as “Inbound” amount the list (“Inbound” and “Outbound”) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Inbound⇒ Agent– SF Outbound⇒ SF – Agent[/su_box] - Target: the sObject name in the Salesforce system “Account” - In the query section, you may not supply the filter or query as there is only one file to query from. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]In case of multiple files query, you may supply the file filter, so that the agent will query data only from the files that meet the filter value.[/su_box] ![](../images/2018/10/image-10.png) - Click “Save” to go to test integrating and click on test integration - See user example Info - The total no. of records retrieved from the source is 37 - The record shown in the table are sample data [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Remember to click “Save” in the interface , and click “Process” after finishing[/su_box] - Click “Save” to go to test integrating and click on test integration - Click “Test Integrate” to test integrating data from CSV - After completing the integration test, click on “Finish”. You will be asked to click on existing integration to the Properties Setup page. - Click “Test Integrate” to process integrating data from CSV to SF ![](../images/2018/10/image-11.png) - After completing the integration test, click on “Save”. ![](../images/2019/01/image_2020_09_08T08_30_10_461Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Process **Data Monitoring: ** - Go to the Messageboard - Click search ![](../images/2018/10/image-15.png) ![](../images/2018/10/image-16.png) - See Message Board - Inbound process successfully **A. SF – Agent: CSV Integration** In the Interface Source Definition screen, create a new Interface and fill in all necessary info as a screenshot Follow the same process as above we done for Inbound Type Go to Salesforce Org. - Name your integration - Name your interface - Status: Deployed or Development - Choose type as “Outbound” amount the list (“Inbound” and “Outbound”) - Scroll down to the Mapping section and choose Name as Ext Id - Save ![](../images/2018/10/image-17.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Inbound⇒ Agent – SF Outbound⇒ SF – Agent [/su_box] - **Target:** for SF-Agent integration, the Target value is the CSV file name that you would like to create in the integration. For instance, we put the value of “Account”, so that the file name to be created will be something like “Account2017072814221.csv”. - Click the button(Query Editor) to go to the query editor wizard. ![](../images/2018/10/image-19.png) - Click on each field name to select the fields and click “Run Query” to test your SQL statement. - Click “OK” to finish editing query and go back to the Interface Source Definition ![](../images/2018/10/image-20.png) After completing the integration test, click on “Save”. ![](../images/2018/10/image-21.png) - Click on Save ![](../images/2019/01/image_2020_09_08T08_44_28_157Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) **Data Monitoring: ** On the local server (computer), go to the folder specified in the properties of the adapter “**C:\Users\kolina\Desktop\New Folder\export_data**” and you will see a file named “**Account20180926094716.csv**” which is created from the integration “My System Integration” ![](../images/2018/10/image-25.png) - Open the file and you will see the data that is migrated from Salesforce.com. as shown below: ![](../images/2018/10/image-24.png) [su_box title="Remark" box_color="#2a8af0" title_color="#000000"] - For Excel and XML Integration, you can just do the same as CSV Integration. But just you need to change the file types, adapter, and its properties accordingly. - For FTP Integration, please find the file “FTP and SF Integration User Guide V1.11.doc” as a reference. The updated feature is as follows: - No need to supply the file extension "Target" field. **Example:** Let say your "Target" field is "Account". After data migration from SF to FTP at 9:56: 21:36 AM on the 26th of Sep 2018, the agent will create a file named "**Account20180926094716.csv** ". It means that the agent will automatically append the current integrating date/time to the file name and also add an extension. (For more updated features on this version, see “Release Notes.txt”)[/su_box] #### 2.4.2      Agent – SF: FTP Integration ** 1.  FTP Server Configuration ** As a test, we use FTP server application, named FileZilla Server and its client tool. In this server, we configure the user and group as below : ![](../images/2018/10/image-26.png) - Create a user named “**Akash**” and a shared folder” **C\Users\Akash\Desktop\New folder**” which contains the data files in XML, CSV, Excel formats - Give full permissions to the folder as shown above [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Always think of file/folder access permissions on FTP server when doing integration between SF and FTP, and vice versa. Please disable the SSL login.[/su_box] **2. FTP data integration: ** Properties for the FTP adapter are URL, Username, Password, File Type, Folder, Filename, and CSV Separator (for CSV file type). - Run Integration Agent UI ![](../images/2019/01/image_2020_09_10T10_27_52_330Z.png) **Create a New Integration (for SF-Agent integration) as follows: ** - Either click the Integration Wizard link on the above figure or - Integration Properties Setup link as shown in the below figure: ![](../images/2018/10/image-28.png) ![](../images/2018/10/Screenshot-442.png) - Supply your Salesforce organization info and environment and click “Test Salesforce Connection” for Testing. - We need to create a new integration for Agent-SF by clicking New Integration : ![](../images/2019/01/Screenshot-1214.png) - Fill in the integration name, adapter name as you wish to name. - Adapter property : - URL: the URL to your FTP server – here we use localhost ( our FTP server is FileZilla installed in current agent machine) - Username: Username to log in to FTP server - Password: Password to login to FTP server - File Type: Types of files to be queried the data for the integration process. There are three types: CSV, XML, and Excel (2010 format) - Folder: a path to get the file/files. **Ex.** In our above FileZilla configuration, we already added a shared folder named which has the path of “**C\Users\Akash**”. And the value of the property Folder is “CSV”. Therefore the full path to get the file/files is “**C\Users\Akash\Desktop\New folder** - File Name: (Optional) a file name for an agent to query data from. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] When filename is not specified, the agent will go to the folder and lookup for all files with the type.[/su_box] **Ex.** In the screenshot, we don’t specify the file name, so that the agent will go to the folder “**C\Users\Akash\FTP** test with CSV” to query data from all files (Account.csv) with the file type of CSV. - CSV Separator: Value separator for CSV file type. - Click “Test Source Connection” to test the connection to the specified FTP server - Click “Save & Next” to save the Integration and its Adapter and Properties and to create a New Interface and fill in all necessary info as shown in the below figure: ![](../images/2018/10/image-30.png) - Name the interface - Status: Deployed - Choose type “Inbound” among the list (“Inbound”; “Outbound”). **Inbound: for Agent – SF ** **Outbound: for SF – Agent ** - ** **Target: SObject in the Salesforce.com - Click Next to do Mappings as shown in the below figure: - Click the button “Save” on the Data Mapping grid to save the defined Mappings - Then click “Next” to test integrate - Click “Test Integrate” to test this interface setup and data integration from data files of FTP server as shown in the table to the Account object in Salesforce.com. - Click Finish to complete the wizard. You will be asked as shown above - Click “Yes” to save the integration you have just created on the Integration Properties Setup page. ** ** **As a result, you will see the figure as shown below ** ![](../images/2018/10/Screenshot-442.png) **B.  SF – Agent: FTP Integration ** ** ****The process is very similar to section A ** - Click “New Integration” on the Integration Properties Setup page as shown in the below figure ![](../images/2019/01/Screenshot-1216.png) - Fill in the integration name, adapter name as you wish to name. - Adapter property: (same as FTP-SF section) **Unlike, the file name property is not used in SF-FTP Integration **** ** - Click “Test Source Connection” to test the connection to the specified FTP server - Click “Save & Next” to save the Integration and its Adapter and Properties and to create a New Interface and fill in all necessary info as shown in the below figure : ![](../images/2018/10/image-32.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For SF-FTP Integration, the "Target" field is equal to a target filename of storing data which is queried from SF.[/su_box] **Ex**. After integration, the agent will create a file named “Employees2011-06-22 09-08-41-841 AM.csv” on the FTP server. - On the Query section: input the Salesforce SOQL statement or you can click the button. Query Editor to open a Query Editor ![](../images/2018/10/image-33.png) ![](../images/2018/10/image-34.png) - Click OK after completion of the editing query statement. - On the Interface Source Definition screen, click Browse to get to the file containing the field structures and then click the Upload button and upload them to Salesforce.com for mapping - Click Next to do Mappings as shown in the below figure: ![](../images/2018/10/image-35.png) ![](../images/2019/01/Screenshot-1217.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Click the button “Save” on the Data Mapping grid to save the defined Mappings - Then click “Next” to test integrate - Click “Test Integrate” to test this interface setup and data integration from Salesforce Account to the FTP server by creating a file type of CSV. - Click Finish to complete the wizard **Data monitoring ** **a. Salesforce Monitoring:** - Login to the Salesforce instance - Go to the integration “FTP - SF Integration” for Agent – SF integration and “SF - FTP Integration” for SF – Agent integration - See their Messages Board ![](../images/2018/10/image-37.png) ![](../images/2018/10/image-38.png) ** b. FTP Server Monitoring:** - On the FTP Server, go to the folder “C:\Users\Kolina\Desktop\New Folder\FTP” and you will see a file named “Account20181101185621.csv” which is created from SF-FTP Integration. ![](../images/2018/10/image-39.png) - Open the file and you will see the data that is migrated from Salesforce.com. There are 53 records migrated from Salesforce.com and stored into a file on FTP Server ![](../images/2018/10/image-40.png) #### ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Agent architecture and component Title: 2.5 Database Integration (JDBC) Slug: 2-5-database-integration-jdbc URL: https://help.skyvva.com/#article/2-5-database-integration-jdbc ================================================================================ # 2.5 Database Integration (JDBC) ## 2.5.1  Database Integration (JDBC) **Database Integration includes Oracle, SQL Server, Ms Access, and MySQL Integration. **  **A. SF – Agent: JDBC Oracle Integration** **Use Case: ** - Users want to synchronize Account data from the Salesforce system to their DBMS system and vice versa. - In this use case, we use Oracle as DBMS to/from which Account data will be synchronized from/to Salesforce respectively. **Requisites: ** - Oracle DBMS has been installed on User-machine ![](../images/2018/10/Screenshot-444-1.png) - Integration Agent installed on User-machine ![](../images/2018/10/Screenshot-445.png) - Salesforce Organization set up for the User Assume that on Salesforce, there is Account data created today as follows: ![](../images/2018/10/Screenshot-449.png) - Mappings defined for Account Synchronization (SF-Agent and Agent-SF) **SF – Agent (Oracle) ** ![](../images/2018/10/Screenshot-450.png) **Agent (Oracle) - SF** ![](../images/2018/10/Screenshot-451.png) - It is required that the client tool for those **DBMS** exists on the client machine where it will be used for doing batch integration (SF – Agent). **For example**, in this case of Oracle, the SQLPLUS.exe tool is required. In the case of the SQL server, either osql.exe or sqlcmd.exe is required depending on the version of the SQL Server. - For this version of the Integration Agent, only Oracle and SQL servers are supported. **Implementation:** **Step 1: DBMS configuration ** - Log in to Oracle and create a table named “**ACCOUNTIN**” on Oracle system with the following structures: ![](../images/2018/10/Screenshot-448.png) **Step 2: Agent UI interaction** - Run Integration Agent UI ![](../images/2019/01/image_2020_09_10T10_27_52_330Z.png) **A.  Salesforce – Agent Integration: ** - Create a New Integration (for SF-Agent integration) as follows: - Either click the Integration Wizard link on the above figure or - Integration Properties Setup link as shown in the below figure: ![](../images/2018/10/Screenshot-453.png) Supply your Salesforce organization info and environment and click “Test Salesforce Connection” for Testing. [su_box title="Remark" box_color="#2a8af0" title_color="#000000"]**There are two Integrations fields here:** - Integration (Agent – SF): this one is used to do integration from Agent to Salesforce - Integration (SF – Agent): this one is used to do integration from Salesforce to Agent.[/su_box] We need to create a new integration for SF – Agent by clicking New Integration: ![](../images/2018/10/Screenshot-455-1.png) - Choose Integration Direction “SF – Agent” among (SF-Agent; Agent-SF) - Name your integration - Choose the appropriate adapter type. Here we use the JDBC adapter and name the adapter - On Adapter Property information section - Choose Database Type Oracle among (“Oracle” or “SQLServer”) - Fill in all necessary information needed to make connections and data manipulation to the Oracle system. **Please see section “FAQs” for more details**** ** - Click “Test Source Connection” to test the connection to the specified Oracle instance - Click “Save & Next” to save the Integration and its Adapter and Properties and to create a New Interface and fill in all necessary info as shown in the below figure : ![](../images/2018/10/Screenshot-456.png) ![](../images/2018/10/Screenshot-457.png) - Name the interface - Status: Deployed - Choose type “Outbound” among the list (“Inbound”; “Outbound”). **Inbound: for Agent – SF ** **Outbound: for SF – Agent**** ** - Target: the table name in the Oracle system where we created on Step 1 - On the Query section: input the Salesforce SOQL statement. Here select a statement from Account for those created on today. - Click Next to do Mappings as shown in the below figure: ![](../images/2018/10/Screenshot-460.png) - Click the button “Save” on the Data Mapping grid to save the defined Mappings - Then click “Process” to test integrate ![](../images/2019/01/Screenshot-1218.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Click “Test Integrate” to test this interface setup and data integration from Salesforce Account data as shown in the table into the Oracle system on table ACCOUNT. - Finish completing the wizard. You will be asked as in the figure: - Click “Yes” to save the integration you have just created on the Integration Properties Setup page. As a result, you will see the figure as shown below: ![](../images/2018/10/Screenshot-579.png) ![](../images/2018/10/Screenshot-580.png) ![](../images/2018/10/Screenshot-581.png) #### B. Agent – SF: JDBC Oracle Integration **Agent - Salesforce Integration: ** The process is very similar to Step 2’s A section. Click “Edit Interface” on the Integration Properties Setup page as shown in the below figure: ![](../images/2019/01/Screenshot-1219.png) ![](../images/2018/10/Screenshot-583.png) - Choose Integration Direction “Agent - SF” among (SF-Agent; Agent-SF) - Name your integration - Choose the appropriate adapter type. Here we use the JDBC adapter and name the adapter - On Adapter Property information section - Fill in all necessary information needed to make connection and data manipulation to the Oracle system - Click “Test Source Connection” to test the connection to the specified Oracle instance - Click “Save” to save the Integration and its Adapter and Properties and to create a New Interface and fill in all necessary info as shown in the below figure ![](../images/2018/10/Screenshot-584.png) - Name the interface - Status: Deployed - Choose type “Inbound” among the list (“Inbound”; “Outbound”). - Inbound: for Agent – SF - Outbound: for SF – Agent - Target: the sObject name in the Salesforce system “Account” - On the Query section: input the DBMS SQL statement. Here select a statement from ACCOUNT on Oracle. - Click Next to do Mappings as shown in the figure below: ![](../images/2018/10/Screenshot-585.png) - Click the button “Save” on the Data Mapping grid to save the defined Mappings - Then click “Next” to test integrate ![](../images/2019/01/Screenshot-1220.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Click “Process” to test this interface setup and data integration from Oracle ACCOUNT Data to Salesforce Account. - Finish completing the wizard. You will be asked as in the figure: ![](../images/2018/10/Screenshot-587.png) ![](../images/2018/10/Screenshot-588.png) - Finally, click “Save” to save the configuration onto the Integration properties file ![](../images/2018/10/Screenshot-589.png) In the figure above, noticeably: - **Integration:** the integration id of Agent – SF - **IntegratonSF2Agent:** the integration id of SF –* Agent* [su_box title="Remark" box_color="#2a8af0" title_color="#000000"]If you want to change the integration setup (eg, change the SF instance info like password or token; or change integration either SF2Agent or Agent2SF), always change thru the Agent UI. Change it directly in the file might cause unexpected errors. For example, if you change the password in the file, it will cause an encryption/ decryption problem since the password shown in the file has been encrypted.[/su_box] **Step 3: Monitoring** **          1-Oracle Monitoring:** - Log in to the Oracle if not logged in and check the Account data, you will see : ![](../images/2018/10/Screenshot-592.png) **         2****-Salesforce Monitoring****: ** - Login to the Salesforce instance - Go to the integration “SF2Agent Integration 122010” for Salesforce – Agent integration and “Agent2 SF Integration 122010” for Agent - Salesforce integration - See their Messages Board ![](../images/2018/10/Screenshot-594.png) ![](../images/2018/10/Screenshot-595.png) ![](../images/2018/10/Screenshot-596.png) ![](../images/2018/10/Screenshot-597.png) **C. MySQL Integration**** ** - **Pre-Integration:** Check whether MySQL service is running and the required tool for integration has been installed along with the MySQL installation. The tool required for the batch process is “mysql.exe” in the directory “C:\Program Files\MySQL\MySQL Server 5.5\bin - **Integration Adapter properties: ** - Data Source Name: (ODBC type) data source specified in the ODBC configuration of the computer - Username: user name to log in to MySQL - Password: password to login to MySQL - Hostname: host address of MySQL server. **Ex.** “localhost” for the server installed in the current agent computer - Port: port number of the MySQL server, 3306 by default. - Database Name: Name of the database you wish to integrate. #### D. Oracle Integration - **Pre-Integration:** Check whether Oracle service is running and the required tool for integration has been installed along with the Oracle server installation. The tool required for the batch process is “sqlplus.exe” in directory “C:\oraclexe\app\oracle\product\10.2.0\server\BIN” - ** Integration Adapter properties:** - Data Source Name: (ODBC adapter type) data source specified in the ODBC configuration on the computer - Username: user name to log in to Oracle - Password: password to login to Oracle - Hostname: host address of Oracle server. **Ex.** “localhost” for the server installed in the current agent computer - Port: port number of the Oracle server, 1521 by default. - SID/Service Name: Name of Oracle Service or SID (Service ID). **E.  SQL Server Integration ** **1.** **Pre-Integration:** Check whether Oracle service is running and the required tool for integration has been installed along with the Oracle server installation.  **a.** For SQL 2000, the tool required for the batch process is “osql.exe” **b.** For SQL 2005 or higher, the tool required for the batch process is “sqlcmd.exe” **2**.**Integration Adapter properties:  ** - Data Source Name: (ODBC adapter type) data source specified in the ODBC configuration on the computer - Username: user name to log in to SQL Server - Password: password to login to SQL Server - Hostname: host address of SQL Server. **Ex**. “localhost” for the server installed in the current agent computer - Port: port number of the SQL Server. By default, the value is 1433 for SQL Server 2000, and 2934 for SQL Server 2005 or higher - Database Name: Name of the database you wish to integrate. - Server Instance: Instance name of the SQL Server. **F. Access Integration ** ** **1. **Pre-Integration:** Make sure Ms Access has been installed on the computer, and the database file format supported for the integration is 2003 file format. 2.**Integration Adapter properties:** - Data Source Name: (ODBC adapter type) data source specified in the ODBC configuration on the computer - Username: user name to log in to Ms. Access - Password: password to login to Ms. Access - URL: URL for access to Ms. Access. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Usually, it is something like “jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=path\test.mdb”[/su_box] ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Agent architecture and component Title: 2.6 Integration Scheduling Slug: 2-6-integration-scheduling URL: https://help.skyvva.com/#article/2-6-integration-scheduling ================================================================================ # 2.6 Integration Scheduling #### 2.6.1 Integration Scheduling - Create Integration ![](../images/2019/01/Screenshot-785.png) - Click on Interface ![](../images/2019/01/Screenshot-792.png) - Click on Open Mapping Button ![](../images/2019/01/Screenshot-793.png) - Select Ext ID - Save **Go to Agent** On the Integration Control Board, click on “Integration Scheduling”: Choose the integration name, Interface name, and Integration Direction you want to schedule among (“Agent-SF” | “SF-Agent”). **Set the schedule through the screen. ** ![](../images/2020/02/image_2020_09_02T06_21_05_310Z.png) After scheduling the agent, click “Save”. And it will ask to restart the agent service. **Daily Frequency** - **Run at: **This option allow the user to specify exactly when he wants to Integration Agent running. - **Run every: **This option is used for frequency of running schedule. It can be set to every ”Hours” or every ”Minutes” and user can specify ![](../images/2020/02/image_2020_09_02T06_29_06_127Z.png) [su_box title="Remark" box_color="#2a8af0" title_color="#000000"] - Do not change the last parts of the SQLite records (“com.iservice.integration.IntegrationOnDemandService”; “com.iservice.integration.IntegrationSF2AgentService false”; “com.iservice.integration.IntegrationSF2AgentService true”) - It is recommended to change the schedules thru the UI. - The auto data processing SQLite record is always fixed (scheduled for every hour as like on SF Integration thru the tick of the field “Automatic Data processing” - How Auto data processing crontab works/is enabled? [/su_box] Configuration of Integration Scheduler for SF – Agent ![](../images/2020/02/image_2020_09_02T06_31_57_802Z.png) **Go to Salesforce Org** - Click on Message Monitoring Tab - Select Integration Name - Select Interface Name - OK ![](../images/2019/01/Screenshot-796.png) - Scroll down and click on button Search - See Attachment has been created ![](../images/2019/01/Screenshot-784.png) In the crontab file, the user will get the following crontab records: ![](../images/2019/01/Skype_Picture_2020_07_27T06_27_14_337Z.jpeg) ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Agent architecture and component Title: 2.7 File and Content Slug: 2-7-file-and-content URL: https://help.skyvva.com/#article/2-7-file-and-content ================================================================================ # 2.7 File and Content #### With Adapter CSV, Excel, XML, and FTP, we have two File Upload Mode to choose: - CONTENT: use for integrating content in the file like CSV, Excel, and XML. - FILE: use for integrate file attachment into Attachment Object. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Maximum in each file size around 3MB - Please input Packet=1 [/su_box] ![](../images/2018/10/Screenshot-603.png) **Please take a look example below how to use FILE and CONTENT: ****               ** #### 2.7.1 CSV, Excel, and XML Adapter ***Example CSV Adapter use CONTENT to integrate content file.*** ![](../images/2018/10/Screenshot-605.png) - Select File Upload Mode “CONTENT” - With File Upload Mode “CONTENT”, Query Table can show only 50 records. - Example CSV Adapter uses FILE to integrate file attachment. ![](../images/2018/10/Screenshot-606.png) Choose File Upload Mode “FILE” and put the location of the folder that you want to attach. - For CSV Adapter, it will get all your CSV file type from the folder. - For Excel Adapter, it will get all your xls or xlsx file type from the folder. - For XML Adapter, it will get all your XML file types from the folder. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Maximum in each file size around 3MB - Query Table, It shows only one record for the sample. [/su_box] **With mapping, need to map with object Attachment. ** **This is the important filed that you need to map** ![](../images/2018/10/Screenshot-607.png) ![](../images/2019/01/image_2020_09_11T06_23_39_579Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) **One attachment (account.csv) has been integrated successfully. Please go to SF to find your ParentId that you map to look at your file****.** - Side at Salesforce ![](../images/2018/10/image-53.png) - One attachment into SF. #### 2.7.2 FTP Adapter ***Example FTP Adapter use CSV file to integrate CONTENT*** ![](../images/2018/10/Screenshot-628.png) - Select File Upload Mod “CONTENT” - With File Upload Mod “CONTENT”, Query Table can show only 50 records. ***Example FTP Adapter use FILE to integrate file attachment *** ![](../images/2018/10/Screenshot-629.png) - Select File Upload Mode “FILE” - File Extensions*: insert your extension file [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Maximum in each file size around 3MB - For one extension use (.csv) - For few extensions use (.csv|.pdf|.xls) - For many extensions use (.*) [/su_box] ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Schedulers Title: 6. Schedulers Slug: 6-data-change-capture-functionality URL: https://help.skyvva.com/#article/6-data-change-capture-functionality ================================================================================ # 6. Schedulers Agent Scheduler is one of the **SKYVVA** schedules which is used in agent for running integration service. Users can set up the scheduler as per user business requirements. **SKYVVA** Schedulers is a program that starts and handles jobs automatically. Each scheduler has a different purpose. These functions include Agent Scheduler, Basket Processing Scheduler, Bulk Processing Scheduler, CDD&CDT Scheduler, doMaintenance Scheduler, Message Reprocessing Scheduler, Basket Reprocessing Scheduler, and Checker Scheduler. ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Schedulers Title: 6.1 Inbound processing. Slug: 6-1-streaming-api URL: https://help.skyvva.com/#article/6-1-streaming-api ================================================================================ # 6.1 Inbound processing. #### What is SKYVVA Scheduler? **SKYVVA** Schedulers is a program that starts and handles jobs automatically. Each scheduler has a different purpose. These functions include Agent Scheduler, Basket Processing Scheduler, Bulk Processing Scheduler, CDD & CDT Scheduler, doMaintenance Scheduler, Message Reprocessing Scheduler, Basket Reprocessing Scheduler, and Checker Scheduler. #### The functionality of SKYVVA Scheduler These schedules are important. They play different roles. To know more detail about these schedulers, you can check them below: **Agent Scheduler** Agent Scheduler is one of the **SKYVVA** schedules which is used in agent for running integration service. You can set up the scheduler as your wish. To find Agent Scheduler If you want to know where Agent scheduler is, please see the steps below: - Configure Agent - Click on **Generate InBound Schedule Per Integration** ![](../images/2020/02/image_2020_09_02T06_21_05_310Z.png) ![](../images/2020/02/image_2020_09_02T06_29_06_127Z.png) ![](../images/2020/02/image_2020_09_02T06_31_57_802Z.png) **Click on Agent Control Board (old) Tab** [- How to use the Agent Control Board (old)?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. **Prerequisite** Before setup the scheduler, there are some properties you must know: - **Integration Name →**The name of your integration. - **Interface Name →**The name of your interface in an integration. - **Integration Mode →**The direction of integration. They are Inbound and Outbound - **Daily Frequency →** 1. **Run at→** If you check this button it means you want the scheduler to run once a day but at a specific time. 2.** Run every→** The scheduler will run every hour or minute depending on you who set them up. If you want to run every X hour then you have to choose Hours. However, you have to choose the starting time along with the ending time you want it to end. - **Weekly Frequency →** The default is all day is selected. It means the scheduler will run every day. But if you want to skip one day or more you can deselect that day. - **Monthly Frequency →** The function of this one is similar to the above. If you want the scheduler to skip then deselect the month you don’t want to run. - **Choose the schedule Mode →**Processing or Reprocessing - Choose Integration, Interface Name - **Select Integration Mode** **→**Inbound - Choose the one of Frequency you want to set for running - Click **Save**. For more understanding of Scheduler hit this link [Basket Processing Scheduler, Bulk Processing Scheduler, CDD & CDT Scheduler](#article/overview-of-skyvva-scheduler) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] **SKYVVA** Schedulers is a type of scheduled job which runs regularly bases on-time setting. There are three categories of Schedulers. - **Schedule per integration:** is a global scheduler process all interfaces on integration, it will skip either the Interface group or interface that is running its scheduler. - **Schedule per-interface group:** process all interfaces in the group, if the scheduler has been started then all the schedule of the interface in this group will stop automatically. - **Schedule per interface:** it will process a specific interface. It cannot be started if its interface group scheduler has already started. [/su_box] ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Adapters of the Agent Control Board (Old) Title: 3.1 File Adapter. Slug: 1-file-adapter URL: https://help.skyvva.com/#article/1-file-adapter ================================================================================ # 3.1 File Adapter. #### File Adapter File adapter uses to integrate data from file to SFDC and from Salesforce to file. The **File** type that Agent support is CSV, XML, and Excel that can be integrated with their content. You can integrate file attachment into the attachment object. Create an adapter, User has to follow steps before it would skip eg. Creating Integration and Interface. To create a File Adapter, there are some steps that must be followed: **Run Agent UI** →** Integration Wizard → Choose Integration → Choose existing interface.** 1. Adapter Section: Choose Adapter Type (**File**) **→** Name Adapter. 2. Adapter Properties: - **File type → **Choose CSV/XML/Others - **File Upload Mode → **Choose CONTENT or FILE - **Folder → **Choose the folder (path to get the file/ files) - **File Name → **Choose the file name (a file name for the agent to query data from. If this the field is empty, it means the user has to select all files in the selected folder. - **After Processing → **Choose what you want to do with your file - **Keep File →** The file will keep in the folder. - **Lock File → **The file will lock. - **Delete File → **The file will delete. - **Backup File → **The file will back up in the other folder. - **Backup Folder → **The folder to keep the processed file. If you choose to backup your file, you have to input your folder name here. 3. Click “**Test Source Connection”** to test the connection to the specified folder and file. 4. Click **Save**. [–How to use File Adapter with Agent Control Board (old)?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use File Adapter with, Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For Excel and CSV File, user can just do the same as XML File. But user only needs to change the file types, adapter, and its properties accordingly. [/su_box] ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Adapters of the Agent Control Board (Old) Title: 3.2 JDBC Adapter. Slug: 3-2-jdbc-adapter URL: https://help.skyvva.com/#article/3-2-jdbc-adapter ================================================================================ # 3.2 JDBC Adapter. #### JDBC Adapter JDBC Adapter is used as a connector to transfer data from Database to Salesforce and from Salesforce to Database. The agent supports five database types include Oracle, SQLServer, MySQL, MsAcess, and PostgreSQL. The following sample is about the SQLServer configuration. **Run Agent UI → Integration Wizard → Choose Integration → Choose existing interface.** 1. Adapter Section: Choose Adapter Type (**JDBC**) → Name Adapter 2. Adapter Properties: **Database type:** Choose **SQLServer**. The type of database to which the adapter connects. Select between **SQLServer** or other. - **Username → ** sa - **Password → ** ******* (The default password to use when making the connection to the database). - **Hostname → **192.168.1.141 (Ip address) - **Port → **1433 (default) - **Database Name → **Account (User choice) - **Server Instance → **(Local) 3. Click “Test Source Connection” to test the connection to the specified folder and file. 4. Click Save Follow Reference link for more understanding [–How to use JDBC Adapter (SQLserver) with Agent Control Board?](#article/how-to-use-outbound-interface-using-message-type-through-agent-control-board-for-jdbc-adapter-sqlserver) Since the user now completely understand; How to use JDBC Adapter (SQLServer) with Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board. **SF – Agent: JDBC Oracle Integration** Users want to synchronize Account data from the Salesforce system to their **DBMS** system and vice versa. In this use case, we use Oracle as DBMS to/from which Account data will be synchronized from/to Salesforce respectively. **Requisites** - Oracle DBMS has been installed on User-machine - Integration Agent installed on User-machine - Salesforce Organization set up for the User ![](../images/2020/04/image_2020_07_20T16_30_05_629Z.png) **Mappings defined for Account Synchronization (SF-Agent and Agent-SF)** ![](../images/2020/04/image_2020_07_20T16_33_47_436Z.png) ![](../images/2020/04/image_2020_07_20T16_35_06_297Z.png) - It is required that the client tool for those DBMS exists on the client machine where it will be used for doing batch integration (SF – Agent). **For example**, in this case of Oracle, the **SQLPLUS.exe** tool is required. In the case of the SQL server, either osql.exe or sqlcmd.exe is required depending on the version of the SQL Server. - For this version of the Integration Agent, only Oracle and SQL servers are supported. **Implementation:** **Step 1: DBMS configuration** - Log in to Oracle and create a table named **“ACCOUNTIN”** on Oracle system with the following structures: ![](../images/2020/04/image_2020_07_20T16_39_54_889Z.png) **Salesforce – Agent Integration:** - Create a New Integration (for SF-Agent integration) as follows - Either click Integration Wizard link on the above figure **Supply your Salesforce organization info and environment and click “Test Salesforce Connection” for Testing.**  **Remarks:** There are two Integrations fields here:  - Integration (Agent – SF): this one is used to do integration from Agent to Salesforce. - Integration (SF – Agent): this one is used to do integration from Salesforce to Agent. **We need to create a new integration for SF – Agent ** - Choose Integration Direction “SF – Agent” among (SF-Agent; Agent-SF) - Name your integration - Choose the appropriate adapter type. Here we use JDBC adapter and name the adapter - On Adapter Property information section - Choose Database Type Oracle among (“Oracle” or “SQLServer”) - Fill in all necessary information needed to make connections and data manipulation to the Oracle system. **Please “FAQs” for more details ** - Click “Test Source Connection” to test the connection to the specified Oracle instance - Click “Save & Next” to save the Integration and its Adapter and Properties and to create a New Interface and fill in all necessary info as shown in the below figure: ![](../images/2020/06/image_2020_06_25T12_35_44_247Z.png) ![](../images/2020/06/image_2020_06_26T07_26_10_876Z.png) - Name the interface - Status: Deployed - Choose type “Outbound” among the list (“Inbound”; “Outbound”). **Inbound: for Agent – SF ** **Outbound: for SF – Agent** - Target: the table name in the Oracle system where we created on Step 1 - On the Query section: input the Salesforce SOQL statement. Here select statement from Account for those created on today. Click Next to do Mappings as shown in the below figure: ![](../images/2020/06/image_2020_06_26T08_41_39_137Z.png) - Click button “Save” on Data Mapping grid to save the defined Mappings - Then click “Process” to test integrate - Click “Test Integrate” to test this interface setup and data integration from Salesforce Account data as shown in the table into the Oracle system on table ACCOUNT. - Finish completing the wizard. You will be asked as in the figure: - Click “Yes” to save the integration you have just created on the Integration Properties Setup page. - As a result, you will see the figure as shown below: ![](../images/2020/06/image_2020_06_26T09_11_47_433Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If you want to change the integration setup (eg, change the SF instance info like password or token; or change integration either SF2Agent or Agent2SF), always change thru the Agent UI. Change it directly in the file might cause unexpected errors. For example, if you change the password in the file, it will cause an encryption/ decryption problem since the password shown in the file has been encrypted.[/su_box] #### MySQL Integration **Pre-Integration:** Check whether MySQL service is running and the required tool for integration has been installed along with the MySQL installation. The tool required for the batch process is “mysql.exe” in the directory **“C:\Program Files\MySQL\MySQL Server 5.5\bin** **Integration Adapter properties:** - Data Source Name: (ODBC type) data source specified in the ODBC configuration of the computer - Username: user name to log in to MySQL - Password: password to login to MySQL - Hostname: host address of MySQL server. **Ex.** “localhost” for the server installed in the current agent computer - Port: port number of the MySQL server, 3306 by default. - Database Name: Name of the database you wish to integrate. #### Oracle Integration **1.Pre-Integration:** Check whether Oracle service is running and the required tool for integration has been installed along with the Oracle server installation. The tool required for the batch process is “sqlplus.exe” in directory “**C:\oraclexe\app\oracle\product\10.2.0\server\BIN**” **2. Integration Adapter properties:** - Data Source Name: (ODBC adapter type) data source specified in the ODBC configuration on the computer - Username: user name to log in to Oracle - Password: password to login to Oracle - Hostname: host address of Oracle server. **Ex.** “localhost” for the server installed in the current agent computer - Port: port number of the Oracle server, 1521 by default. - SID/Service Name: Name of Oracle Service or SID (Service ID). #### SQLserver Integration **1.Pre-Integration:** Check whether Oracle service is running and the required tool for integration has been installed along with the Oracle server installation. **a.** For SQL 2000, the tool required for the batch process is “osql.exe” **b.**For SQL 2005 or higher, the tool required for the batch process is “sqlcmd.exe” **2.Integration Adapter properties**: - Data Source Name: (ODBC adapter type) data source specified in the ODBC configuration on the computer - Username: user name to log in to SQL Server - Password: password to login to SQL Server - Hostname: host address of SQL Server. **Ex.** “localhost” for the server installed in the current agent computer Port: port number of the SQL Server. By default, the value is 1433 for SQL Server 2000, and 2934 for SQL Server 2005 or higher - Database Name: Name of the database you wish to integrate. - Server Instance: Instance name of the SQL Server. #### Ms Access Integration **1.Pre-Integration:** Make sure Ms Access has been installed on the computer, and the database file format supported for the integration is 2003 file format. **2.Integration Adapter properties:** - Data Source Name: (ODBC adapter type) data source specified in the ODBC configuration on the computer - Username: user name to log in to Ms Access - Password: password to login to Ms Access - URL: URL for access to Ms Access. Usually, it is something like **“jdbc:odbc:DRIVER={Microsoft Access Driver (*.mdb)};DBQ=path\test.mdb”** ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Adapters of the Agent Control Board (Old) Title: 3.3. FTP, SFTP & FTPS Slug: 3-3-ftp-adapter URL: https://help.skyvva.com/#article/3-3-ftp-adapter ================================================================================ # 3.3. FTP, SFTP & FTPS #### FTP Adapter **FTP** Adapter is used as a connector to transfer data from the **FTP** server to Salesforce and from Salesforce to the **FTP** server. The File Transfer Protocol (FTP) is a standard network protocol used for the transfer of computer files between a client and server on a computer network. To create an **FTP** Adapter, there are some steps that must be followed: **Run Agent UI **→** Integration Wizard → Choose Integration → Choose existing interface.** 1. Adapter Section: Choose Adapter Type (**FTP**) 2. Adapter Properties: - **Authentication → **Username_Password - **URL →** localhost - **Username →** akash (Username to log in to FTP server) - **Password →********* (The default password to use when making the connection to the FTP Server) - **FTP File Type →** Choose CSV/XML or other - **Folder →** / - **FTP Type→** Choose FTP/FTPS/SFTP - **Port →** 21(Default) - **File Name →** (Optional) a file name for the agent to query data from - **After Processing →** Choose what you want to do with your file - **Keep File →** The file will keep in the folder. - **Lock File →** The file will lock. - **Delete File →** The file will delete. - **Backup File →** The file will back up in the other folder. - **Backup Folder →** The folder to keep the processed file. If you choose to backup your file, you have to input your folder name here. 3. Click “**Test Source Connection**” to test the connection to the specified folder and file. 4. Click Save. Follow Reference link for more understanding ![](../images/2020/07/image_2020_07_13T13_34_20_639Z.png) [–How to use FTP Adapter (FileZilla Client & Server) with Agent Control Board (old)?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use FTP Adapter (FileZilla Client & Server), Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For Excel and CSV File, user can just do the same as XML File. But user only needs to change the file types, adapter, and its properties accordingly. - Select File upload Mode "File" - File Extension*: insert your extension file - Max. in each file size around 3MB - For on extensions use (.CSV) - For few extensions use (.CSV, .pdf, .xls) - For many extension use (.*)[/su_box] **FTP Type (SFTP)** - **SFTP** (SSH File Transfer Protocol) is a secure file transfer protocol. It runs over the SSH protocol. It supports the full security and authentication functionality of SSH. - **SFTP** has pretty much-replaced legacy FTP as a file transfer protocol and is quickly replacing FTP/S. It provides all the functionality offered by these protocols, but more securely and more reliably, with easier configuration. There is basically no reason to use legacy protocols anymore. - **SFTP** also protects against password sniffing and man-in-the-middle attacks. It protects the integrity of the data using encryption and cryptographic hash functions and authenticates both the server and the user. ![](../images/2020/02/Capture.png) ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Integrating data from Agent to Salesforce Title: 4.1 Manual Processing. Slug: 4-1-manual-inbound-processing URL: https://help.skyvva.com/#article/4-1-manual-inbound-processing ================================================================================ # 4.1 Manual Processing. #### Manual Processing Import Account Data into Salesforce with a CSV-file and Manual Load Function using Agent #### Configuration To import data from CSV/XML file into Salesforce Please follow the given steps: **Step 1. The first step is to create a new Integration to import our CSV file.** - On the Menu Bar, you see the Integration tab → clicks on the tap **Integration.** - Click On **New** button. - Fill in the **Name** Field (Give a meaningful name that identifies your integration.) We give our Integration a name and a short description of the use case for this integration. - All other fields can remain as default… - Click on **Save button**  and we have created an Integration to upload our CSV file **Step 2.  The next step is to create the Interface for the Account Object**. To create a new interface follow the given steps: - Go to your Integration page. - Click on the Interface tab (near to detail tab). - Click On the New Interface button. We give our Interface a Name and change the Status to Deploy and choose in Source Name the proper SObject → Account. All other fields can remain as default… Click on the ‚Save‘ button and created our Account Interface. **Interface Fields Information: ** - **Name** → It can be Account, Contact or Case.. etc to notify your Interfaces - **Status** → Deployed (It can be used) - **Sequence** → Ranking number (1) - **Adapter** → It is the connector - **Source Name** → Salesforce Objects (Account, Contact or Case.. etc.) - **Operation Type** → There are 4 types: **Upsert **→ To update on existed data and insert new data that doesn't exist yet in Message Monitoring. **Update → **The Only updates on data that is already existed in Message Monitoring. **Insert →** Add all data in the Message Monitoring. **Delete → **all data in Message Monitoring. - Type: There are 2 Types: **Inbound → **Import data into Salesforce **Outbound → **Export data outside Salesforce ![](../images/2020/02/Screenshot-964.png) - We click on ‚Save‘ and created our Account Interface. - We click on the ‚Account Interface‘ link and see the Integration Details. It navigates to: ![](../images/2020/02/Screenshot-965.png) ![](../images/2020/02/Screenshot-972.png) See here Upload Data section under Manual Load, Integration Name, Select Inbound Interface, Select Data Type, Select Separator, Choose Attachment and click on upload. ![](../images/2020/02/Screenshot-973.png) ![](../images/2020/02/Screenshot-974.png) Click on Interface & Scroll down to Source Definition Section ![](../images/2020/02/Screenshot-966.png) Open Mapping ![](../images/2020/02/Screenshot-975.png) **Start Integration Agent, the Agent control board will appear**  **Integration Properties Setup** On the Integration Control Board, click on “Integration Properties Setup” ![](../images/2020/02/Screenshot-962.png) ![](../images/2020/02/Screenshot-976.png) **Integration Name:** Refresh Integration wizard select your integration and Interface which you already created in org & click on **Edit Interface** button **We have 2 types of Adapter: ** - File Base Integration (CSV, Excel, XML, and FTP) - Database Integration (JDBC, ODBC) ![](../images/2020/02/Screenshot-977.png) Click “Test Source Connection” to test the connection to be specified folder and file Click “Save” to save the Integration,  Adapter.    [- How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. ![](../images/2020/02/image_2020_09_07T06_40_55_165Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) **Data Monitoring: ** - Login to the Salesforce instance and go to the Messageboard - Click search ![](../images/2020/02/Screenshot-981.png) ![](../images/2020/02/Screenshot-982.png) - See Message Board - Inbound process successfully ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Integrating data from Agent to Salesforce Title: 4.2 Batch processing. Slug: 4-3-batch-processing URL: https://help.skyvva.com/#article/4-3-batch-processing ================================================================================ # 4.2 Batch processing. #### Introduction A job runs to process batches that use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. All processed batches are managed on the batch control board. Batch Control Board is a dashboard where we can monitor Inbound Processing, Interfaces, Queues, and Schedulers. Each tab holds a different function. The board offers us to facilely monitor the batch processing. This document will guide us How to utilize the Batch Control board in detail. Batch Control Board is utilized for mass data which is more than 5000. #### Batch Control Board Batch Control Board is located at the 'Detail' tab of Integration and exists in the 'Custom Links' section. We use the Batch Control Board to store data temporarily. - Create Integration & Interface ![](../images/2020/02/Screenshot-988.png) - Click on Interface & Scroll down to Detail page - Change Package Size ![](../images/2020/02/Screenshot-991.png) - Again Scroll down to Basket Setting section & Enable Batch mode ![](../images/2020/02/Screenshot-990.png) Go to **SKYVVA** Agent configure with your Salesforce Org. Which is obvious - Select Integration Name & Select Batch Interface ![](../images/2020/02/Screenshot-993-1.png) - Click on Edit Interface ![](../images/2020/02/Screenshot-996.png) - Select File Folder - Click on Test Query - Save **Go to your Salesforce Org.** - Click on Open Mapping Button ![](../images/2020/02/Screenshot-998.png) - Select Ext Id - Save **Go to Agent** [- How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. - Select your Interface **Batch-Interface** - Click on the Process button ![](../images/2020/02/image_2020_09_07T07_08_46_530Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Process Completed - Click ok button ![](../images/2020/02/Screenshot-1000.png) Go back to your Salesforce Org. - Go to Integration Detail page - Click on Batch Control Board #### Status: **Status** **Description** **Init** Basket is created. **Worker** Basket is a pass to the worker. **Processing** Basket currently processes by the worker. **Completed** The Basket has been successfully processed. **Failed** Basket processing gets failed. **Canceled** The Basket was canceled by the Administrator. #### Monitoring Batch Control Board When you open the Batch Control board we will find four tabs available which are Inbound Processing, Interfaces, Queues, and Scheduler. Each tab has different functions and displays things relatable with Batch processing. The following steps will show you how to monitor each tab: #### Inbound Processing Inbound Processing is a tab which stores baskets that have inbound direction. There are three sections available in this tab. That section includes Filter, Working Baskets and History Basket. All the incoming basket will store in Working Basket until you set the schedule to run or manually process them. When the baskets are done processing they will move to the History Basket section automatically. #### Filter The filter is a screen where we can search the baskets. We can filter the baskets based on: - Created Date - Modified Date. - The result will reflect as below ![](../images/2020/02/Screenshot-1001.png) - Scroll down to Working Basket Section - See Status Inhit ![](../images/2020/02/Screenshot-1002.png) #### Status Init This is the first status when the attachment is created. When a message is sent utilizing batch mode an affixment gets engendered in the working basket and the status is set to "Init". The Annexation Processing Scheduler will only cull ingresses to be processed which has this status. From this status, the append can become the status "Worker". #### Scheduler There are two schedulers available in the Scheduler tab which are 'Attachment Process' and 'Attachment Reprocess '(reprocess the fail annexation). These schedules are for categorical integration. You can set the time and commence the schedule or refresh it. ![](../images/2020/02/Screenshot-1005.png) - Set Scheduler Time for 2 min. Time Interval ![](../images/2020/02/Screenshot-1006.png) - Click on start button ![](../images/2020/02/Screenshot-1008.png) - See History Basket - Number of records 793 - Status completed ![](../images/2020/02/Screenshot-1009.png) Go to message Monitoring Tab - Select Integration & Interface name ![](../images/2020/02/Screenshot-1010.png) - Click search button - 793 records integrated successfully ![](../images/2020/02/Screenshot-1011.png) ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Integrating data from Agent to Salesforce Title: 4.3 Bulk processing. Slug: 4-4-bulk-processing URL: https://help.skyvva.com/#article/4-4-bulk-processing ================================================================================ # 4.3 Bulk processing. #### Learning Objectives In **SKYVVA**, the bulk-loading option increases the performance of a session where huge volumes of data are involved. During bulk loading, the Integration Service bypasses the database log, which results in performance improvement. Without writing to the database log, however, the target database cannot perform a rollback. While using bulk loading, the need for improved session performance must be weighed against the ability to recover an incomplete session. #### Introduction The Data Integration Service can use the **SKYVVA** Bulk API to write data to sObjects. Use the Bulk API to write large amounts of data to Salesforce with a minimal number of API calls. Users can use the Bulk API to write data to Salesforce targets with **Salesforce API version 31.0.** With a Bulk API write, each batch of data can contain up to** 10,000** records or one million characters of data in CSV format. When the Data Integration Service creates a batch, it adds required characters such as quotation marks around text, to format the data. Users can configure a **Bulk API** target session to load batches serially or in parallel. By default, the data load is in parallel mode, but you can override the data load to serial mode. Users can also monitor the progress of batches in the session log. To configure a session to use the Bulk API for Salesforce targets, select the Use **SKYVVA** Bulk API session property. When the user selects this property, the Data Integration Service ignores the Max Batch Size session property. #### SKYVVA Bulk Interface Processing SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When the user has much data, using Bulk Interface Processing is necessary (over **5000** records). Before configuring Bulk Interface Processing, the user has to know about the parameters: **BULK Mode:** Check this flag if you want to run interface in a bulk mode using Salesforce BULK API. **Bulk Version:** We support SFDC pure bulk mode in version 1.0 or 2.0. Then we have our own **SKYVVA** bulk mode. This uses **SKYVVA** workflow and mapping and thus is more powerful but slower than the pure bulk API technique from Salesforce. This one is **SKYVVA’s** own bulk mode. **Bulk Processing Mode:** This field indicates the two-mode, which is support with bulk version 1.0. With bulk, version 2.0 only parallel mode is supported. Therefore, the value here depends on the selection of the field bulk version e.g. when we want to use ‘Serial’ then we need to choose ‘Bulk V 1.0’. #### How to Use Bulk Processing Mode with Agent? **Using SKYVVA Bulk version** - Create Integration - Create Interface ![](../images/2019/07/Screenshot-366.png) - Click on Interface - Scroll down to the Bulk Setting section - Check flag of BULK Mode - Select **SKYVVA Bulk1.0** value from the picklist - Save ![](../images/2019/07/Screenshot-368.png) - Scroll down to Source Definition section - Choose file & Save ![](../images/2019/07/Screenshot-369.png) - Click on Open Mapping Button ![](../images/2019/07/Screenshot-371.png) - Select Ext Id - Save Go to **SKYVVA** Agent configure with your Salesforce Org. Which is obvious - Select Integration Name - Select SKYVVA Bulk Interface - Click on Edit Interface ![](../images/2019/07/Screenshot-372.png) ![](../images/2019/07/Screenshot-373.png) - Select File Folder - Write File Name - Click on Test Query - Save ![](../images/2020/02/image_2020_09_11T06_39_40_224Z.png) - Select your Interface **SKYVVA Bulk** - Click on the Process button ![](../images/2020/02/image_2020_09_11T06_42_05_716Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Process Completed - Click ok button ![](../images/2019/07/Screenshot-378.png) Go back to your Salesforce Org. - Go to Integration Detail page - Click on Bulk Control Board ![](../images/2019/07/Screenshot-385.png) - Drop down and select your Inbound Interface - Click on the Search button - Now click on timer logo ![](../images/2019/07/Screenshot-382.png) - Set Time Interval lets play with 2 min. - Save ![](../images/2019/07/Screenshot-388.png) - Click on Action button and start Scheduler - See message pop up in dialogue box Bulk Schedule Job is running ![](../images/2019/07/Screenshot-394.png) - See Bulk Data Inbox shows total no. of records ![](../images/2019/07/Screenshot-390.png) - Bulk Data Monitor shows the no. of records which are 10 - Status Completed ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Integrating data from Agent to Salesforce Title: 4.4 Auto-Switch mode. Slug: 4-5-auto-switch-mode URL: https://help.skyvva.com/#article/4-5-auto-switch-mode ================================================================================ # 4.4 Auto-Switch mode. #### Introduction SKYVVA providing different data processing modes like immediately processing, Batch processing, Bulk processing modes. where Auto-Switch mode is a combination of all three modes. When data processing is in the auto-switch mode it means processing is based on the number of records and IntegrateMaxSize, IntegrateBatchMaxSize. #### What is Auto-Switch mode? **Auto Switch Mode** will push record to the correct **API** depend on the amount of record, this **Auto SwithMode** is a dependency with "Integrate Batch Max Size" and "Integrate Max Size" Auto-switch mode is a data processing mode provided by **SKYVVA**. When the auto-switch mode flag checked, It means that Agent automatic switch **SKYVVA** API based on the number of record and IntegrateMaxSize, IntegrateBatchMaxSize. And when the flag is unchecked it means that data is integrated into normal mode (no batch or bulk) no matter what is the size of records. Before configuring Auto-Switch Mode, you have to know about the parameters: **![](../images/2020/02/auto.png)** - **Integrate Max Size →** Maximum number of records that **SKYVVA** Integration Agent can integrate using method integrate. The default value is 200. If the number of records to be integrated is more than 200 value, Agent will switch to use the **Batch** API method automatically. - **Integrate Batch Max Size → **Maximum number of records that the **SKYVVA** Integration using method integrates Batch. The default value is 5000. If the number of records to be integrated is more than 5000 values, Agent will switch to use the Bulk API method automatically. If the number of records (Data) **<=** Integrate Max Size(**200**), Interface will run in **Normal Mode.** If the number of records (Data) **>** Integrate Max Size(**5000**) and the number of records (Data) **<=** Integrate Batch Max Size, Interface will run in **Batch Mode.** If the number of records (Data) **>** Integrate Batch Max Size(**5000**), Interface will run in **BULK Mode.** #### Pre-requisite - We have to create [Integration](#article/what-is-an-integration-and-how-to-create-it) - Creating integration next step is to create [Interface](#article/1-what-is-an-interface-and-how-to-create-it) #### #### Configuration→How to use Auto-Switch mode? We click on the 'Account Interface' link and see the Interface Details and scroll down to Runtime Configuration-Inbound section then checkbox on Use Auto-Switch Mode. ![](../images/2020/02/Screenshot-1014.png) #### How to use Auto-Switch mode? Assuming you already have created interface since this part will be the focus on integrating from Agent as an example. To integrate from Agent, please run Agent-UI and more steps as following: - After running the Agent-UI, the Integration Control Board will popup then you have to click on Integration Wizard. - Select your agent the Property File. - We have to select the existing integration and interface on which we have to process data. Go to **SKYVVA** Agent configure with your Salesforce Org. Which is obvious - Select Integration Name & Select AutoSwitch Interface ![](../images/2020/02/Screenshot-1017.png) - Click on Edit Interface ![](../images/2020/02/Screenshot-1015.png) - Select File Folder - Click on Test Query - Save **Go to your Salesforce Org.** - Click on Open Mapping Button ![](../images/2020/02/Screenshot-1016.png) - Select Ext Id - Save **Go to Agent** - Select your Interface **AutoSwitch-Interface** - Click on the Process button ![](../images/2020/02/image_2020_09_11T06_51_12_311Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) - Process Completed - Click ok button ![](../images/2020/02/Screenshot-1019.png) **Go back to your Salesforce Org. Go to Integration Detail page** - Click on Batch Control Board How to use [Batch Control Board ?](#article/4-3-batch-processing) ![](../images/2020/02/Screenshot-1020.png) 2. Click on Bulk Control Board How to use [Bulk Control Board ?](#article/4-4-bulk-processing) ![](../images/2020/02/Screenshot-1021.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Similarly, user can use both the Batch Control Board & Bulk Control Board feature[/su_box] ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Integrating data from Salesforce to Agent Title: 5. Integrating data from Salesforce to Agent Slug: 5-integrating-data-from-agent-to-salesforce URL: https://help.skyvva.com/#article/5-integrating-data-from-agent-to-salesforce ================================================================================ # 5. Integrating data from Salesforce to Agent ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Integrating data from Salesforce to Agent Title: 5.1 Using Salesforce CDC change event Slug: 5-1-using-salesforce-cdc-change-event URL: https://help.skyvva.com/#article/5-1-using-salesforce-cdc-change-event ================================================================================ # 5.1 Using Salesforce CDC change event #### Learning Objectives A Change Data Capture event, or change event, is a notification that Salesforce sends when a change to a Salesforce record occurs as part of a Create, update, delete, or undelete operation. User has to create Account in SalesForce, it should trigger an event and send this Account Information to MS SQL Server DB of our organization. Once it's inserted in our SQL DB, it will create particular AccountID and give it back to SalesForce. The notification includes all new and changed fields and header fields that contain information about the change. #### Introduction The reason users need to accomplice this is our Account creation process used to start from Our own **SKYVVA** product so it was creating AccountID (Auto Generated) from DB and used from Primary identification for Account across the system. Now we want to create Account from SalesForce but need to keep AccountId generated from SQL DB. For example, header fields indicate the type of change that triggered the event and the origin of the change. Change events support all custom objects and a subset of standard objects. #### [su_box title="Note" box_color="#2a8af0" title_color="#000000"]User have to click on link below through which user get configuration about, How to Consume the change events using an apex trigger.[/su_box] #### So here we will learn How to Consume the change events using an apex trigger and do local action e.g. update an account:- **How to use it?** **Follow the given steps:-** **Step 1:- **Subscribing to platform events:- - Set up debug logs for event Subscriptions. 1. From Setup, enter Debug Logs in the Quick Find box, then click Debug Logs. 2. Click New. 3. For Traced Entity Type, select Automated Process. 4. Select the time period to collect logs and the debug level. 5. Click on Save. ![](../images/2019/10/change.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Using the Event PlatForm for use the Salesforce CDC change event to send data out with the SKYVVA API ,The user type is  Automated Process.[/su_box] **Step 2:-  **Select Object for Change data capture:- 1. From Setup, enter Change data capture in the Quick Find box. 2. Select-Object. ![](../images/2019/10/change1.png) 3. Save it. ![](../images/2019/10/change2.png) **Step 4:-** Create an Apex trigger:- - Open Developer console. - Click on File=>New=>Apex Trigger. - Enter Name and sObject as shown in the picture given below. ![](../images/2019/10/cdcEvent1.png) 4. Click on the Submit button to generate a header script. 5. After clicking on the submit button. 6. We will add the code as shown in the picture given below. ![](../images/2019/10/cdcEvent.png) **We can use this code:-** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]trigger trgTestCDC on AccountChangeEvent (after insert) { List lstId = new List(); for (AccountChangeEvent event : Trigger.New) { EventBus.ChangeEventHeader header = event.ChangeEventHeader; System.debug('Received change event for ' + header.entityName + ' for the ' + header.changeType + ' operation.'); System.debug('RecordIds: ' + header.recordIds); System.debug('Account Name: ' + event.Name); System.debug('Account Phone: ' + event.Phone); if ( header.changetype == 'UPDATE') { lstId.addAll(header.recordIds); } } }[/aux_code] #### Check the result on Debug logs:- 1. From Setup, enter Debug Logs in the Quick Find box, then click Debug Logs. 2. We can check result in debug logs. ![](../images/2019/10/cdcEvent2.png) Now you might be thinking why our chapter name is "How to use the Salesforce CDC change event to send data out with the SKYVVA API?" So here is the reason. The salesforce CDC change event to send data out with the SKYVVA API means, that we are using a combination of the real-time capability of salesforce change data capture and callout capability of SKYVVA. The callout capability of SKYVVA is best as we have different adapters that connect to many external systems for this our user doesn't need a programmer. This is the benefit of using SKYVVA invoke Callout2(). #### We provide these two modes to our user:- - Real-time with we invoke callout. The combination of the Salesforce CDC  change event and SKYVVA callout. - Batch processing with we invoke callout. Using SKYVVA CDC with SKYVVA callout. #### When to use which mode:- - If there is a lot of changes and updations it will impact the system change during real-time. Where we don't need real-time in some cases, sometimes real-time block the resources. It is a resource-consuming blocking of the connecting systems in terms of integration technology. In this case, SKYVVA CDC with SKYVVA callout is the best option, because of its scheduler. - The combination of Salesforce CDC and SKYVVA callout is used when we want an updated record in real-time. As the callout capability of SKYVVA is best as we have different adapters that connect to many external systems for this our user doesn't need a programmer. This is the benefit of using SKYVVA invoke Callout. #### So here we will learn how to consume the event using an apex trigger and sending out data using Invoke callout2. **How to use it?** **Pre-requisite:-** - Create Integration. - Create Interface (Outbound). **Follow the given steps:-** **Step 1:- **Subscribing to platform events:- - Set up debug logs for event Subscriptions. 1. From Setup, enter Debug Logs in the Quick Find box, then click Debug Logs. 2. Click New. 3. For Traced Entity Type, select Automated Process. 4. Select the time period to collect logs and the debug level. 5. Click on Save. ![](../images/2019/10/change.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Using the Event PlatForm for use the Salesforce CDC change event to send data out with the SKYVVA API ,The user type is  Automated Process.[/su_box] **Step 2:-** Register Licence key for Automated Process user:- 1. From Setup, enter custom settings in the Quick Find box. 2. Click on the Manage option. ![](../images/2019/10/change5.png) 3. Click on the "NEW" button at the top. 4. Enter the SKYVVA license key in the value block. 5. Save it. ![](../images/2019/10/change6.png) **Step 3:-  **Select Object for Change data capture:- 1. From Setup, enter Change data capture in the Quick Find box. 2. Select-Object. ![](../images/2019/10/change1.png) 3. Save it. ![](../images/2019/10/change2.png) **Step 4:-** Create an Apex trigger:- - Open Developer console. - Click on File=>New=>Apex Trigger. - Enter Name and sObject as shown in the picture given below. ![](../images/2019/10/re_cdc_change_event.png) 4. Click on the Submit button to generate a header script. 5. After clicking on the submit button. 6. It will show the screen as shown in this picture given below. ![](../images/2019/10/re_cdc_change_event1.png) **Step 5:-  **Generate Trigger script by following steps given below:- - Navigate to SKYVVA Trigger tab. - Select Change Event Trigger in Trigger Type picklist. - Checkbox After insert. - Select your integration in Integration Name. - Select your Interface in Interface Name. - Select object change event in Select-Object. - Select any Mode in Trigger Mode e.g. AUTO. - Click the Generate Script tab to generate script Trigger. ![](../images/2019/10/re_cdc_change_event2.png) 9. Select and copy the generated script and paste it in the apex trigger which we created in step 4. 10. Do it as shown in the picture given below. ![](../images/2019/10/re_cdc_change_event3.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For trigger after delete it is working when query selection with keyword "ALL ROWS". E.g SELECT BillingCity,BillingCountry,Name,Id,Description From Account ALL ROWS[/su_box] #### When to use which mode:- - If there is a lot of changes and updations it will impact the system change during real-time. Where we don't need real-time in some cases, sometimes real-time block the resources. It is a resource-consuming blocking of the connecting systems in terms of integration technology. In this case, SKYVVA CDC with SKYVVA callout is the best option, because of its scheduler. - The combination of Salesforce CDC and SKYVVA callout is used when we want an updated record in real-time. As the callout capability of SKYVVA is best as we have different adapters that connect to many external systems for this our user doesn't need a programmer. This is the benefit of using SKYVVA invoke Callout. Now Users can be configured how **SKYVVA** Change Events to synchronize changes to the Salesforce records in your SQL server Db Management system. **SKYVVA** can Change/Update events the same way you subscribe to other events. **Connect to Server** - Click on Databases - Create Column Name, BillingCity, BillingStreet, BillingCountry - Select Data Type “**nvarchar(Max)”**or”**nvarchar(50)”** - Allow Nulls checked by default Now go to Salesforce Click on Adapter Tab - Create Adapter Type **JDBC** - Click on Ping Connection ![](../images/2020/02/Screenshot-890.png) - Adapter property made a connection successfully with Agent and SQL Server called **jdbcSQLServerDriver** - Database Type **SQL Server** - Database Name **mydb** ![](../images/2020/02/Screenshot-891.png) - Create Integration - Create Interface ![](../images/2020/02/Screenshot-889.png) - Click on Interface - Scroll down to mapping Section - Select Ext id - Save ![](../images/2020/02/Screenshot-892.png) Now go to the Agent and Select your Integration which you just created - Select your Interface - Click on Edit Interface Button ![](../images/2020/02/Screenshot-894.png) Now see Interface Source Definition - Test Source connection with SQL Server Database - Write Query in Query/Filter section - Click on Test Query button - Records are fetching from Salesforce Org in Query table successfully - Save ![](../images/2020/02/image_2020_02_11T07_41_47_608Z.png) - Select Your Interface - Click on the Process button ![](../images/2020/07/image_2020_09_11T07_06_50_499Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) Go to Salesforce Org and click on Message Monitoring - Select Integration Name - Select Interface - ok ![](../images/2020/02/image_2020_02_11T07_56_38_264Z.png) - Scroll Down to Messages section - Click on the search button ![](../images/2020/02/image_2020_02_11T08_10_19_785Z.png) - Records upsert successfully - Now click on Account Object - Click on Record user just created ![](../images/2020/02/Screenshot-897.png) - Click on Related list Detail ![](../images/2020/02/Screenshot-901.png) Open **SQL Server** Now - Right, Click on **Account.ApexTrigger** - Click on Edit Top 200 Rows - Now records are open - Now we have to update ![](../images/2020/02/image_2020_02_11T09_15_40_436Z.png) Now Change/Update on Salesforce Org. - Billing Street - Billing City - Billing Country ![](../images/2020/02/Screenshot-900.png) Open SQL Server Now - Right-click anywhere in Records Section - Click on Execute SQL - Congratulation See User Record field is Change/Updated Automatically ![](../images/2020/02/image_2020_02_11T09_30_58_207Z.png) ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Integrating data from Salesforce to Agent Title: 5.2 Using Process Builder Slug: using-process-builder URL: https://help.skyvva.com/#article/using-process-builder ================================================================================ # 5.2 Using Process Builder [su_box title="Note" box_color="#2a8af0" title_color="#000000"]A Process Builder is a notification that Salesforce sends when a change to a Salesforce records/fields appear as part of a Create, update, delete, or undelete operation.[/su_box] #### Learning Objectives A Change Data Capture event, or change event, is a notification that Salesforce sends when a change to a Salesforce record occurs as part of a Create, update, delete, or undelete operation. User has to create Account in SalesForce, it should trigger an event and send this Account Information to MS SQL Server DB of our organization. Once it's inserted in our SQL DB, it will create particular AccountID and give it back to SalesForce. The notification includes all new and changed fields and header fields that contain information about the change. #### Introduction The reason users need to accomplice this is our Account creation process used to start from Our own **SKYVVA** product so it was creating AccountID (Auto Generated) from DB and used from Primary identification for Account across the system. Now we want to create Account from SalesForce but need to keep AccountId generated from SQL DB. For example, header fields indicate the type of change that triggered the event and the origin of the change. Change events support all custom objects and a subset of standard objects. ![](../images/2020/02/Screenshot-881-1.png) #### How to use Process Builder with Agent? The user has to experienced how **SKYVVA** Change Events to synchronize changes to the Salesforce records in your SQL server Db Management system. SKYVVA can Change/Update events the same way you subscribe to other events. Users can use Process Builder. CometD is a messaging library that enables listening to events through long polling and simulates push technology. Go to Salesforce Org. - Click on Setup Gear icon ![](../images/2020/02/Screenshot-944.png) - Write Process builder in the search box & click on it ![](../images/2020/02/Screenshot-945.png) - Click on New button ![](../images/2020/02/Screenshot-951.png) - Write Process Name then Select A record changes ![](../images/2020/02/Screenshot-947.png) - Click Add Object - Choose object e.g Account - Start the process, select when a record is created or edited ![](../images/2020/02/Screenshot-952.png) - Click Add Criteria - Write Criteria Name, choose Formula evaluates true for criteria to Execute Action - Write Formula **ISCHANGED([Account].BillingCity)** formula for changing **BillingCity** - Save ![](../images/2020/02/Screenshot-954.png) - Click Add Action - For Action, Type choose **Apex, **for Action Name write Name - Choose **SKYVVA Callout/Create CP** ![](../images/2020/02/Screenshot-956.png) - Click Activate button on the right side then click confirm button when the popup message ![](../images/2020/02/Screenshot-957.png) **Connect to Server** - Click on Databases - Create Column Name, BillingCity, BillingStreet, BillingCountry - Select Data Type “**nvarchar(Max)”**or”**nvarchar(50)”** - Allow Nulls checked by default Now go to Salesforce Click on Adapter Tab - Create Adapter Type **JDBC** - Click on Ping Connection ![](../images/2020/02/image_2020_02_20T07_13_07_791Z.png) - Adapter property made a connection successfully with Agent and SQL Server called **jdbcSQLServerDriver** - Database Type **SQL Server** - Database Name **mydb** ![](../images/2020/02/Screenshot-891.png) - Create Integration - Create Interface ![](../images/2020/02/Screenshot-929.png) - Click on Interface - Scroll down to mapping Section - Select Ext id - Save ![](../images/2020/02/Screenshot-930.png) Now go to the Agent and Select your Integration which you just created - Select your Interface - Click on Edit Interface Button ![](../images/2020/02/Screenshot-932-1.png) **Now see Interface Source Definition** - Test Source connection with SQL Server Database - Write Query in Query/Filter section - Click on Test Query button - Records are fetching from Salesforce Org in Query table successfully - Save ![](../images/2020/02/image_2020_02_20T08_49_29_201Z.png) - Select Your Interface - Click on the Process button ![](../images/2020/07/image_2020_09_11T07_23_07_538Z.png) ![](../images/2020/06/image_2020_06_25T13_52_40_923Z.png) **Go to Salesforce Org and click on Message Monitoring** - Select Integration Name - Select Interface - ok ![](../images/2020/02/Screenshot-933.png) - Scroll Down to Messages section - Click on the search button ![](../images/2020/02/image_2020_02_20T09_54_38_152Z.png) - Records upsert successfully - Now click on Account Object - Click on Record user just created ![](../images/2020/02/Screenshot-939.png) - Click on Related list Detail ![](../images/2020/02/Screenshot-941.png) **Open SQL Server Now** - Right Click on **Account_ProcessBuilder** - Click on Edit Top 200 Rows - Now records are open - Now we have to update ![](../images/2020/02/image_2020_02_20T10_29_47_201Z.png) Now try to Change/Update on Salesforce Org. - Billing City ![](../images/2020/02/Screenshot-942.png) - See here “**We hit a snag**” means we can’t change **BillingCity** because Process builder fire on the **BillingCity** field and it works fine. - Go to your registered **EmailID.** ![](../images/2020/02/Screenshot-943.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Easily send an email from a process by using an email alert. Email alerts are configured outside of the Process Builder and contain the standard text, list of recipients, and template for an email. - Email alerts are emails generated by an automated process and sent to designated recipients. These actions consist of the standard text and list of recipients for an email. You can associate email alerts with processes, flows, workflow rules, approval processes, or entitlement processes. [/su_box] ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Integrating data from Salesforce to Agent Title: 5.3 Using SKYVVA CDC Slug: 5-3-using-skyvva-cdc URL: https://help.skyvva.com/#article/5-3-using-skyvva-cdc ================================================================================ # 5.3 Using SKYVVA CDC #### Learning Objectives CDC can be used with SAP SFDC2SAPPI Adapter. But we need this functionality also for the Agent. What we can do with the agent is using streaming API to capture changes record by record e.g. real-time data changes. This is based on a single record only e.g. if the user changes an account X this account will be transferred to the client. With CDC we support not real-time and not single record scenarios. What we support is an asynchronous scenario with collecting many records and sent as a single message to the external system. This feature is good for big size data and for a scenario where mass changes are to be managed. #### Introduction **SAP SFDC2SAPPI Adapter ** - Use **SKYVVA** Outbound Scheduler: This flag use for CDC Processing. When you check this flag, it’s mean that you activate the CDC. It activates both CDD and CDT. - CDC Mode Only: This field is used for separating the process of CDD and CDT follow flag Use **SKYVVA** Outbound Scheduler. Select CDD to run only CDD for interface or select CDT to run only CDT. Select None to run both CDD and CDT at the same time. - Interface Control Runtimes: Interface Control Runtime could be used for another purpose. for CDD, it is used where the user can set LastRun DateTime that CDD finds the record change which is record’s LastModifiedDate>that date. Now we can send data from Salesforce to **Agent using CDC with Agent listener http/https.** #### How to use SKYVVA CDC with Agent? **Configuration Agent Service SSL **A Simple Step-By-Step Guide To Apache Tomcat SSL Configuration. Secure Socket Layer (SSL) is a protocol that provides security for communications between client and server by implementing encrypted data and certificate-based authentication. ![](../images/2020/07/image_2020_07_27T11_33_18_645Z.png) An outbound interface can be processed with the different adapters to configure CDC. For example, we use SFDC2SAPPI adapter, Rest Adapter, Soap adapter. Follow the given step to process the outbound interface using the adapter. We are using SFDC2SAPPI adapter as an example, you can follow the given steps: Follow the given step to process outbound interface using adapter: **Step1:** Create Adapter We are using SFDC2SAPPI adapter. To create SFDC2SAPPI adapter follow the given steps: **Click on Agent Control Board (old) Tab** [- How to use the Agent Control Board (old) ?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. **Now go to Salesforce Click on Adapter Tab** - Create Adapter Type JDBC - Click on Ping Connection ![](../images/2020/07/image_2020_07_27T12_10_33_061Z.png) **Step2:** - Create Integration - Create Interface ![](../images/2020/07/image_2020_07_27T12_38_24_172Z.png) We have to configure CDC For an Interface. - In order to configure the CDC for an Interface, We have to open and edit Interface. - Check “Use Skyvva Outbound Scheduler” checkbox. Go to Interface and Click on Related tab -> scroll down the page to Interface Control Runtimes Specify the parameters: ![](../images/2020/07/image_2020_07_27T12_43_53_620Z.png) **Step3:** **Enter Integration Details Tab** CDC Control board Tab and apply a filter on: - Integration name - Interface Name - Status - Search ![](../images/2020/07/image_2020_07_27T12_45_35_687Z.png) **Step3:** **Schedule CDT** - Go Integration Details Tab - Go to Scheduler Tab - Start the Schedule and set the minute as user want to set ![](../images/2020/07/image_2020_07_27T12_47_01_598Z.png) - Scroll Down to Messages section - Click on the search button ![](../images/2020/07/image_2020_07_27T12_49_25_110Z.png) - Records exported successfully ![](../images/2020/07/image_2020_07_27T12_51_46_052Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]CDC Control Board is a dashboard where we can monitor Change Pointer, Interfaces and Scheduler. Each tab holds different functionality. Change Pointer is a table that stores change pointer records. So we can facilely monitor them on Change Pointer table in CDC Control Board rather than on the Integration Admin tab. This withal applies for Interfaces and Schedulers tab [What is CDC and how to configure it...](#article/how-to-use-cdc-control-board)[/su_box] ================================================================================ Book: Agent Guide (Old) Section: Agent Guide (Old) Subsection: Schedulers Title: 6.2 Outbound Processing. Slug: 6-2-outbound-processing URL: https://help.skyvva.com/#article/6-2-outbound-processing ================================================================================ # 6.2 Outbound Processing. #### What is SKYVVA Scheduler **SKYVVA** Schedulers is a program that starts and handles jobs automatically. Each scheduler has a different purpose. These functions include Agent Scheduler, Basket Processing Scheduler, Bulk Processing Scheduler, CDD & CDT Scheduler, doMaintenance Scheduler, Message Reprocessing Scheduler, Basket Reprocessing Scheduler, and Checker Scheduler. #### The functionality of SKYVVA Scheduler These schedules are important. They play different roles. To know more detail about these schedulers, you can check them below: **Agent Scheduler** Agent Scheduler is one of the **SKYVVA** schedules which is used in agent for running integration service. You can set up the scheduler as your wish. To find Agent Scheduler If you want to know where Agent scheduler is, please see the steps below: - Configure Agent - Click on **Generate OutBound Schedule Per Integration** ![](../images/2020/07/image_2020_09_02T06_39_32_002Z.png) ![](../images/2020/07/image_2020_09_02T06_41_48_302Z.png) ![](../images/2020/07/image_2020_09_02T06_44_04_395Z.png) **Click on Agent Control Board (old) Tab** [- How to use the Agent Control Board (old)?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. **Prerequisite** Before setup the scheduler, there are some properties you must know: - **Schedule Mode →**There are two types of modes that you can choose. These modes are Processing and Reprocessing. - **Integration Name →**The name of your integration. - **Interface Name →**The name of your interface in an integration. - **Integration Mode →**The direction of integration. They are Inbound and Outbound - **Daily Frequency →** 1. **Run at→** If you check this button it means you want the scheduler to run once a day but at a specific time. 2.** Run every→** The scheduler will run every hour or minute depending on you who set them up. If you want to run every X hour then you have to choose Hours. However, you have to choose the starting time along with the ending time you want it to end. - **Weekly Frequency →** The default is all day is selected. It means the scheduler will run every day. But if you want to skip one day or more you can deselect that day. - **Monthly Frequency →** The function of this one is similar to the above. If you want the scheduler to skip then deselect the month you don’t want to run. - **Choose the schedule Mode →**Processing or Reprocessing - Choose Integration, Interface Name - **Select Integration Mode** **→ **Outbound - Choose the one of Frequency you want to set for running - Click **Save**. For more understanding of Scheduler hit this link [Basket Processing Scheduler, Bulk Processing Scheduler, CDD & CDT Scheduler](#article/overview-of-skyvva-scheduler) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] **SKYVVA** Schedulers is a type of scheduled job which runs regularly bases on-time setting. There are three categories of Schedulers. - **Schedule per integration:** is a global scheduler process all interfaces on integration, it will skip either the Interface group or interface that is running its scheduler. - **Schedule per-interface group:** process all interfaces in the group, if the scheduler has been started then all the schedule of the interface in this group will stop automatically. - **Schedule per interface:** it will process a specific interface. It cannot be started if its interface group scheduler has already started. [/su_box] ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: How to install the SKYVVA adapter? Title: 1. How to install the SKYVVA adapter? Slug: 1-how-to-use-mule-skyvva-adapter URL: https://help.skyvva.com/#article/1-how-to-use-mule-skyvva-adapter ================================================================================ # 1. How to install the SKYVVA adapter? You have to contact with "support@skyvva.com" to get the Skyvva connector jar.  Once you have the jar use the following steps to install that in your local maven repository. Pre-requisite: - JDK 1.8+ - Maven 3.3+ - Set the Maven bin folder in Path environment variable so that mvn command should be available. - Anypoint Studio 7.3.2+ - Mule Runtime 4.1.4+ - Salesforce Account with Skyvva Adapter - Salesfroce ConsumerId and Secret to use for Oauth Use the following maven command to install the given jar into your maven repository. (Update the version and jar name as applicable) mvn install:install-file -DgroupId=yourGroupId -DartifactId=yourArtifactId -Dversion=1.0.0 -Dclassifier=mule-plugin -Dpackaging=jar -Dfile=mule-skyvva-extension-mule-plugin.jar Once install you can use it using the following dependency in your maven based mule project inside pom.xml *              * *org.mule.extension              * *mule-skyvva-extension              * *1.3.12           * *mule-plugin       * * Note: Do not use the same version if you are trying to install a new version of jar and you have already install an older one previously. ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: How to use Mule SKYVVA adapter? Title: 2. How to use Mule SKYVVA adapter? Slug: how-to-install URL: https://help.skyvva.com/#article/how-to-install ================================================================================ # 2. How to use Mule SKYVVA adapter? The SKYVVA Connector helps accelerate integration to Salesforce product SKYVVA with Mule 4. Using this connector you can directly use the SKYVVA feature in Mule. The following feature of SKYVVA can be achieved through this connector. - Integrate - Integrate Batch - Integrate Synchronous. - Send multiple packages of message to a HTTP listener, connector will collect all your message before sending to the next processor. - Subscribing Salesforce topic (streaming api). - Skyvva Bulk feature - Skyvva Search feature using query or pullQuery operation You need to create a Mule project to use this connector. Once you created the project add the following dependency in your pom.xml *  * *            org.mule.extension * *            mule-skyvva-extension * *            1.3.1 * *            mule-plugin * *      The connector internally connect with salesforce to fetch the ouath token details required for SKYVVA application.The following operations are supported by this connector. Use Mule pallet to search SKYVVA connector. ![](../images/2019/06/skyvva-operations.png)  Integrate, Integrate batch, Integrate synchornous  and Subscribe need same configuration as bellow:  Consumer Key:  Salesforce Consumer key  Consumer Secret: Salesforce Secret key  Username: Salesforce username  Password: Salesforce password  Base API URL: Salesforce base url for your application.  ![](../images/2019/06/mule-skyvva-config.png) Use the **Test Connection** button to test the connection once you are done with your configuration. Validate this connection to make sure your connection details are correct. ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: How to do real-time data synchronization to Salesforce ? Title: 3. How to do real-time data synchronization to Salesforce ? Slug: 3-how-to-do-real-time-data-synchronization-to-salesforce URL: https://help.skyvva.com/#article/3-how-to-do-real-time-data-synchronization-to-salesforce ================================================================================ # 3. How to do real-time data synchronization to Salesforce ? You can achieve real time data synchronization using Skyvva Integrate and Integrate Synchronous feature. The same can be achieved using Mule operation. You need to create your Integration and Interface through Salesforce Skyvva adapter to be used on these operation. - **Integrate:** It is used to call the Integrate method call of Skyvva application.When you use this operation you will find the bellow configuration in your mule Anypoint Studio.  ![skyvva-integrate-screen](../images/2019/07/skyvva-integrate-screen.png) You need to select the Integration name that you have created through Skyvva app from **Integration Name **dropdown (if data not shown in that dropdown list click on the refresh icon beside that to load the data). Then base on your selection of Integration Name, the corresponding interfaces will be shownn in **Interface Name** dorpdown  (if data not shown then click on the refresh icon to load data). When you use a Transform Message before this connector then base on your integration and interface name you will find the respective meta data in the data sense as bellow: ![](../images/2019/06/integrate-before-transformer.png) ![](../images/2019/06/integrate-before-transformer-1.png) When you use a transform message after the skyvva connector then based on the response type from the integrate request you will find the meta data as bellow:  ![](../images/2019/06/integrate-after-transformer.png) The bellow is an example application to use Integrate method.          Use-case :   - Postman will send one message. - The message will be received by Mule HTTP listener. - Mule will convert the message to required format for **Integrate **operation. - **Skyvva**** Integrate** operation will be used to make REST call to salesforce. - The response will be formatted into json and return to postman. ![](../images/2019/06/integrate-flow.png) ![](../images/2019/06/integrate-postman-request.png) ![](../images/2019/06/integrate-postman-response.png) You can monitor your message in Salesforce Skyvva once you got the success message. In Skyvva go to your Integration then click on the **Messages** tab to monitor your messages. You can select your Interface name with various filter criteria then click on search but to find your messages. [![](../images/2019/07/skyvva-integrate-messages.png)](../images/2019/07/skyvva-integrate-messages.png) - **Integrate Synchronous** It is used to call the Integrate Synchronous method of Skyvva application. When you configure this operation you will able to find the data sense capability (meta data) as  it is for Integrate operation.  ![skyvva-integrate-syn-screen](../images/2019/07/skyvva-integrate-syn-screen.png)  You need to select the Integration name that you have created through Skyvva app from **Integration Name **dropdown (if data not shown in that dropdown list click on the refresh icon beside that to load the data). Then base on your selection of Integration Name, the corresponding interfaces will be shownn in **Interface Name** dorpdown  (if data not shown then click on the refresh icon to load data). The bellow is an example application to use Integrate method.          Use-case :   - Postman will send one message. - The message will be received by Mule HTTP listener. - Mule will convert the message to required format for **Integrate ****Synchronous **operation. - **Skyvva**** Integrate**** Synchronous** operation will be used to make REST call to salesforce. - The response will be formatted into json and return to postman. ![](../images/2019/06/integrate-synchronous-flow.png) ![](../images/2019/06/integrate-synchronous-request.png) ![](../images/2019/06/integrate-sysnchronous-response.png) ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: How to use batch technique to push data to Salesforce? Title: 4. How to use batch technique to push data to Salesforce? Slug: 4-how-to-use-batch-technique-to-push-data-to-salesforce URL: https://help.skyvva.com/#article/4-how-to-use-batch-technique-to-push-data-to-salesforce ================================================================================ # 4. How to use batch technique to push data to Salesforce? - **Integrate Batch** It is used to call the Integrate Batch method of Skyvva application. When you configure this operation you will able to find the data sense capability (meta data) as  it is for Integrate operation.   ![](../images/2019/07/integrate-batch-configuration.png) The bellow is an example application to use Integrate method.          Use-case :   - Postman will send five messages. - The messages will be received by Mule HTTP listener. - Mule will convert the messages to required format for **Integrate ****Batch **operation. - **Skyvva**** Integrate**** Batch** operation will be used to make REST call to salesforce. - The response will be formatted into json and return to postman. ![](../images/2019/07/integrate-batch-flow.png) ![](../images/2019/07/integrate-batch-data-mapping.png) ![](../images/2019/07/integrate-batch-postman-request.png) You can use the Batch Control Board in Skyvva application to monitor the batch status and result from the above operation. You can find the Batch Control Board link in your Integration page as below. ![](../images/2019/07/skyvva-salesforce-batch-control-boarde.png) ![](../images/2019/07/salesforce-bc-borad.png) ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: How to use bulk api to push high volume data to Salesforce? Title: 5. How to use bulk api to push high volume data to Salesforce? Slug: 5-how-to-use-bulk-api-to-push-high-volume-data-to-salesforce URL: https://help.skyvva.com/#article/5-how-to-use-bulk-api-to-push-high-volume-data-to-salesforce ================================================================================ # 5. How to use bulk api to push high volume data to Salesforce? You can push high volume of data using Skyvva Sfdc bulk operation. Internally it used the salesforce bulk v2 api to complete your request. It will provide a response with bulk job details once the bulk job is completed. You need to configure your Skyvva interface with the Bulk mode enabled to use this feature for your interface. Mule will list all the integration that you can select to use this operation. Base on your integration then Mule will show all the interface which has been configured to use Bulk. You need to configure both integration and interface in mule for this operation. The salesforce operation (insert/update/upsert/delete) need to be set in the Skyvva interface. You need to configure how to deal with the empty field in your input data based on that configuration the empty field configuration, mule will be ignore the update of that value or will be set the value to null.  You can select the Skyvva Bulk version base as "SFDC Bulk API 2.0" or "SKYVVA Bulk 1.0".  The connector will use the correct bulk version base on your selection internally to fulfill your request. On selection of "SFDC Bulk API 2.0", it will use the Salesforce Bulk v2  API and it will result the job details as output from the connector. But if you select "SKYVVA Bulk 1.0" then it will use Skyvva Bulk integration which creates an Attachment object with ParentId as the interface object Id. Then you can track the progress of that using Salesforce Skyvva application. ![](../images/2019/07/Skyvva-bulk-page-1.png) You can use the "Bulk Control Board" from your Integration to track the progress of your Bulk integration when you have used SKYVVA Bulk 1.0. ![](../images/2019/07/Skyvva-bulkcontrol-1.png) ![](../images/2019/07/skyvva-bulk-board-details-1.png) You can schedule a scheduler for your skyvva bulk message or you can manually run manually using Process Bulk Attachment button as shown bellow. ![](../images/2019/07/skyvva-bulk-scheduler-1.png) Once the scheduler ran then the status of the bulk can be find in Bulk Data Monitor Section as below: ![](../images/2019/07/skyvva-bulk-scheduler-status.png) If the status is  completed, you can find the details of the messages in the Messages section of the Integration. ![](../images/2019/07/message-menu.png) The below screenshot shows how you can find the message details on Message. ![](../images/2019/07/message-result.png) The below screen shows how it can be configured in mule for Sfdc bulk operation. ![](../images/2019/07/Sfdc-bulk-config-1.png) You can use a transform message before this component in Mule to set the input for this operation. The input required for this operation should be in json format. It will automatically shows you the metadata in the required format for your selected skyvaa interface. The below screen show an example of interface that used Account object. The relationship column will automatically shows you the in the required format in the transform message datasense. ![](../images/2019/07/sfdc-bulk-datasense-1.png) The below flow will show an example use of the Skyvva Sfdc bulk operation. ![](../images/2019/07/sfdc-bulk-flow-1.png) The request and response for the above example flow is as below. If there will be any failure of record the same will be added as skyvva message. ![](../images/2019/07/sfdc-bulk-request-1.png) ![](../images/2019/07/sfdc-bulk-response-1.png) Once you get the bulk result from your request then can find the Bulk job related information from the Salesorces. Go to Setup -> In **Quick Find** search for Bulk. Click on **Bulk Data Load Jobs**. [![](../images/2019/07/bulk-sfdc-link.png)](../images/2019/07/bulk-sfdc-link.png) On that page you will able to find your Bulk job details. Click on the Job ID to find more details on your job. [![](../images/2019/07/bulk-job-details-new.png)](../images/2019/07/bulk-job-details-new.png) [![](../images/2019/07/bulk-job-all-details-new.png)](../images/2019/07/bulk-job-all-details-new.png) ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: How to use the auto-switch mode to choose the right mode for data synchronization to Salesfroce? Title: 6. How to use the auto-switch mode to choose the right mode for data synchronization to Salesfroce? Slug: 6-how-to-use-the-auto-switch-mode-to-choose-the-right-mode-for-data-synchronization-to-salesfroce URL: https://help.skyvva.com/#article/6-how-to-use-the-auto-switch-mode-to-choose-the-right-mode-for-data-synchronization-to-salesfroce ================================================================================ # 6. How to use the auto-switch mode to choose the right mode for data synchronization to Salesfroce? You can configure auto-switch in your skyvva interface. The same will be reflected automatically in your Mule application when you used Skyvva Mule connector. It has been available with Integrate, Integrate Synchronous and Integrate Batch operations of the Mule Skyvva connector. It will internally use the correct way to store the data based on the data size and the configuration used for that interface. If it has high volume data then internally it will switch to Skyvva Bulk mode and update your data. The below is a request payload for Integrate Synchronous operation with auto switch enabled and with Integrate_Max_Size__c as 2 and Integrate_Batch_Max_Size__c value as 5. - Request has 7 records. It will use the Skyvva Bulk and create an Attachment object in the salesforce with ParentId value as the interface's salesforce Id. Later Skyvva will use that to create the respective objects in salesforce. Refer section-5 ([5. How to use bulk api to push high volume data to Salesforce? ](#article/5-how-to-use-bulk-api-to-push-high-volume-data-to-salesforce)) for more details of bulk api. - Request has only 1 records. It will use Skyvva Integrate Synchronous to complete the request. Refer section-3 ([#article/3-how-to-do-real-time-data-synchronization-to-salesforce](#article/3-how-to-do-real-time-data-synchronization-to-salesforce)) for more details on SKyvva Integrate Synchronous. - Request has 3 records. It will use Skyvva Integrate Batch to complete the request. Refer section-4 ([#article/4-how-to-use-batch-technique-to-push-data-to-salesforce](#article/4-how-to-use-batch-technique-to-push-data-to-salesforce)) for more details on SKyvva Integrate Batch. ![](../images/2019/07/autoswitch-request-1.png) The response from the above request will have the attachment object Id. ![](../images/2019/07/auto-switch-response-1.png) ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: How to use streaming API to get data changes from Salesforce? Title: 7. How to use streaming API to get data changes from Salesforce? Slug: 7-how-to-use-streaming-api-to-get-data-changes-from-salesforce URL: https://help.skyvva.com/#article/7-how-to-use-streaming-api-to-get-data-changes-from-salesforce ================================================================================ # 7. How to use streaming API to get data changes from Salesforce? - **Skyvva Subscribe Operation:**  This operation is used to subscribe skyvva related topic using salesforce streaming api.  You need to select the integration name then the corresponding Interface name for which you have enabled streaming api using Skyvva. On select of integration the below dropdown for Streaming Interface will be loaded only with the interfaces where the streaming API is enabled. You can refer [#article/how-to-use-streaming-api-with-agent](#article/how-to-use-streaming-api-with-agent) for creating streaming API for Skyvva. *Note: You need to click on the refresh icon of Integration Name dropdown to load all integration name. Then on select of integration name again click on the refresh button of Streaming Interface dropdown to load all interface where streaming is enabled.* ![](../images/2019/07/skyvva-mule-subscriber-config-1.png) User-case:  - Create flow to subscribe Streaming-interface-Account interface. - Modify/Create (that you configure on the streaming configuration for Skyvva interface) data on account. - New event will be received with configured data in Streaming interface e.g in this scenario Billing Address details. - Send an email with the change received from the event. ![](../images/2019/06/subscribe-flow.png) ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: How to send big size data from Salesforce to Mule without hitting the governor limit? Title: 8. How to send big size data from Salesforce to Mule without hitting the governor limit? Slug: 8-how-to-send-big-size-data-from-salesforce-to-mule-without-hitting-the-governor-limit URL: https://help.skyvva.com/#article/8-how-to-send-big-size-data-from-salesforce-to-mule-without-hitting-the-governor-limit ================================================================================ # 8. How to send big size data from Salesforce to Mule without hitting the governor limit? - **Collector ** This operation works like a HTTP listener but the additionally it can gather multiple package of messages before sending to the next processor of mule. The number of message for a request decided by the header information provided with the request. It supports following header information along with the request:  ![](../images/2019/06/collector-header.png) ***Content-Type*** : It only supports application/json  ***TransactionId***** **: Unique value for one bulk of messages. (e.g We have 3 message to send then it should be same for all of that three messages).  ***CurrentPackage***** **: It should have the current package number of the message from a bulk messages. (It should be start in ascending order)  ***CompleteNumberOfPackage***: Total number of package contained in a bulk message.   Use-case :   - Postman will send three messages. - The message will be received by **Skyvva**** Collector** listener. - Connector will gather all three message and finally for package number 3, it will write those messages to a file. 1st Message : [{ "message": "1st message"}]  ![](../images/2019/06/collector-req-1.png) 2nd Message: [{ "message": "2nd message", "details" : {"status": "success"} }] ![](../images/2019/06/collector-req-2.png) 3rd Message: [{ "message": "Final message", "details" : {"status": "Completed"} }]  ![](../images/2019/06/collector-req-3.png)  The output will be written to a file with bellow content.   [      {          "message": "1st message"      },      {          "message": "2nd message",          "details": {              "status": "success"          }      },      {          "message": "Final message",          "details": {              "status": "Completed"          }      }  ]    **Mule configuration for Collector operation:**   Create a HTTP Listener using Skyvva Collector   ![](../images/2019/06/collector-config.png) Create a flow using the above collector configuration  ![](../images/2019/06/collector-flow.png) Configure the path for which you want to configure the collector.  ![](../images/2019/06/collector-listner-path.png) ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: Tutorial Example Mule Application Title: 11. Tutorial Example Mule Application Slug: 11-tutorial-example-mule-application URL: https://help.skyvva.com/#article/11-tutorial-example-mule-application ================================================================================ # 11. Tutorial Example Mule Application You have to contact "support@skyvva.com" to get the template Mule application which has all the features of Skyvva Mule connector. You can refer it to build your own custom application using the Salesforce Skyvva application and Mule Skyvva Connector. ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: How to fetch small size data using query/search and big size data using bulk query? Title: 9. How to fetch small size data using query/search and big size data using bulk query? Slug: 9-how-to-fetch-small-size-data-using-query-search-and-big-size-data-using-bulk-query URL: https://help.skyvva.com/#article/9-how-to-fetch-small-size-data-using-query-search-and-big-size-data-using-bulk-query ================================================================================ # 9. How to fetch small size data using query/search and big size data using bulk query? You want to search the data/records present in your Salesforce then this module will help you. It will help you to create a dynamic nature of search. You can configure the search feature and use it as per your needs. Skyvva app will help you to configure your search. You need to follow the below steps to configure your search: - Create an integration or use an existing integration. - Create an interface using the above integration. - The interface should have operationType as "query" or "queryAll". The SOQL query to select sObject data needs to be set with required SOQL query. ![](../images/2019/09/search-soql-query-interface.png) ![](../images/2019/09/search-soql-query.png) You can use any combination SOQL. You need to use the following annotation base on your requirement: - For using complete where clause as dynamic the use {!@@SKYVVA_WHERE} in you SOQL - For using in clause use {!@Ids} - For single value  use {!columnName} Mule connector can be used along with this above interface to use the Skyvva search feature. Mule connector also support another text field using which you can provide your complete SOQL. Once you provide the SOQL from Mule connector then that got override with the query you have used in the Interface for your search only. Mule connector for search operation take below input parameters: - Filters : These are the dynamic value to be used for your SOQL. You can use a transform message before to search to have automatically detects the dynamic parameter name using mule datasense. - Intergration Name: The integration name you have configure in Skyvva. - Interface Name: The interface name you configure to provide the search details. - SOQL Query: This field is optional. When you provide this data, then it will be used for your search. ![](../images/2019/09/mule-search-config.png) ![](../images/2019/09/search-datasense.png) The Skyvva search will internally will work on your query and will provide the complete result from your query. You can use the same Search operation to use it for Bulk v2 Query, which will help you to retrieve huge volume of records in CSV format.  The Bulk v2 Query feature only work with Salesforce Winter 20 version onward. You can configure in your Interface with operationType as "Bulk Query" or "Bulk Query All" to use Bulk v2 Query feature.  Then you need to configure your SQOL in Mule connector or you can provide it in the interface like the above search scenario. Base on your configuration in Interface Mule connector will automatically detects the operation type and work accordingly with the same Search operation. ![](../images/2019/09/Bulkv2-search.png) ![](../images/2019/09/bulk-result-csv.png) In Bulk v2 Query the result will be in csv but in case of Skyvva Search it will return json result. ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: Why to use Mule Skyvva Connector? Title: Why to use Mule Skyvva Connector? Slug: why-to-use-mule-skyvva-connector URL: https://help.skyvva.com/#article/why-to-use-mule-skyvva-connector ================================================================================ # Why to use Mule Skyvva Connector? Salesforce Skyvva app is used to ease the use of Salesforce in a lot of ways. It helps you to create reusable integration and with respective interfaces. These integration and interfaces can be used to perform Salesforce related integration or operations. The same Skyvva app feature now you can use through Mule Skyvva connector. Mule Skyvva connector help you to achieve most of the Skyvva feature using Mule integration. You need minimum configuration to use your integration and interfaces in Mule.  This connector provide you the auto switch feature of an operation which mule internally handle and provide you best solution base on your request type. **Features available in Skyvva :** The various value-added feature will help and simplify the maintenance and operation of your daily integration with your Salesforce platform. Of course, you could say that you don’t need because everything works smoothly. But don’t forget the one day where some issues will arise and troubles start to appear sooner than you ever can think. I this situation you will not want to miss the additional value as the following examples below. - **Monitoring** Give you a second eye to see what happened on the Salesforce side. With the additional monitoring layer, you have a real end-2-end monitoring and have 100% view on both sides of the connected platform. - **Reprocessing** Give you a possibility to independently do reprocessing of failed messages in case the middleware is not alive and can’t resend the data. This is to fix an emergency case where you have to make a quick fix inside Salesforce to reprocess the data which get failed due to some business data inconsistency. - **Alerting** Give you real business error alert which deals with error happened on your Salesforce side and not an error which happened on the middleware. The alert is sent from the Salesforce side and therefore is a real and authentic alert cover the business data error on your Salesforce platform. - **Workflow** Let you define a rule and pre-condition to process the message so that you can block wrong and dirty data from being mess up your business data on the Salesforce side. Complex business validation can run as a pre-condition before the data get posted and after the data get posted you can do a post-processing logic using the SKYVVA workflow. - **Business logic** When you need to add business logic to the data posting Salesforce give you great and flexible tool like apex, trigger, process builder and flow. Use one of them to add business logic to your pure data processing linked to the SKYVVA interface. - **Batch and Scheduling** When your data synchronization requirement comes to meet a mass volume data updates it is not correct and technically possible to use a real-time approach. In this case, you should move the processing of these mass data to a later free time window where you don’t break down the performance of the Salesforce Org. and thus impact the end-user while their business working hours. Instead, you should shift the processing to a suitable time for example in the night starting from 10:00 pm. You can refer [https://docs.skyvva-dev.com/about-middleware/](https://docs.skyvva-dev.com/about-middleware/) for more details why you need to use Skyvva. ================================================================================ Book: Mule Adapter Section: Mule Adapter Subsection: How to create Platform Event ? Title: 10. How to create Platform Event ? Slug: 10-how-to-create-platform-event URL: https://help.skyvva.com/#article/10-how-to-create-platform-event ================================================================================ # 10. How to create Platform Event ? You can able to create a Platform Event for a event object. Once it created by mule connector it will be received by all the event subscriber. The below shows a small mule flow using create event. ![](../images/2019/10/platform-event-flow.png) The below screen show how to configure the Create event operation in mule. ![](../images/2019/10/platform-event-config.png) All event object will be list on the Platform Event Object dropdown, you can chose the one you want to create. Once you select that then the respective datasense will be shown in the Transform Message before this operation. ![](../images/2019/10/platform-create-datasense.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound interface to post a single sObject? Title: 1. How to create an inbound interface to post a single sObject? Slug: how-to-create-inbound-interface-to-post-a-single-sobject URL: https://help.skyvva.com/#article/how-to-create-inbound-interface-to-post-a-single-sobject ================================================================================ # 1. How to create an inbound interface to post a single sObject? This document describes how to create an inbound interface with SAP-PO java single stack. When talking about the inbound interface in this document the direction SAP to Salesforce is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an inbound interface involves steps to be done in Salesforce and in PO. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. - **Skyvva software landscape and building blocks** Skyvva Integration Suite enables the integration between Salesforce and SAP-Backend over SAP-PO with less effort and without programming neither in SAP nor in Salesforce. It bases on the generation and customized approach to reduce effort and to accelerate the development of interfaces between those systems. In order to be able to provide such a toolset and framework some component (green) has been developed by Skyvva and has to be deployed on Salesforce and SAP-PO of the customer. On the SAP-Backend e.g. SAP ECC 6.0 there is no software installation needed. ![](../images/2019/06/Image-1.png) Creating an inbound interface is only possible when the Skyvva solution framework is set up correctly. When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we are coupling two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound or inbound. ![](../images/2019/06/Untitled-42-1.png) **2. Outbound and Inbound Interface** The term outbound is used when data is sent out from Salesforce to SAP. Therefore we will call interfaces for sending data out of Salesforce to SAP "Outbound Interface". For the other direction, we will call the interfaces "Inbound Interface" when data is sent from SAP to Salesforce. So, the reference point is set to Salesforce. **3. Prerequisite for creating an inbound interface** - The Skyvva solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. **4. Creating Inbound Interface** The figure below depicts which steps to be followed to create an inbound interface with SAP PI/PO. ![](../images/2019/06/Image2-1.png) **Step 1. Creating an inbound interface(Salesforce)** Login to the Salesforce org and then select Skyvva Integration Cloud. Go to Integration Tab and create New Integration under that go to the interfaces tab and then create New interface as shown below. ![](../images/2019/06/Image3-4-1.png) ![](../images/2019/06/Untitled-43.png) ![](../images/2019/06/Untitled-44.png) Now we have to fill the following fields: - Name - Source Name - Status - Sequence - Operation Type - Connect with Middleware - External Mapping - Interface Mode Then click on button "Save" to save your interface. Now we have to specify some required fields and other optional fields for defining the inbound interface. Following all fields related to creating an inbound interface for connecting to Salesforce are described. Note that there are also fields in the screen which is not needed for the SAP-PI coupling but needed for other couplings e.g. the SAP direct coupling. **4.1 Name** - It represents the Interface Name that we are going to create and also we have to provide a meaningful description in the Description label. - Since we are creating an Inbound interface. So, here we recommend you to follow the naming convention as for example Account_IN for the inbound interface as shown below and Account_Out for outbound interface. ![](../images/2019/06/Untitled-1.png) **4.2 Status** Initially, it will be in the "Development" status. When we want to run the interface then we have to set it as "Deployed" as shown below. ![](../images/2019/06/Untitled-2.png) **4.3 Sequence** Enter a number in this field. This field is for numbering the interface to be shown in the logical order on screen ![](../images/2019/06/Untitled-45.png) **4.4 Operation Type** This field contains the SQL statement for an interface. For inbound interface, we need to specify an operation since this is an updated interface. In this case, you can specify the value "Upsert". ![](../images/2019/06/Untitled-4.png) **4.5 Field Type** Here we are specifying the direction of the interface e.g. InBound or Outbound. Since we have created an inbound interface. So, We have to specify the value as "InBound". ![](../images/2019/06/Untitled-5.png) **4.6 Interface processing mode** Here we have to specify the processing mode as Asynchronous. If we expect a response back then we have to set it as Synchronous. ![](../images/2019/06/Untitled-6.png) **4.7 Connect with Middleware** We have to check this flag because we use SAP-PO as a middleware component. This is just to indicate Skyvva runtime service that it is not connected directly to an SAP-Backend. ![](../images/2019/06/Untitled-7.png) **4.8 External Mapping** Since we are using SAP PO as a middleware component and as a developing a tool for mapping. This is just to indicate Skyvva runtime service that mapping will be done in SAP-PO and that you don't need to do mapping in Skyvva framework. ![](../images/2019/06/Untitled-8.png) If our business case needs that you want to map both in SAP-PO and in Skyvva framework then you have to check the "Mapping in SFDC" also. But normally in most of the cases, we don't need to do mapping in Skyvva framework again. **Step 2 - Generate WSDL for the Inbound interface** Now we have to generate the WSDL for this inbound interface. This is needed to do mapping in SAP PO and to generate the WSDL. Go to Integration under that select details tab and then click on "**Manage Middleware WSDLs**" as shown below. ![](../images/2019/06/Untitled-9.png) Click on the link "Manage Middleware WSDLs" ![](../images/2019/06/Untitled-10.png) Now select the interface you want to export as WSDL. After selection of an interface now click on the button "Create WSDL". Scroll down to see the generated file. ![](../images/2019/06/Untitled-12.png) Now click on the Link "View“ and then WSDL will be downloaded. ![](../images/2019/06/Untitled-14.png) Rename the downloaded file as D_190620_SFDC_InBound_Account_IN.wsdl. Now we can import this  WSDL into ESR in SAP PO for mapping. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva:salesforce**". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as ED_AccountUpdate. ![](../images/2019/06/Untitled-16.png) ![](../images/2019/06/Untitled-17.png) Now import the WSDL and Save and activate it. ![](../images/2019/06/Untitled-18.png) **Step 4 - Mapping in ESR** For this interface, we are getting the data from SAP e.g Customer data into a structure like an IDOC, RFC or as a PROXY. There is no limitation to do mapping in PO. We can do mapping in the PO just as you are used to do it in a normal way. For example, as shown in this document, we will map the interface AccountUpdate from the IDOC-structure DEBMAS07 to Salesforce. **Step 5 - Mapping logic flow with Skyvva runtime** You have to map business data from SAP e.g. IDoc, BAPI or Proxy into the Skyvva WSDL business structure. This business structure is the result of your operation mapping in PO and will be passed into the soap receiver channel. This structure will be converted by the Skyvva module "Salesforce/Transformation" which is a custom module used in the soap receiver channel. ![](../images/2019/06/Untitled-19.png) We have to use Skyvva customer module in the soap receiver channel. - Salesforce/GetSessionID_V4 ![](../images/2019/06/Untitled-20.png) **5. Service Interface** Create service interface under the namespace. ![](../images/2019/06/Untitled-27.png) Enter the name of Service Interface and then click on create button ![](../images/2019/06/Untitled-28.png) ![](../images/2019/06/Untitled-29.png) Choose the category Inbound or Outbound. In our scenario we are creating an inbound interface, therefore we choose Inbound. ![](../images/2019/06/Untitled-30.png) Now click on Save and activate it. **6. Message mapping** ![](../images/2019/06/Untitled-31.png) Create message mapping under the same namespace. ![](../images/2019/06/Untitled-32.png) Select the Source structure as DEBMAS07 and target was which we created as an external definition. ![](../images/2019/06/Untitled-33.png) Do the respective mapping and save and activate it. Here we have to define a parameter for Interface name. ![](../images/2019/06/Untitled-47.png) Now we have to bind this parameter in the operation mapping. **7. Operation Mapping for asynchronous inbound interface** Create Operation mapping. ![](../images/2019/06/Untitled-35.png) ![](../images/2019/06/Untitled-36.png) Now select the inbound and outbound service interfaces and the respective mapping and also bind the parameters. Then save and activate the operation mapping. **8. Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/06/Untitled-37.png) ![](../images/2019/06/Untitled-38.png) Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2019/06/Untitled-39.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **9. Configuring the Sender Idoc communication channel** Create sender communication channel as shown below. Since we are using an IDOC as a source. So, here we are using IDoc adapter in the sender channel. ![](../images/2019/06/Untitled-40.png) Provide the necessary details. After that save and activate the channel. **10. Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/06/Untitled-21.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. ![](../images/2019/06/Untitled-23.png) Configuration of module parameters are described in detail below 11. **Skyvva Module Parameters** Starting from version 2.27 Skyvva provides a single module, **"Salesforce/GetSessionID_V4"**, to be used with SOAP receiver channels. Module parameters are outlined below **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Lalitha_Test_Integration SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://login.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation in skyvva integrate pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx **12. Integrated Configuration** Create integrated configuration objects as shown below. ![](../images/2019/06/Untitled-48.png) Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. ![](../images/2019/06/Untitled-49.png) Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2019/06/Untitled-50.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2019/06/Untitled-52.png) In Receiver interfaces tab specify the operation mapping and also the values of the parameters. The parameter Account_Update_In is the interface name (on Skyvva side) of the interface Account. ![](../images/2019/06/Untitled-53.png) In the "outbound processing" tab, we have to specify the receiver channel. **13. Test the Inbound Interface.** IDOC DEBMAS07 has been triggered by ECC. Now we have to check the result in Salesforce Skyvva message board. ![](../images/2019/06/Untitled-55.png) Customer data from SAP was successfully sent to Salesforce. ![](../images/2019/06/Untitled-56.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound interface to post a hierarchical sObject using the SKYVVA connector module? Title: 1. How to create an inbound interface to post a hierarchical sObject using the SKYVVA connector module? Slug: how-to-create-an-inbound-interface-to-post-a-hierarchical-sobject-using-the-skyvva-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-interface-to-post-a-hierarchical-sobject-using-the-skyvva-connector-module ================================================================================ # 1. How to create an inbound interface to post a hierarchical sObject using the SKYVVA connector module? This Document explains you on how to create an inbound interface to post a Hierarchical sObject using the Skyvva connector module. - **Overview: ** This is an inbound asynchronous interface to Import SAP Debitors with its Sales Area Data and Partner Roles to Salesforce from SAP ERP system using SAP PO as middleware. Initially, We have to create four inbound interfaces. One is the parent and the rest of the three are child interfaces. - Account_IN - Contact_IN - SAPPartnerRole - SAPAccountSalesArea_IN Login to the Salesforce org and then select Skyvva Integration Cloud. Go to Integration Tab and create New Integration under that go to the interfaces tab and then create all the four interfaces as shown below. - **Account_IN** ![](../images/2019/06/Untitled-58.png) ![](../images/2019/06/Untitled-59.png) - **Contact_IN** Now create contact inbound interface ![](../images/2019/06/Untitled-75.png) Add Parent Interface as Account interface as shown above. ![](../images/2019/06/Untitled-62.png) Create Foreign key lookup to link the contact to an Account as shown below. ![](../images/2019/06/Untitled-63.png) - **SAPPartnerRole_IN** Create SAPPartnerRole_IN inbound interface as shown below. ![](../images/2019/06/Untitled-65.png) Add Parent Interface as Account interface as shown above. ![](../images/2019/06/Untitled-66.png) Create Foreign key lookup to link SAPPartnerRole to an Account Interface as shown below. ![](../images/2019/06/Untitled-67.png) **SAPAccountSalesArea_IN** Create SAPAccountSalesArea_IN inbound interface as shown below. ![](../images/2019/06/Untitled-68.png) Add Parent Interface as Account interface as shown above. ![](../images/2019/06/Untitled-69.png) Create Foreign key lookup to link SAPAccountSalesarea to an Account Interface as shown below. ![](../images/2019/06/Untitled-70.png) Now add Contact_IN, SAPPartnerRole_IN, and SAPAccountSalesArea_IN interfaces as child interfaces to parent Account interface. ![](../images/2019/06/Untitled-71.png) Now generate the WSDL for Account_IN and upload it into SAP PO for Mapping. ![](../images/2019/06/Untitled-73.png) ![](../images/2019/06/Untitled-74.png) Click on View to download the WSDL. WSDL looks like below ![](../images/2019/06/Untitled-76.png) Under the parent Account we can see three child objects as shown below. ![](../images/2019/06/Untitled-77.png) **Import WSDL into ESR** First, we have to create a namespace in ESR like "http://XXXXX/Account Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as Account_IN ![](../images/2019/06/Untitled-79.png) ![](../images/2019/06/Untitled-80.png) Now import the WSDL and Save and activate it. Similarly, import the IDOC "DEBMAS07" from SAP. This IDOC itself used as a data type, Message type, and service interface. Create a service interface under the namespace. Choose the category Inbound or Outbound. In our scenario we are creating an inbound interface, therefore we choose Inbound and also its an asynchronous inbound interface So we choose the mode as Asynchronous. ![](../images/2019/06/Untitled-82.png) Now import the external definition and then click on save and activate the inbound service interface. **Message mapping** Create message mapping under the same namespace. Select the Source structure as DEBMAS07 and the target structure will be the external definition which we downloaded from Salesforce. ![](../images/2019/06/Untitled-83.png) Do the respective mapping and save and activate. Here we have to define the parameters for Account, Contact, PartnerRole, and for AccountSalesArea to pass the values in runtime. ![](../images/2019/06/Untitled-84.png) Now we have to bind these parameters in the operation mapping. - **Operation Mapping for asynchronous inbound interface** Create Operation mapping. Choose the inbound and outbound service interface and the respective message mapping. ![](../images/2019/06/Untitled-85.png) Now we have to define the parameters here. ![](../images/2019/06/Untitled-86.png) We have to bind the message mapping parameters with operation mapping parameters as shown below. ![](../images/2019/06/Untitled-87.png) Then save and activate the operation mapping. - **Creation of Integration Flow** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Integration flow in NWDS. Give the relevant name as for example "**IF_SAP_to_Salesforce_Account**" Integration flow has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2019/06/Untitled-89.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal “**Salesforce**” as the business system. We have to import these business systems from SLD. - **Configuring the Sender Idoc communication channel** Create sender communication channel as shown below. Since we are using an IDOC as a source. So, here we are using IDoc adapter in the sender channel. ![](../images/2019/06/Untitled-91.png) Provide the necessary details. After that save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab “General” ![](../images/2019/06/Untitled-21.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the “Advanced” Tab. ![](../images/2019/06/Untitled-22.png) The value “TserverLocation” has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab “Module”. Here, the SKYVVA module containing the logic for session handling. ![](../images/2019/06/Untitled-92.png) Configuration of module parameters are described in detail below - **Skyvva Module Parameters** Starting from version 2.27 Skyvva provides a single module, **“Salesforce/GetSessionID_V4”**, to be used with SOAP receiver channels. Module parameters are outlined below **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Lalitha_Test_Integration SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://login.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation in skyvva integrate pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx - **Creating I-flow in NWDS** Create an I-Flow as "IF_SAP_2_SF_Account as shown below ![](../images/2019/06/Untitled-93.png) Select the point to point channel because here we are sending data to one receiver only then click on next. Provide the sender system and the receiver system details as shown below and then click on finish. ![](../images/2019/06/Untitled-95.png) ![](../images/2019/06/Untitled-96.png) Assign the sender and the receiver channel and the operation mapping. ![](../images/2019/06/Untitled-97.png) After adding all the details the flow will look like below. ![](../images/2019/06/Untitled-99.png) Specify the parameter values to which we defined in ESR. ** Test the Inbound Interface.** IDOC DEBMAS07 has been triggered by ECC. Now we have to check the result in Salesforce Skyvva message board. ![](../images/2019/06/Untitled-101.png) The message got successfully posted to Salesforce. Below is the screenshot to show the parent Account with the child Contacts, partner roles, and AccountSalesArea. ![](../images/2019/06/Untitled-102.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound interface using integrate batch mode with Skyvva connector module? Title: 1. How to create an inbound interface using integrate batch mode with Skyvva connector module? Slug: how-to-create-an-inbound-interface-using-integrate-batch-mode-with-skyvva-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-interface-using-integrate-batch-mode-with-skyvva-connector-module ================================================================================ # 1. How to create an inbound interface using integrate batch mode with Skyvva connector module? This document describes how to create an inbound interface using integrate batch mode with Skyvva connector module. **Introduction** Batch data processing is an efficient way of processing high volumes of data, where a group of transactions is collected over a period of time. Data is collected, entered, processed and then the batch results are produced. So, now we are going to create an inbound interface using integrate batch with Skyvva connector module Initially, we have to start with Salesforce Skyvva. This interface is also the same as "**How to create an inbound interface to post a single sObject**?" but few things to be added in Skyvva interface settings and in the module parameters configuration. **Skyvva interface creation** Create an interface, for example, "integrateBatch" as shown below. ![](../images/2019/06/Untitled-107.png) maximum integrate Batch size will be 5000 ![](../images/2019/06/Untitled-104.png) As we are using integrate batch So, we have to check the Batch mode checkbox  as shown below ![](../images/2019/06/Untitled-106.png) Now save the interface and download the WSDL from the classic mode. **Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva:integrateBatch**". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as AccountIntegrateBatch. ![](../images/2019/06/Untitled-108.png) Import the WSDL and save and activate the external definition. - **Source data type** Create sender data type as shown below ![](../images/2019/06/Untitled-109.png) - after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below. ![](../images/2019/06/Untitled-110.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/06/Untitled-111.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/06/Untitled-112.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below ![](../images/2019/06/Untitled-113.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/06/Untitled-114.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. - **Mapping logic flow with Skyvva runtime** You have to map business data from SAP e.g. IDoc, BAPI or Proxy into the Skyvva WSDL business structure. This business structure is the result of your operation mapping in PO and will be passed into the soap receiver channel. This structure will be converted by the Skyvva module "Salesforce/Transformation" which is a custom module used in the soap receiver channel. ![](../images/2019/06/Untitled-19.png) We have to use Skyvva connector module in the soap receiver channel. - Salesforce/GetSessionID_V4 ![](../images/2019/06/Untitled-115.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/06/Untitled-37.png) ![](../images/2019/06/Untitled-38.png) Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2019/06/Untitled-39.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOUP UI as a source. So, here we are using SOAP adapter in the sender channel. ![](../images/2019/06/Untitled-125.png) Provide the necessary details. After that save and activate the channel. **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/06/Untitled-21.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. ![](../images/2019/06/Untitled-23.png) Configuration of module parameters are described in detail below - **Skyvva Module Parameters** Starting from version 2.27 Skyvva provides a single module, **“Salesforce/GetSessionID_V4”**, to be used with SOAP receiver channels. Module parameters are outlined below **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Lalitha_Test_Integration SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://login.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation in skyvva integrateBatch pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx **Integrated Configuration** Create integrated configuration objects as shown below. ![](../images/2019/06/Untitled-116.png) Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/06/Untitled-117.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/06/Untitled-118.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/06/Untitled-119.png) **Test the Inbound Interface.** Triggering the data from the Source system. Now we have to check the result in Salesforce batch control board as shown below. ![](../images/2019/06/Untitled-120.png) ![](../images/2019/06/Untitled-121.png) Now click on View to see the attachment. ![](../images/2019/06/Untitled-122.png) As we are sending 2 records from Source system. ![](../images/2019/06/Untitled-123.png) Now we can see the successful messages in message monitoring. ![](../images/2019/06/Untitled-124.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound interface using SFDC Bulk mode with Skyvva Connector module? Title: 1. How to create an inbound interface using SFDC Bulk mode with Skyvva Connector module? Slug: how-to-create-an-inbound-interface-using-sfdc-bulk-mode-with-skyvva-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-interface-using-sfdc-bulk-mode-with-skyvva-connector-module ================================================================================ # 1. How to create an inbound interface using SFDC Bulk mode with Skyvva Connector module? This document describes how to create an inbound interface using SFDC Bulk mode with Skyvva connector module. **Introduction** SKYVVA provides different processing modes and uses API Dynamic Switch where incoming data goes automatically to be processed as asynchronous, batch or bulk. **What Is Bulk?** SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have a huge amount of data I.e data >= 5000records, then we should use bulk processing to process the interface. **We should know some terms:** - **BULK Mode**: We have to set this flag to run our interface in bulk mode using salesforce bulk API. - **SKYVVA Bulk**: SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing mode, which are Parallel and Serial. The default value is Serial. - **SFDC Bulk: **We support SFDC pure bulk mode in version 1.0 or 2.0 that is very fast but cannot use SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk require the data has to be mapped already on the sender side and doing additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. - **Bulk Version**: SKYVVA support SFDC pure bulk mode in version1.0 or version 2.0 then we have our own skyvva bulk mode. This use skyvva workflow and mapping and thus it is more powerful but slower than pure bulk API technique from salesforce. - **Bulk Processing Mode**: This fields indicate two modes which is support with bulk version 1.0 and bulk version 2.0 only parallel mode is supported. So the value is depend here the selection of field bulk version. For example  When we want to use ‘ serial‘ we should select bulk 1.0. - Parallel: When you select this processing mode, it will run parallel. - Serial: When you select this mode, it will not run at the same time. - **Bulk Package Size**: This parameter determine how many records is splitted into Bulk data size. If your Message contain 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be keep. - Bulk Sch Frequency: This is the schedule time frequency for bulk scheduler on interface. - **Bulk Integrate Time Interval (minute**): The interval (minutes) used for integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. **Skyvva interface creation** Create an interface, for example, "IntegrateBulk" as shown below. ![](../images/2019/07/Untitled.png) maximum integrate Batch size will be 5000 ![](../images/2019/07/Untitled-1.png) As we are using SFDC Bulk So, we have to check the Bulk mode checkbox  as shown below ![](../images/2019/04/SFDCbulktoSAPP4.png) Now save the interface and download the WSDL from the classic mode. **Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva:integrateBulk**". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as AccountIntegrateBulk. ![](../images/2019/07/Untitled-5.png) Import the WSDL and save and activate the external definition. - **Source data type** Create sender data type as shown below ![](../images/2019/07/Untitled-6.png) after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below. ![](../images/2019/07/Untitled-7.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/07/Untitled-8.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/07/Untitled-9.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below ![](../images/2019/07/Untitled-10.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/07/Untitled-11.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. - **Mapping logic flow with Skyvva runtime** You have to map business data from SAP e.g. IDoc, BAPI or Proxy into the Skyvva WSDL business structure. This business structure is the result of your operation mapping in PO and will be passed into the soap receiver channel. This structure will be converted by the Skyvva module "Salesforce/GetSessionID_V4" which is a custom module used in the soap receiver channel. ![](../images/2019/06/Untitled-19.png) We have to use Skyvva connector module in the soap receiver channel. - Salesforce/GetSessionID_V4 ![](../images/2019/07/Untitled-12.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/07/Untitled-14.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-15.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/07/Untitled-16.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. ![](../images/2019/06/Untitled-23.png) ![](../images/2019/07/Untitled-137.png) Configuration of module parameters are described in detail below - **Skyvva Module Parameters** Starting from version 2.27 Skyvva provides a single module, **“Salesforce/GetSessionID_V4”**, to be used with SOAP receiver channels. Module parameters are outlined below **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Lalitha_Test_Integration SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://login.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation in skyvva integrateBulk pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx sforceBulkMode It specifies the mode of Bulk SFDC Bulk 2.0 SforceBulkOperation This parameter is set when the interface uses the Bulk API. The bulk API enables transferring of mass data X SforceBulkInterfaceId It specifies the name of the skyvva interface AccountContactIntegrateBulk BulkCreateLogFile This parameter is used to create the error log file for bulk batch job X BulkLogFileFolder This will create the folder for the error log files X **Integrated Configuration** Create integrated configuration objects as shown below. ![](../images/2019/07/Untitled-21.png) Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/07/Untitled-22.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/07/Untitled-23.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/07/Untitled-24.png) In the “outbound processing” tab, we have to specify the receiver channel. **Test the Inbound Interface.** Triggering the data from Source system. Now we have to check the result in Salesforce bulk data load as shown below. ![](../images/2019/07/Untitled-25.png) Here we use bulk version = SFDC Bulk API. So, the data will be posted into the Salesforce database directly. In the Bulk API Stream, we have added two new parameters like 'BulkCreateLogFile' and 'BulkLogFileFolder' where we can now create the error file for the bulk batch job. Each job has only one batch and not many batches like bulk v1. But the batches can have a size till 100 Mb which can contain millions of records. We create the file for error analysis to see the failed message but when the record could be posted successfully we are not creating anything into our message monitor. We can see only failed records in the message monitoring here we have a possibility to do the message reprocessing. So, our support for the SFDC bulk v2.0 option is a better one as of the pure bulk api ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an interface using SKYVVA Bulk mode with SKYVVA Connector module? Title: 1. How to create an interface using SKYVVA Bulk mode with SKYVVA Connector module? Slug: how-to-create-an-interface-using-skyvva-bulk-mode-with-skyvva-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-interface-using-skyvva-bulk-mode-with-skyvva-connector-module ================================================================================ # 1. How to create an interface using SKYVVA Bulk mode with SKYVVA Connector module? This document describes how to create an inbound interface using SKYVVA Bulk mode with SKYVVA connector module. **Introduction** SKYVVA provides different processing modes and uses API Dynamic Switch where incoming data goes automatically to be processed as asynchronous, batch or bulk. **What Is Bulk?** SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have a huge amount of data I.e data >= 5000records, then we should use bulk processing to process the interface. **We should know some terms:** - **BULK Mode**: We have to set this flag to run our interface in bulk mode using salesforce bulk API. - **SKYVVA Bulk**: SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing mode, which are Parallel and Serial. The default value is Serial. - **SFDC Bulk: **We support SFDC pure bulk mode in version 1.0 or 2.0 that is very fast but cannot use SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk require the data has to be mapped already on the sender side and doing additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. - **Bulk Version**: SKYVVA support SFDC pure bulk mode in version1.0 or version 2.0 then we have our own skyvva bulk mode. This use skyvva workflow and mapping and thus it is more powerful but slower than pure bulk API technique from salesforce. - **Bulk Processing Mode**: This fields indicate two modes which is support with bulk version 1.0 and bulk version 2.0 only parallel mode is supported. So the value is depend here the selection of field bulk version. For example  When we want to use ‘ serial‘ we should select bulk 1.0. - Parallel: When you select this processing mode, it will run parallel. - Serial: When you select this mode, it will not run at the same time. - **Bulk Package Size**: This parameter determine how many records is splitted into Bulk data size. If your Message contain 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be keep. - Bulk Sch Frequency: This is the schedule time frequency for bulk scheduler on interface. - **Bulk Integrate Time Interval (minute**): The interval (minutes) used for integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. # - **What is needed for a BULK Inteface** The process and development of an inbound interface utilize the bulk api is almost the same like developing an ordinary inbound interface. How to develop an ordinary inbound interface with SKYVVA Integration Suite is described in the document "How to create an inbound interface to post a single sObject? ". The following steps to be follow to develop and processing an interface with bulk api: - Follow all the steps to develop an inbound interface - Configure these parameters SforceBulkOperation, SforceBulkPacketSize  and SforceBulkInterfaceId for in the soap inbound channel - Bulk data set will be created as bulk data load job and has to be processed inside Salesforce manually **2. SKYVVA interface creation** Create an interface, for example, "IntegrateBulk" as shown below. ![](../images/2019/07/Untitled.png) maximum integrate Batch size will be 5000 ![](../images/2019/07/Untitled-1.png) As we are using SKYVVA Bulk 1.0. So, we have to check the Bulk mode checkbox as shown below: ![](../images/2019/07/Untitled-27.png) Now save the interface and download the WSDL from the classic mode. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva:integrateBulk**". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as AccountIntegrateBulk. ![](../images/2019/07/Untitled-5.png) Import the WSDL and save and activate the external definition. - **Sender data type** Create sender data type as shown below ![](../images/2019/07/Untitled-6.png) after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below: ![](../images/2019/07/Untitled-7.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/07/Untitled-8.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/07/Untitled-9.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below: ![](../images/2019/07/Untitled-10.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/07/Untitled-11.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. - **Mapping logic flow with SKYVVA runtime** You have to map business data from SAP e.g. IDoc, BAPI or Proxy into the SKYVVA WSDL business structure. This business structure is the result of your operation mapping in PO and will be passed into the soap receiver channel. This structure will be converted by the SKYVVA module "Salesforce/GetSessionID_V4" which is a custom module used in the soap receiver channel. ![](../images/2019/06/Untitled-19.png) We have to use SKYVVA connector module in the soap receiver channel. - Salesforce/GetSessionID_V4 ![](../images/2019/07/Untitled-26.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/07/Untitled-14.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-15.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel (Module version 3)** Configuration for Tab "General" ![](../images/2019/07/Untitled-115.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. ![](../images/2019/07/Untitled-116.png) ![](../images/2019/07/Untitled-117.png) ![](../images/2019/07/Untitled-118.png) The below parameters has the following meaning. ![](../images/2019/07/Untitled-119.png) If we use the V3 module version then we have to specify only the salesforce ID of the interface name. For V4 module version, we use only interface name in "**SforceBulkInterfaceId**" - **Configuring the SOAP receiver channel (Module version 4)** Configuration for Tab "General" ![](../images/2019/07/Untitled-16.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. ![](../images/2019/07/Image4-35.png) ![](../images/2019/07/Image4-36.png) Configuration of module parameters are described in detail below - **SKYVVA Module Parameters** **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Lalitha_Test_Integration SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://login.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation in skyvva integrateBulk pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx sforceBulkMode It specifies the mode of Bulk Skyvva Bulk skyvvaVersion Skyvva version needs to be specify here Ex. 2.42 SforceBulkOperation This parameter is set when the interface uses the Bulk API. The bulk API enables transferring of mass data X SforceBulkInterfaceId It specifies the name of the skyvva interface AccountContactIntegrateBulk BulkCreateLogFile This parameter is used to create the error log file for bulk batch job X BulkLogFileFolder This will create the folder for the error log files X **Integrated Configuration** Create integrated configuration objects as shown below. ![](../images/2019/07/Untitled-21.png) Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/07/Untitled-22.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/07/Untitled-23.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/07/Untitled-24.png) In the “outbound processing” tab, we have to specify the receiver channel. - **Test the Inbound Interface.** Triggering the data from the Source system. Now we have to check the result in Bulk Control board as shown below. ![](../images/2019/07/Untitled-28.png) Here we have to select the Bulk interface then click on search. ![](../images/2019/07/Untitled-29.png) We have a scheduler to schedule the jobs during a particular time intervals. ![](../images/2019/07/Untitled-30.png) Here we can see the number of records passed from the Source system ![](../images/2019/07/Untitled-31.png) If we want to test large amount of data for example- we are sending 30 records from Source to target Salesforce then we have to specify the parameter "SforceBulkPacketSize" in SKYVVA module. Lets say the SforceBulkPacketSize = 5 in receiver channel and then test the interface with 30 records. In Salesforce we can see 6 attachments. Each attachment may contain 5 records. ![](../images/2019/07/Untitled-122.png) ![](../images/2019/07/Untitled-120.png) So now we can see each attachment may contain 5 records. ![](../images/2019/07/Untitled-121.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound interface using integrate AutoSwitch mode with SKYVVA connector module? Title: 1. How to create an inbound interface using integrate AutoSwitch mode with SKYVVA connector module? Slug: how-to-create-an-inbound-interface-using-integrate-autoswitch-mode-with-skyvva-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-interface-using-integrate-autoswitch-mode-with-skyvva-connector-module ================================================================================ # 1. How to create an inbound interface using integrate AutoSwitch mode with SKYVVA connector module? This document describes how to create an inbound interface using Integrate AutoSwitch mode with SKYVVA connector module. #### What is Auto-Switch mode? Auto-switch mode is a data processing mode provided by SKYVVA. When the auto-switch mode flag checked, It means that Agent automatic switch SKYVVA API based on a number of record and IntegrateMaxSize, IntegrateBatchMaxSize. And when the flag is unchecked it means that data is integrated with normal mode (no batch or bulk) no matter what is the size of records. Before configuring Auto-Switch Mode, you have to know about the parameters: - **Integrate Max Size**: Maximum number of records that SKYVVA Integration Agent can integrate using method integrate. The default value is 200. If the number of records to be integrated is bigger than this value, Agent will switch the API method automatically. - **Integrate Batch Max Size**: Maximum number of records that SKYVVA Integration using method integrate Batch. The default value is 5000. If a number of records to be integrated is bigger than this value, Agent will switch to use the Bulk API method automatically. If the number of records (Data) <= Integrate Max Size, Interface will run in **Normal Mode.** If the number of records (Data) > Integrate Max Size and number of records (Data) <= Integrate Batch Max Size, Interface will run in **Batch Mode.** If the number of records (Data) > Integrate Batch Max Size, Interface will run in **BULK Mode.** **2. SKYVVA interface creation** Create an interface, for example, "AutoSwitch_IN" as shown below. ![](../images/2019/07/Untitled-138.png) maximum integrate Batch size will be 5000 ![](../images/2019/07/Untitled-139.png) Now save the interface and download the WSDL from the classic mode. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva:integrateAutoSwitch**". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as ED_Account. ![](../images/2019/07/Image4-6.png) Import the WSDL and save and activate the external definition. - **Sender data type** Create sender data type as shown below ![](../images/2019/07/Image4-7.png) after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below. ![](../images/2019/07/Image4-8.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/07/Image4-9.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/07/Image4-10.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below ![](../images/2019/07/Image4-11.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/07/Image4-12.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/07/Image4-13.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-15.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/07/Image4-14.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. ![](../images/2019/07/Untitled-133.png) ![](../images/2019/07/Untitled-136.png) ![](../images/2019/07/Untitled-135.png) Configuration of module parameters are described in detail below - **SKYVVA Module Parameters** **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Skyvva_SAP_Salesforce SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://ap4.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation  in skyvva integrateAutoSwitch pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx SforceBulkPackageSize This parameter determines how many records are split into chunks of the package size. For example if PI message contains 1000 records and the value of this parameter is 100 then we will get 10 batches each contain 100 records. Ex – 1000 sforceBulkMode It specifies the mode of Bulk Skyvva Bulk/SFDC Bulk skyvvaVersion Skyvva version needs to be specify here Ex. 2.44 SforceBulkOperation This parameter is set when the interface uses the Bulk API. The bulk API enables transferring of mass data X SforceBulkInterfaceId It specifies the name of the skyvva interface AccountintegrateAutoSwitch SforceUseAutoSwitchMode If the number of records (Data)<=Integrate Max Size, Interface will run in Normal Mode. If the number of records (Data)>Integrate Max Size and number of records (Data)<=Integrate Batch Max Size, Interface will run inBatch Mode. If the number of records (Data)>Integrate Batch Max Size, Interface will run in BULK Mode. This parameter will switch automatically based upon the above results. X SforceIntegrateMaxBatchSize Maximum number of records that SKYVVA Integration using method integrate Batch. The default value is 5000. If a number of records to be integrated is bigger than this value, Agent will switch to use the Bulk API method automatically. 5000 SforceIntegrateMaxSize Maximum number of records that SKYVVA Integration Agent can integrate using method integrate. The default value is 200. If the number of records to be integrated is bigger than this value, Agent will switch the API method automatically. 200 SforceShowSAPChannelParameters When set displays the SAP PI parameters in the output log X or Empty **Integrated Configuration** Create integrated configuration objects as shown below. ![](../images/2019/07/Image4-21.png) Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/07/Image4-23.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/07/Image4-26.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/07/Image4-27.png) In the “outbound processing” tab, we have to specify the receiver channel. - **Testing the Inbound Interface.** Triggering 10 records from the Source SOAP UI. ![](../images/2019/07/Image4-28.png) We have to check the result in SKYVVA message board as shown below. ![](../images/2019/07/Untitled-129.png) Triggering 15 records from SOAP UI. We can see the message in batch control board ![](../images/2019/07/Untitled-130.png) ![](../images/2019/07/Untitled-131.png) Now triggering 60 records from SOAPUI As we set package size as 20 in the channel configurations. So we can see three attachments. Each contains 20 records. ![](../images/2019/07/Untitled-132.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound synchronous proxy interface in SAP PI/PO using SKYVVA SOAP Adapter? Title: 1. How to create an outbound synchronous proxy interface in SAP PI/PO using SKYVVA SOAP Adapter? Slug: how-to-create-an-inbound-synchronous-proxy-interface-in-sap-pi-po-using-skyvva-soap-adapter URL: https://help.skyvva.com/#article/how-to-create-an-inbound-synchronous-proxy-interface-in-sap-pi-po-using-skyvva-soap-adapter ================================================================================ # 1. How to create an outbound synchronous proxy interface in SAP PI/PO using SKYVVA SOAP Adapter? This document describes on how to create an outbound interface with SAP-PO java single stack. When talking about the outbound interface in this document the direction Salesforce to SAP is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an outbound interface involves steps to be done in Salesforce and in PO. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. - **SKYVVA software landscape and building blocks** SKYVVA Integration Suite enables the integration between Salesforce and SAP-Backend over SAP-PO with less effort and without programming either in SAP or in Salesforce. It based on the generation and customized the approach to reduce effort and to accelerate the development of interfaces between those systems. In order to be able to provide such a toolset and framework some component (green) has been developed by SKYVVA and has to be deployed on Salesforce and SAP-PO of the customer. On the SAP-Backend e.g. SAP ECC 6.0 there is no software installation needed. ![](../images/2019/07/Untitled-32.png) When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we are coupling two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound or inbound. ![](../images/2019/07/Untitled-33.png) - **Outbound and Inbound Interface** The term outbound is used when data is sent out from Salesforce to SAP. Therefore we call interfaces for sending data out of Salesforce to SAP "Outbound Interface". For the other direction, we call interfaces as "Inbound Interface" when data is sent from SAP to Salesforce. So the reference point is set to Salesforce. **Prerequisite for creating an inbound interface** - The SKYVVA solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. You start developing outbound interface when you want to send data from Salesforce over PO to SAP-Backend. Of course, you can send data from Salesforce to anywhere not just to SAP-PO. But the focus of this document is sending data from Salesforce over SAP-PO to SAP-Backend e.g. an SAP ECC 6.0. - **Creating outbound Interface** The figure below depicts which steps to be followed to create an outbound interface with SAP PI/PO. ![](../images/2019/07/Untitled-34.png) - **Creating an outbound adapter in Salesforce.** To Create an Adapter in Salesforce. Go to Adapter tab as shown below. ![](../images/2019/07/Untitled-35.png) In the Adapter page. Click on New to create an adapter. ![](../images/2019/07/Untitled-37.png) ![](../images/2019/07/Untitled-38.png) Now specify the Name, description and select the type as SOAP Adapter. Here in the properties tab specify the endpoint of the receiver system for example here we are sending data to SAP PO. So here we have to specify the endpoint of SAP PO and the username and the password of the PO system and the payloadFormat should be XML as shown below. ![](../images/2019/07/Untitled-39.png) No need to specify the clientCertName, clientCertPasswd, and soapAction here. Then click on save to create the adapter. - **Create Metadata Provider** ![](../images/2019/07/Untitled-40.png) ![](../images/2019/07/Untitled-41.png) Here we are creating metadata for the message type. Metadata providers are plugins that do the actual metadata extraction from files. Metadata Provider tells the data processing layer of lib md which metadata fields (types) they can extract. In SKYVVA, when we create metadata, the Name field is only the mandatory field. On MetaData the Name cannot be duplicated. - **Create IStructure repository** The term Repository is in fact to store data and structure of a message. The purpose of Istructure is An Interface for a structure that contains the metadata of a structure. ![](../images/2019/07/Untitled-42.png) **Create Message** **Type** Now Create Message Types for IStructure Repository. The free define message type is a type and structure definition which is stored in the Repository. The message type can be resided in a WSDL, in SAP IDoc, SAP Bapi, etc… It can be stored in a file in CSV, XML or other formats. For the Message Type, you have to use our defined Structure. As we are sending the Opportunity from Salesforce to create project in SAP. Here we use Opportunity sObject. { "SOAP_Service": {//TYPE WILL BE : “WSDL Service” "SOAP_Request": {//SOAP_Request TYPE WILL BE : “WSDL Request” "SOAP_URLPARAM": { //TYPE WILL BE : “WSDL URL Parameter” "SOAP_URL_PATH": {}, // TYPE WILL BE : “WSDL Path Parameter” : This will use in to build Query path of Endpoint URL "SOAP_URL_QUERY": {} //TYPE WILL BE : “WSDL Query Parameter” : This will use in to build Query path of Endpoint URL }, "SOAP_Header": {},//TYPE WILL BE : “WSDL Header” : This is just of identify not need to include in building of request or response//Hear will be Actual Object which we suppose to insert in header of Request : Must be start by Object "SOAP_Body": {//TYPE WILL BE : “WSDL Body” : This is just of identify not need to include in building of request or response //Hear will be Actual Object which we suppose to insert in Body of Request : Must be start by Object "ISTRUCTURE_Opportunity": { "Opportunity": { "Name": "", "SAP_Project_Number__c": "" } } } }, "SOAP_Response": { //TYPE WILL BE : “WSDL Response” "SOAP_Header": {},//TYPE WILL BE : “WSDL Header” : This is just of identify not need to include in building of request or response "SOAP_Body": {//TYPE WILL BE : “WSDL Body” : This is just of identify not need to include in building of request or response //Hear will be Actual Object which we suppose to insert in Body of Response : Must be start by Object "ISTRUCTURE_Opportunity": { "Opportunity": { "Id": "", "SAP_Project_Number__c": "" } } } } } } In Istructure repository click on "Open Editor" to create the message type as shown below. ![](../images/2019/07/Untitled-79.png) Select file type as JSON and give input to open text box as below: ![](../images/2019/07/Untitled-46.png) Click on the Save button and you can see the below message type. ![](../images/2019/07/Untitled-43.png) ![](../images/2019/07/Untitled-44.png) - **Creating an Outbound synchronous interface** Here we have to create two interfaces one for Request and other for Response as shown below. Create Outbound interface as "Opportunity_Out" and provide the necessary details as shown in detail below. ![](../images/2019/07/Untitled-47.png) ![](../images/2019/07/Untitled-54.png) Specify the Invoke Inbound interface as shown below. ![](../images/2019/07/Untitled-49.png) Do the mapping as shown below. ![](../images/2019/07/Untitled-52.png) Create inbound interface as "Opportunity_Response" and provide the necessary details as shown in detail below. ![](../images/2019/07/Untitled-53.png) ![](../images/2019/07/Untitled-55.png) Do the mapping as shown in screenshot below. ![](../images/2019/07/Untitled-56.png) Download the WSDL's and import it into SAP PO for mapping. - **Designing the objects in ESR** Import the Request WSDL as external definition into ESR and save activate it ![](../images/2019/07/Untitled-57.png) Import the response interface WSDL as external definition, save and activate it ![](../images/2019/07/Untitled-58.png) Create the request and response data types as shown below. ![](../images/2019/07/Untitled-59.png) ![](../images/2019/07/Untitled-60.png) Create request and response message types as shown below ![](../images/2019/07/Untitled-61.png) ![](../images/2019/07/Untitled-62.png) Create inbound and outbound service interfaces as shown below. ![](../images/2019/07/Untitled-63.png) ![](../images/2019/07/Untitled-64.png) Create request and response message mapping as shown below ![](../images/2019/07/Untitled-66.png) ![](../images/2019/07/Untitled-67.png) Create Operation mapping as shown below ![](../images/2019/07/Untitled-68.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/07/Untitled-69.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using Salesforce as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-70.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** ![](../images/2019/07/Untitled-71.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/07/Untitled-72.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/07/Image4.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/07/Untitled-76.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/07/Untitled-77.png) **Test the Outbound Interface.** Triggering the data from the Source system using the following Apex Code. skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0066F000010hsgNQAQ'}; skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('Skyvva_SAP_Salesforce','Opportunity_Out',ids,'SYNC', c); System.debug('>>>XML: '+r.payloadXML); Check the message in the message board. Message sent successfully to SAP PO. ![](../images/2019/07/Untitled-78.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound synchronous BAPI interface in SAP PI/PO using SKYVVA REST Adapter? Title: 1. How to create an outbound synchronous BAPI interface in SAP PI/PO using SKYVVA REST Adapter? Slug: how-to-create-an-outbound-synchronous-bapi-interface-in-sap-pi-po-using-skyvva-rest-adapter URL: https://help.skyvva.com/#article/how-to-create-an-outbound-synchronous-bapi-interface-in-sap-pi-po-using-skyvva-rest-adapter ================================================================================ # 1. How to create an outbound synchronous BAPI interface in SAP PI/PO using SKYVVA REST Adapter? This document describes how to create an outbound interface in SAP PI/PO using Skyvva REST Adapter. When talking about the outbound interface in this document the direction Salesforce to SAP is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an outbound interface involves steps to be done in Salesforce and in PO. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. - **Skyvva software landscape and building blocks** Skyvva Integration Suite enables the integration between Salesforce and SAP-Backend over SAP-PO with less effort and without programming either in SAP or in Salesforce. It based on the generation and customized the approach to reduce effort and to accelerate the development of interfaces between those systems. In order to be able to provide such a toolset and framework some component (green) has been developed by Skyvva and has to be deployed on Salesforce and SAP-PO of the customer. On the SAP-Backend e.g. SAP ECC 6.0 there is no software installation needed. ![](../images/2019/07/Untitled-32.png) When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we are coupling two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound or inbound. ![](../images/2019/07/Untitled-33.png) - **Outbound and Inbound Interface** The term outbound is used when data is sent out from Salesforce to SAP. Therefore we call interfaces for sending data out of Salesforce to SAP "Outbound Interface". For the other direction, we call interfaces as "Inbound Interface" when data is sent from SAP to Salesforce. So the reference point is set to Salesforce. **Prerequisite for creating an Outbound interface** - The Skyvva solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. You start developing outbound interface when you want to send data from Salesforce over PO to SAP-Backend. Of course, you can send data from Salesforce to anywhere not just to SAP-PO. But the focus of this document is sending data from Salesforce over SAP-PO to SAP-Backend e.g. an SAP ECC 6.0. - **Creating outbound Interface** The figure below depicts which steps to be followed to create an outbound interface with SAP PI/PO. ![](../images/2019/07/Untitled-34.png) - **Creating an outbound adapter in Salesforce.** To Create an Adapter in Salesforce. Go to Adapter tab as shown below. ![](../images/2019/07/Untitled-35.png) In the Adapter page. Click on New to create an adapter. ![](../images/2019/07/Untitled-37.png) select the type as REST Adapter. Here in the properties tab, we have to specify the Now specify the Name, description, and properties as shown in screenshots below. ![](../images/2019/07/Untitled-80.png) ![](../images/2019/07/Untitled-81.png) Now click on save to create the adapter. - **Create Metadata Provider** ![](../images/2019/07/Untitled-40.png) ![](../images/2019/07/Untitled-82.png) Here we are creating metadata for the message type. Metadata providers are plugins that do the actual metadata extraction from files. Metadata Provider tells the data processing layer of lib md which metadata fields (types) they can extract. In Skyvva, when we create metadata, the Name field is only the mandatory field. On MetaData the Name cannot be duplicated. - **Create IStructure repository** The term Repository is in fact to store data and structure of a message. The purpose of Istructure is an Interface for a structure that contains the metadata of a structure. ![](../images/2019/07/Untitled-83.png) **Create Message** **Type** Now Create Message Types for IStructure Repository. The free define message type is a type and structure definition which is stored in the Repository. The message type can be resided in a WSDL, in SAP IDoc, SAP Bapi, etc… It can be stored in a file in CSV, XML or other formats. For the Message Type, you have to use our defined Structure. As we are sending the Account details from Salesforce to SAP. Here we use Account sObject. { “REST API H”: { “Request”: { “URL”: { “PATH Parameter”: { “UId”: “”, “SobjCode”: “” }, “QUERY Parameter”: { “RecId”: “”, “UName”: “” } }, “Header”: { “AuthPermission”: “”, “AuthId”: “” }, “Body”: { “MyAccount”: { “Name”: “”, “Description”: “”, “MyContact”: { “FirstName”: “”, “LastName”: “” } } } }, “REST Response”: { “REST Response Header”: { “AuthId”: “”, “SobjId”: “” }, “REST Response Body”: { “MyAccount”: { “Name”: “”, “Description”: “”, “MyContact”: { “FirstName”: “”, “LastName”: “” } } } } } } In Istructure repository click on "Open Editor" to create the message type as shown below. ![](../images/2019/07/Untitled-84.png) Select file type as JSON and give input to open text box as below: ![](../images/2019/01/Rest_Adapter7.png) Click on the Save button and you can see the below message type. ![](../images/2019/07/Untitled-85.png) - **Creating an Outbound synchronous interface** Here we have to create two interfaces one for Request and other for Response as shown below. Create Outbound interface as "Account_Out" and provide the necessary details as shown in detail below. ![](../images/2019/07/Untitled-86.png) ![](../images/2019/07/Untitled-89.png) ![](../images/2019/07/Untitled-88.png) ![](../images/2019/07/Untitled-90.png) Do the mapping as shown below. ![](../images/2019/07/Untitled-91.png) ![](../images/2019/07/Untitled-92.png)Create inbound interface as "Account_Response" and provide the necessary details as shown in detail below. ![](../images/2019/07/Untitled-93.png) ![](../images/2019/07/Untitled-94.png) Do the mapping as shown in the screenshot below. ![](../images/2019/07/Untitled-95.png) ![](../images/2019/07/Untitled-96.png) Download the WSDL's and import it into SAP PO for mapping. - **Designing the objects in ESR** Import the Request WSDL as external definition into ESR and save activate it ![](../images/2019/07/Untitled-97.png) Import the response interface WSDL as external definition, save and activate it ![](../images/2019/07/Untitled-98.png) As we are using BAPI from SAP. So no need to create Data type, Message type and Service Interface. Create an outbound service interface as shown below. ![](../images/2019/07/Untitled-99.png) Create request and response message mapping as shown below ![](../images/2019/07/Untitled-100.png) ![](../images/2019/07/Untitled-101.png) Create Operation mapping as shown below ![](../images/2019/07/Untitled-102.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/07/Untitled-103.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender REST communication channel** Create sender communication channel as shown below. Since we are using Salesforce as a source. So, here we are using REST  in the sender channel. ![](../images/2019/07/Untitled-104.png) ![](../images/2019/07/Untitled-105.png) ![](../images/2019/07/Untitled-106.png) ![](../images/2019/07/Untitled-107.png) ![](../images/2019/07/Untitled-108.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** ![](../images/2019/07/Untitled-71.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/07/Untitled-109.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/07/Untitled-110.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/07/Untitled-111.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/07/Untitled-112.png) **Test the Outbound Interface.** Triggering the data from the Source system using the following Apex Code. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids=new String[]{'0064E00000D0sCvQAJ'}; skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('SAP_Skyvva_Salesforce','Account_Out',ids,'SYNC', c); Check the message in the Skyvva message board. Message sent successfully to SAP PO. ![](../images/2019/07/Untitled-114.png) Customer data has been sent to SAP Successfully. ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create a synchronous Quote Interface from SKYVVA to ECC and response back from ECC to SKYVVA Title: 1. How to create a synchronous Quote Interface from SKYVVA to ECC and response back from ECC to Skyvva Slug: how-to-create-a-synchronous-quote-interface-from-skyvva-to-ecc-and-response-back-from-ecc-to-skyvva URL: https://help.skyvva.com/#article/how-to-create-a-synchronous-quote-interface-from-skyvva-to-ecc-and-response-back-from-ecc-to-skyvva ================================================================================ # 1. How to create a synchronous Quote Interface from SKYVVA to ECC and response back from ECC to Skyvva This document helps you to learn how to create a Synchronous Quote Interface. Where all the details of the Quote sent from SKYVVA to ECC, and respective Quote no will be created in ECC system and sent back to SKYVVA. Create custom table [Quote](https://naresh-apsara-dev-ed.lightning.force.com/one/one.app#/setup/ObjectManager/Quote/view) and [Quote Line Item ](https://naresh-apsara-dev-ed.lightning.force.com/one/one.app#/setup/ObjectManager/QuoteLineItem/view)Once and [QuoteResponse_IN](https://naresh-apsara-dev-ed.lightning.force.com/one/one.app?#/sObject/a0Z6F00000rOJhhUAG/view) for response message [caption id="attachment_10023" align="alignleft" width="1291"]![Quote Table Custom](../images/2019/07/Quote-Table-Custom.png) Quote Table Custom[/caption] Once created with required fields, Create a Integration [SAP_OrderManagement](https://naresh-apsara-dev-ed.lightning.force.com/one/one.app?#/sObject/a0V6F000013FuqjUAC/view). ![](../images/2019/07/Integration.png) **Note :** Once the development is completed for Quote, Quote Line Item and Quote Response Under the Integration created ([SAP_OrderManagement](https://naresh-apsara-dev-ed.lightning.force.com/one/one.app?#/sObject/a0V6F000013FuqjUAC/view)) we will be Linking the Quote Response message which will carry the Quote no as the response from ECC and Quote Line Item to be in Sync with Quote. Important Steps to be noted while creating Quote. - Details Tab Source/Target Name : Respective created Custom table name : Quote Direction : Outbound Keep the Check box checked for Connect with Middle ware tab. Now query the required fields and do the respective mapping in SKYVVA. ![](../images/2019/07/Quote_Out_Details-Tab-1.png) Once this is completed similarly create the Quote Line Item Interface with its respective details ![Quote Line Item](../images/2019/07/Quote-Line-Item-1.png) Quote Line Item Once the mapping is done for Line Item go back to Quote Interface for linking and building relationship between Quote_Out and Quote Line Item. Over in Quote go to Related tab and call the Quote Line Item to link it and keep both Header Quote and Quote Item with each other. [caption id="attachment_10040" align="alignleft" width="1331"]![Quote and Quote Line Item linking](../images/2019/07/Quote-and-Quote-Line-Item-linking-1.png) Quote and Quote Line Item linking[/caption] Once this is completed save it from Deployment to Deployed Status and go back to Quote screen of you SF system, Similarly create the Quote Response Interface. [caption id="attachment_10042" align="alignleft" width="937"]![Quote Response](../images/2019/07/Quote-Response.png) Quote Response[/caption] For Quote Response the custom field will be checked as external and this field will be holding the Quote no created in ECC. [caption id="attachment_10043" align="alignleft" width="1267"]![Quote Response mapping](../images/2019/07/Quote-Response-mapping.png) Quote Response mapping[/caption] Once the Development of Quote Response is completed please go back to the Details Tab of Quote_Out and link the Response Interface in Quote. [caption id="attachment_10046" align="alignleft" width="1117"]![Linking Quote Response with Quote](../images/2019/07/Linking-Quote-Response-with-Quote.png) Linking Quote Response with Quote[/caption] After completion of Quote, Quote Line Item and Quote Response Interface go to the Details tab of the Integration SAP_OrderManagement and click on Manage Middleware WSDLs. [caption id="attachment_10048" align="alignleft" width="1318"]![Manage Middleware WSDLs](../images/2019/07/Manage-Middleware-WSDLs.png) Manage Middleware WSDLs[/caption] Once clicked you will get a xsd or wsdl to be created from the SKYVVA browser for selected Interface, Please select Quote_Out and Quote Response where Quote is linked with Quote Line Item and Quote Response will have a different wsdl. [caption id="attachment_10051" align="alignleft" width="943"]![Wsdl Creation Quote](../images/2019/07/WSDl-Creation-Quote.png) Wsdl Creation Quote[/caption] We will using this downloaded wsdl of Quote_Out and Quote Response in SAP PI and get the required mapping done. After the PI Development we can test the Interface End to End Via Developer Console Testing the Object from Developer Console Go to Developer Console and Select Debug option [caption id="attachment_10053" align="alignleft" width="627"]![Developer Console Debug](../images/2019/07/Developer-Console-Debug.png) Developer Console Debug[/caption] Once you select the Debug option you will get a new popup screen where you can give your input and push the message to ECC via PI/PO and you will get the response back from ECC to Skyvva with the Quote no via PI/PO The below code is used to test the Quote in a Salesforce Org. skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q06F000002XbNW'}; skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('SAP_OrderManagement','Quote_OUT',ids,'SYNC', c); System.debug('>>>XML: '+r.payloadXML); System.debug('>>>List of Map:'+r.records); ![](../images/2019/07/Code-to-Use-in-Developer-Console.png) After giving the appropriate details in the Developer console click on Execute so that the message will pushed to PI and it bring the response back from ECC. Once you execute you will get lot of response over there please select Debug Only so that it will give us the required result by using this filter. ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound asynchronous interface in SAP PI/PO EOIO mode using SKYVVA SFDC2SAPPI Adapter? Title: 1. How to create an outbound asynchronous interface in SAP PI/PO EOIO mode using SKYVVA SFDC2SAPPI Adapter? Slug: how-to-create-an-outbound-asynchronous-interface-in-sap-pi-po-eoio-mode-using-skyvva-sfdc2sappi-adapter URL: https://help.skyvva.com/#article/how-to-create-an-outbound-asynchronous-interface-in-sap-pi-po-eoio-mode-using-skyvva-sfdc2sappi-adapter ================================================================================ # 1. How to create an outbound asynchronous interface in SAP PI/PO EOIO mode using SKYVVA SFDC2SAPPI Adapter? This document describes how to create an outbound asynchronous interface with SAP PI/PO EOIO mode using SFDC2SAPPI Adapter. When talking about the outbound interface in this document the direction Salesforce to SAP is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an outbound interface involves steps to be done in Salesforce and in PO. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. **Prerequisite for creating an Outbound interface** - The Skyvva solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. You start developing outbound interface when you want to send data from Salesforce over PO to SAP-Backend. Of course, you can send data from Salesforce to anywhere not just to SAP-PO. But the focus of this document is sending data from Salesforce over SAP-PO to SAP-Backend e.g. an SAP ECC 6.0. - **Creating outbound Interface** The figure below depicts which steps to be followed to create an outbound interface with SAP PI/PO. ![](../images/2019/07/Untitled-34.png) - **Creating an outbound adapter in Salesforce.** To Create an Adapter in Salesforce. Go to Adapter tab as shown below. ![](../images/2019/07/Untitled-35.png) In the Adapter page. Click on New to create an adapter. ![](../images/2019/07/Untitled-37.png) ![](../images/2019/08/Image4-14.png) For EOIO mode we have to specify the "QueueId" in the endpoint as like below. **http://195.201.104.232:16080/sapo5b/XISOAPAdapter/MessageServlet?channel=Salesforce:CC_SOAP_s_IDOC_Account&QueueId=QueueName** In the QueueName, we have to give the name which we are defined in the sender channel of SAP PO. Now specify the Name, description and select the type as SFDC2SAPPI Adapter. Here in the properties tab specify the endpoint of the receiver system for example here we are sending data to SAP PO. So here we have to specify the endpoint of SAP PO and the username and the password of the PO system. **Creating an Outbound Asynchronous interface** Create Outbound interface as "Account_Async_Out" and provide the necessary details. ![](../images/2019/08/Image4-15.png) Specify the Outbound adapter as shown below. ![](../images/2019/08/Image4-16.png)![](../images/2019/08/Image4-17.png) Download the WSDL and import it into SAP PO for mapping. - **Designing the objects in ESR** Import the Account WSDL as external definition into ESR and save activate it ![](../images/2019/08/Untitled-16.png) As we sending data to SAP. Here we are using DEBMAS07 Idoc as a target structure. Import Idoc from SAP and activate it. ![](../images/2019/08/Untitled-17.png) Create outbound service interface as shown below. ![](../images/2019/08/Untitled-18.png) Create message mapping as shown below ![](../images/2019/08/Untitled-19.png) Create Operation mapping as shown below ![](../images/2019/08/Untitled-20.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/08/Untitled-21.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using Salesforce as a source. So, here we are using SOAP  in the sender channel. We need to select the Quality of service as Exactly once in order and give the queue name as shown in the screenshot below. ![](../images/2019/08/Untitled-23.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the IDOC receiver channel** ![](../images/2019/08/Untitled-24.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/08/Image4.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/08/Image4-1.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/08/Image4-2.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/08/Image4-3.png) **Test the Outbound Interface.** Triggering the data from the Source system using the following Apex Code. skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0014E000012qeNYQAY'}; skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('SAP_Skyvva_Salesforce','Account_Async_Out',ids,'ASYNC', c); Check the message on the message board. Message sent successfully to SAP PO. ![](../images/2019/08/Image4-4.png) Messages got delivered to SAP successfully from PO. ![](../images/2019/08/Image4-5.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound synchronous proxy interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? Title: 1. How to create an outbound synchronous proxy interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? Slug: how-to-create-an-outbound-synchronous-proxy-interface-in-sap-pi-po-using-skyvva-sfdc2sappi-adapter URL: https://help.skyvva.com/#article/how-to-create-an-outbound-synchronous-proxy-interface-in-sap-pi-po-using-skyvva-sfdc2sappi-adapter ================================================================================ # 1. How to create an outbound synchronous proxy interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? This document describes how to create an outbound interface with SAP-PO java single stack. When talking about the outbound interface in this document the direction Salesforce to SAP is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an outbound interface involves steps to be done in Salesforce and in PO. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. - **SKYVVA software landscape and building blocks** SKYVVA Integration Suite enables the integration between Salesforce and SAP-Backend over SAP-PO with less effort and without programming either in SAP or in Salesforce. It based on the generation and customized the approach to reduce effort and to accelerate the development of interfaces between those systems. In order to be able to provide such a toolset and framework some component (green) has been developed by Skyvva and has to be deployed on Salesforce and SAP-PO of the customer. On the SAP-Backend e.g. SAP ECC 6.0 there is no software installation needed. ![](../images/2019/07/Untitled-32.png) When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we are coupling two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound or inbound. ![](../images/2019/07/Untitled-33.png) - **Outbound and Inbound Interface** The term outbound is used when data is sent out from Salesforce to SAP. Therefore we call interfaces for sending data out of Salesforce to SAP "Outbound Interface". For the other direction, we call interfaces as "Inbound Interface" when data is sent from SAP to Salesforce. So the reference point is set to Salesforce. **Prerequisite for creating an inbound interface** - The Skyvva solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. You start developing outbound interface when you want to send data from Salesforce over PO to SAP-Backend. Of course, you can send data from Salesforce to anywhere not just to SAP-PO. But the focus of this document is sending data from Salesforce over SAP-PO to SAP-Backend e.g. an SAP ECC 6.0. - **Creating outbound Interface** The figure below depicts which steps to be followed to create an outbound interface with SAP PI/PO. ![](../images/2019/07/Untitled-34.png) - **Creating an outbound adapter in Salesforce.** To Create an Adapter in Salesforce. Go to Adapter tab as shown below. ![](../images/2019/07/Untitled-35.png) In the Adapter page. Click on New to create an adapter. ![](../images/2019/07/Untitled-37.png) ![](../images/2019/08/Untitled.png) Now specify the Name, description and select the type as SFDC2SAPPI Adapter. Here in the properties tab specify the endpoint of the receiver system for example here we are sending data to SAP PO. So here we have to specify the endpoint of SAP PO and the username and the password of the PO system as shown below. Then click on save to create the adapter. - **Creating an Outbound synchronous interface** Here we have to create two interfaces one for Request and other for Response as shown below. Create Outbound interface as "Opportunity_Out" and provide the necessary details as shown in detail below. ![](../images/2019/08/Untitled-1.png) ![](../images/2019/08/Untitled-2.png) Specify the Invoke Inbound interface as shown below. ![](../images/2019/07/Untitled-49.png) Do the mapping as shown below. ![](../images/2019/08/Untitled-3.png) Create inbound interface as "Opportunity_Response" and provide the necessary details as shown in detail below. ![](../images/2019/08/Untitled-4.png) ![](../images/2019/07/Untitled-55.png) Do the mapping as shown in screenshot below. ![](../images/2019/08/Untitled-5.png) Download the WSDL's and import it into SAP PO for mapping. In the Response WSDL. We need to add the SKYVVA system fields. These fields will not come automatically in the WSDL. We have to add it manually like below. ![](../images/2019/08/Untitled.png) After added the field in WSDL. We can see the field in ESR. ![](../images/2019/08/Untitled-1.png) In Skyvva we have a feature where we can set the comment and the status of the request message. - Callout error where there is no application response e.g. internal server error. In this case, we cannot create a response message and thus we cannot put a text to the comment field of the response message. - Application error where we get a response back. Here we have two subcases e.g. - application error -> SKYVVA__Response_Code = 500, SKYVVA__Message = 'This is an application error text'. - application success -> SKYVVA__Response_Code = 200, SKYVVA__Message = 'This is an application success text'. We have to check the new field SKYVVA__Response_Code of the message payload and decide what to do. If the value of the field SKYVVA__Response_Code = 500 then it means an application error and we write the content of the field SKYVVA__Message to the comment field and set the status of the response message to 'Failed'. If the value of the field SKYVVA__Response_Code = 200 then it means an application success and we write the content of the field SKYVVA__Message to the comment field and set the status of the response message to 'Completed'. When the response message status is set to 'Failed' then, of course, the status of the request message is set to 'Failed' too. The comment of the request message doesn't need to set or changed. Accordingly, the status of the request message is set to 'Completed' in case the response is successful. Both messages e.g. the request and response are linked together as a couple. So, for this case, we need a new field 'SKYVVA__Response_Code' and can use in combination with the existing field 'SKYVVA__Message'. These fields have to be generated into the WSDL and open API file. The client will fill in these two fields in its response to the synchronous callout. Here is an example of the response body: ![](../images/2019/08/Untitled-2.png) - **Designing the objects in ESR** Import the Request WSDL as external definition into ESR and save activate it ![](../images/2019/07/Untitled-57.png) Import the response interface WSDL as external definition, save and activate it ![](../images/2019/07/Untitled-58.png) Create the request and response data types as shown below. ![](../images/2019/07/Untitled-59.png) ![](../images/2019/07/Untitled-60.png) Create request and response message types as shown below ![](../images/2019/07/Untitled-61.png) ![](../images/2019/07/Untitled-62.png) Create inbound and outbound service interfaces as shown below. ![](../images/2019/07/Untitled-63.png) ![](../images/2019/07/Untitled-64.png) Create request and response message mapping as shown below ![](../images/2019/07/Untitled-66.png) ![](../images/2019/08/Untitled-3.png) Create Operation mapping as shown below ![](../images/2019/07/Untitled-68.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/07/Untitled-69.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using Salesforce as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-70.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** ![](../images/2019/07/Untitled-71.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/07/Untitled-72.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/07/Image4.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/07/Untitled-76.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/08/Untitled-6.png) **Test the Outbound Interface.** Triggering the data from the Source system using the following Apex Code. skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0066F000010hsgNQAQ'}; skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('Skyvva_SAP_Salesforce','Opportunity_Out',ids,'SYNC', c); System.debug('>>>XML: '+r.payloadXML); Check the message on the message board. Message sent successfully to SAP PO. ![](../images/2019/08/Untitled-4.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create inbound synchronous query interface in SAP PI/PO using SKYVVA? Title: 1. How to create inbound synchronous query interface in SAP PI/PO using SKYVVA? Slug: how-to-create-inbound-synchronous-query-interface-in-sap-pi-po-using-skyvva URL: https://help.skyvva.com/#article/how-to-create-inbound-synchronous-query-interface-in-sap-pi-po-using-skyvva ================================================================================ # 1. How to create inbound synchronous query interface in SAP PI/PO using SKYVVA? This document describes how to create an inbound synchronous query interface with SAP-PO java single stack. When talking about the inbound interface in this document the direction SAP to Salesforce is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an inbound interface involves steps to be done in Salesforce and in PO. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. If want to search the data/records present in your Salesforce then this module will help you. It will help you to create a dynamic nature of search. You can configure the search feature and use it as per your needs. Skyvva app will help you to configure your search. You need to follow the below steps to configure your search: - Create an integration or use an existing integration. - Create an interface using the above integration. - The interface should have operationType as "query“ or "queryAll“. The SOQL query to select sObject data needs to be set with required SOQL query. To fetch small size data we use query and for Big size data we are going to use Bulk query. - **SKYVVA software landscape and building blocks** SKYVVA Integration Suite enables the integration between Salesforce and SAP-Backend over SAP-PO with less effort and without programming neither in SAP nor in Salesforce. It bases on the generation and customized approach to reduce effort and to accelerate the development of interfaces between those systems. In order to be able to provide such a toolset and framework some component (green) has been developed by SKYVVA and has to be deployed on Salesforce and SAP-PO of the customer. On the SAP-Backend e.g. SAP ECC 6.0 there is no software installation needed. ![](../images/2019/06/Image-1.png) Creating an inbound interface is only possible when the Skyvva solution framework is set up correctly. When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we are coupling two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound or inbound. ![](../images/2019/06/Untitled-42-1.png) - **Outbound and Inbound Interface** The term outbound is used when data is sent out from Salesforce to SAP. Therefore we will call interfaces for sending data out of Salesforce to SAP "Outbound Interface". For the other direction, we will call the interfaces "Inbound Interface" when data is sent from SAP to Salesforce. So, the reference point is set to Salesforce. - ** Prerequisite for creating an inbound interface** - The Skyvva solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. - ** Creating Inbound Synchronous Interface** Create a synchronous inbound interface when you want to query data from Salesforce over SAP-PO and need a result back to SAP e.g. query all account in Salesforce which has the status active. By this way, you can pull data from Salesforce by providing query parameter as a search criteria. **Note**: You can only query data from Salesforce and get the result back. You cannot create or modify data in Salesforce in a synchronous way. If you want to create or modify data in Salesforce send data in an asynchronous way and do an operation like upsert, insert or delete. The only operation supported now in the synchronous call to Salesforce is the operation "query". With this technique, you can prevent the open firewall from Salesforce to your SAP-Backend system. Thus enabling you to save work effort and cost. What you need is just to open the firewall from your internal network to the outside e.g. open from inside to outside. This way is most the case since there was no danger to open the firewall from inside to outside. The opposite way e.g. open the firewall from outside to inside is dangerous and therefore need restriction, security policy and thus effort and cost. - **Overview of the steps to create an Inbound interface** The figure below depicts which steps to be followed to create an inbound interface with SAP PI/PO. ![](../images/2019/08/Image4-6.png) Steps to create a synchronous inbound interface **Step 1. Creating an inbound synchronous interface(Salesforce)** Login to the Salesforce org and then select Skyvva Integration Cloud. Go to Integration Tab and create New Integration under that go to the interfaces tab and then create New interface as shown below. In this example, I have created the interface under "**Skyvva_SAP_Salesforce"** integration ![](../images/2019/06/Image3-4-1.png) ![](../images/2019/08/Image4-43.png) Similarly, create the Outbound scenario for Query response as "**QueryAccount_Response**" as shown below ![](../images/2019/08/Image4-47.png) Now we have to fill the following fields: - Name - Source Name - Status - Sequence - Operation Type - Connect with Middleware - External Mapping - Interface Mode Then click on button "Save" to save your interface. Now we have to specify some required fields and other optional fields for defining the inbound interface. Following all fields related to creating an inbound interface for connecting to Salesforce are described. Note that there are also fields in the screen which is not needed for the SAP-PI coupling but needed for other couplings e.g. the SAP direct coupling. **4.1 Name** - It represents the Interface Name that we are going to create and also we have to provide a meaningful description in the Description label. - Since we are creating an Inbound interface. So, here we recommend you to follow the naming convention as for example QueryAccount_IN for the inbound interface as shown below and QueryAccount_Out for the outbound interface. ![](../images/2019/08/Image4-11.png) **4.2 Status** Initially, it will be in the "Development" status. When we want to run the interface then we have to set it as "Deployed" as shown below. ![](../images/2019/06/Untitled-2.png) **4.3 Sequence** Enter a number in this field. This field is for numbering the interface to be shown in the logical order on screen ![](../images/2019/06/Untitled-45.png) **4.4 Operation Type** This field contains the SQL statement for an interface. For inbound interface, we need to specify an operation since this is an updated interface. In this case, you can specify the value "Upsert". ![](../images/2019/08/Image4-10.png) This field contains the SOQL statement for an interface. We have to specify the operation type "query". Another operation is not supported to query. The section "Query" is needed to select data for the inbound interface. Here is the place where you specify your SOQL-Select Statement. You also can do a joint to get data from another object. The syntax is based on the SOQL-Syntax. Refer to the online help of Salesforce to read about the syntax of the SOQL- Language. ![](../images/2019/08/Image4-13.png) If you specify the query parameter it should be done in this Syntax{!field_name} e.g.(!SAP_Division__c) You can join the parameter by entering the Boolean operation AND or OR. You can also join different table. **4.5 Field Type** Here we are specifying the direction of the interface e.g. Inbound or Outbound. Since we have created an inbound interface. So, We have to specify the value as "InBound". ![](../images/2019/06/Untitled-5.png) **4.6 Interface processing mode** Here we have to specify the processing mode as Synchronous. ![](../images/2019/08/Image4-12.png) **4.7 Connect with Middleware** We have to check this flag because we use SAP-PO as a middleware component. This is just to indicate Skyvva runtime service that it is not connected directly to an SAP-Backend. ![](../images/2019/06/Untitled-7.png) **4.8 External Mapping** Since we are using SAP PO as a middleware component and as a developing a tool for mapping. This is just to indicate Skyvva runtime service that mapping will be done in SAP-PO and that you don't need to do mapping in Skyvva framework. ![](../images/2019/06/Untitled-8.png) If our business case needs that you want to map both in SAP-PO and in Skyvva framework then you have to check the "Mapping in SFDC" also. But normally in most of the cases, we don't need to do mapping in Skyvva framework again. **Step 2 - Generate WSDL for the Inbound interface** Now we have to generate the WSDL for this inbound interface. This is needed to do mapping in SAP PO and to generate the WSDL. Go to Integration under that select details tab and then click on "**Manage Middleware WSDLs**" as shown below. ![](../images/2019/06/Untitled-9.png) Click on the link "Manage Middleware WSDLs" Now download the WSDL for both inbound and outbound response interface as shown below. ![](../images/2019/08/Image4-44.png) ![](../images/2019/08/Image4-49.png) Now select the interface you want to export as WSDL. After selection of an interface now click on the button "Create WSDL". Scroll down to see the generated file. ![](../images/2019/08/Image4-50.png) Now click on the Link "View“ and then WSDL will be downloaded. ![](../images/2019/08/Image4-51.png) Rename the downloaded file as SEARCH_RESULT_QueryAccount_IN.wsdl and SEARCH_RESULT_QueryAccount_Response.wsdl. Now we can import this  WSDL into ESR in SAP PO for mapping. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva: Querysalesforce**". Now create an external definition for Query Account request under the namespace like below. Here the WSDL is for Account. So, we can give the name as ED_SF_SearchQuery_Request. ![](../images/2019/08/Image4-52.png) Now import the WSDL and Save and activate it. Now create an external definition for Query Account response under the namespace like below. Here the WSDL is for Account. So, we can give the name as ED_SF_SearchQuery_Response. ![](../images/2019/08/Image4-53.png) Since in this example, we are sending data from SOAPUI to Salesforce. So, we need to create data types for request and response as shown below. **DataType for Request - ** ![](../images/2019/08/Image4-62.png) Save and activate the request data type. **DataType for Response**- ![](../images/2019/08/Image4-63.png) Save and activate the response data type. Now create Message type for both Request and Response as shown below. **Request Message type -** ![](../images/2019/08/Image4-64.png) Save and activate the request message type. **Response Message type - ** ![](../images/2019/08/Image4-66.png) Now Save and activate the response message type. Create Outbound and inbound service interfaces as shown below. ![](../images/2019/08/Image4-67.png) ![](../images/2019/08/Image4-68.png) Provide the necessary details as shown and then save and activate it. - **Message mapping** Create request and response message mapping as shown below. **Request Mapping - ** Select the Source structure and target structure and complete the mapping. ![](../images/2019/08/Image4-69.png) **Response Mapping - ** ![](../images/2019/08/Image4-70.png) Now save and activate both the mappings - **Operation Mapping ** Create Operation mapping as shown below. This is for request mapping ![](../images/2019/08/Image4-71.png) In Response-Mapping, a java mapping is needed to convert the Skyvva message format into a business structure. The java mapping will be provided from Skyvva and you just have to use it. ![](../images/2019/08/Image4-72.png) Now select the inbound and outbound service interfaces and the respective request and response mappings. Then save and activate the operation mapping. - **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2019/08/Image4-73.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. - **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAPUI as a source. So, here we are using SOAP adapter in the sender channel. ![](../images/2019/08/Image4-74.png) Provide the necessary details. After that save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/08/Image4-75.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. This is using the module version 3 ![](../images/2019/08/Image4-1.png) ![](../images/2019/08/Image4-2.png) Configuration of module parameters are described in detail below - **Skyvva Module Parameters** Starting from version 2.27 Skyvva provides a single module, **"Salesforce/GetSessionID_V3"**, to be used with SOAP receiver channels. Module parameters are outlined below ![](../images/2019/08/Image4-77.png) ![](../images/2019/08/Image4-78.png) For the new Module we no need to use the Java mapping in response mapping to convert the JSON response into XML. We can directly include the parameter in the module to convert the JSON Response. Here are the channel configurations for new module. We need 3 modules in the soap receiver channel e.g. 1. SFDC_Query_REQUEST -> prepare the execution of the REST and BULK query and pass the message payload to the 3. module 2. XISOAPAdapterBean -> calling our new soap API 'RouteRequest' to just pass back the request from the 1. module 3. SFDC_Query_RESULT -> here we only fetching the result which has been executed ![](../images/2019/08/New.png) ![](../images/2019/08/New-1.png) **The different way to put the SELECT statement** Here we are able to build the select statement dynamically by the pi mapping. Thus we need a field in the request payload which for example is called 'SKYVVA__SOQL_SELECT' and where we can build the SELECT-statement by using concat formula in the mapping. In this case, you are taking the value from this field and it will dominate the SELECT-statement on the module parameter. In the request WSDL we need to add SKYVVA system field e.g. 'SKYVVA__SOQL_SELECT' and build dynamically the SELECT in the mapping. We have at 3 different places to put the SELECT statement e.g.: - In the interface - In the module parameter - In the PO request mapping in the field 'SKYVVA__SOQL_SELECT' . Here is the SQL Statement used in Module Parameters. SELECT BillingCity,BillingCountry,BillingPostalCode,BillingState,BillingStreet,Description,Fax,Id,Name,Phone,skyvvasolutions__SAP_Distribution_Channel__c,skyvvasolutions__SAP_Division__c,skyvvasolutions__SAP_Sales_Org__c FROM Account where skyvvasolutions__SAP_Distribution_Channel__c = '{!skyvvasolutions__SAP_Distribution_Channel__c}' and skyvvasolutions__SAP_Sales_Org__c = '{!skyvvasolutions__SAP_Sales_Org__c}' and skyvvasolutions__SAP_Division__c = '{!skyvvasolutions__SAP_Division__c}' - **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. ![](../images/2019/08/Image4-79.png) Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2019/08/Image4-80.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2019/08/Image4-81.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/08/Image4-82.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2019/08/Image4-83.png) **Testing the inbound synchronous Interface.** I am sending the data from SOAPUI. We are getting the JSON Response from Salesforce. ![](../images/2019/08/Image4.png) Here we can test the interface directly using the SKYVVA SOAP API. The result will be in JSON format. ![](../images/2019/08/Image4-84.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to pass Queue-ID into the URL parameter of the SAP-PI/PO SOAP Adapter? Title: 1. How to pass Queue-ID into the URL parameter of the SAP-PI/PO SOAP Adapter? Slug: how-to-pass-queue-id-into-the-url-parameter-of-the-sap-pi-po-soap-adapter URL: https://help.skyvva.com/#article/how-to-pass-queue-id-into-the-url-parameter-of-the-sap-pi-po-soap-adapter ================================================================================ # 1. How to pass Queue-ID into the URL parameter of the SAP-PI/PO SOAP Adapter? This document describes how to create an outbound asynchronous interface with SAP PI/PO EOIO mode using SOAP Adapter. When talking about the outbound interface in this document the direction Salesforce to SAP is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an outbound interface involves steps to be done in Salesforce and in PO. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. **Prerequisite for creating an Outbound interface** - The Skyvva solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. You start developing outbound interface when you want to send data from Salesforce over PO to SAP-Backend. Of course, you can send data from Salesforce to anywhere not just to SAP-PO. But the focus of this document is sending data from Salesforce over SAP-PO to SAP-Backend e.g. an SAP ECC 6.0. - **Creating outbound Interface** The figure below depicts which steps to be followed to create an outbound interface with SAP PI/PO. ![](../images/2019/07/Untitled-34.png) - **Creating an outbound adapter in Salesforce.** To Create an Adapter in Salesforce. Go to Adapter tab as shown below. ![](../images/2019/07/Untitled-35.png) In the Adapter page. Click on New to create an adapter. ![](../images/2019/07/Untitled-37.png) ![](../images/2019/08/Image4-54.png) For EOIO mode we have to specify the “QueueId” in the endpoint as like below. **http://195.201.104.232:16080/sapo5b/XISOAPAdapter/MessageServlet?channel=Salesforce:CC_SOAP_s_IDOC_Account&QueueId=QueueName** In the QueueName, we have to give the name which we are defined in the sender channel of SAP PO. Now specify the Name, description and select the type as SOAP Adapter. Here in the properties tab specify the endpoint of the receiver system for example here we are sending data to SAP PO. So here we have to specify the endpoint of SAP PO and the username and the password of the PO system. Specify the payload format as XML as shown above. - **Create Metadata Provider** ![](../images/2019/07/Untitled-40.png) ![](../images/2019/07/Untitled-41.png) Here we are creating metadata for the message type. Metadata providers are plugins that do the actual metadata extraction from files. Metadata Provider tells the data processing layer of lib md which metadata fields (types) they can extract. In Skyvva, when we create metadata, the Name field is only the mandatory field. On MetaData the Name cannot be duplicated. - **Create IStructure repository** The term Repository is in fact to store data and structure of a message. The purpose of Istructure is An Interface for a structure that contains the metadata of a structure. ![](../images/2019/07/Untitled-42.png) **Create Message** **Type** Now Create Message Types for IStructure Repository. The free define message type is a type and structure definition which is stored in the Repository. The message type can be resided in a WSDL, in SAP IDoc, SAP Bapi, etc… It can be stored in a file in CSV, XML or other formats. For the Message Type, you have to use our defined Structure. As we are sending the Opportunity from Salesforce to create a project in SAP. Here we use  Account sObject. { "SOAP_Service": {//TYPE WILL BE : “WSDL Service” "SOAP_Request": {//SOAP_Request TYPE WILL BE : “WSDL Request” "SOAP_URLPARAM": { //TYPE WILL BE : “WSDL URL Parameter” "SOAP_URL_PATH": {}, // TYPE WILL BE : “WSDL Path Parameter” : This will use in to build Query path of Endpoint URL "SOAP_URL_QUERY": {} //TYPE WILL BE : “WSDL Query Parameter” : This will use in to build Query path of Endpoint URL }, "SOAP_Header": {},//TYPE WILL BE : “WSDL Header” : This is just of identify not need to include in building of request or response//Hear will be Actual Object which we suppose to insert in header of Request : Must be start by Object "SOAP_Body": {//TYPE WILL BE : “WSDL Body” : This is just of identify not need to include in building of request or response //Hear will be Actual Object which we suppose to insert in Body of Request : Must be start by Object "ISTRUCTURE_Account": { "Account": { "BillingCity": "", "SAP_Customer_Number__c": "" } } } }, "SOAP_Response": { //TYPE WILL BE : “WSDL Response” "SOAP_Header": {},//TYPE WILL BE : “WSDL Header” : This is just of identify not need to include in building of request or response "SOAP_Body": {//TYPE WILL BE : “WSDL Body” : This is just of identify not need to include in building of request or response //Hear will be Actual Object which we suppose to insert in Body of Response : Must be start by Object } } } } In Istructure repository click on "Open Editor" to create the message type as shown below. ![](../images/2019/07/Untitled-79.png) Select file type as JSON and give input to open text box as below: ![](../images/2019/07/Untitled-46.png) Click on the Save button and you can see the below message type. ![](../images/2019/08/Image4-61.png) **Creating an Outbound Asynchronous interface** Create Outbound interface as “Account_Async_Out” and provide the necessary details. ![](../images/2019/08/Image4-60.png) Specify the Outbound adapter as shown below. ![](../images/2019/08/Image4-56.png) Do the mapping in Skyvva as shown below. Here map the QueueId with the Id of the sObject. ![](../images/2019/08/Image4-58.png) ![](../images/2019/08/Image4-59.png) Then save the data mapping and then save the interface. Download the WSDL and import it into SAP PO for mapping. - **Designing the objects in ESR** Import the Account WSDL as external definition into ESR and save activate it ![](../images/2019/08/Untitled-16.png) As we sending data to SAP. Here we are using DEBMAS07 Idoc as a target structure. Import Idoc from SAP and activate it. ![](../images/2019/08/Untitled-17.png) Create outbound service interface as shown below. ![](../images/2019/08/Untitled-18.png) Create message mapping as shown below ![](../images/2019/08/Untitled-19.png) Create Operation mapping as shown below ![](../images/2019/08/Untitled-20.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/08/Untitled-21.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal “**Salesforce**” as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using Salesforce as a source. So, here we are using SOAP  in the sender channel. We need to select the Quality of service as Exactly once in order and give the queue name as shown in the screenshot below. ![](../images/2019/08/Untitled-23.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the IDOC receiver channel** ![](../images/2019/08/Untitled-24.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/08/Image4.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/08/Image4-1.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/08/Image4-2.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/08/Image4-3.png) **Test the Outbound Interface.** Triggering the data from the Source system using the following Apex Code. skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{‘0014E000012qeNYQAY’}; skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2(‘SAP_Skyvva_Salesforce’,’Account_Async_Out’,ids,’ASYNC’, c); Check the message on the message board. Message sent successfully to SAP PO. ![](../images/2019/08/Image4-4.png) Messages got delivered to SAP successfully from PO. ![](../images/2019/08/Image4-5.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to Setup the SKYVVA Module Parameters in SAP PI/PO with V2? Title: 1. How to Setup the SKYVVA Module Parameters in SAP PI/PO with V2? Slug: how-to-settingup-the-skyvva-module-parameters-v4-in-sap-pi-po URL: https://help.skyvva.com/#article/how-to-settingup-the-skyvva-module-parameters-v4-in-sap-pi-po ================================================================================ # 1. How to Setup the SKYVVA Module Parameters in SAP PI/PO with V2? This document describes on the list of SKYVVA module parameters used in SAP PI/PO with V2 module. - #### SKYVVA Module in SOAP Adapter The SKYVVA module is integrated into SAP-PI and extends its functionality (as shown in the figure below). ![](../images/2019/08/Image4-18.png) This module is only used by the SOAP receiver channel to call SKYVVA Salesforce web services. Its functionality consists of establishing a session with Salesforce (retrieving the session Id), use of a session until expiration and session renewal upon expiration. - #### Configuring the SOAP Sender Channel A SOAP sender channel is created for data transfer from Salesforce to SAP-PI. Both synchronous and asynchronous are supported and are configurable from SAP-PI. The screenshot below shows a channel set up for synchronous communication.  ![](../images/2019/08/Image4-19.png) Settings in Advanced tab, Adapter status should be active. ![](../images/2019/08/Image4-20.png) No need to specify anything in Identifiers and module tab for sender SOAP Channel. - #### Configuring the SOAP Receiver Channel Create a SOAP receiver channel in SAP PI/PO as shown below. Configurations for General tab ![](../images/2019/08/Image4-21.png) Below is the configuration for the "Advanced" Tab. ![](../images/2019/08/Image4-23.png) These two flags have to be checked. The value "TserverLocation" has to be entered for the parameter "Variable Header (XHeaderName1)". No need to specify anything in the Identifiers tab. Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. Below are the module parameters for the Webservice operation "integrate". ![](../images/2019/08/Image4-24.png) ![](../images/2019/08/Image4-26.png) - **Skyvva Module Parameters** Starting from version 2.27 Skyvva provides a single module, **"Salesforce/GetSessionID_V4"**, to be used with SOAP receiver channels. Module parameters are outlined below. **Module ****"Salesforce/GetSessionID_V4" Parameters** **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Skyvva_SAP_Salesforce SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://ap4.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation  in skyvva integrate pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx ResponseFormat SforceBulkPackageSize This will convert the JSON response into xml This parameter determines how many records are split into chunks of the package size. For example if PI message contains 1000 records and the value of this parameter is 100 then we will get 10 batches each contain 100 records. xml Ex – 1000 sforceBulkMode It specifies the mode of Bulk Skyvva Bulk skyvvaVersion Skyvva version needs to be specify here Ex. 2.44 SforceBulkOperation This parameter is set when the interface uses the Bulk API. The bulk API enables transferring of mass data X SforceBulkInterfaceId It specifies the name of the skyvva interface AccountContactIntegrateBulk SforceUseAutoSwitchMode If the number of records (Data)<=Integrate Max Size, Interface will run in Normal Mode. If the number of records (Data)>Integrate Max Size and number of records (Data)<=Integrate Batch Max Size, Interface will run inBatch Mode. If the number of records (Data)>Integrate Batch Max Size, Interface will run in BULK Mode. This parameter will switch automatically based upon the above results. X BulkCreateLogFile SforceIntegrateMaxBatchSize This parameter is used to create the error log file for bulk batch job Maximum number of records that SKYVVA Integration using method integrate Batch. The default value is 5000. If a number of records to be integrated is bigger than this value, Agent will switch to use the Bulk API method automatically. X 5000 BulkLogFileFolder This will create the folder for the error log files X SforceIntegrateMaxSize Maximum number of records that SKYVVA Integration Agent can integrate using method integrate. The default value is 200. If the number of records to be integrated is bigger than this value, Agent will switch the API method automatically. 200 SforceUseFastBatchCreationMode This parameters works in conjunction with the “SforceAutoSwitchMode” and threshold flags (“SforceIntegrateMaxBatchSize” and “SforceIntegrateMaxSize”). If “SforceAutoSwitchMode” is not set but this flag is set , then bulk integration is used(Provided that the required parameters are set) If “SforceWebServiceOperation” is set to “integrateBatch” and this flag is set, then do bulk integration. If Bulk integration is used, the value of this parameter can be discarded. X SforceShowSAPChannelParameters When set displays the SAP PI parameters in the output log X or Empty SforceShowSSLCertificates This parameter is used in conjunction with “SforceShowSSLCertificates” and represents the password of the certificate store. If set certificate contents are also displayed in the log e.g xxxx (hidden password string) MessagePayloadFolder It defines the path to store the message payload Ex: /home/p1addm/work http.proxyHost This parameter holds the HTTP Proxy host if SAP-PI has to connect through a proxy 192.168.87.234 http.proxyPort This parameter holds the HTTP Proxy port 3128 https.proxyHost This parameter holds the HTTPS Proxy host if SAP-PI has to connect through a proxy 192.168.87.234 https.proxyPort This parameter holds the HTTPS Proxy port 3128 ProxyUsername This parameter holds the Proxy username Ex: username pwdProxyPassword This parameter holds the Proxy password Ex: ****** useObjectNamePrefix This parameter will add the object name as prefix in all the fields Ex: Account.Name BulkSetFieldValueToNULL This parameter will set null value for salesforce field when the field from sap is blank with salesforce direct bulk api X StoreMessagePayloadToFile It creates two files for each message e.g one to store the sap pi message and one for the  Skyvva message. The sap pi message id as file name to create the file. So name the file like _SAP_PI_Payload.xml and _Skyvva_Payload.xml X SforceRequestPayload This will enable the Skyvva request payload X Following parameters are dynamic and mandatory: **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Skyvva_SAP_Salesforce SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://test.salesforce.com/services/Soap/c/43.0 #### - **Mandatory Parameters from Salesforce** This chapter describes parameters who's values has to be retrieved from Salesforce. It has a dependency on Salesforce customizing and need to take out of the customizing setting from Salesforce. There are only some parameters where the value is dynamic and has to adapt accordingly. - **Parameter “IntegrationID”** This parameter is the integration id. Developing interfaces in Salesforce with skyvva solution is divided at runtime into the so-called integration instance. First, you have to create an integration instance where data is sent to or coming from this instance. You can have set up different integration instance in one Salesforce instance and thus has to distinguish between them. For example, you can create a integrations instance for Training, an integration instance for logistic interface and another integration instance for financial interfaces. Thus you have different integration instance within one Salesforce instance e.g. your development Salesforce instance. In order to send the data into the right integration instance, you have to point to the correct instance id. Be aware that the integration instance has to be created before you can develop any interface with the skyvva solution. Prerequisite: The integration instance has been created. Follow these step to get the integration instance-id: login into Salesforce instance. If your instance has the skyvva solution deployed you will see a tab with the name "Integration". Open the integration which you have created.  ![](../images/2019/08/Image4-35.png) Now you see the Integration ID. In this example, the value is " Skyvva_SAP_Salesforce". Just copy and paste this value into the parameter configuration tab of the soap receiver channel. - #### Parameter “SforceAccessPoint” The skyvva solution needs to call the web service operation login from the standard Salesforce Enterprise WSDL. Therefore you have to download the Enterprise WSDL from your Salesforce instance.  Follow the following step: Logon into Salesforce instance of your organization Goto set up and then click on "Develop" and then on "API". Now download the Enterprise WSDL and save somewhere on your desktop. ![](../images/2019/08/Image4-36.png) ![](../images/2019/08/Image4-37.png) Now create a SOAP Project using this WSDL. ![](../images/2019/08/Image4-38.png) Here we can see the SforceAccessPoint. In this example, the value is " https://login.salesforce.com/services/Soap/c/44.0". Just copy and paste this value into the parameter configuration tab of the soap receiver channel. ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to use the hybrid mapping mode? Title: 1. How to use the hybrid mapping mode? Slug: how-to-use-the-hybrid-mapping-mode URL: https://help.skyvva.com/#article/how-to-use-the-hybrid-mapping-mode ================================================================================ # 1. How to use the hybrid mapping mode? This document describes, how to use Hybrid mapping mode in Skyvva. Our solution can be used to map the incoming data stream in SFDC. Currently for example in case of SAP-PO user can map in SAP PO and thus no need to map again in SFDC. Therefore we set the flag “External Mapping”. When we check the Flag ‘Mapping in SFDC‘ this means that the incoming data will be map again. But in this case, we need to do the whole mapping again. In this new version, we have enabled the Hybrid mapping or merge the mapping from an external system and SFDC. For Hybrid Mapping, we need to check both "**Mapping in SFDC**" and "**External Mapping**" as shown below. ![](../images/2019/08/Image4-85.png) Whenever we are not able to handle the mapping logic in SAP PI/PO in those cases we try to use the mapping logics in SFDC. For example in Account inbound interface, If we want to send the data based upon the RecordType Id. In such cases, we have to use VLOOKUP formulae in Skyvva. ![](../images/2019/08/Image4-86.png) "**if(ISNULL(VLOOKUP(RecordType,Id,DeveloperName,Account.RecordTypeId)),NOTHING(),VLOOKUP(RecordType,Id,DeveloperName,Account.RecordTypeId))**". Here the VLOOKUP will compare Account.RecordTypeId with DeveloperName, then in Account.RecordTypeId there will be developer name which will be mapped as constant to RecordTypeId in SAP PO as shown below. ![](../images/2019/08/Image4-87.png) Then this vlookup first compares that name with the existing developer name in salesforce. if the developer name matched it returns Id of that record type. If the developer name doesn't match then it will do nothing. In **Salesforce**, "**Record Types**" are a way to arrange and classify data in an object. An example of how **Record Types** can be particularly helpful is when you want to assign different sets of data to different groups of sales teams. So, the above one is an example of Hybrid mapping where we can handle both in SAP PI/PO and in Skyvva. ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound asynchronous IDOC interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? Title: 1. How to create an outbound asynchronous IDOC interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? Slug: how-to-create-an-outbound-asynchronous-idoc-interface-in-sap-pi-po-using-skyvva-sfdc2sappi-adapter URL: https://help.skyvva.com/#article/how-to-create-an-outbound-asynchronous-idoc-interface-in-sap-pi-po-using-skyvva-sfdc2sappi-adapter ================================================================================ # 1. How to create an outbound asynchronous IDOC interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? This document describes how to create an outbound asynchronous interface with SAP PI/PO using SFDC2SAPPI Adapter. When talking about the outbound interface in this document the direction Salesforce to SAP is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an outbound interface involves steps to be done in Salesforce and in PO. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. **Prerequisite for creating an Outbound interface** - The SKYVVA solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. You start developing outbound interface when you want to send data from Salesforce over PO to SAP-Backend. Of course, you can send data from Salesforce to anywhere not just to SAP-PO. But the focus of this document is sending data from Salesforce over SAP-PO to SAP-Backend e.g. an SAP ECC 6.0. - **Creating outbound Interface** The figure below depicts which steps to be followed to create an outbound interface with SAP PI/PO. ![](../images/2019/07/Untitled-34.png) - **Creating an outbound adapter in Salesforce.** To Create an Adapter in Salesforce. Go to Adapter tab as shown below. ![](../images/2019/07/Untitled-35.png) In the Adapter page. Click on New to create an adapter. ![](../images/2019/07/Untitled-37.png) ![](../images/2019/09/Untitled-23.png) Now specify the Name, description and select the type as SFDC2SAPPI Adapter. Here in the properties tab specify the endpoint of the receiver system for example here we are sending data to SAP PO. So here we have to specify the endpoint of SAP PO and the username and the password of the PO system. **Creating an Outbound Asynchronous interface** Create Outbound interface as "Account_Out" and provide the necessary details. ![](../images/2019/09/Untitled-24.png) Specify the Outbound adapter as shown below. ![](../images/2019/09/Untitled-25.png) ![](../images/2019/09/Untitled-26.png) Download the WSDL and import it into SAP PO for mapping. - **Designing the objects in ESR** Import the Account WSDL as external definition into ESR and save activate it ![](../images/2019/08/Untitled-16.png) As we are sending data to SAP. Here we are using DEBMAS07 Idoc as a target structure. Import Idoc from SAP and activate it. ![](../images/2019/08/Untitled-17.png) Create an outbound service interface as shown below. ![](../images/2019/08/Untitled-18.png) Create message mapping as shown below ![](../images/2019/08/Untitled-19.png) Create Operation mapping as shown below ![](../images/2019/08/Untitled-20.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/08/Untitled-21.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using Salesforce as a source. So, here we are using SOAP  in the sender channel. We need to select the Quality of service as Exactly once in order and give the queue name as shown in the screenshot below. ![](../images/2019/09/Untitled-27.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the IDOC receiver channel** ![](../images/2019/08/Untitled-24.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/08/Image4.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/08/Image4-1.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/08/Image4-2.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/08/Image4-3.png) **Test the Outbound Interface.** Triggering the data from the Source system using the following Apex Code. skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0014E000012qeNYQAY'}; skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('SAP Integration','Account_Out',ids,'ASYNC', c); Check the message on the message board. Message sent successfully to SAP PO. ![](../images/2019/09/Untitled-22.png) Messages got delivered to SAP successfully from PO. ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound synchronous BAPI interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? Title: 1. How to create an outbound synchronous BAPI interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? Slug: how-to-create-an-outbound-synchronous-bapi-interface-in-sap-pi-po-using-skyvva-sfdc2sappi-adapter URL: https://help.skyvva.com/#article/how-to-create-an-outbound-synchronous-bapi-interface-in-sap-pi-po-using-skyvva-sfdc2sappi-adapter ================================================================================ # 1. How to create an outbound synchronous BAPI interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? This document describes how to create an outbound interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter. When talking about the outbound interface in this document the direction Salesforce to SAP is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an outbound interface involves steps to be done in Salesforce and in PO. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. - **SKYVVA software landscape and building blocks** SKYVVA Integration Suite enables the integration between Salesforce and SAP-Backend over SAP-PO with less effort and without programming either in SAP or in Salesforce. It based on the generation and customized the approach to reduce effort and to accelerate the development of interfaces between those systems. In order to be able to provide such a toolset and framework some component (green) has been developed by SKYVVA and has to be deployed on Salesforce and SAP-PO of the customer. On the SAP-Backend e.g. SAP ECC 6.0 there is no software installation needed. ![](../images/2019/07/Untitled-32.png) When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we are coupling two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound or inbound. ![](../images/2019/07/Untitled-33.png) - **Outbound and Inbound Interface** The term outbound is used when data is sent out from Salesforce to SAP. Therefore we call interfaces for sending data out of Salesforce to SAP "Outbound Interface". For the other direction, we call interfaces as "Inbound Interface" when data is sent from SAP to Salesforce. So the reference point is set to Salesforce. **Prerequisite for creating an Outbound interface** - The Skyvva solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. You start developing outbound interface when you want to send data from Salesforce over PO to SAP-Backend. Of course, you can send data from Salesforce to anywhere not just to SAP-PO. But the focus of this document is sending data from Salesforce over SAP-PO to SAP-Backend e.g. an SAP ECC 6.0. - **Creating outbound Interface** The figure below depicts which steps to be followed to create an outbound interface with SAP PI/PO. ![](../images/2019/07/Untitled-34.png) - **Creating an outbound adapter in Salesforce.** To Create an Adapter in Salesforce. Go to Adapter tab as shown below. ![](../images/2019/07/Untitled-35.png) In the Adapter page. Click on New to create an adapter. ![](../images/2019/07/Untitled-37.png) select the type as SFDC2SAPPI Adapter. Here in the properties tab, we have to specify the Now specify the Name, description, and properties as shown in screenshots below. ![](../images/2019/09/Untitled.png) - **Creating an Outbound synchronous interface** Here we have to create two interfaces one for Request and other for Response as shown below. Create Outbound interface as "Account_BAPI_Out" and provide the necessary details as shown in detail below. ![](../images/2019/09/Untitled-1.png) ![](../images/2019/09/Untitled-2.png) ![](../images/2019/09/Untitled-3.png) After providing all the details. Save the outbound interface. Create inbound interface as "Account_BAPI_Response" and provide the necessary details as shown in detail below. ![](../images/2019/09/Untitled-4.png) ![](../images/2019/09/Untitled-5.png) Download the WSDL's and import it into SAP PO for mapping. - **Designing the objects in ESR** Import the Request WSDL as external definition into ESR and save activate it ![](../images/2019/09/Untitled-6.png) Import the response interface WSDL as external definition, save and activate it. ![](../images/2019/09/Untitled-8.png) As we are using BAPI from SAP. So no need to create Data type, Message type, and Service Interface. Create an outbound service interface as shown below. ![](../images/2019/09/Untitled-9.png) Create request and response message mapping as shown below ![](../images/2019/09/Untitled-11.png) Create Operation mapping as shown below ![](../images/2019/09/Untitled-12.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/09/Untitled-14.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using Salesforce as a source. So, here we are using SOAP in the sender channel. ![](../images/2019/09/Untitled-15.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the RFC receiver channel** ![](../images/2019/09/Untitled-16.png) **Integrated Configuration** Create integrated configuration objects as shown below. ![](../images/2019/09/Image4-32.png) Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/09/Untitled-17.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/09/Untitled-19.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/09/Untitled-20.png) Here we have to specify the value of Reference Customer in the parameterized mapping of ESR. In ICO we have to specify the value of reference customer. In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/09/Untitled-21.png) **Test the Outbound Interface.** Triggering the data from the Source system using the following Apex Code. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids=new String[]{'0064E00000D0sCvQAJ'}; skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('SAP Integration','Account_Out',ids,'SYNC', c); Check the message in the Skyvva message board. Message sent successfully to SAP PO. ![](../images/2019/09/Untitled-22.png) Customer data has been sent to SAP Successfully. ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create inbound IntegrateSynchronous interface in SAP PI/PO using SKYVVA? Title: 1. How to create inbound IntegrateSynchronous interface in SAP PI/PO using SKYVVA? Slug: how-to-create-inbound-integratesynchronous-interface-in-sap-pi-po-using-skyvva URL: https://help.skyvva.com/#article/how-to-create-inbound-integratesynchronous-interface-in-sap-pi-po-using-skyvva ================================================================================ # 1. How to create inbound IntegrateSynchronous interface in SAP PI/PO using SKYVVA? This document describes how to create an inbound IntegrateSynchronous interface with SAP-PO java single stack. When talking about the inbound interface in this document the direction SAP to Salesforce is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an inbound interface involves steps to be done in Salesforce and in PO. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. - **SKYVVA software landscape and building blocks** SKYVVA Integration Suite enables the integration between Salesforce and SAP-Backend over SAP-PO with less effort and without programming neither in SAP nor in Salesforce. It bases on the generation and customized approach to reduce effort and to accelerate the development of interfaces between those systems. In order to be able to provide such a toolset and framework some component (green) has been developed by SKYVVA and has to be deployed on Salesforce and SAP-PO of the customer. On the SAP-Backend e.g. SAP ECC 6.0 there is no software installation needed. ![](../images/2019/06/Image-1.png) Creating an inbound interface is only possible when the SKYVVA solution framework is set up correctly. When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we are coupling two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound or inbound. ![](../images/2019/06/Untitled-42-1.png) - **Outbound and Inbound Interface** The term outbound is used when data is sent out from Salesforce to SAP. Therefore we will call interfaces for sending data out of Salesforce to SAP "Outbound Interface". For the other direction, we will call the interfaces "Inbound Interface" when data is sent from SAP to Salesforce. So, the reference point is set to Salesforce. - ** Prerequisite for creating an inbound interface** - The SKYVVA solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. - ** Creating Inbound Synchronous Interface** Create a synchronous inbound interface when you want to query data from Salesforce over SAP-PO and need a result back to SAP e.g. query all account in Salesforce which has the status active. By this way, you can pull data from Salesforce by providing query parameter as a search criteria - **Overview of the steps to create an Inbound interface** The figure below depicts which steps to be followed to create an inbound interface with SAP PI/PO. ![](../images/2019/08/Image4-6.png) Steps to create a synchronous inbound interface **Step 1. Creating an inbound synchronous interface (Salesforce)** Login to the Salesforce org and then select SKYVVA Integration Cloud. Go to Integration Tab and create New Integration under that go to the interfaces tab and then create New interface as shown below. In this example, I have created the interface under "**Skyvva_SAP_Salesforce"** integration ![](../images/2019/06/Image3-4-1.png) ![](../images/2019/09/Image4.png) Now we have to fill the following fields: - Name - Source Name - Status - Sequence - Operation Type - Connect with Middleware - External Mapping - Interface Mode Then click on button "Save" to save your interface. Now we have to specify some required fields and other optional fields for defining the inbound interface. Following all fields related to creating an inbound interface for connecting to Salesforce are described. Note that there are also fields in the screen which is not needed for the SAP-PI coupling but needed for other couplings e.g. the SAP direct coupling. **4.1 Name** - It represents the Interface Name that we are going to create and also we have to provide a meaningful description in the Description label. - Since we are creating an Inbound interface. So, here we recommend you to follow the naming convention as for example IntegrateSynchonous_IN for the inbound interface as shown below. ![](../images/2019/09/Image4-1.png) **4.2 Status** Initially, it will be in the "Development" status. When we want to run the interface then we have to set it as "Deployed" as shown below. ![](../images/2019/06/Untitled-2.png) **4.3 Sequence** Enter a number in this field. This field is for numbering the interface to be shown in the logical order on screen ![](../images/2019/06/Untitled-45.png) **4.4 Operation Type** This field contains the SQL statement for an interface. For inbound interface, we need to specify an operation since this is an updated interface. In this case, you can specify the value "Upsert". ![](../images/2019/09/Image4-2.png) **4.5 Field Type** Here we are specifying the direction of the interface e.g. Inbound or Outbound. Since we have created an inbound interface. So, We have to specify the value as "InBound". ![](../images/2019/06/Untitled-5.png) **4.6 Interface processing mode** Here we have to specify the processing mode as Synchronous. ![](../images/2019/08/Image4-12.png) **4.7 Connect with Middleware** We have to check this flag because we use SAP-PO as a middleware component. This is just to indicate Skyvva runtime service that it is not connected directly to an SAP-Backend. ![](../images/2019/06/Untitled-7.png) **4.8 External Mapping** Since we are using SAP PO as a middleware component and as a developing a tool for mapping. This is just to indicate Skyvva runtime service that mapping will be done in SAP-PO and that you don't need to do mapping in Skyvva framework. ![](../images/2019/06/Untitled-8.png) If our business case needs that you want to map both in SAP-PO and in Skyvva framework then you have to check the "Mapping in SFDC" also. But normally in most of the cases, we don't need to do mapping in Skyvva framework again. **Step 2 - Generate WSDL for the Inbound interface** Now we have to generate the WSDL for this inbound interface. This is needed to do mapping in SAP PO and to generate the WSDL. Go to Integration under that select details tab and then click on "**Manage Middleware WSDLs**" as shown below. ![](../images/2019/06/Untitled-9.png) Click on the link "Manage Middleware WSDLs" Now download the WSDL for both inbound and outbound response interface as shown below. ![](../images/2019/09/Image4-3.png) Now select the interface you want to export as WSDL. After selection of an interface now click on the button "Create WSDL". Scroll down to see the generated file. ![](../images/2019/09/Image4-4.png) Now click on the Link "View“ and then WSDL will be downloaded. ![](../images/2019/09/Image4-5.png) Rename the downloaded file as D_190910_SFDC_InBound_IntegrateSynchronous_IN.wsdl. Now we can import this  WSDL into ESR in SAP PO for mapping. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva: IntegrateSynchronous**". Now create an external definition for Contact request under the namespace like below. Here the WSDL is for Contact. So, we can give the name as ED_SFContact. ![](../images/2019/09/Image4-6.png) Now import the WSDL and Save and activate it. Now create an external definition for IntegrateSynchronous response under the namespace like below. Here the WSDL is for Contact. So, we can give the name as ED_IntegrateSynchronousResponse ![](../images/2019/09/Image4-7.png) Since in this example, we are sending data from SOAPUI to Salesforce. So, we need to create data types for request and response as shown below. **DataType for Request - ** ![](../images/2019/09/Image4-8.png) Save and activate the request data type. **DataType for Response**- ![](../images/2019/09/Image4-9.png) Save and activate the response data type. Now create Message type for both Request and Response as shown below. **Request Message type -** ![](../images/2019/09/Image4-10.png) Save and activate the request message type. **Response Message type - ** ![](../images/2019/09/Image4-11.png) Now Save and activate the response message type. Create Outbound and inbound service interfaces as shown below. ![](../images/2019/09/Image4-12.png) ![](../images/2019/09/Image4-13.png) Provide the necessary details as shown and then save and activate it. - **Message mapping** Create request and response message mapping as shown below. **Request Mapping - ** Select the Source structure and target structure and complete the mapping. ![](../images/2019/09/Image4-14.png) **Response Mapping - ** ![](../images/2019/09/Image4-15.png) Now save and activate both the mappings - **Operation Mapping ** Create Operation mapping as shown below. This is for request mapping ![](../images/2019/09/Image4-16.png) Response Mapping: Here in the response mapping, we need java mapping to convert the JSON response to XML. ![](../images/2019/09/Image4-18.png) Now select the inbound and outbound service interfaces and the respective request and response mappings. Then save and activate the operation mapping. - **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2019/09/Image4-19.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. - **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAPUI as a source. So, here we are using SOAP adapter in the sender channel. ![](../images/2019/09/Image4-20.png) Provide the necessary details. After that save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/09/Image4-21.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. ![](../images/2019/06/Untitled-23.png) ![](../images/2019/09/Image4-22.png) Configuration of module parameters are described in detail below - **Skyvva Module Parameters** Starting from version 2.27 Skyvva provides a single module, **"Salesforce/GetSessionID_V4"**, to be used with SOAP receiver channels. Module parameters are outlined below ![](../images/2019/08/Image4-77.png) ![](../images/2019/09/Image4-24.png) - **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. ![](../images/2019/09/Image4-25.png) Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2019/09/Image4-26.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2019/09/Image4-27.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/09/Image4-28.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2019/09/Image4-29.png) - **Testing the inbound synchronous Interface.** I am sending the data from SOAPUI. We are getting the JSON Response from Salesforce. Again we are converting the JSON response to XML with Java mapping, which we have used in response mapping in SAP PO. ![](../images/2019/09/Image4-31.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an interface using SKYVVA Bulk Query using SAP PI/PO with SKYVVA Connector module? Title: 1. How to create an interface using SKYVVA Bulk Query using SAP PI/PO with SKYVVA Connector module? Slug: how-to-create-an-interface-using-skyvva-bulk-query-with-skyvva-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-interface-using-skyvva-bulk-query-with-skyvva-connector-module ================================================================================ # 1. How to create an interface using SKYVVA Bulk Query using SAP PI/PO with SKYVVA Connector module? This document describes how to create an inbound interface using SKYVVA Bulk query mode in SAP PI/PO with SKYVVA connector module. **What Is Bulk Query?** BULK query - With this mode we can support the very big size of the query result. Like the REST query, it can return only the raw result of the select statement. The SKYVVA search will internally work on your query and will provide the complete result from your query. You can use the same Search operation to use it for Bulk v2 Query, which will help you to retrieve huge volume of records in CSV format.  The Bulk v2 Query feature only work with Salesforce Winter 20 version onward. You can configure in your Interface with operationType as "Bulk Query“ or "Bulk Query All“ to use Bulk v2 Query feature.  Then you need to configure your SQOL in PI/PO Channel parameters or in SAP PI/PO mapping or in the SKYVVA interface. Base on your configuration in Interface SkYVVA connector will automatically detects the operation type and work accordingly with the same Search operation. **SKYVVA interface creation** Create an interface, for example, "BulkQuery_IN" as shown below. ![](../images/2019/12/Untitled.png) Select the Operation type as "Bulk Query" or "Bulk Query All" maximum integrate Batch size will be 5000 ![](../images/2019/07/Untitled-1.png) In this example we are going to put the SQL statement in the SAP PO Mapping. Now save the interface and download the WSDL from the classic mode. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**http://SAP_to_SF_BulkQueryTest**". Now create an external definition under the namespace like below.Here the WSDL is for BulkQueryTest. So, we can give the name as BulkQueryTest. ![](../images/2019/12/Untitled-1.png) Here we are going to use only one interface for both Request and Response. Import the WSDL and save and activate the external definition. - **Sender request data type** Create sender request data type as shown below ![](../images/2019/12/Untitled-2.png) Sender response datatype - ![](../images/2019/12/Untitled-3.png) after creating the source data type click on save and activate. - **Source request message type** Create the request message type as shown below: ![](../images/2019/12/Untitled-4.png) - **Source response message type** Create the response message type as shown below: ![](../images/2019/12/Untitled-5.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/12/Untitled-6.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/12/Untitled-7.png) Save and active the inbound service interface. - **Request Message Mapping** Create request message mapping as shown below: ![](../images/2019/12/Untitled-8.png) **The different way to put the SELECT statement** Here we are able to build the select statement dynamically by the pi mapping. Thus we need a field in the request payload which for example is called 'SKYVVA__SOQL_SELECT' and where we can build the SELECT-statement by using concat formula in the mapping. In this case, you are taking the value from this field and it will dominate the SELECT-statement on the module parameter. In the request WSDL we need to add SKYVVA system field e.g. 'SKYVVA__SOQL_SELECT' and build dynamically the SELECT in the mapping. We have at 3 different places to put the SELECT statement e.g.: - In the interface - In the module parameter - In the PO request mapping in the field 'SKYVVA__SOQL_SELECT' as shown in above figure. Here is the SQL Statement used in SAP PO mapping SELECT BillingCity,BillingCountry,BillingPostalCode,BillingState,BillingStreet,Description,Fax,Id,Name,Phone,skyvvasolutions__SAP_Distribution_Channel__c,skyvvasolutions__SAP_Division__c,skyvvasolutions__SAP_Sales_Org__c FROM Account where skyvvasolutions__SAP_Distribution_Channel__c = '{!skyvvasolutions__SAP_Distribution_Channel__c}' and skyvvasolutions__SAP_Sales_Org__c = '{!skyvvasolutions__SAP_Sales_Org__c}' and skyvvasolutions__SAP_Division__c = '{!skyvvasolutions__SAP_Division__c}' - **Response Message Mapping** Create response message mapping as shown below: ![](../images/2019/12/Untitled-9.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/12/Untitled-10.png) ![](../images/2019/12/Untitled-11.png) Select the respective outbound and inbound service interfaces and also the message mapping for request and response then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/12/Untitled-12.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. Since in this example we are using SOAPUI as source system. So need to create Business component for SOAPUI as **BC_SOAPUI**. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/12/Untitled-13.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/12/Untitled-14.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. ![](../images/2019/12/Untitled-15.png) ![](../images/2019/12/Untitled-16.png) The below parameters has the following meaning. ![](../images/2019/12/Untitled-25.png) ![](../images/2019/12/Untitled-18.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/12/Untitled-23.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/12/Untitled-22.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/12/Untitled-21.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/12/Untitled-19.png) - **Test the Inbound Interface.** Triggering the data from the Source system. Here is the result from Salesforce. ![](../images/2019/12/Untitled-24.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an interface using SKYVVA REST Query using SAP PI/PO with SKYVVA Connector module? Title: 1. How to create an interface using SKYVVA REST Query using SAP PI/PO with SKYVVA Connector module? Slug: how-to-create-an-interface-using-skyvva-rest-query-using-sap-pi-po-with-skyvva-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-interface-using-skyvva-rest-query-using-sap-pi-po-with-skyvva-connector-module ================================================================================ # 1. How to create an interface using SKYVVA REST Query using SAP PI/PO with SKYVVA Connector module? This document describes how to create an inbound interface using SKYVVA REST query mode in SAP PI/PO with SKYVVA connector module. **What Is REST Query?** REST query -This is the new type we support and we can handle bigger sizes as the searchService. This is possible because Salesforce held the cursor and can return the result page by page. In our module, we can collect the result set and combine it to a new message. The SKYVVA search will internally work on your query and will provide the complete result from your query. You can configure in your Interface with operationType as "REST Query“ or "REST Query All“ to use REST Query feature.  Then you need to configure your SQOL in the SKYVVA interface. Base on your configuration in Interface SkYVVA connector will automatically detects the operation type and work accordingly with the same search operation. **2. SKYVVA interface creation** Create an inbound interface, for example, "RESTQueryTest_IN" as shown below. Select the Operation type as REST Query" or "REST Query All" ![](../images/2019/12/Untitled-26.png) ![](../images/2019/12/Untitled-28.png) ![](../images/2019/12/Untitled-27.png) In this example we are going to put the SQL statement in the Skyvva Interface. Now save the interface and download the WSDL. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**http://SAP_to_SF_RESTQueryTest**". Now create an external definition under the namespace like below.Here the WSDL is for RESTQueryTest. So, we can give the name as ED_RESTQuery_Req ![](../images/2019/12/Untitled-29.png) Here instead of WSDL from salesforce we can use our own message type in this example like below. ![](../images/2019/12/Untitled-34.png) Here we are going to use only one interface for both Request and Response. Import the WSDL and save and activate the external definition. - **Sender request data type** Create sender request data type as shown below ![](../images/2019/12/Untitled-30.png) Sender response datatype - ![](../images/2019/12/Untitled-31.png) after creating the source data type click on save and activate. - **Source request message type** Create the request message type as shown below: ![](../images/2019/12/Untitled-32.png) - **Source response message type** Create the response message type as shown below: ![](../images/2019/12/Untitled-33.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/12/Untitled-35.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/12/New.png) Save and active the inbound service interface. - **Request Message Mapping** Create request message mapping as shown below: ![](../images/2019/12/New-1.png) **The different way to put the SELECT statement** Here we are able to build the select statement dynamically by the pi mapping. Thus we need a field in the request payload which for example is called 'SKYVVA__SOQL_SELECT' and where we can build the SELECT-statement by using concat formula in the mapping. In this case, you are taking the value from this field and it will dominate the SELECT-statement on the module parameter. In the request WSDL we need to add SKYVVA system field e.g. 'SKYVVA__SOQL_SELECT' and build dynamically the SELECT in the mapping. We have at 3 different places to put the SELECT statement e.g.: - In the interface - In the module parameter - In the PO request mapping in the field 'SKYVVA__SOQL_SELECT' . Here is the SQL Statement used in SKYVVA interface. SELECT BillingCity,BillingCountry,BillingPostalCode,BillingState,BillingStreet,Description,Fax,Id,Name,Phone,skyvvasolutions__SAP_Distribution_Channel__c,skyvvasolutions__SAP_Division__c,skyvvasolutions__SAP_Sales_Org__c FROM Account where skyvvasolutions__SAP_Distribution_Channel__c = '{!skyvvasolutions__SAP_Distribution_Channel__c}' and skyvvasolutions__SAP_Sales_Org__c = '{!skyvvasolutions__SAP_Sales_Org__c}' and skyvvasolutions__SAP_Division__c = '{!skyvvasolutions__SAP_Division__c}' - **Response Message Mapping** Create response message mapping as shown below: ![](../images/2019/12/New-2.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/12/New-3.png) ![](../images/2019/12/New-4.png) Select the respective outbound and inbound service interfaces and also the message mapping for request and response then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/12/New-5.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. Since in this example we are using SOAPUI as source system. So need to create Business component for SOAPUI as **BC_SOAPUI**. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/12/New-6.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/12/New-7.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. We need 3 modules in the soap receiver channel e.g. 1. SFDC_Query_REQUEST -> prepare the execution of the REST and BUK query and pass the message payload to the 3. module 2. XISOAPAdapterBean -> calling our new soap API 'RouteRequest' to just pass back the request from the 1. module 3. SFDC_Query_RESULT -> here we only fetching the result which has been executed ![](../images/2019/12/New-8.png) ![](../images/2019/12/New-9.png) The below parameters has the following meaning. ![](../images/2019/12/Untitled-25.png) ![](../images/2019/12/Untitled-18.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/12/New-10.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/12/New-11.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/12/New-12.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/12/New-13.png) - **Test the Inbound Interface.** Triggering the data from the Source system. Here is the result from Salesforce. ![](../images/2019/12/New-14.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create a synchronous outbound hierarchical quote interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? Title: 1. How to create a synchronous outbound hierarchical quote interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? Slug: how-to-create-a-synchronous-outbound-hierarchical-quote-interface-in-sap-pi-po-using-skyvva-sfdc2sappi-adapter URL: https://help.skyvva.com/#article/how-to-create-a-synchronous-outbound-hierarchical-quote-interface-in-sap-pi-po-using-skyvva-sfdc2sappi-adapter ================================================================================ # 1. How to create a synchronous outbound hierarchical quote interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter? This document describes how to create an outbound hierarchical interface in SAP PI/PO using SKYVVA SFDC2SAPPI Adapter. When talking about the outbound interface in this document the direction Salesforce to SAP is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an outbound interface involves steps to be done in Salesforce and in PO. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. #### Introduction We can link two different object with each other using foreign key or tree mapping. #### What Are Hierarchical Interfaces? - To arrange interfaces in an order means hierarchical interface. It is structure in which interfaces are linked according to levels of importance. - In hierarchical Interfaces, one interface is a  parent’s of another interface. It means that child interface inherited External ID from its parent’s interface. For example, Account interface is parent’s contact interface because of Contact inherited External ID from Account. - Also One parent interface can have many child account but child interface has only single parent interface. eg. one Account can store many Contacts, but one Contact can’t store many Accounts. #### What is the foreign key? A FOREIGN KEY is a field (custom fields) in one Interface that refers to the PRIMARY KEY . The Interface containing the foreign key is called the child Interface, and the Interface containing the candidate key is called the parent Interface. - **SKYVVA software landscape and building blocks** SKYVVA Integration Suite enables the integration between Salesforce and SAP-Backend over SAP-PO with less effort and without programming either in SAP or in Salesforce. It based on the generation and customized the approach to reduce effort and to accelerate the development of interfaces between those systems. In order to be able to provide such a toolset and framework some component (green) has been developed by SKYVVA and has to be deployed on Salesforce and SAP-PO of the customer. On the SAP-Backend e.g. SAP ECC 6.0 there is no software installation needed. ![](../images/2019/07/Untitled-32.png) When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we are coupling two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound or inbound. ![](../images/2019/07/Untitled-33.png) - **Outbound and Inbound Interface** The term outbound is used when data is sent out from Salesforce to SAP. Therefore we call interfaces for sending data out of Salesforce to SAP "Outbound Interface". For the other direction, we call interfaces as "Inbound Interface" when data is sent from SAP to Salesforce. So the reference point is set to Salesforce. **Prerequisite for creating an Outbound interface** - The Skyvva solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. You start developing outbound interface when you want to send data from Salesforce over PO to SAP-Backend. Of course, you can send data from Salesforce to anywhere not just to SAP-PO. But the focus of this document is sending data from Salesforce over SAP-PO to SAP-Backend e.g. an SAP ECC 6.0. - **Creating an outbound adapter in Salesforce.** To Create an Adapter in Salesforce. Go to Adapter tab as shown below. ![](../images/2019/07/Untitled-35.png) In the Adapter page. Click on New to create an adapter. ![](../images/2019/07/Untitled-37.png) select the type as SFDC2SAPPI Adapter. Here in the properties tab, we have to specify the Now specify the Name, description, and properties as shown in screenshots below. ![](../images/2019/12/Untitled-41.png) - **Creating an Outbound synchronous interface** Here we have to create four interfaces 2 for Parent and child Request and other 2 for Parent child Response as shown below. Create Parent Outbound interface as "Quote_SFDC_Sync_OUT" and provide the necessary details as shown in detail below. ![](../images/2019/12/Untitled-42.png) ![](../images/2019/12/Untitled-43.png) ![](../images/2019/12/Untitled-44.png) ![](../images/2019/12/Untitled-45.png) Do the necessary mapping as shown below. ![](../images/2019/12/Untitled-46.png) After providing all the details. Save the outbound interface. Now create the child request interface as shown below. ![](../images/2019/12/Untitled-47.png) ![](../images/2019/12/Untitled-48.png) Do the respective mapping as shown below ![](../images/2019/12/Untitled-49.png) Now go to Parent interface related tab as shown ![](../images/2019/12/Untitled-50.png) Now add the child interface as ichained interface in the parent interface related tab as shown below. ![](../images/2019/12/Untitled-51.png) We need to add SKYVVA__PARENTID field in the parent interface ISTRUCTURE as shown. ![](../images/2019/12/Untitled-52.png) and map this SKYVVA_PARENTID field to Quote Id. ![](../images/2019/12/Untitled-53.png) Create parent inbound interface and provide the necessary details as shown in detail below. ![](../images/2019/12/Untitled-54.png) ![](../images/2019/12/Untitled-55.png) Create child inbound interface as shown below ![](../images/2019/12/Untitled-56.png) ![](../images/2019/12/Untitled-57.png) Add foreign key lookup as shown below to link the Quotelineitem with Quote. ![](../images/2019/12/Untitled-58.png) In the Inbound parent interface related tab add the child interface as Ichained as shown. ![](../images/2019/12/Untitled-59.png) Download the request and response WSDL's and import it into SAP PO for mapping. - **Designing the objects in ESR** Import the Request WSDL as external definition into ESR and save activate it ![](../images/2019/12/Untitled-60.png) Import the response interface WSDL as external definition, save and activate it. ![](../images/2019/12/Untitled-61.png) As we are using BAPI from SAP. So no need to create Data type, Message type, and Service Interface. Create an outbound service interface as shown below. ![](../images/2019/12/Untitled-62.png) Create request and response message mapping as shown below ![](../images/2019/12/Untitled-63.png) ![](../images/2019/12/Untitled-64.png) Create Operation mapping as shown below ![](../images/2019/12/Untitled-65.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/12/Untitled-66.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using Salesforce as a source. So, here we are using SOAP in the sender channel. ![](../images/2019/12/Untitled-67.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the RFC receiver channel** ![](../images/2019/12/Untitled-68.png) **Integrated Configuration** Create integrated configuration objects as shown below. ![](../images/2019/12/Untitled-69.png) Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/12/Untitled-70.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/12/Untitled-71.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/12/Untitled-72.png) Here we have to specify the value of Reference Customer in the parameterized mapping of ESR. In ICO we have to specify the value of reference customer. In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/12/Untitled-73.png) **Test the Outbound Interface.** Triggering the data from the Source system using the following Apex Code. skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q0f0000000ASCuCAO'}; skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('SAP PI/PO Integration App V1','Quote_SFDC_Sync_OUT',ids,'SYNC', c); Check the message in the Skyvva message board. Message sent successfully to SAP PO and got the response back from SAP. ![](../images/2019/12/Untitled-74.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound interface using integrate batch mode with SKYVVA V3 Connector Module? Title: 1. How to create an inbound interface using integrate batch mode with SKYVVA V3 Connector Module? Slug: how-to-create-an-inbound-interface-using-integrate-batch-mode-with-skyvva-v3-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-interface-using-integrate-batch-mode-with-skyvva-v3-connector-module ================================================================================ # 1. How to create an inbound interface using integrate batch mode with SKYVVA V3 Connector Module? This document describes how to create an inbound interface using integrate batch mode with new SKYVVA V3 connector module. **Introduction** Batch data processing is an efficient way of processing high volumes of data, where a group of transactions is collected over a period of time. Data is collected, entered, processed and then the batch results are produced. So, now we are going to create an inbound interface using integrate batch with Skyvva connector module Initially, we have to start with Salesforce Skyvva. This interface is also the same as "**How to create an inbound interface using integrate batch mode with Skyvva connector module? "**but few things to be added in the module parameters configuration. **Skyvva interface creation** Create an interface, for example, "integrateBatch" as shown below. ![](../images/2020/02/Untitled.png) maximum integrate Batch size will be 5000 ![](../images/2020/02/Untitled-1.png) ![](../images/2020/02/Untitled-2.png) As we are using integrate batch So, we have to check the Batch mode checkbox  as shown below ![](../images/2020/02/Untitled-3.png) Now save the interface and download the WSDL from the classic mode. **Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva:integrateBatch**". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as AccountIntegrateBatch. ![](../images/2019/06/Untitled-108.png) Import the WSDL and save and activate the external definition. - **Source data type** Create sender data type as shown below ![](../images/2019/06/Untitled-109.png) - after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below. ![](../images/2019/06/Untitled-110.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/06/Untitled-111.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/06/Untitled-112.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below ![](../images/2019/06/Untitled-113.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/06/Untitled-114.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. - **Mapping logic flow with Skyvva runtime** You have to map business data from SAP e.g. IDoc, BAPI or Proxy into the Skyvva WSDL business structure. This business structure is the result of your operation mapping in PO and will be passed into the soap receiver channel. This structure will be converted by the Skyvva module "Skyvva/V3/Integration" which is a custom module used in the soap receiver channel. ![](../images/2019/06/Untitled-19.png) We have to use new V3 Skyvva connector module in the soap receiver channel. - Skyvva/V3/Integration ![](../images/2020/02/Untitled-4.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/06/Untitled-37.png) ![](../images/2020/02/Untitled-5.png) Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/02/Untitled-6.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOUP UI as a source. So, here we are using SOAP adapter in the sender channel. ![](../images/2019/06/Untitled-125.png) Provide the necessary details. After that save and activate the channel. **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2020/02/Untitled-7.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. ![](../images/2020/02/Untitled-8.png) ![](../images/2020/02/Untitled-9.png) Configuration of module parameters are described in detail below **Skyvva Module Parameters** **"Skyvva/V3/Integration"** to be used for V3 connector module with SOAP receiver channels. Module parameters are outlined below ![](../images/2020/02/Untitled-10.png) ![](../images/2020/02/Untitled-11.png) **Integrated Configuration** Create integrated configuration objects as shown below. ![](../images/2019/06/Untitled-116.png) Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/06/Untitled-117.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/06/Untitled-118.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/06/Untitled-119.png) **Test the Inbound Interface.** Triggering the data from the Source system. Now we have to check the result in Salesforce batch control board as shown below. ![](../images/2020/02/Untitled-13.png) ![](../images/2020/02/Untitled-14.png) Now click on View to see the attachment. ![](../images/2020/02/Untitled-15.png) As we are sending 2 records from Source system. ![](../images/2020/02/Untitled-12.png) Now we can see the successful messages in message monitoring. ![](../images/2020/02/Untitled-16.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound interface using integrate SFDC Bulk mode with SKYVVA V3 Connector Module? Title: 1. How to create an inbound interface using integrate SFDC Bulk mode with SKYVVA V3 Connector Module? Slug: how-to-create-an-inbound-interface-using-integrate-bulk-mode-with-skyvva-v3-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-interface-using-integrate-bulk-mode-with-skyvva-v3-connector-module ================================================================================ # 1. How to create an inbound interface using integrate SFDC Bulk mode with SKYVVA V3 Connector Module? This document describes how to create an inbound interface using SFDC Bulk mode with Skyvva V3 connector module. **What Is Bulk?** SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have a huge amount of data I.e data >= 5000records, then we should use bulk processing to process the interface. **We should know some terms:** - **BULK Mode**: We have to set this flag to run our interface in bulk mode using salesforce bulk API. - **SKYVVA Bulk**: SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing mode, which are Parallel and Serial. The default value is Serial. - **SFDC Bulk: **We support SFDC pure bulk mode in version 1.0 or 2.0 that is very fast but cannot use SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk require the data has to be mapped already on the sender side and doing additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. We cannot split the messages as batch by using SFDC Bulk mode. - **Bulk Version**: SKYVVA support SFDC pure bulk mode in version1.0 or version 2.0 then we have our own skyvva bulk mode. This use skyvva workflow and mapping and thus it is more powerful but slower than pure bulk API technique from salesforce. - **Bulk Processing Mode**: This fields indicate two modes which is support with bulk version 1.0 and bulk version 2.0 only parallel mode is supported. So the value is depend here the selection of field bulk version. For example  When we want to use ‘ serial‘ we should select bulk 1.0. - Parallel: When you select this processing mode, it will run parallel. - Serial: When you select this mode, it will not run at the same time. - **Bulk Package Size**: This parameter determine how many records is splitted into Bulk data size. If your Message contain 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be keep. - Bulk Sch Frequency: This is the schedule time frequency for bulk scheduler on interface. - **Bulk Integrate Time Interval (minute**): The interval (minutes) used for integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. **Skyvva interface creation** Create an interface, for example, "IntegrateBulk" as shown below. ![](../images/2020/02/Untitled-17.png) ![](../images/2020/02/Untitled-18.png) As we are using SFDC Bulk So, we have to check the Bulk mode checkbox  as shown below ![](../images/2020/02/Untitled-166.png) Now save the interface and download the WSDL from the classic mode. **Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva:integrateBulk**". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as AccountIntegrateBulk. ![](../images/2019/07/Untitled-5.png) Import the WSDL and save and activate the external definition. - **Source data type** Create sender data type as shown below ![](../images/2019/07/Untitled-6.png) after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below. ![](../images/2019/07/Untitled-7.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/07/Untitled-8.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/07/Untitled-9.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below ![](../images/2019/07/Untitled-10.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/07/Untitled-11.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. - **Mapping logic flow with Skyvva runtime** You have to map business data from SAP e.g. IDoc, BAPI or Proxy into the Skyvva WSDL business structure. This business structure is the result of your operation mapping in PO and will be passed into the soap receiver channel. This structure will be converted by the Skyvva module "Skyvva/V3/Integration" which is a new custom V3 module used in the soap receiver channel. ![](../images/2019/06/Untitled-19.png) We have to use Skyvva connector module in the soap receiver channel. - Skyvva/V3/Integration ![](../images/2020/02/Untitled-21.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/07/Untitled-14.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-15.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/07/Untitled-16.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA  new V3 module containing the logic for session handling must be specified. ![](../images/2020/02/Untitled-22.png) ![](../images/2020/02/Untitled-167.png) Configuration of module parameters are described in detail below **Skyvva Module Parameters** **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Lalitha_Test_Integration SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://test.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation  in skyvva integrateBulk pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx SforceBulkPackageSize This parameter determines how many records are split into chunks of the package size. For example if PI message contains 1000 records and the value of this parameter is 100 then we will get 10 batches each contain 100 records. Ex – 1000 sforceBulkMode It specifies the mode of Bulk SFDC Bulk 2.0 SforceBulkOperation This parameter is set when the interface uses the Bulk API. The bulk API enables transferring of mass data X SforceBulkInterfaceId It specifies the name of the skyvva interface IntegrateBulk **Integrated Configuration** Create integrated configuration objects as shown below. ![](../images/2019/07/Untitled-21.png) Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/07/Untitled-22.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/07/Untitled-23.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/07/Untitled-24.png) In the “outbound processing” tab, we have to specify the receiver channel. **Test the Inbound Interface.** Triggering the data from Source system. Now we have to check the result in Salesforce bulk data load as shown below. ![](../images/2020/02/Untitled-165.png) Here we use bulk version = SFDC Bulk API. So, the data will be posted into the Salesforce database directly. In the Bulk API Stream, we have added two new parameters like 'BulkCreateLogFile' and 'BulkLogFileFolder' where we can now create the error file for the bulk batch job. Each job has only one batch and not many batches like bulk v1. But the batches can have a size till 100 Mb which can contain millions of records. We create the file for error analysis to see the failed message but when the record could be posted successfully we are not creating anything into our message monitor. We can see only failed records in the message monitoring here we have a possibility to do the message reprocessing. So, our support for the SFDC bulk v2.0 option is a better one as of the pure bulk api Note: We cannot see successful messages in message monitor. We can see only failed messages in message monitor and also we can reprocess the failed messages. ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound interface using integrate Autoswitch mode with SKYVVA V3 Connector Module? Title: 1. How to create an inbound interface using integrate Autoswitch mode with SKYVVA V3 Connector Module? Slug: 25-how-to-create-an-inbound-interface-using-integrate-autoswitch-mode-with-skyvva-v3-connector-module URL: https://help.skyvva.com/#article/25-how-to-create-an-inbound-interface-using-integrate-autoswitch-mode-with-skyvva-v3-connector-module ================================================================================ # 1. How to create an inbound interface using integrate Autoswitch mode with SKYVVA V3 Connector Module? This document describes how to create an inbound interface using Integrate AutoSwitch mode with V3 SKYVVA connector module #### What is Auto-Switch mode? Auto-switch mode is a data processing mode provided by SKYVVA. When the auto-switch mode flag checked, It means that Agent automatic switch SKYVVA API based on a number of record and IntegrateMaxSize, IntegrateBatchMaxSize. And when the flag is unchecked it means that data is integrated with normal mode (no batch or bulk) no matter what is the size of records. Before configuring Auto-Switch Mode, you have to know about the parameters: - **Integrate Max Size**: Maximum number of records that SKYVVA Integration Agent can integrate using method integrate. The default value is 200. If the number of records to be integrated is bigger than this value, Agent will switch the API method automatically. - **Integrate Batch Max Size**: Maximum number of records that SKYVVA Integration using method integrate Batch. The default value is 5000. If a number of records to be integrated is bigger than this value, Agent will switch to use the Bulk API method automatically. If the number of records (Data) <= Integrate Max Size, Interface will run in **Normal Mode.** If the number of records (Data) > Integrate Max Size and number of records (Data) <= Integrate Batch Max Size, Interface will run in **Batch Mode.** If the number of records (Data) > Integrate Batch Max Size, Interface will run in **BULK Mode.** **2. SKYVVA interface creation** Create an interface, for example, "IntegrateAutoSwitch" as shown below. ![](../images/2020/02/Untitled-34.png) maximum integrate Batch size will be 5000 ![](../images/2020/02/Untitled-35.png) Now save the interface and download the WSDL **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva:integrateAutoSwitch**". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as ED_Account. ![](../images/2019/07/Image4-6.png) Import the WSDL and save and activate the external definition. - **Sender data type** Create sender data type as shown below ![](../images/2019/07/Image4-7.png) after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below. ![](../images/2019/07/Image4-8.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/07/Image4-9.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/07/Image4-10.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below ![](../images/2019/07/Image4-11.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/07/Image4-12.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/07/Image4-13.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-15.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/07/Image4-14.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. Skyvva/V3/Integration ![](../images/2020/02/Untitled-36.png) ![](../images/2020/02/Untitled-39.png) ![](../images/2020/02/Untitled-38.png) Configuration of module parameters are described in detail below - **SKYVVA Module Parameters** ![](../images/2020/02/Untitled-25.png) ![](../images/2020/02/Untitled-40.png) ![](../images/2020/02/Untitled-41.png) ![](../images/2020/02/Untitled-42.png) **Integrated Configuration** Create integrated configuration objects as shown below. ![](../images/2019/07/Image4-21.png) Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/07/Image4-23.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/07/Image4-26.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/07/Image4-27.png) In the “outbound processing” tab, we have to specify the receiver channel. - **Testing the Inbound Interface.** Triggering 2 records from the Source SOAP UI. ![](../images/2019/07/Image4-28.png) Now we have to check the result in SKYVVA message board as shown below. ![](../images/2020/02/Untitled-44.png) Triggering more than 6 records from SOAP UI. As we are using SFDC Bulk. So we can see the result in SFDC Bulk data loads as shown below ![](../images/2020/02/Untitled-43.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound interface using integrate Skyvva Bulk mode with SKYVVA V3 Connector Module? Title: 1. How to create an inbound interface using integrate Skyvva Bulk mode with SKYVVA V3 Connector Module? Slug: how-to-create-an-inbound-interface-using-integrate-skyvva-bulk-mode-with-skyvva-v3-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-interface-using-integrate-skyvva-bulk-mode-with-skyvva-v3-connector-module ================================================================================ # 1. How to create an inbound interface using integrate Skyvva Bulk mode with SKYVVA V3 Connector Module? This document describes how to create an inbound interface using Skyvva Bulk mode with Skyvva V3 connector module. **What Is Bulk?** SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have a huge amount of data I.e data >= 5000records, then we should use bulk processing to process the interface. **We should know some terms:** - **BULK Mode**: We have to set this flag to run our interface in bulk mode using salesforce bulk API. - **SKYVVA Bulk**: SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing mode, which are Parallel and Serial. The default value is Serial. - **SFDC Bulk: **We support SFDC pure bulk mode in version 1.0 or 2.0 that is very fast but cannot use SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk require the data has to be mapped already on the sender side and doing additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. - **Bulk Version**: SKYVVA support SFDC pure bulk mode in version1.0 or version 2.0 then we have our own skyvva bulk mode. This use skyvva workflow and mapping and thus it is more powerful but slower than pure bulk API technique from salesforce. - **Bulk Processing Mode**: This fields indicate two modes which is support with bulk version 1.0 and bulk version 2.0 only parallel mode is supported. So the value is depend here the selection of field bulk version. For example  When we want to use ‘ serial‘ we should select bulk 1.0. - Parallel: When you select this processing mode, it will run parallel. - Serial: When you select this mode, it will not run at the same time. - **Bulk Package Size**: This parameter determine how many records is splitted into Bulk data size. If your Message contain 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be keep. - Bulk Sch Frequency: This is the schedule time frequency for bulk scheduler on interface. - **Bulk Integrate Time Interval (minute**): The interval (minutes) used for integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. **Skyvva interface creation** Create an interface, for example, "IntegrateBulk" as shown below. ![](../images/2020/02/Untitled-17.png) ![](../images/2020/02/Untitled-18.png) As we are using Skyvva Bulk So, we have to check the Bulk mode checkbox  as shown below ![](../images/2020/02/Untitled-29.png) Now save the interface and download the WSDL from the classic mode. **Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva:integrateBulk**". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as AccountIntegrateBulk. ![](../images/2019/07/Untitled-5.png) Import the WSDL and save and activate the external definition. - **Source data type** Create sender data type as shown below ![](../images/2019/07/Untitled-6.png) after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below. ![](../images/2019/07/Untitled-7.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/07/Untitled-8.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/07/Untitled-9.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below ![](../images/2019/07/Untitled-10.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/07/Untitled-11.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. - **Mapping logic flow with Skyvva runtime** You have to map business data from SAP e.g. IDoc, BAPI or Proxy into the Skyvva WSDL business structure. This business structure is the result of your operation mapping in PO and will be passed into the soap receiver channel. This structure will be converted by the Skyvva module "Skyvva/V3/Integration" which is a new custom V3 module used in the soap receiver channel. ![](../images/2019/06/Untitled-19.png) We have to use Skyvva connector module in the soap receiver channel. - Skyvva/V3/Integration ![](../images/2020/02/Untitled-21.png) ![](../images/2020/02/Untitled-164.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/07/Untitled-14.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-15.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/07/Untitled-16.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA  new V3 module containing the logic for session handling must be specified. ![](../images/2020/02/Untitled-22.png) ![](../images/2020/02/Untitled-164.png) Configuration of module parameters are described in detail below **Skyvva Module Parameters** **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Skyvva_SAP_Salesforce SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://ap4.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation  in skyvva integrate pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx SforceBulkPackageSize This parameter determines how many records are split into chunks of the package size. For example if PI message contains 1000 records and the value of this parameter is 100 then we will get 10 batches each contain 100 records. Ex – 1000 sforceBulkMode It specifies the mode of Bulk Skyvva Bulk V3 skyvvaVersion Skyvva version needs to be specify here Ex. 2.44 SforceBulkOperation This parameter is set when the interface uses the Bulk API. The bulk API enables transferring of mass data X SforceBulkInterfaceId It specifies the name of the skyvva interface IntegrateBulk **Integrated Configuration** Create integrated configuration objects as shown below. ![](../images/2019/07/Untitled-21.png) Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/07/Untitled-22.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/07/Untitled-23.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/07/Untitled-24.png) In the “outbound processing” tab, we have to specify the receiver channel. **Test the Inbound Interface.** Triggering the data from Source system. Now we have to check the result in Salesforce bulk data load as shown below. Triggering the data from the Source system. Now we have to check the result in Bulk Control board as shown below. ![](../images/2019/07/Untitled-28.png) ![](../images/2020/02/Untitled-32.png) Here we have to select the Bulk interface then click on search. ![](../images/2019/07/Untitled-30.png) We have a scheduler to schedule the jobs during a particular time intervals. ![](../images/2020/02/Untitled-33.png) Here i have tested with 8 records with SforceBulkPacketSize = 2. So i got 4 attachments  each attachment contain 2 records. If we want to test large amount of data for example- we are sending 30 records from Source to target Salesforce then we have to specify the parameter "SforceBulkPacketSize" in SKYVVA module. Lets say the SforceBulkPacketSize = 5 in receiver channel and then test the interface with 30 records. In Salesforce we can see 6 attachments. Each attachment may contain 5 records. ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create inbound synchronous query interface in SAP PI/PO using SKYVVA V3 connector module? Title: 1. How to create inbound synchronous query interface in SAP PI/PO using SKYVVA V3 connector module? Slug: how-to-create-inbound-synchronous-query-interface-in-sap-pi-po-using-skyvva-v3-connector-module URL: https://help.skyvva.com/#article/how-to-create-inbound-synchronous-query-interface-in-sap-pi-po-using-skyvva-v3-connector-module ================================================================================ # 1. How to create inbound synchronous query interface in SAP PI/PO using SKYVVA V3 connector module? This document describes how to create an inbound query interface in SAP PI/PO with new SKYVVA  V3 connector module. **What is Query?** If want to search the data/records present in your Salesforce then this module will help you. It will help you to create a dynamic nature of search. You can configure the search feature and use it as per your needs. Skyvva app will help you to configure your search. You need to follow the below steps to configure your search: - Create an integration or use an existing integration. - Create an interface using the above integration. - The interface should have operationType as "query“ or "queryAll“. The SOQL query to select sObject data needs to be set with required SOQL query. To fetch small size data we use query and for Big size data we are going to use Bulk query. **What is Query All?** Executes the specified SOQL query. Unlike the Query resource, Query All will return records that have been deleted. Query All will also return information about archived Task and Event records. **SKYVVA interface creation** Create an inbound interface, for example, "searchService_IN“ as shown below. Select the Operation type as query“ or "query All“ ![](../images/2020/02/Untitled-56.png) ![](../images/2020/02/Untitled-57.png) Now save the interface and download the WSDL. This is needed to do mapping in SAP PO. We need only one interface, no need of creating another interaface for response. We can use the same interface XSD or WSDL for request and response structure in SAP PI/PO **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva: Querysalesforce**". Now create an external definition for Query Account request under the namespace like below. Here the WSDL is for Account. So, we can give the name as ED_SF_SearchQuery_Request. ![](../images/2019/08/Image4-52.png) Now import the WSDL and Save and activate it. Now create an external definition for Query Account response under the namespace like below. Here the WSDL is for Account. So, we can give the name as ED_SF_SearchQuery_Response. ![](../images/2019/08/Image4-53.png) Since in this example, we are sending data from SOAPUI to Salesforce. So, we need to create data types for request and response as shown below. **DataType for Request - ** ![](../images/2019/08/Image4-62.png) Save and activate the request data type. **DataType for Response**- ![](../images/2019/08/Image4-63.png) Save and activate the response data type. Now create Message type for both Request and Response as shown below. **Request Message type -** ![](../images/2019/08/Image4-64.png) Save and activate the request message type. **Response Message type - ** ![](../images/2019/08/Image4-66.png) Now Save and activate the response message type. Create Outbound and inbound service interfaces as shown below. ![](../images/2019/08/Image4-67.png) ![](../images/2019/08/Image4-68.png) Provide the necessary details as shown and then save and activate it. - **Message mapping** Create request and response message mapping as shown below. **Request Mapping - ** Select the Source structure and target structure and complete the mapping. ![](../images/2019/08/Image4-69.png) **Response Mapping - ** ![](../images/2019/08/Image4-70.png) Now save and activate both the mappings - **Operation Mapping ** Create Operation mapping as shown below. This is for request mapping ![](../images/2019/08/Image4-71.png) In Response-Mapping, a java mapping is needed to convert the Skyvva message format into a business structure. The java mapping will be provided from Skyvva and you just have to use it. ![](../images/2019/08/Image4-72.png) Now select the inbound and outbound service interfaces and the respective request and response mappings. Then save and activate the operation mapping. - **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2019/08/Image4-73.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. - **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAPUI as a source. So, here we are using SOAP adapter in the sender channel. ![](../images/2019/08/Image4-74.png) Provide the necessary details. After that save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/08/Image4-75.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified.  For V3 Skyvva module: We need 3 modules in the soap receiver channel 1. Skyvva/V3/QueryBuilder -> prepare the execution of the REST and BULK query and pass the message payload to the 3. module 2. XISOAPAdapterBean -> calling our new soap API 'RouteRequest‘ to just pass back the request from the 1. module 3. Skyvva/V3/ExecuteQuery -> here we only fetching the result which has been executed ![](../images/2020/02/Untitled-60.png) ![](../images/2020/02/Untitled-61.png) For the new Module we no need to use the Java mapping in response mapping to convert the JSON response into XML. We can directly include the parameter in the module to convert the JSON Response. Here are the channel configurations for new module. Configuration of module parameters are described in detail below - **Skyvva V3 Module Parameters**  Module parameters are outlined below ![](../images/2020/02/Untitled-62.png) ![](../images/2020/02/Untitled-63.png) **The different way to put the SELECT statement** Here we are able to build the select statement dynamically by the pi mapping. Thus we need a field in the request payload which for example is called 'SKYVVA__SOQL_SELECT' and where we can build the SELECT-statement by using concat formula in the mapping. In this case, you are taking the value from this field and it will dominate the SELECT-statement on the module parameter. In the request WSDL we need to add SKYVVA system field e.g. 'SKYVVA__SOQL_SELECT' and build dynamically the SELECT in the mapping. We have at 3 different places to put the SELECT statement e.g.: - In the interface - In the module parameter - In the PO request mapping in the field 'SKYVVA__SOQL_SELECT' . Here is the SQL Statement used in Module Parameters. SELECT BillingCity,BillingCountry,BillingPostalCode,BillingState,BillingStreet,Description,Fax,Id,Name,Phone,skyvvasolutions__SAP_Distribution_Channel__c,skyvvasolutions__SAP_Division__c,skyvvasolutions__SAP_Sales_Org__c FROM Account where skyvvasolutions__SAP_Distribution_Channel__c = '{!skyvvasolutions__SAP_Distribution_Channel__c}' and skyvvasolutions__SAP_Sales_Org__c = '{!skyvvasolutions__SAP_Sales_Org__c}' and skyvvasolutions__SAP_Division__c = '{!skyvvasolutions__SAP_Division__c}' - **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. ![](../images/2019/08/Image4-79.png) Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2019/08/Image4-80.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2019/08/Image4-81.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/08/Image4-82.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2019/08/Image4-83.png) **Testing the inbound synchronous Interface.** I am sending the data from SOAPUI. We are getting the JSON Response from Salesforce  but with the ResponseFormat parameter we are converting it to xml ![](../images/2020/02/picturemessage_m3crhmf1.y1w.png) Here we can test the interface directly using the SKYVVA SOAP API. The result will be in JSON format. ![](../images/2019/08/Image4-84.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an interface using SKYVVA Bulk Query using SAP PI/PO with SKYVVA V3 Connector module? Title: 1. How to create an interface using SKYVVA Bulk Query using SAP PI/PO with SKYVVA V3 Connector module? Slug: how-to-create-an-interface-using-skyvva-bulk-query-using-sap-pi-po-with-skyvva-v3-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-interface-using-skyvva-bulk-query-using-sap-pi-po-with-skyvva-v3-connector-module ================================================================================ # 1. How to create an interface using SKYVVA Bulk Query using SAP PI/PO with SKYVVA V3 Connector module? This document describes how to create an inbound interface using SKYVVA Bulk query mode in SAP PI/PO with new SKYVVA V3 connector module. **What Is Bulk Query?** BULK query - With this mode we can support the very big size of the query result. Like the REST query, it can return only the raw result of the select statement. It will retrieve the existing records only. **What Is Bulk Query All?** Bulk Query All - It will retrieve all archived and deleted records along with the existing records. The SKYVVA search will internally work on your query and will provide the complete result from your query. You can use the same Search operation to use it for Bulk v3 Query, which will help you to retrieve huge volume of records in CSV format. You can configure in your Interface with operationType as "Bulk Query“ or "Bulk Query All“ to use Bulk v3 Query feature.  Then you need to configure your SQOL in PI/PO Channel parameters or in SAP PI/PO mapping or in the SKYVVA interface. Base on your configuration in Interface SkYVVA connector will automatically detects the operation type and work accordingly with the same Search operation. The following figure shows how the Bulk Query works with New V3 module. ![](../images/2020/02/Untitled-155.png) **SKYVVA interface creation** Create an interface, for example, "BulkQuery_IN" as shown below. ![](../images/2020/02/Untitled-54.png) Select the Operation type as "Bulk Query" or "Bulk Query All" maximum integrate Batch size will be 5000 ![](../images/2020/02/Untitled-55.png) In this example we are going to put the SQL statement in the SAP PO Mapping. Now save the interface and download the WSDL from the Lightening mode. For new V3 we are going to use the new way WSDL. Generating the WSDL from Lightening as shown below. Go to Integration in that use have to select the "**Generate Metadata**" ![](../images/2020/02/Untitled-150.png) ![](../images/2020/02/Untitled-151.png) Provide all the required details and click on export to generate the file. ![](../images/2020/02/Untitled-152.png) Now click on View to download the generated WSDL file. In this example we are going to use only one interface for both request and response. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**http://SAP_to_SF_BulkQueryTest**". Now create an external definition under the namespace like below.Here the WSDL is for BulkQueryTest. So, we can give the name as BulkQueryTest. ![](../images/2020/02/Untitled-149.png) Here we are going to use only one interface for both Request and Response. Import the WSDL and save and activate the external definition. - **Sender request data type** Create sender request data type as shown below ![](../images/2019/12/Untitled-2.png) Sender response datatype - ![](../images/2019/12/Untitled-3.png) after creating the source data type click on save and activate. - **Source request message type** Create the request message type as shown below: ![](../images/2019/12/Untitled-4.png) - **Source response message type** Create the response message type as shown below: ![](../images/2019/12/Untitled-5.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/12/Untitled-6.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/12/Untitled-7.png) Save and active the inbound service interface. - **Request Message Mapping** Create request message mapping as shown below: ![](../images/2019/12/Untitled-8.png) **The different way to put the SELECT statement** Here we are able to build the select statement dynamically by the pi mapping. Thus we need a field in the request payload which for example is called 'SKYVVA__SOQL_SELECT' and where we can build the SELECT-statement by using concat formula in the mapping. In this case, you are taking the value from this field and it will dominate the SELECT-statement on the module parameter. In the request WSDL we need to add SKYVVA system field e.g. 'SKYVVA__SOQL_SELECT' and build dynamically the SELECT in the mapping. We have 3 different options to place the SQL SELECT statement e.g.: - In the Skyvva interface - In the SAP PO module parameter - In the PO request mapping in the field 'SKYVVA__SOQL_SELECT' as shown in above figure. - **SQL Statement in the SAP PO Mapping:** SELECT BillingCity,BillingCountry,BillingPostalCode,BillingState,BillingStreet,Description,Fax,Id,Name,Phone,skyvvasolutions__SAP_Distribution_Channel__c,skyvvasolutions__SAP_Division__c,skyvvasolutions__SAP_Sales_Org__c FROM Account where skyvvasolutions__SAP_Distribution_Channel__c = '{!skyvvasolutions__SAP_Distribution_Channel__c}' and skyvvasolutions__SAP_Sales_Org__c = '{!skyvvasolutions__SAP_Sales_Org__c}' and skyvvasolutions__SAP_Division__c = '{!skyvvasolutions__SAP_Division__c}' - **SQL Statement in the Skyvva Interface:** ![](../images/2020/02/Untitled-153.png) - **SQL Statement in the SAP PO module parameter:** ![](../images/2020/02/Untitled-154.png) - **Response Message Mapping** Create response message mapping as shown below: ![](../images/2019/12/Untitled-9.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/12/Untitled-10.png) ![](../images/2019/12/Untitled-11.png) Select the respective outbound and inbound service interfaces and also the message mapping for request and response then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/12/Untitled-12.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. Since in this example we are using SOAPUI as source system. So need to create Business component for SOAPUI as **BC_SOAPUI**. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/12/Untitled-13.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/12/Untitled-14.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. For V3 Skyvva module: We need 3 modules in the soap receiver channel 1. Skyvva/V3/QueryBuilder -> prepare the execution of the REST and BULK query and pass the message payload to the 3. module 2. XISOAPAdapterBean -> calling our new soap API 'RouteRequest' to just pass back the request from the 1. module 3. Skyvva/V3/ExecuteQuery -> here we only fetching the result which has been executed ![](../images/2020/02/Untitled-51.png) ![](../images/2020/02/Untitled-52.png) The below parameters has the following meaning. For V3 we don't need to specify SforceBulkInterfaceId in the parameters ![](../images/2020/02/Untitled-49.png) ![](../images/2020/02/Untitled-50.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/12/Untitled-23.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/12/Untitled-22.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/12/Untitled-21.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/12/Untitled-19.png) - **Test the Inbound Interface.** Triggering the data from the Source system. Here is the result from Salesforce. ![](../images/2019/12/Untitled-24.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an interface using SKYVVA REST Query using SAP PI/PO with SKYVVA V3 Connector module? Title: 1. How to create an interface using SKYVVA REST Query using SAP PI/PO with SKYVVA V3 Connector module? Slug: how-to-create-an-interface-using-skyvva-rest-query-using-sap-pi-po-with-skyvva-v3-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-interface-using-skyvva-rest-query-using-sap-pi-po-with-skyvva-v3-connector-module ================================================================================ # 1. How to create an interface using SKYVVA REST Query using SAP PI/PO with SKYVVA V3 Connector module? This document describes how to create an inbound interface using SKYVVA REST query mode in SAP PI/PO with new SKYVVA  V3 connector module. **What is REST Query?** REST query -This is the new type we support and we can handle bigger sizes as the searchService. This is possible because Salesforce held the cursor and can return the result page by page. In our module, we can collect the result set and combine it to a new message. **What is REST Query All?** REST Query All - It will retrieve all archived and deleted records along with the existing records. The SKYVVA search will internally work on your query and will provide the complete result from your query. You can configure in your Interface with operationType as "REST Query“ or "REST Query All“ to use REST Query feature.  Then you need to configure your SOQL in the SKYVVA interface. Base on your configuration in Interface SkYVVA connector will automatically detects the operation type and work accordingly with the same search operation. The following figure shows how the new V3 REST Query works with new V3 module ![](../images/2020/02/Untitled-155.png) **2. SKYVVA interface creation** Create an inbound interface, for example, "RESTQueryTest_IN" as shown below. Select the Operation type as REST Query" or "REST Query All" ![](../images/2020/02/Untitled-45.png) ![](../images/2019/12/Untitled-28.png) ![](../images/2019/12/Untitled-27.png) In this example we are going to put the SQL statement in the Skyvva Interface. Now save the interface and download the WSDL  from Lightening mode. For New V3 we are going to use the new way WSDL only. Follow the below steps to download the WSDL from Lightening. ![](../images/2020/02/Untitled-150.png) ![](../images/2020/02/Untitled-157.png) Provide the necessary details as highlighted in color and then export the file ![](../images/2020/02/Untitled-158.png) Click on view to download the WSDL file **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**http://SAP_to_SF_RESTQueryTest**". Now create an external definition under the namespace like below.Here the WSDL is for RESTQueryTest. So, we can give the name as ED_RESTQuery_Req ![](../images/2020/02/Untitled-159.png) Here instead of WSDL from salesforce we can also use our own message type in this example like below. ![](../images/2019/12/Untitled-34.png) Here we are going to use only one interface for both Request and Response. Import the WSDL and save and activate the external definition. - **Sender request data type** Create sender request data type as shown below ![](../images/2019/12/Untitled-30.png) Sender response datatype - ![](../images/2019/12/Untitled-31.png) after creating the source data type click on save and activate. - **Source request message type** Create the request message type as shown below: ![](../images/2019/12/Untitled-32.png) - **Source response message type** Create the response message type as shown below: ![](../images/2019/12/Untitled-33.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2019/12/Untitled-35.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2019/12/New.png) Save and active the inbound service interface. - **Request Message Mapping** Create request message mapping as shown below: ![](../images/2019/12/New-1.png) **The different way to put the SELECT statement** Here we are able to build the select statement dynamically by the pi mapping. Thus we need a field in the request payload which for example is called 'SKYVVA__SOQL_SELECT' and where we can build the SELECT-statement by using concat formula in the mapping. In this case, you are taking the value from this field and it will dominate the SELECT-statement on the module parameter. In the request WSDL we need to add SKYVVA system field e.g. 'SKYVVA__SOQL_SELECT' and build dynamically the SELECT in the mapping. We have 3 different options to place the SELECT statement e.g.: - In the PO request mapping in the field 'SKYVVA__SOQL_SELECT'  as shown below - In the Skyvva interface - In the module parameter Here is the SQL Statement used in the interface. SELECT BillingCity,BillingCountry,BillingPostalCode,BillingState,BillingStreet,Description,Fax,Id,Name,Phone,skyvvasolutions__SAP_Distribution_Channel__c,skyvvasolutions__SAP_Division__c,skyvvasolutions__SAP_Sales_Org__c FROM Account where skyvvasolutions__SAP_Distribution_Channel__c = '{!skyvvasolutions__SAP_Distribution_Channel__c}' and skyvvasolutions__SAP_Sales_Org__c = '{!skyvvasolutions__SAP_Sales_Org__c}' and skyvvasolutions__SAP_Division__c = '{!skyvvasolutions__SAP_Division__c}' - **SQL Statement in the SAP PO Mapping** ![](../images/2020/02/Untitled-46.png) - **SQL Statement in the Skyvva Interface** ![](../images/2020/02/Untitled-160.png) - **SQL Statement in the SAP PO module parameter:** ![](../images/2020/02/Untitled-161.png) - **Response Message Mapping** Create response message mapping as shown below: ![](../images/2019/12/New-2.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2019/12/New-3.png) ![](../images/2019/12/New-4.png) Select the respective outbound and inbound service interfaces and also the message mapping for request and response then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/12/New-5.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. Since in this example we are using SOAPUI as source system. So need to create Business component for SOAPUI as **BC_SOAPUI**. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/12/New-6.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/12/New-7.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. For V3 Skyvva module: We need 3 modules in the soap receiver channel 1. Skyvva/V3/QueryBuilder -> prepare the execution of the REST and BULK query and pass the message payload to the 3. module 2. XISOAPAdapterBean -> calling our new soap API 'RouteRequest' to just pass back the request from the 1. module 3. Skyvva/V3/ExecuteQuery -> here we only fetching the result which has been executed ![](../images/2020/02/Untitled-47.png) ![](../images/2020/02/Untitled-48.png) The below parameters has the following meaning. For V3 we don't need to specify SforceBulkInterfaceId in the parameters ![](../images/2020/02/Untitled-49.png) ![](../images/2020/02/Untitled-53.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/12/New-10.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/12/New-11.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/12/New-12.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/12/New-13.png) - **Test the Inbound Interface.** Triggering the data from the Source system. Here is the result from Salesforce. ![](../images/2019/12/New-14.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to generate the WSDL in Skyvva in Lightening and Classic mode? Title: 1. How to generate the WSDL in Skyvva in Lightening and Classic mode? Slug: how-to-generate-the-wsdl-in-skyvva-in-lightening-and-classic-mode URL: https://help.skyvva.com/#article/how-to-generate-the-wsdl-in-skyvva-in-lightening-and-classic-mode ================================================================================ # 1. How to generate the WSDL in Skyvva in Lightening and Classic mode? In this document we are going to explain you about how to generate the WSDL from Skyvva Lightening and Classic mode. - Generating WSDL from Classic. for this initaillay we have to login to the salesforce system after that click on profile view as shown. ![](../images/2020/02/Untitled-64.png) Click on switch to salesforce classic. ![](../images/2020/02/Untitled-66.png) Go to Integration and click on Manage middleware WSDL's. ![](../images/2020/02/Untitled-67.png) Now select the interface you want to download and the click on create WSDL. ![](../images/2020/02/Untitled-68.png) In the bottom you can see the generated file. ![](../images/2020/02/Untitled-69.png) Now we just need to click on view then the file will be downloaded automatically. We have rename the file to .WSDL file to import it into SAP PO for mapping. ![](../images/2020/02/Untitled-70.png) Generating the WSDL from classic is an old way. In the old way we can see the targetObject and fromSystem in the generated WSDL. ![](../images/2020/02/Untitled-71.png) - **Generating the WSDL in Lightening as Old way** Go to Integration and click on Generate Metadata ![](../images/2020/02/Untitled-72.png) Select the interface name you want to generate the WSDL and check mark the old way check box. Select the format file as WSDL 1.1 ![](../images/2020/02/Untitled-73.png) Now click on export. You can see the generated file in the bottom. ![](../images/2020/02/Untitled-74.png) Click on view to download the file. WSDL file will be downloaded. ![](../images/2020/02/Untitled-75.png) Here is the imported WSDL in SAP PO ![](../images/2020/02/Untitled-76.png) - **Generating the new way WSDL from Lightening** The option new way will generate a new WSDL which will works only with V3 module. It will support for both old and new way WSDL generation. Here we no need to check the old way check box. ![](../images/2020/02/Untitled-77.png) After selecting all the highlighted options. Click on export to generate the file. ![](../images/2020/02/Untitled-78.png) Click on view to download the file. WSDL file will be downloaded. ![](../images/2020/02/Untitled-79.png) This is how the new way WSDL looks like ![](../images/2020/02/Untitled-80.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create inbound IntegrateSynchronous interface in SAP PI/PO using SKYVVA V3 Connector Module? Title: 1. How to create inbound IntegrateSynchronous interface in SAP PI/PO using SKYVVA V3 Connector Module? Slug: how-to-create-inbound-integratesynchronous-interface-in-sap-pi-po-using-skyvva-v3-connector-module URL: https://help.skyvva.com/#article/how-to-create-inbound-integratesynchronous-interface-in-sap-pi-po-using-skyvva-v3-connector-module ================================================================================ # 1. How to create inbound IntegrateSynchronous interface in SAP PI/PO using SKYVVA V3 Connector Module? This document describes how to create an inbound IntegrateSynchronous interface in SAP PO with Skyvva V3 connector module. **Creating an inbound synchronous interface (Salesforce)** Login to the Salesforce org and then select SKYVVA Integration Cloud. Go to Integration Tab and create New Integration under that go to the interfaces tab and then create New interface as shown below. In V3 we have to create the message type in skyvva as explained below. Initially we have to create Metadata Provider. ![](../images/2020/02/Untitled-81.png) Now create Istructure repository ![](../images/2020/02/Untitled-82.png) Now create Message type for both request and response ![](../images/2020/02/Untitled-83.png) Now we have to use the message type in both request and response interface. In this example, I have created the interface under "Lalitha_Test_Integration**"** Create Inbound request interface as shown below ![](../images/2020/02/Untitled-84.png) ![](../images/2020/02/Untitled-85.png) ![](../images/2020/02/Untitled-88.png) If we use the message type defined in skyvva then we have to do mapping in skyvva as shown. ![](../images/2020/02/Untitled-86.png) ![](../images/2020/02/Untitled-87.png) Now save the mapping and the inbound interface. Create an outbound response interface ![](../images/2020/02/Untitled-89.png) ![](../images/2020/02/Untitled-90.png) Do the mapping for outbound response interface ![](../images/2020/02/Untitled-91.png) ![](../images/2020/02/Untitled-92.png) ![](../images/2020/02/Untitled-93.png) Save the mapping and the outbound response interface. Download the inbound interface WSDL and upload it into SAP PO for mapping. ![](../images/2020/02/Untitled-125.png) Import the WSDL and Save and activate it. For new V3 we have to define the response business structure. We can use same response datatype for both source and target Create response datatype for skyvva response ![](../images/2020/02/Untitled-128.png) Since in this example, we are sending data from SOAPUI to Salesforce. So, we need to create data types for request and response **DataType for Request - ** ![](../images/2020/02/Untitled-127.png) Save and activate the request data type. **DataType for Response**- ![](../images/2020/02/Untitled-128.png) Save and activate the response data type. Now create Message type for both Request and Response as shown below. **Request Message type -** ![](../images/2020/02/Untitled-129.png) Save and activate the request message type. **Response Message type - ** ![](../images/2020/02/Untitled-130.png) Now Save and activate the response message type. Create Outbound and inbound service interfaces as shown below. ![](../images/2020/02/Untitled-131.png) ![](../images/2020/02/Untitled-132.png) Provide the necessary details as shown and then save and activate it. - **Message mapping** Create request and response message mapping as shown below. **Request Mapping - ** Select the Source structure and target structure and complete the mapping. ![](../images/2020/02/Untitled-133.png) **Response Mapping - ** ![](../images/2020/02/Untitled-134.png) Now save and activate both the mappings - **Operation Mapping ** Create Operation mapping as shown below. This is for request mapping ![](../images/2020/02/Untitled-135.png) Response Mapping: Here in the response mapping, we use java class to convert the JSON response to XML and also to get the business or standard response based on our requirement. Java class: **com/sap/transformation/IntegrateV3ResponseTransformation** ![](../images/2020/02/Untitled-136.png) Now select the inbound and outbound service interfaces and the respective request and response mappings. Then save and activate the operation mapping. - **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/02/Untitled-137.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. - **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAPUI as a source. So, here we are using SOAP adapter in the sender channel. ![](../images/2019/09/Image4-20.png) Provide the necessary details. After that save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2020/02/Untitled-138.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA V3 module containing the logic for session handling and transformation logic. ![](../images/2020/02/Untitled-139.png) ![](../images/2020/02/Untitled-140.png) Configuration of module parameters are described in detail below - **Skyvva Module Parameters** **"Skyvva/V3/Integration"** to be used with SOAP receiver channel. Module parameters are outlined below ![](../images/2020/02/Untitled-141.png) ![](../images/2020/02/Untitled-142.png) - **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2020/02/Untitled-143.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2020/02/Untitled-144.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/02/Untitled-145.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2020/02/Untitled-146.png) - **Testing the inbound synchronous Interface.** I am sending the data from SOAPUI. We are getting the JSON Response from Salesforce. Again we are converting the JSON response to XML with Java class which we have used in response mapping in SAP PO. This is the business response from skyvva. Note: We can only return back what we post in the request that means only value from request will written back in the response. if we want more data we can get additional using formula vlookup For example we can upsert a contact. But we want not only to return the contact but also some data of account this contact belong to Then we can use vlookup to fetch some data from account. ![](../images/2020/02/Untitled-147.png) If we test the interface without skyvva response interface then we will get the standard response as shown below. ![](../images/2020/02/Untitled-148.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create inbound Hierarchical IntegrateSynchronous interface in SAP PI/PO using SKYVVA V3 Connector Module? Title: 1. How to create inbound Hierarchical IntegrateSynchronous interface in SAP PI/PO using SKYVVA V3 Connector Module? Slug: how-to-create-inbound-hierarchical-integratesynchronous-interface-in-sap-pi-po-using-skyvva-v3-connector-module URL: https://help.skyvva.com/#article/how-to-create-inbound-hierarchical-integratesynchronous-interface-in-sap-pi-po-using-skyvva-v3-connector-module ================================================================================ # 1. How to create inbound Hierarchical IntegrateSynchronous interface in SAP PI/PO using SKYVVA V3 Connector Module? This document describes how to create an Inbound Hierarchical IntegrateSynchronous interface in SAP PO with Skyvva V3 connector module. **Creating an inbound hierarchical synchronous interface (Salesforce)** Login to the Salesforce org and then select SKYVVA Integration Cloud. Go to Integration Tab and create New Integration under that go to the interfaces tab and then create New interface as shown below. In V3 we have to create the message type in skyvva as explained below. Initially we have to create Metadata Provider. ![](../images/2020/04/Untitled-1.png) Now create Istructure repository ![](../images/2020/04/Untitled-2.png) Now create Message type for hierarchical request and response ![](../images/2020/04/Untitled-3.png) Now we have to use the message type in both request and response interface and also the child request and response interfaces In this example, I have created the interface under "Lalitha_Test_Integration**"** - **Create Inbound parent request interface** ![](../images/2020/04/Untitled-4.png) ![](../images/2020/04/Untitled-5.png) ![](../images/2020/04/Untitled-6.png) If we use the message type defined in skyvva then we have to do mapping in skyvva as shown. ![](../images/2020/04/Untitled-7.png) ![](../images/2020/04/Untitled-8.png) Now save the mapping and the inbound parent interface. - **Create Inbound child request interface** ![](../images/2020/04/Untitled-14.png) ![](../images/2020/04/Untitled-15.png) ![](../images/2020/04/Untitled-16.png) Add this child interface as i chained interface in the parent interface related tab ![](../images/2020/04/Untitled-17.png) Save the inbound child interface. - **Create an outbound parent response interface** ![](../images/2020/04/Untitled-9.png) ![](../images/2020/04/Untitled-10.png) ![](../images/2020/02/Untitled-90.png) Do the mapping for outbound response interface ![](../images/2020/04/Untitled-11.png) ![](../images/2020/04/Untitled-12.png) ![](../images/2020/04/Untitled-13.png) Save the mapping and the outbound response interface. - **Create an outbound child response interface** ![](../images/2020/04/Untitled-18.png) ![](../images/2020/04/Untitled-19.png) ![](../images/2020/04/Untitled-20.png) Save the interface and add this child interface as ichained interface in the parent response interface related tab ![](../images/2020/04/Untitled-21.png) Download the inbound and outbound parent interface WSDL's  and upload it into SAP PO for mapping. ![](../images/2020/04/Untitled-22.png) Import the WSDL and Save and activate it. For new V3 we have to define the response business structure. We can use same response datatype for both source and target Create response datatype for skyvva response ![](../images/2020/04/Untitled-23.png) Since in this example, we are sending data from SOAPUI to Salesforce. So, we need to create data types for request and response **DataType for Request - ** ![](../images/2020/04/Untitled-24.png) Save and activate the request data type. **DataType for Response**- ![](../images/2020/04/Untitled-23.png) Save and activate the response data type. Now create Message type for both Request and Response as shown below. **Request Message type -** ![](../images/2020/04/Untitled-25.png) Save and activate the request message type. **Response Message type - ** ![](../images/2020/04/Untitled-26.png) Now Save and activate the response message type. Create Outbound and inbound service interfaces as shown below. ![](../images/2020/04/Untitled-27.png) ![](../images/2020/04/Untitled-28.png) Provide the necessary details as shown and then save and activate it. - **Message mapping** Create request and response message mapping as shown below. **Request Mapping - ** Select the Source structure and target structure and complete the mapping. ![](../images/2020/04/Untitled-29.png) **Response Mapping - ** We don't need response mapping as we are using java mapping to get the business and the standard response based on the business requirement Now save and activate both the mapping - **Operation Mapping ** Create Operation mapping as shown below. This is for request mapping ![](../images/2020/04/Untitled-30.png) Response Mapping: Here in the response mapping, we use java class to convert the JSON response to XML and also to get the business or standard response based on our requirement. Java class: **com/sap/transformation/IntegrateV3ResponseTransformation** ![](../images/2020/04/Untitled-31.png) Now select the inbound and outbound service interfaces and the respective request and response mappings. Then save and activate the operation mapping. - **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/04/Untitled-32.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. - **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAPUI as a source. So, here we are using SOAP adapter in the sender channel. ![](../images/2019/09/Image4-20.png) Provide the necessary details. After that save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2020/02/Untitled-138.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA V3 module containing the logic for session handling and transformation logic. ![](../images/2020/02/Untitled-139.png) ![](../images/2020/02/Untitled-140.png) Configuration of module parameters are described in detail below - **Skyvva Module Parameters** **"Skyvva/V3/Integration"** to be used with SOAP receiver channel. Module parameters are outlined below ![](../images/2020/02/Untitled-141.png) ![](../images/2020/02/Untitled-142.png) - **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2020/04/Untitled-33.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2020/04/Untitled-34.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/04/Untitled-35.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2020/04/Untitled-36.png) - **Testing the inbound synchronous Interface.** I am sending the data from SOAPUI. We are getting the JSON Response from Salesforce. Again we are converting the JSON response to XML with Java class which we have used in response mapping in SAP PO. This is the business response from skyvva. ![](../images/2020/04/picturemessage_xn0j4dcb.jiq_.png) If we test the interface without skyvva response interface then we will get the standard response as shown below. ![](../images/2020/04/Untitled-37.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound hierarchical interface using SKYVVA Bulk mode with V2 SKYVVA Connector module? Title: 1. How to create an inbound hierarchical interface using SKYVVA Bulk mode with V2 SKYVVA Connector module? Slug: how-to-create-an-inbound-hierarchical-interface-using-skyvva-bulk-mode-with-skyvva-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-hierarchical-interface-using-skyvva-bulk-mode-with-skyvva-connector-module ================================================================================ # 1. How to create an inbound hierarchical interface using SKYVVA Bulk mode with V2 SKYVVA Connector module? This document describes how to create an inbound hierarchical interface using SKYVVA Bulk mode with SKYVVA connector module. **Introduction** SKYVVA provides different processing modes and uses API Dynamic Switch where incoming data goes automatically to be processed as asynchronous, batch or bulk. **What Is Bulk?** SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have a huge amount of data I.e data >= 5000records, then we should use bulk processing to process the interface. **We should know some terms:** - **BULK Mode**: We have to set this flag to run our interface in bulk mode using salesforce bulk API. - **SKYVVA Bulk**: SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing mode, which are Parallel and Serial. The default value is Serial. With V2 Skyvva connector module we cannot support message type hierarchical data. SKYVVA Bulk will support both flat and hierarchical data. - **SFDC Bulk: **We support SFDC pure bulk mode in version 1.0 or 2.0 that is very fast but cannot use SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk require the data has to be mapped already on the sender side and doing additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing. SFDC Bulk will support only flat structure. - **Bulk Version**: SKYVVA support SFDC pure bulk mode in version1.0 or version 2.0 then we have our own skyvva bulk mode. This use skyvva workflow and mapping and thus it is more powerful but slower than pure bulk API technique from salesforce. - **Bulk Processing Mode**: This fields indicate two modes which is support with bulk version 1.0 and bulk version 2.0 only parallel mode is supported. So the value is depend here the selection of field bulk version. For example  When we want to use ‘ serial‘ we should select bulk 1.0. - Parallel: When you select this processing mode, it will run parallel. - Serial: When you select this mode, it will not run at the same time. - **Bulk Package Size**: This parameter determine how many records is splitted into Bulk data size. If your Message contain 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be keep. - Bulk Sch Frequency: This is the schedule time frequency for bulk scheduler on interface. - **Bulk Integrate Time Interval (minute**): The interval (minutes) used for integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. # - **What is needed for a BULK Inteface** The process and development of an inbound interface utilize the bulk api is almost the same like developing an ordinary inbound interface. How to develop an ordinary inbound interface with SKYVVA Integration Suite is described in the document "How to create an inbound interface to post a single sObject? ". The following steps to be follow to develop and processing an interface with bulk api: - Follow all the steps to develop an inbound interface - Configure these parameters SforceBulkOperation, SforceBulkPacketSize  and SforceBulkInterfaceId for in the soap inbound channel - Bulk data set will be created as bulk data load job and has to be processed inside Salesforce manually **2. SKYVVA interface creation** For the hierarchical interface we have to create parent child interface in skyvva. Create an inbound interface, for example, "AccountContactIntegrateBulk" as shown below. Account is the parent and contact is child ![](../images/2020/04/Untitled-38.png) maximum integrate Batch size will be 5000 ![](../images/2020/04/Untitled-39.png) ![](../images/2020/04/Untitled-40.png) As we are using SKYVVA Bulk 1.0. So, we have to check the Bulk mode checkbox as shown below: ![](../images/2020/04/Untitled-44.png) Create contact child interface ![](../images/2020/04/Untitled-41.png) maximum integrate Batch size will be 5000 ![](../images/2020/04/Untitled-42.png) ![](../images/2020/04/Untitled-43.png) As we are using SKYVVA Bulk 1.0. So, we have to check the Bulk mode checkbox as shown below: ![](../images/2020/04/Untitled-44.png) Now add the child interface as ichained interface in the parent interface related tab. ![](../images/2020/04/Untitled-46.png) ![](../images/2020/04/Untitled-45.png) Add the foreign key in the child interface to link the Contact with Account. ![](../images/2020/04/Untitled-47.png) Download the WSDL's from the classic mode to do further mapping in SAP PO. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "urn:skyvva:ChainedInterface2Level". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as "ED_Account_Contact" ![](../images/2020/04/Untitled-48.png) Import the WSDL and save and activate the external definition. - **Sender data type** Create sender data type as shown below ![](../images/2020/04/Untitled-49.png) after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below: ![](../images/2020/04/Untitled-50.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2020/04/Untitled-51.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2020/04/Untitled-52.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below: ![](../images/2020/04/Untitled-53.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2020/04/Untitled-54.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2020/04/Untitled-56.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-15.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel ** Configuration for Tab "General" ![](../images/2020/04/Untitled-103.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. ![](../images/2020/04/Untitled-57.png) ![](../images/2020/04/Untitled-58.png) ![](../images/2020/04/Untitled-59.png) Configuration of module parameters are described in detail below - **SKYVVA Module Parameters** ![](../images/2020/04/Untitled-71.png) ![](../images/2020/04/Untitled-72.png) ![](../images/2020/04/Untitled-74.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2020/04/Untitled-60.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2020/04/Untitled-61.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/04/Untitled-62.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2020/04/Untitled-63.png) - **Test the Inbound Interface.** Triggering the data from the Source system. Now we have to check the result in Bulk Control board as shown below. ![](../images/2019/07/Untitled-28.png) Here we have to select the Bulk interface then click on search. ![](../images/2020/04/Untitled-64.png) We have a scheduler to schedule the jobs during a particular time intervals. ![](../images/2020/04/Untitled-65.png) Bulk data inbox. We can process the files manually with the Process Bulk Attachment button  as shown ![](../images/2020/04/Untitled-66.png) In the below section we can see the processed files. ![](../images/2020/04/Untitled-67.png) Now the message processing completed. We can see the messages in message monitor. ![](../images/2020/04/Untitled-68.png) Click on related to to view the record ![](../images/2020/04/Untitled-69.png) Here is the data  which we sent from the source system. ![](../images/2020/04/Untitled-70.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound hierarchical interface using SKYVVA Bulk mode with V3 SKYVVA Connector module? Title: 1. How to create an inbound hierarchical interface using SKYVVA Bulk mode with V3 SKYVVA Connector module? Slug: how-to-create-an-inbound-hierarchical-interface-using-skyvva-bulk-mode-with-v3-skyvva-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-hierarchical-interface-using-skyvva-bulk-mode-with-v3-skyvva-connector-module ================================================================================ # 1. How to create an inbound hierarchical interface using SKYVVA Bulk mode with V3 SKYVVA Connector module? This document describes how to create an inbound hierarchical interface using SKYVVA Bulk mode with new V3 SKYVVA connector module. **Introduction** SKYVVA provides different processing modes and uses API Dynamic Switch where incoming data goes automatically to be processed as asynchronous, batch or bulk. **What Is Bulk?** SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have a huge amount of data I.e data >= 5000 records, then we should use bulk processing to process the interface. **We should know some terms:** - **BULK Mode**: We have to set this flag to run our interface in bulk mode using salesforce bulk API. - **SKYVVA Bulk**: SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing mode, which are Parallel and Serial. The default value is Serial.With V2 Skyvva connector module we cannot support message type hierarchical data. SKYVVA Bulk will support both flat and hierarchical data. - **SFDC Bulk: **We support SFDC pure bulk mode in version 1.0 or 2.0 that is very fast but cannot use SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk require the data has to be mapped already on the sender side and doing additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing.SFDC Bulk will support only flat structure. - **Bulk Version**: SKYVVA support SFDC pure bulk mode in version1.0 or version 2.0 then we have our own skyvva bulk mode. This use skyvva workflow and mapping and thus it is more powerful but slower than pure bulk API technique from salesforce. - **Bulk Processing Mode**: This fields indicate two modes which is support with bulk version 1.0 and bulk version 2.0 only parallel mode is supported. So the value is depend here the selection of field bulk version. For example  When we want to use ‘ serial‘ we should select bulk 1.0. - Parallel: When you select this processing mode, it will run parallel. - Serial: When you select this mode, it will not run at the same time. - **Bulk Package Size**: This parameter determine how many records is splitted into Bulk data size. If your Message contain 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be keep. - Bulk Sch Frequency: This is the schedule time frequency for bulk scheduler on interface. - **Bulk Integrate Time Interval (minute**): The interval (minutes) used for integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. # - **What is needed for a BULK Inteface** The process and development of an inbound interface utilize the bulk api is almost the same like developing an ordinary inbound interface. How to develop an ordinary inbound interface with SKYVVA Integration Suite is described in the document "How to create an inbound interface to post a single sObject? ". The following steps to be follow to develop and processing an interface with bulk api: - Follow all the steps to develop an inbound interface - Configure these parameters SforceBulkOperation, SforceBulkPacketSize  and SforceBulkInterfaceId for in the soap inbound channel - Bulk data set will be created as bulk data load job and has to be processed inside Salesforce manually **Creating an inbound hierarchical asynchronous interface (Salesforce)** Login to the Salesforce org and then select SKYVVA Integration Cloud. Go to Integration Tab and create New Integration under that go to the interfaces tab and then create New interface as shown below. In V3 we have to create the message type in skyvva as explained below. Initially we have to create Metadata Provider. ![](../images/2020/04/Untitled-75.png) Now create Istructure repository ![](../images/2020/04/Untitled-76.png) Now create Message type for hierarchical request and response ![](../images/2020/04/Untitled-77.png) Now we have to use the message type in both request and response interface and also the child request and response interfaces In this example, I have created the interface under "Lalitha_Test_Integration**"** **2. SKYVVA interface creation** For the hierarchical interface we have to create parent child interface in skyvva. Create an inbound interface, for example, "AccountContactV3Bulk_IN" as shown below. Account is the parent and contact is child ![](../images/2020/04/Untitled-78.png) maximum integrate Batch size will be 5000 ![](../images/2020/04/Untitled-79.png) ![](../images/2020/04/Untitled-40.png) As we are using SKYVVA Bulk 1.0. So, we have to check the Bulk mode checkbox as shown below: ![](../images/2020/04/Untitled-44.png) ![](../images/2020/04/Untitled-80.png) For Messagetype we need to do mapping in skyvva ![](../images/2020/04/Untitled-81.png) ![](../images/2020/04/Untitled-82.png) Save the parent interface. Create contact child interface ![](../images/2020/04/Untitled-83.png) maximum integrate Batch size will be 5000 ![](../images/2020/04/Untitled-85.png) ![](../images/2020/04/Untitled-43.png) As we are using SKYVVA Bulk 1.0. So, we have to check the Bulk mode checkbox as shown below: ![](../images/2020/04/Untitled-44.png) Now add the child interface as ichained interface in the parent interface related tab. ![](../images/2020/04/Untitled-86.png) ![](../images/2020/04/Untitled-87.png) Add the foreign key in the child interface to link the Contact with Account. ![](../images/2020/04/Untitled-47.png) Download the WSDL to do further mapping in SAP PO. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "urn:skyvva:ChainedInterface2Level". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as "ED_AccountContact_MsgTyp" ![](../images/2020/04/Untitled-89.png) Import the WSDL and save and activate the external definition. - **Sender data type** Create sender data type as shown below ![](../images/2020/04/Untitled-49.png) after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below: ![](../images/2020/04/Untitled-50.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2020/04/Untitled-51.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2020/04/Untitled-90.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below: ![](../images/2020/04/Untitled-91.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2020/04/Untitled-92.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2020/04/Untitled-56.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-15.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel ** Configuration for Tab "General" ![](../images/2020/04/Untitled-93.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. ![](../images/2020/04/Untitled-94.png) ![](../images/2020/04/Untitled-95.png) Configuration of module parameters are described in detail below - **SKYVVA Module Parameters** ![](../images/2020/04/Untitled-71.png) ![](../images/2020/04/Untitled-72.png) ![](../images/2020/04/Untitled-96.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2020/04/Untitled-60.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2020/04/Untitled-61.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/04/Untitled-62.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2020/04/Untitled-97.png) - **Test the Inbound Interface.** Triggering the data from the Source system. Now we have to check the result in Bulk Control board as shown below. ![](../images/2019/07/Untitled-28.png) Here we have to select the Bulk interface then click on search. ![](../images/2020/04/Untitled-98.png) We have a scheduler to schedule the jobs during a particular time intervals. ![](../images/2020/04/Untitled-99.png) In the below section we can see the processed files. ![](../images/2020/04/Untitled-100.png) Now the message processing completed. We can see the messages in message monitor. ![](../images/2020/04/Untitled-101.png) Click on related to to view the record ![](../images/2020/04/Untitled-102.png) Here is the data  which we sent from the source system. ![](../images/2020/04/Untitled-70.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound hierarchical interface using SKYVVA Batch mode with V2 SKYVVA Connector module? Title: 1. How to create an inbound hierarchical interface using SKYVVA Batch mode with V2 SKYVVA Connector module? Slug: how-to-create-an-inbound-hierarchical-interface-using-skyvva-batch-mode-with-v2-skyvva-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-hierarchical-interface-using-skyvva-batch-mode-with-v2-skyvva-connector-module ================================================================================ # 1. How to create an inbound hierarchical interface using SKYVVA Batch mode with V2 SKYVVA Connector module? This document describes how to create an inbound hierarchical interface using SKYVVA Batch mode with SKYVVA connector module. Our old SAP PO module is now enhanced to support the hierarchical message payload and the batch will also split the messages as small attachments as per our requirement. For the batch splitting we just need to add a new parameter "BatchPacketSize" in the receiver channel configuration **Introduction** Batch data processing is an efficient way of processing high volumes of data, where a group of transactions is collected over a period of time. Data is collected, entered, processed and then the batch results are produced. So, now we are going to create an inbound interface using integrate batch with Skyvva connector module Initially, we have to start with Salesforce Skyvva. This interface is also the same as "**How to create an inbound interface to post a single sObject**?" but few things to be added in Skyvva interface settings and in the module parameters configuration. - **SKYVVA interface creation** For the hierarchical interface we have to create parent child interface in skyvva. Create an inbound interface, for example, "AccountContactIntegrateBatch" as shown below. Account is the parent and contact is child ![](../images/2020/04/Untitled-105.png) maximum integrate Batch size will be 5000 ![](../images/2020/04/Untitled-106.png) ![](../images/2020/04/Untitled-40.png) As we are using Batch mode So, we have to check the Bulk mode checkbox as shown below: ![](../images/2020/04/Untitled-107.png) Create contact child interface ![](../images/2020/04/Untitled-108.png) maximum integrate Batch size will be 5000 ![](../images/2020/04/Untitled-42.png) As we are using Batch mode So, we have to check the Bulk mode checkbox as shown below: ![](../images/2020/04/Untitled-107.png) Now add the child interface as ichained interface in the parent interface related tab. ![](../images/2020/04/Untitled-110.png) ![](../images/2020/04/Untitled-111.png) Add the foreign key in the child interface to link the Contact with Account. ![](../images/2020/04/Untitled-112.png) Download the WSDL's from the classic mode to do further mapping in SAP PO. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "urn:skyvva:ChainedIntegrateBatch". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as "ED_AccountContact_IntegrateBatch" ![](../images/2020/04/Untitled-113.png) Import the WSDL and save and activate the external definition. - **Sender data type** Create sender data type as shown below ![](../images/2020/04/Untitled-49.png) after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below: ![](../images/2020/04/Untitled-114.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2020/04/Untitled-115.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2020/04/Untitled-117.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below: ![](../images/2020/04/Untitled-116.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2020/04/Untitled-118.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2020/04/Untitled-119.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-15.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel ** Configuration for Tab "General" ![](../images/2020/04/Untitled-120.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. ![](../images/2020/04/Untitled-121.png) ![](../images/2020/04/Untitled-122.png) Configuration of module parameters are described in detail below - **SKYVVA Module Parameters** ![](../images/2020/04/Untitled-71.png) ![](../images/2020/04/Untitled-123.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2020/04/Untitled-125.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2020/04/Untitled-126.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/04/Untitled-127.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2020/04/Untitled-128.png) - **Test the Inbound Interface.** Triggering the data from the Source system. Now we have to check the result in Batch Control board as shown below. ![](../images/2020/04/Untitled-129.png) Here we have to select the Batch interface then click on search. ![](../images/2020/04/Untitled-130.png) We have a scheduler to schedule the jobs during a particular time intervals. ![](../images/2020/04/Untitled-131.png) In the "History Basket" we can see the processed files as batch files as shown. We have sent 4 records with BatchPacketSize 2, So the file got splitted to two batches each contains 2 records. ![](../images/2020/04/Untitled-132.png) Now the message processing completed. We can see the messages in message monitor. ![](../images/2020/04/Untitled-133.png) Click on related to to view the record ![](../images/2020/04/Untitled-134.png) Here is the data  which we sent from the source system. ![](../images/2020/04/Untitled-70.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SOAP V3 Adapter? Title: 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SOAP V3 Adapter? Slug: how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-soap-v3-adapter URL: https://help.skyvva.com/#article/how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-soap-v3-adapter ================================================================================ # 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SOAP V3 Adapter? This document describes how to create an outbound Synchronous interface in SAP PO with SKYVVA V3 SOAP Adapter For SOAP V3 we have to create the message type in skyvva as explained below. **SOAP V3 message type template:** We use a standard message type template for SOAP Adapter { "Google SOAP Service": { "Request": { "HTTP Header": { }, "URL Query Parameter": { }, "SOAP Header": { "SessionHeader": { "SessionId": "" } }, "SOAP Body": { "Quote_Sync_Out": { "Quote_Header_Request": { "skyvvasolutions__SAP_Requested_Delivery_Date__c": "", "skyvvasolutions__SAP_Sales_Org__c": "", "skyvvasolutions__SAP_Distribution_Channel__c": "", "skyvvasolutions__SAP_Division__c": "", "skyvvasolutions__SAP_Group__c": "", "Id": "", "Name": "", "OpportunityId": "", "skyvvasolutions__SAP_Offer_Valid_To__c": "", "skyvvasolutions__SAP_Offer_valid_from__c": "", "QuoteLineItem": { "LineNumber": "", "Quantity": "", "skyvvasolutions__SAP_Material_Number__c": "", "skyvvasolutions__SAP_Customer_Number__c": "" } } } } }, "Response": { "Envelope": { "Header": { }, "Body": { "Quote_IN": { "Quote": { "Name": "", "Id": "", "OpportunityId": "", "skyvvasolutions__SAP_Quote_ID__c": "", "Status": "", "QuoteNumber": "", "QuoteLineItem": { "Id":"", "Quantity": "", "QuoteId": "", "skyvvasolutions__SAP_Material_Number__c": "", "skyvvasolutions__SAP_Quote_Line_ID__c": "", "OpportunityLineItemId": "" } } } } } } } } Initially we have to create Metadata Provider. ![](../images/2020/05/Untitled.png) Now create Istructure repository ![](../images/2020/05/Untitled-1.png) Now create Message type for hierarchical request and response ![](../images/2020/05/Untitled-2.png) ![](../images/2020/05/Untitled-3.png) Now we have to use the message type in both request and response interface and also the child request and response interfaces Creation of Outbound SOAP adapter: Provide the details as shown below: ![](../images/2020/05/Untitled-88.png) ![](../images/2020/05/Untitled-89.png) ![](../images/2020/05/Untitled-90.png) Use this adapter in the outbound request interface. In this example, I have created the interface under "SOAPV3**"** - **Create Outbound parent request interface ** ![](../images/2020/05/Untitled-4.png) ![](../images/2020/05/Untitled-5.png) ![](../images/2020/05/Untitled-6.png) ![](../images/2020/05/Untitled-7.png) If we use the message type defined in skyvva then we have to do mapping in skyvva as shown. ![](../images/2020/05/Untitled-8.png) Now save the mapping and the outbound parent interface. ![](../images/2020/05/Untitled-29.png) ![](../images/2020/05/Untitled-30.png) ![](../images/2020/05/Untitled-31.png) - **Create Outbound child request interface** ![](../images/2020/05/Untitled-9.png) ![](../images/2020/05/Untitled-10.png) ![](../images/2020/05/Untitled-11.png) Add this child interface as i chained interface in the parent interface related tab ![](../images/2020/05/Untitled-12.png) Save the outbound child interface. - **Create an inbound parent response interface** ![](../images/2020/05/Untitled-13.png) ![](../images/2020/05/Untitled-28.png) ![](../images/2020/05/Untitled-15.png) Do the mapping for inbound parent response interface ![](../images/2020/05/Untitled-32.png) ![](../images/2020/05/Untitled-33.png) In the related tab add the foreign key fields as shown below ![](../images/2020/05/Untitled-34.png) Save the mapping and the inbound response interface. - **Create an inbound child response interface** ![](../images/2020/05/Untitled-16.png) ![](../images/2020/05/Untitled-17.png) Save the interface and add this child interface as ichained interface in the parent response interface related tab ![](../images/2020/05/Untitled-18.png) Add the foreign key field to link to the parent quote interface as shown below ![](../images/2020/05/Untitled-35.png) Download the inbound and outbound parent interface WSDL's and upload it into SAP PO for mapping. Create external definition for outbound and inbound interfaces in SAP PO Outbound External definition: ![](../images/2020/05/Untitled-36.png) Import the WSDL and Save and activate it. Inbound External Definition: ![](../images/2020/05/Untitled-37.png) It’s a Salesforce to SAP outbound interface sending quote information to SAP. SAP side we are using RFC. So no need to create data type, message type and service interface for the target side. Create Outbound Service interface: ![](../images/2020/05/Untitled-38.png) Provide the necessary details as shown and then save and activate it. - **Message mapping** Create request and response message mapping as shown below. **Request Mapping - ** Select the Source structure and target structure and complete the mapping. ![](../images/2020/05/Untitled-39.png) **Response Mapping - ** ![](../images/2020/05/Untitled-40.png) Now save and activate both the mappings - **Operation Mapping ** Create Operation mapping as shown below. Now select the inbound and outbound service interfaces and the respective request and response mappings. This is for request mapping ![](../images/2020/05/Untitled-41.png) Response Mapping ![](../images/2020/05/Untitled-42.png) Then save and activate the operation mapping. - **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/05/Untitled-27.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. - **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. We are using SOAP adapter in the sender channel ![](../images/2020/05/Untitled-26.png) Provide the necessary details. After that save and activate the channel. - **Configuring the RFC receiver channel** ![](../images/2020/05/Untitled-25.png) - **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2020/05/Untitled-24.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2020/05/Untitled-23.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/05/Untitled-19.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2020/05/Untitled-22.png) - **Testing the Outbound synchronous Interface.** Callout from skyvva from developer console using the below apex code skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q03N000000HZYbSAO'}; skyvvasolutions.Iservices.invokeCalloutV3('SOAPV3','Quote_Sync_Out',ids,'SYNC', c); We can see the message status in the message monitor ![](../images/2020/05/Untitled-21.png) Quote Id is updated in salesforce ![](../images/2020/05/Untitled-20.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound synchronous interface in SAP PI/PO using SKYVVA REST V3 Adapter? Title: 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA REST V3 Adapter? Slug: how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-rest-v3-adapter URL: https://help.skyvva.com/#article/how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-rest-v3-adapter ================================================================================ # 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA REST V3 Adapter? This document describes how to create an outbound Synchronous interface in SAP PO with SKYVVA V3 REST Adapter For REST V3 we have to create the message type in skyvva as explained below. **REST V3 message type template:** ****We use a standard message type template for REST Adapter { "REST Service": { "Request": { "URL": {}, "Header": {}, "Body": { "Quote": { "QuoteLineItem": {} } } }, "Response": { "root": { "Quote": { "QuoteLineItem": {} } } } } } Initially we have to create Metadata Provider. ![](../images/2020/05/Untitled-44.png) Now create Istructure repository ![](../images/2020/05/Untitled-45.png) Now create Message type for hierarchical request and response interface. ![](../images/2020/12/Untitled-76.png) ![](../images/2020/05/Untitled-108.png) Now we have to use the message type in both request and response interface. Provide the details as shown below ![](../images/2020/05/Untitled-85.png) ![](../images/2020/05/Untitled-86.png) ![](../images/2020/05/Untitled-87.png) Use this adapter in the skyvva outbound request interface. In this example, I have created the interface under "**SAP PI/PO Integration App V1"** - **Create Outbound request interface ** ![](../images/2020/05/Untitled-48.png) ![](../images/2020/05/Untitled-49.png) ![](../images/2020/05/Untitled-50.png) If we use the message type defined in skyvva then we have to do mapping in skyvva as shown. ![](../images/2020/05/Untitled-51.png) ![](../images/2020/05/Untitled-52.png) ![](../images/2020/05/Untitled-53.png) Now save the mapping and the outbound interface. - **Create an inbound response interface** ![](../images/2020/05/Untitled-109.png) ![](../images/2020/05/Untitled-15.png) Do the mapping for inbound response interface ![](../images/2020/05/Untitled-110.png) ![](../images/2020/05/Untitled-111.png) ![](../images/2020/05/Untitled-112.png) Save the mapping and the inbound response interface. Download the inbound and outbound interface XSD's and upload it into SAP PO for mapping. For Outbound interface XSD download the XSD from message type as shown below ![](../images/2020/05/Untitled-113.png) ![](../images/2020/05/Untitled-114.png) Use the exported XSD file to import into SAP PO mapping. For Inbound Interface XSD download do the same export metadata from skyvva message type as we did for outbound interface XSD. ![](../images/2020/05/Untitled-116.png) ![](../images/2020/05/Untitled-117.png) Use the exported file to import it into SAP PO for mapping. In this example we are going to use datatype for Skyvva Request and Response interface. **Request Skyvva Datatype:** ![](../images/2020/05/Untitled-65.png) **Response Skyvva Datatype:** ![](../images/2020/05/Untitled-66.png) **Request Skyvva Messagetype:** ![](../images/2020/05/Untitled-67.png) **Response Skyvva Messagetype:** ![](../images/2020/05/Untitled-68.png) It’s a Salesforce to SAP outbound interface sending quote information to SAP. SAP side we are using RFC. So no need to create data type, message type and service interface for the target side. Create Outbound Service interface: ![](../images/2020/05/Untitled-69.png) Provide the necessary details as shown and then save and activate it. - **Message mapping** Create request and response message mapping as shown below. **Request Mapping - ** Select the Source structure and target structure and complete the mapping. ![](../images/2020/05/Untitled-70.png) **Response Mapping - ** ![](../images/2020/05/Untitled-71.png) Now save and activate both the mappings - **Operation Mapping ** Create Operation mapping as shown below. Now select the inbound and outbound service interfaces and the respective request and response mappings. This is for request mapping ![](../images/2020/05/Untitled-72.png) Response Mapping ![](../images/2020/05/Untitled-73.png) Then save and activate the operation mapping. - **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/05/Untitled-74.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. - **Configuring the Sender REST communication channel** Create sender communication channel as shown below. We are using REST adapter in the sender channel Configuration for Tab "General" ![](../images/2020/05/Untitled-75.png) ![](../images/2020/05/Untitled-76.png) Tab Channel Selection: ![](../images/2020/05/Untitled-77.png) Tab REST Resources: ![](../images/2020/05/Untitled-78.png) Tab REST Operation: ![](../images/2020/05/Untitled-79.png) Provide the necessary details. After that save and activate the channel. - **Configuring the RFC receiver channel** ![](../images/2020/05/Untitled-25.png) - **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2020/05/Untitled-80.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2020/05/Untitled-81.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/05/Untitled-82.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2020/05/Untitled-83.png) - **Testing the Outbound synchronous Interface.** Callout from skyvva from developer console using the below apex code skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q03N000000HZYbSAO'}; skyvvasolutions.Iservices.invokeCalloutV3('SOAPV3','REST_Quote_Out',ids,'SYNC', c); We can see the message status in the message monitor ![](../images/2020/05/Untitled-84.png) Quote Id is updated in salesforce ![](../images/2020/05/Untitled-20.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to pass URL Path Parameter and URL Query Parameter in REST Adapter? Title: 1. How to pass URL Path Parameter and URL Query Parameter in REST Adapter? Slug: how-to-pass-url-path-parameter-and-url-query-parameter-in-rest-adapter URL: https://help.skyvva.com/#article/how-to-pass-url-path-parameter-and-url-query-parameter-in-rest-adapter ================================================================================ # 1. How to pass URL Path Parameter and URL Query Parameter in REST Adapter? This document explains us about how to pass URL path and URL Query parameter in REST Adapter. The example that follow are based on a REST sender request calling an RFC in ECC.  Only the steps relevant to using the REST adapter are shown. **Enterprise Service Repository** **URL Path Parameter:** Create a dummy message type for the request message ![](../images/2020/05/Untitled-91.png) For the request message mapping populate fields with constants where required ![](../images/2020/05/Untitled-93.png) For fields where the data will be passed in from the URL. **REST SENDER ADAPTER Configuration for URL path parameter–** Set input data format as JSON and tick ‘Convert to XML’ and ‘Add Wrapper Element’ Enter Element Name/Namespace as per Root node of expected message (Request message) ![](../images/2020/05/Untitled-105.png) Above settings will convert JSON to PI required format Change output data format to JSON and tick ‘Convert XML payload to JSON’ (could leave output as xml if required) ![](../images/2020/05/Untitled-95.png) On Channel Selection tab specify endpoint ![](../images/2020/05/Untitled-96.png) Enter the name of resource the client will call ![](../images/2020/05/Untitled-102.png) **REST Operation Tab:** ![](../images/2020/05/Untitled-98.png) On Operation Determination tab set pointer to the interface to call (assume needs this since no payload was passed?).  In the below example Operation and Namespace are set to the Name and namespace of the request Message Type respectively. ![](../images/2020/05/Untitled-103.png) In SOAPUI Method = ‘GET’ Endpoint = ‘http://{host}:{port}/RESTAdapter’ Resource = Endpoint value specified above in communication channel plus the URL pattern ![](../images/2020/05/Untitled-99.png) So in the above example data is retrieved for customer 0000000002 To run for a different customer just change the last value **URL Query Parameter:** For query parameters create function to read the data from the dynamic attributes of the message public String getASMA(String attribute, String namespace, Container container) throws StreamTransformationException{ Map map = container.getTransformationParameters(); DynamicConfiguration conf = (DynamicConfiguration)map.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION); DynamicConfigurationKey key = DynamicConfigurationKey.create( namespace, attribute); String value = conf.get(key); return value; } Use UDF in mapping ![](../images/2020/05/Untitled-92.png) Where ‘attribute’ field in UDF (constant ‘id’ in this example) = Name of Dynamic attribute in communication channel (see further down for details on setting this up) ![](../images/2020/05/Untitled-100.png) And ‘namespace’ field in UDF is set to: http://sap.com/xi/XI/System/REST **Integration Directory:** Configure Sender REST adapter Does not matter what the input message format is since no payload sent with GET requests Output message can be XML or JSON ![](../images/2020/05/Untitled-94.png) ![](../images/2020/05/Untitled-95.png) On Channel Selection tab tick specify endpoint as required ![](../images/2020/05/Untitled-96.png) On REST Resources tab set URL Pattern to ‘Custom Pattern’  and the remaining settings as shown below ![](../images/2020/05/Untitled-106.png) On Operation Determination tab set pointer to the interface to call (assume needs this since no payload was passed?).  In the below example Operation and Namespace are set to the Name and namespace of the request Message Type respectively. ![](../images/2020/05/Untitled-103.png) **SOAP UI** Method = ‘GET’ Endpoint = ‘http://{host}:{port}/RESTAdapter’ Resource = Endpoint value specified above in communication channel plus the URL pattern ![](../images/2020/05/Untitled-104.png) So in the above example data is retrieved for customer 0000000002 To run for a different customer just change the last value ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to send an acknowledgement from SKYVVA to SAP? Title: 1. How to send an acknowledgement from SKYVVA to SAP? Slug: how-to-create-skyvva-inbound-acknowledgement-handling-interface-with-sap-pi-po URL: https://help.skyvva.com/#article/how-to-create-skyvva-inbound-acknowledgement-handling-interface-with-sap-pi-po ================================================================================ # 1. How to send an acknowledgement from SKYVVA to SAP? This document explains us about how to get an acknowledgement from SKYVVA after we have sent message to SKYVVA. The process starts from SAP where with the inbound interface message is send asynchronously to SKYVVA. Then SKYVVA will send to SAP an acknowledgement using for example IDOC Number. When SAP send the inbound message to SKYVVA it will send the IDOC Number. This IDOC number has to send back in the acknowledgment message. If the SAP IDOC number is not sent back with the acknowledgement message from SKYVVA then the correlation on SAP side cannot be done. Figure below depicts the actual flow of the message. The flow starts from SAP to Salesforce and we get the acknowledgement from Salesforce to SAP. ![](../images/2020/06/Untitled-176.png) Steps needs to be done in Skyvva - Create Asynchronous Request Inbound Interface - Create Asynchronous Response outbound Interface to send the acknowledgement to SAP. Acknowledgment handling works only with Skyvva message type. Create Metadata Provider: ![](../images/2020/06/Untitled.png) Create IStructure Repository: ![](../images/2020/06/Untitled-1.png) Create Message type: In this example I am using SOAP V3 adapter. So, I am using soap template message type for Outbound response interface. For Inbound we can use normal message type as shown. { "Google SOAP Service": { "Request": { "HTTP Header": { }, "URL Query Parameter": { }, "SOAP Header": { "SessionHeader": { "SessionId": "" } }, "SOAP Body": { "Account_Out": { "Account": { "skyvvasolutions__STATUS__c": "", "skyvvasolutions__DOCNUM__c": "", "skyvvasolutions__SAP_Customer_ID__c": "" } } } } } } { "Account": { "BillingCity": "", "skyvvasolutions__SAP_Customer_ID__c": "", "Phone": "", "Name": "", "BillingCountry": "", "BillingPostalCode": "", "BillingState": "", "BillingStreet": "", "Fax": "", "Industry": "" } } } ![](../images/2020/06/Untitled-2.png) Creating new a SAP PI/PO Adapter with adapter type SOAP for outbound call: For this we need to go to Integration details tab and select SAP Control board ![](../images/2020/06/Untitled-6.png) ![](../images/2020/06/Untitled-7.png) ![](../images/2020/06/Untitled-3.png) ![](../images/2020/06/Untitled-4.png) ![](../images/2020/06/Untitled-5.png) **Inbound Request Interface - ** In this example i am creating the interfaces under "**Acknowledgement Handling" **Integration ![](../images/2020/06/Untitled-8.png) ![](../images/2020/06/Untitled-9.png) ![](../images/2020/06/Untitled-10.png) ![](../images/2020/06/Untitled-11.png) Do the mapping as shown below ![](../images/2020/06/Untitled-12.png) **Create Outbound Response Interface:** ![](../images/2020/06/Untitled-14.png) ![](../images/2020/06/Untitled-15.png) ![](../images/2020/06/Untitled-16.png) ![](../images/2020/06/Untitled-17.png) Do the mapping as shown ![](../images/2020/06/Untitled-18.png) With SAP PO Acknowledgment we only use  TransferId__c as the Correlation Id. It is hardcoded in Skyvva connector module. Download the inbound and outbound interface WSDL's to import to SAP PO for mapping. In SAP PI/PO we need to create two Asynchronous interfaces One for Request from SAP to Skyvva and one for the response from Skyvva to SAP **Request Interface(SAP to Salesforce)** **Import WSDL into ESR** First, we have to create a namespace in ESR like "http://DEBMAS07_to_AccountUpdate". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as ED_Ack_IN ![](../images/2020/06/Untitled-19.png) We have to add the Correlation field into WSDL manually ![](../images/2020/06/Untitled-20.png) As we are using this field as a correlationId(TransferId__c) Now import the WSDL and Save and activate it. No need to create Datatype, Messagetype and Service Interface for Sender system SAP as we are using IDOC as a source. **Service Interface** Create service interface ![](../images/2020/06/Untitled-21.png) Now click on Save and activate it. **Message mapping** ![](../images/2020/06/Untitled-22.png) As we are sending the IDOC number as CorrelationId to Skyvva Do the respective mapping and save and activate it. **Operation Mapping for asynchronous inbound interface** Create Operation mapping. ![](../images/2020/06/Untitled-23.png) Then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario.Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/06/Untitled-24.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender Idoc communication channel** Create sender communication channel as shown below. Since we are using an IDOC as a source. So, here we are using IDoc adapter in the sender channel. ![](../images/2019/06/Untitled-40.png) Provide the necessary details. After that save and activate the channel. **10. Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/06/Untitled-21.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. ![](../images/2020/06/Untitled-25.png) ![](../images/2020/06/Untitled-26.png) Configuration of module parameters are described in detail below **Skyvva Module Parameters** **"Skyvva/V3/Integration"** to be used with SOAP receiver channels. Module parameters are outlined below ![](../images/2020/02/Untitled-49.png) ![](../images/2019/06/Untitled-128.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2019/06/Untitled-129.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2019/06/Untitled-130.png) In Receiver interfaces tab specify the operation mapping and also the values of the parameters. The parameter Account_Update_In is the interface name (on Skyvva side) of the interface Account. ![](../images/2019/06/Untitled-131.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2019/06/Untitled-132.png) **Response Interface(Salesforce to SAP)** **Import WSDL into ESR** First, we have to create a namespace in ESR like "[http://DEBMAS07_to_AccountUpdate](http://Account_to_DEBMAS07_Ack)". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as ED_Account_Ack ![](../images/2020/06/Untitled-27.png) Now import the WSDL and Save and activate it. No need to create Datatype, Messagetype and Service Interface for Target system SAP as we are using IDOC as a Target **Service Interface** Create service interface ![](../images/2020/06/Untitled-28.png) Now click on Save and activate it. **Message mapping** ![](../images/2020/06/Untitled-29.png) As we are sending the IDOC number back as a acknowledgement from Skyvva Do the respective mapping and save and activate it. **Operation Mapping for asynchronous inbound interface** Create Operation mapping. ![](../images/2020/06/Untitled-30.png) Then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario.Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/06/Untitled-31.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using an SOAP as a source. So, here we are using SOAP adapter in the sender channel. ![](../images/2020/06/Untitled-32.png) Provide the necessary details. After that save and activate the channel. **Configuring the IDOC receiver channel** ![](../images/2020/06/Untitled-33.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2020/06/Untitled-34.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2020/06/Untitled-35.png) In Receiver interfaces tab specify the operation mapping ![](../images/2020/06/Untitled-36.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2020/06/Untitled-37.png) **Testing the interface - ** Triggering the data from SAP ![](../images/2020/06/Untitled-38.png) In the Inbound interface we can see the transferId which is IDOC number from SAP ![](../images/2020/06/Untitled-39.png) We got the DOCNUM as acknowledgemnt from Skyvva ![](../images/2020/06/Untitled-40.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to send an acknowledgement from SAP to SKYVVA? Title: 1. How to send an acknowledgement from SAP to SKYVVA? Slug: how-to-create-skyvva-outbound-acknowledgement-handling-interface-with-sap-pi-po URL: https://help.skyvva.com/#article/how-to-create-skyvva-outbound-acknowledgement-handling-interface-with-sap-pi-po ================================================================================ # 1. How to send an acknowledgement from SAP to SKYVVA? This document explains us about how to get an acknowledgement from SAP after we have sent message to SAP. The process starts from Salesforce where with the outbound interface message is send asynchronously to SAP. Then SAP will send to Salesforce an acknowledgement using for example the acknowledgment IDOC or another message. When Skyvva send the outbound message to SAP it will send the Salesforce Id and the Skyvva message Id. The Skyvva Message Id has to be send back in the acknowledgment message. If the Skyvva message Id is not sent back with the acknowledgement message from SAP then the correlation on Skyvva side cannot be done. Figure below depicts the actual flow of the message. ![](../images/2020/06/Untitled-178.png) In the real scenario we have to route the skyvva message id to SAP back-end into an idoc field, then sap-back-end will send the skyvva message id back to SKYVVA as an acknowledgement. Note: Currently we are just showing the response message (SKYVVA__MessageId) coming from PO. Because our SAP system is not able handle the acknowledgements. But usually it should come from SAP. Steps needs to be done in Skyvva - Create Asynchronous Request Outbound Interface - Create Asynchronous Response Inbound Interface to get the Skyvva message Id back from SAP. Acknowledgment handling works only with Skyvva message type. Create Metadata Provider: ![](../images/2020/06/Untitled-41.png) Create Istructure Repository: ![](../images/2020/06/Untitled-42.png) Create Message type: In this example i am using SOAP V3 adapter. So, i am using soap template message type for Outbound request interface. For Inbound we can use normal message type as shown. { "Google SOAP Service": { "Request": { "HTTP Header": { }, "URL Query Parameter": { }, "SOAP Header": { "SessionHeader": { "SessionId": "" } }, "SOAP Body": { "Account_Out": { "Account": { "BillingCity": "", "skyvvasolutions__SAP_Customer_ID__c": "", "Phone": "", "Name": "", "BillingCountry": "", "BillingPostalCode": "", "BillingState": "", "BillingStreet": "", "Fax": "", "Industry": "", "SKYVVA__MessageId: "" } } } } } } { "Account": { "BillingCity": "", "skyvvasolutions__SAP_Customer_ID__c": "", "Phone": "", "Name": "", "BillingCountry": "", "BillingPostalCode": "", "BillingState": "", "BillingStreet": "", "Fax": "", "Id": "" } } ![](../images/2020/06/Untitled-43.png) Creating new a SAP PI/PO Adapter with adapter type SOAP for outbound call: For this we need to go to Integration details tab and select SAP Control board ![](../images/2020/06/Untitled-44.png) Now go to Adapter Tab and click on New button to create new SAP PI/PO Adapter ![](../images/2020/06/Untitled-45.png) ![](../images/2020/06/Untitled-46.png) ![](../images/2020/06/Untitled-4.png) ![](../images/2020/06/Untitled-5.png) **Outbound Request Interface - ** In this example i am creating the interfaces under "**Outbound** **Acknowledgement" **Integration ![](../images/2020/06/Untitled-47.png) ![](../images/2020/06/Untitled-48.png) ![](../images/2020/06/Untitled-49.png) ![](../images/2020/06/Untitled-17.png) Do the mapping as shown below ![](../images/2020/06/Untitled-50.png) The field SKYVVA__MessageId will be in the XSD when we create it as message type field entry for the message type 'Account' from the Repository page. We have to use the formulae GETMESSAGEID() to read the SKYVVA message Id and it will reach to SAP. SAP uses this Message ID and send back as an acknowledgement message. **Create Inbound Response Interface:** ![](../images/2020/06/Untitled-51.png) ![](../images/2020/06/Untitled-52.png) ![](../images/2020/06/Untitled-10.png) ![](../images/2020/06/Untitled-11.png) Do the mapping as shown below ![](../images/2020/06/Untitled-12.png) Download the inbound and outbound interface WSDL's to import to SAP PO for mapping. In SAP PI/PO we need to create two Asynchronous interfaces One for Request from Skyvva to SAP and one for the response from SAP to Skyvva **Request Interface(Salesforce to SAP)** **Import WSDL into ESR** Initially, we have to create a namespace in ESR like "**http://Account_to_DEBMAS07_Customer**". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as "**Account_Ack_Out**" ![](../images/2020/06/Untitled-53.png) Now import the WSDL and Save and activate it. No need to create Datatype, Messagetype and Service Interface for Target system SAP as we are using IDOC **Service Interface** Create outbound service interface ![](../images/2020/06/Untitled-54.png) Now click on Save and activate it. **Message mapping** ![](../images/2020/06/Untitled-55.png) Do the respective mapping and save and activate it. **Operation Mapping for asynchronous Outbound interface** Create Operation mapping. ![](../images/2020/06/Untitled-56.png) Then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/06/Untitled-57.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using an SOAP as a source. So, here we are using SOAP adapter in the sender channel. ![](../images/2020/06/Untitled-32.png) Provide the necessary details. After that save and activate the channel. **Configuring the IDOC receiver channel** ![](../images/2020/06/Untitled-33.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2020/06/Untitled-34.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2020/06/Untitled-35.png) In Receiver interfaces tab specify the operation mapping ![](../images/2020/06/Untitled-36.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2020/06/Untitled-37.png) **Response Interface(SAP to Salesforce)** **Import WSDL into ESR** First, we have to create a namespace in ESR like "[http://DEBMAS07_to_AccountUpdate](http://Account_to_DEBMAS07_Ack)". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as ED_Ack_IN. In the Inbound interface WSDL the SKYVVA__MessageId system field show be present. So that we can map the respective IDOC field to get the message Id to the SKYVVA__MessageId field. ![](../images/2020/06/Untitled-172.png) Now import the WSDL and Save and activate it. No need to create Datatype, Messagetype and Service Interface for Sender system SAP as we are using IDOC as a source. **Service Interface** Create service interface ![](../images/2020/06/Untitled-21.png) Now click on Save and activate it. **Message mapping** Here we need to map from an idoc field where the skyvva message id is stored to the field SKYVVA__MessageId to the Skyvva system field "**SKYVVA__MessageId**". But here in this example we are not sending the MessageId from SAP because currently our SAP system is not handling the IDOC acknowledgements. So in this example we are sending the message Id directly from SAP PO to Skyvva. ![](../images/2020/06/Untitled-173.png) Do the respective mapping and save and activate it. **Operation Mapping for asynchronous inbound interface** Create Operation mapping. ![](../images/2020/06/Untitled-23.png) Then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario.Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/06/Untitled-24.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender Idoc communication channel** Create sender communication channel as shown below. Since we are using an IDOC as a source. So, here we are using IDoc adapter in the sender channel. ![](../images/2019/06/Untitled-40.png) Provide the necessary details. After that save and activate the channel. **10. Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/06/Untitled-21.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. ![](../images/2020/06/Untitled-64.png) ![](../images/2020/06/Untitled-26.png) Configuration of module parameters are described in detail below **Skyvva Module Parameters** **"Skyvva/V3/Integration"** to be used with SOAP receiver channels. Module parameters are outlined below **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Lalitha_Test_Integration SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://test.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation in skyvva integrate pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2019/06/Untitled-129.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2019/06/Untitled-130.png) In Receiver interfaces tab specify the operation mapping and also the values of the parameters. The parameter Account_Update_In is the interface name (on Skyvva side) of the interface Account. ![](../images/2019/06/Untitled-131.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2019/06/Untitled-132.png) **Testing the Interface - ** Triggering the data from SKYVVA using the below apex code skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013N00000P9QVOQA3'}; skyvvasolutions.Iservices.invokeCalloutV3('Outbound Acknowledgement','Account_Out',ids,'AUTO', c); ![](../images/2020/06/Untitled-62.png) In the inbound interface we can see the SKYVVA_MessageId back from SAP ![](../images/2020/06/Untitled-63.png) This means we got the acknowledgement from SAP ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO adapter using REST Protocol with URL Query parameter? Title: 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO adapter using REST Protocol with URL Query parameter? Slug: how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-sap-pi-po-adapter-using-rest-protocol-with-url-path-and-query-parameter URL: https://help.skyvva.com/#article/how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-sap-pi-po-adapter-using-rest-protocol-with-url-path-and-query-parameter ================================================================================ # 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO adapter using REST Protocol with URL Query parameter? This document describes how to create an outbound Synchronous interface in SAP PO using SKYVVA SAP PI/PO Adapter using REST Protocol to pass the URL Query Parameter For REST V3 we have to create the message type in skyvva as explained below. **REST V3 message type template:** We use a standard message type template for REST Adapter { "REST Service": { "Request": { "URL": { "URL_Path_Parameter": "", "URL_Query_Parameter": "" }, "Header": {}, "Body": { "Quote_Header_Request": { "QuoteLineItem": { } } } }, "Response": { "root": { "Quote": { "QuoteLineItem": { } } } } } } Initially we have to create Metadata Provider. ![](../images/2020/05/Untitled-44.png) Now create Istructure repository ![](../images/2020/05/Untitled-45.png) Now create Message type for hierarchical request and response ![](../images/2020/06/Untitled-179.png) ![](../images/2020/06/Untitled-181.png) ![](../images/2020/05/Untitled-108.png) Now we have to use the message type in both request and response interfaces. **Creation of Outbound SAP PI/PO Adapter with REST Protocol:** **To pass URL Query parameter**: Provide the details as shown below To create SAP PI/PO Adapter we have to go to Integration details tab and then select "**SAP Control board**" as shown ![](../images/2020/06/Untitled-65.png) Select Adapter tab and then click on new to create Adapter ![](../images/2020/06/Untitled-66.png) ![](../images/2020/06/Untitled-69.png) ![](../images/2020/06/Untitled-175.png) ![](../images/2020/06/Untitled-174.png) Salesforce Id Handling - It means the salesforce Id will come back along with the Response message to update the existing account in order to avoid the new record creation. Save the adapter and use this in the skyvva outbound request interface. In this example, I have created the interface under "**SAP PI/PO Integration App V1"** - **Create Outbound request interface ** ![](../images/2020/05/Untitled-48.png) ![](../images/2020/05/Untitled-49.png) ![](../images/2020/05/Untitled-50.png) If we use the message type defined in skyvva then we have to do mapping in skyvva as shown. ![](../images/2020/05/Untitled-51.png) ![](../images/2020/05/Untitled-52.png) ![](../images/2020/05/Untitled-53.png) Now save the mapping and the outbound interface. - **Create an inbound response interface** ![](../images/2020/05/Untitled-109.png) ![](../images/2020/05/Untitled-15.png) Do the mapping for inbound response interface ![](../images/2020/05/Untitled-110.png) ![](../images/2020/05/Untitled-111.png) ![](../images/2020/05/Untitled-112.png) Save the mapping and the inbound response interface. Download the inbound and outbound interface XSD's and upload it into SAP PO for mapping. For Outbound interface XSD download the XSD from message type as shown below ![](../images/2020/05/Untitled-113.png) ![](../images/2020/05/Untitled-114.png) Use the exported XSD file to import into SAP PO mapping. For Inbound Interface XSD download do the same export metadata from skyvva message type as we did for outbound interface XSD. ![](../images/2020/05/Untitled-116.png) ![](../images/2020/05/Untitled-117.png) Use the exported file to import it into SAP PO for mapping. In this example we are going to use datatype for Skyvva Request and Response interface **Request Skyvva Datatype:** ![](../images/2020/05/Untitled-65.png) **Response Skyvva Datatype:** ![](../images/2020/05/Untitled-66.png) **Request Skyvva Messagetype:** ![](../images/2020/05/Untitled-67.png) **Response Skyvva Messagetype:** ![](../images/2020/05/Untitled-68.png) It’s a Salesforce to SAP outbound interface sending quote information to SAP. SAP side we are using RFC. So no need to create data type, message type and service interface for the target side. Create Outbound Service interface: ![](../images/2020/05/Untitled-69.png) Provide the necessary details as shown and then save and activate it. - **Message mapping** Create request and response message mapping as shown below. **Request Mapping - ** Select the Source structure and target structure and complete the mapping. For query parameters create function to read the data from the dynamic attributes of the message public String getASMA(String attribute, String namespace, Container container) throws StreamTransformationException{ Map map = container.getTransformationParameters(); DynamicConfiguration conf = (DynamicConfiguration)map.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION); DynamicConfigurationKey key = DynamicConfigurationKey.create( namespace, attribute); String value = conf.get(key); return value; } Use UDF in mapping ![](../images/2020/06/Untitled-71.png) Where ‘attribute’ field in UDF (constant ‘id’ in this example) = Name of Dynamic attribute in communication channel (see further down for details on setting this up) ![](../images/2020/06/Untitled-80.png) And ‘namespace’ field in UDF is set to: http://sap.com/xi/XI/System/REST **Response Mapping - ** ![](../images/2020/05/Untitled-71.png) Now save and activate both the mappings - **Operation Mapping ** Create Operation mapping as shown below. Now select the inbound and outbound service interfaces and the respective request and response mappings. This is for request mapping ![](../images/2020/05/Untitled-72.png) Response Mapping ![](../images/2020/05/Untitled-73.png) Then save and activate the operation mapping. - **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/05/Untitled-74.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. - **Configuring the Sender REST communication channel** Create sender communication channel as shown below. We are using REST adapter in the sender channel Configuration for Tab "General" ![](../images/2020/05/Untitled-75.png) ![](../images/2020/05/Untitled-76.png) Tab Channel Selection: ![](../images/2020/06/Untitled-72.png) Tab REST Resources: ![](../images/2020/06/Untitled-74.png) Tab REST Operation: ![](../images/2020/05/Untitled-79.png) Provide the necessary details. After that save and activate the channel. - **Configuring the RFC receiver channel** ![](../images/2020/05/Untitled-25.png) - **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2020/05/Untitled-80.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2020/05/Untitled-81.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/05/Untitled-82.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2020/05/Untitled-83.png) - **Testing the Outbound synchronous Interface.** Callout from skyvva from developer console using the below apex code skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q03N000000HZYbSAO'}; skyvvasolutions.Iservices.invokeCalloutV3('SAP PI/PO Integration App V1','REST_Quote_Out',ids,'SYNC', c); We can see the message status in the message monitor ![](../images/2020/05/Untitled-84.png) Quote Id is updated in salesforce ![](../images/2020/05/Untitled-20.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO adapter using REST Protocol with URL Path parameter? Title: 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO adapter using REST Protocol with URL Path parameter? Slug: how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-sap-pi-po-adapter-using-rest-protocol-with-url-path-parameter URL: https://help.skyvva.com/#article/how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-sap-pi-po-adapter-using-rest-protocol-with-url-path-parameter ================================================================================ # 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO adapter using REST Protocol with URL Path parameter? This document describes how to create an outbound Synchronous interface in SAP PO using SKYVVA SAP PI/PO Adapter using REST Protocol to pass the URL Path Parameter For REST V3 we have to create the message type in skyvva as explained below. **REST V3 message type template:** ****We use a standard message type template for REST Adapter { "REST Service": { "Request": { "URL": { "URL_Path_Parameter": "", "URL_Query_Parameter": "" }, "Header": {}, "Body": { "Quote_Header_Request": { "skyvvasolutions__SAP_Requested_Delivery_Date__c": "", "skyvvasolutions__SAP_Sales_Org__c": "", "skyvvasolutions__SAP_Distribution_Channel__c": "", "skyvvasolutions__SAP_Division__c": "", "skyvvasolutions__SAP_Group__c": "", "Id": "", "Name": "", "OpportunityId": "", "skyvvasolutions__SAP_Offer_Valid_To__c": "", "skyvvasolutions__SAP_Offer_valid_from__c": "", "QuoteLineItem": { "Id": "", "OpportunityLineItemId": "", "LineNumber": "", "Quantity": "", "skyvvasolutions__SAP_Material_Number__c": "", "skyvvasolutions__SAP_Customer_Number__c": "" } } } }, "Response": { "root": { "Quote": { "Name": "", "Id": "", "OpportunityId": "", "skyvvasolutions__SAP_Quote_ID__c": "", "Status": "", "QuoteNumber": "", "QuoteLineItem": { "Id": "", "Quantity": "", "OpportunityLineItemId": "", "QuoteId": "", "skyvvasolutions__SAP_Material_Number__c": "", "skyvvasolutions__SAP_Quote_Line_ID__c": "" } } } } } } Initially we have to create Metadata Provider. ![](../images/2020/05/Untitled-44.png) Now create Istructure repository ![](../images/2020/05/Untitled-45.png) Now create Message type for hierarchical request and response { "REST Service": { "Request": { "URL": { "URL_Path_Parameter": "", "URL_Query_Parameter": "" }, "Header": {}, "Body": { "Quote_Header_Request": { "skyvvasolutions__SAP_Requested_Delivery_Date__c": "", "skyvvasolutions__SAP_Sales_Org__c": "", "skyvvasolutions__SAP_Distribution_Channel__c": "", "skyvvasolutions__SAP_Division__c": "", "skyvvasolutions__SAP_Group__c": "", "Id": "", "Name": "", "OpportunityId": "", "skyvvasolutions__SAP_Offer_Valid_To__c": "", "skyvvasolutions__SAP_Offer_valid_from__c": "", "QuoteLineItem": { "Id": "", "OpportunityLineItemId": "", "LineNumber": "", "Quantity": "", "skyvvasolutions__SAP_Material_Number__c": "", "skyvvasolutions__SAP_Customer_Number__c": "" } } } }, "Response": { "root": { "Quote": { "Name": "", "Id": "", "OpportunityId": "", "skyvvasolutions__SAP_Quote_ID__c": "", "Status": "", "QuoteNumber": "", "QuoteLineItem": { "Id": "", "Quantity": "", "OpportunityLineItemId": "", "QuoteId": "", "skyvvasolutions__SAP_Material_Number__c": "", "skyvvasolutions__SAP_Quote_Line_ID__c": "" } } } } } } ![](../images/2020/06/Untitled-179.png) ![](../images/2020/06/Untitled-181.png) ![](../images/2020/05/Untitled-108.png) Now we have to use the message type in both request and response interface and also the child request and response interfaces **Creation of Outbound SAP PI/PO Adapter with REST Protocol:** **To pass URL Path parameter**: Provide the details as shown below To create SAP PI/PO Adapter we have to go to Integration details tab and then select "**SAP Control board**" as shown ![](../images/2020/06/Untitled-65.png) Select Adapter tab and then click on new to create Adapter ![](../images/2020/06/Untitled-66.png) ![](../images/2020/06/Untitled-69.png) ![](../images/2020/06/Untitled-75.png) ![](../images/2020/06/Untitled-76.png) Save the adapter and use this in the skyvva outbound request interface. In this example, I have created the interface under "**SAP PI/PO Integration App V1"** - **Create Outbound request interface ** ![](../images/2020/05/Untitled-48.png) ![](../images/2020/05/Untitled-49.png) ![](../images/2020/05/Untitled-50.png) If we use the message type defined in skyvva then we have to do mapping in skyvva as shown. ![](../images/2020/05/Untitled-51.png) ![](../images/2020/05/Untitled-52.png) ![](../images/2020/05/Untitled-53.png) Now save the mapping and the outbound interface. - **Create an inbound response interface** ![](../images/2020/05/Untitled-56.png) ![](../images/2020/05/Untitled-15.png) Do the mapping for inbound response interface ![](../images/2020/05/Untitled-57.png) ![](../images/2020/05/Untitled-58.png) ![](../images/2020/05/Untitled-59.png) Save the mapping and the inbound response interface. Download the inbound and outbound  interface XSD's and upload it into SAP PO for mapping. In this example we are going to use datatype for Skyvva Request and Response interface **Request Skyvva Datatype:** ![](../images/2020/05/Untitled-65.png) **Response Skyvva Datatype:** ![](../images/2020/05/Untitled-66.png) **Request Skyvva Messagetype:** ![](../images/2020/05/Untitled-67.png) **Response Skyvva Messagetype:** ![](../images/2020/05/Untitled-68.png) It’s a Salesforce to SAP outbound interface sending quote information to SAP. SAP side we are using RFC. So no need to create data type, message type and service interface for the target side. Create Outbound Service interface: ![](../images/2020/05/Untitled-69.png) Provide the necessary details as shown and then save and activate it. - **Message mapping** Create request and response message mapping as shown below. **Request Mapping - ** Select the Source structure and target structure and complete the mapping. For query parameters create function to read the data from the dynamic attributes of the message public String getASMA(String attribute, String namespace, Container container) throws StreamTransformationException{ Map map = container.getTransformationParameters(); DynamicConfiguration conf = (DynamicConfiguration)map.get(StreamTransformationConstants.DYNAMIC_CONFIGURATION); DynamicConfigurationKey key = DynamicConfigurationKey.create( namespace, attribute); String value = conf.get(key); return value; } Use UDF in mapping ![](../images/2020/06/Untitled-71.png) Where ‘attribute’ field in UDF (constant ‘id’ in this example) = Name of Dynamic attribute in communication channel (see further down for details on setting this up) ![](../images/2020/06/Untitled-78.png) And ‘namespace’ field in UDF is set to: http://sap.com/xi/XI/System/REST **Response Mapping - ** ![](../images/2020/05/Untitled-71.png) Now save and activate both the mappings - **Operation Mapping ** Create Operation mapping as shown below. Now select the inbound and outbound service interfaces and the respective request and response mappings. This is for request mapping ![](../images/2020/05/Untitled-72.png) Response Mapping ![](../images/2020/05/Untitled-73.png) Then save and activate the operation mapping. - **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/05/Untitled-74.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. - **Configuring the Sender REST communication channel** Create sender communication channel as shown below. We are using REST adapter in the sender channel Configuration for Tab "General" ![](../images/2020/05/Untitled-75.png) ![](../images/2020/05/Untitled-76.png) Tab Channel Selection: ![](../images/2020/06/Untitled-72.png) Tab REST Resources: ![](../images/2020/06/Untitled-79.png) Tab REST Operation: ![](../images/2020/05/Untitled-79.png) Provide the necessary details. After that save and activate the channel. - **Configuring the RFC receiver channel** ![](../images/2020/05/Untitled-25.png) - **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2020/05/Untitled-80.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2020/05/Untitled-81.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/05/Untitled-82.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2020/05/Untitled-83.png) - **Testing the Outbound synchronous Interface.** Callout from skyvva from developer console using the below apex code skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q03N000000HZYbSAO'}; skyvvasolutions.Iservices.invokeCalloutV3('SOAPV3','REST_Quote_Out',ids,'SYNC', c); We can see the message status in the message monitor ![](../images/2020/05/Untitled-84.png) Quote Id is updated in salesforce ![](../images/2020/05/Untitled-20.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to use the SKYVVA CDC Feature for an outbound interface with SAP PI/PO? Title: 1. How to use the SKYVVA CDC Feature for an outbound interface with SAP PI/PO? Slug: how-to-use-the-skyvva-cdc-feature-for-an-outbound-interface-with-sap-pi-po URL: https://help.skyvva.com/#article/how-to-use-the-skyvva-cdc-feature-for-an-outbound-interface-with-sap-pi-po ================================================================================ # 1. How to use the SKYVVA CDC Feature for an outbound interface with SAP PI/PO? This document describes us about how to use the SKYVVA CDC Feature for an outbound interface **Prerequisite for creating an Outbound interface** - The Skyvva solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. You start developing outbound interface when you want to send data from Salesforce over PO to SAP-Backend. Of course, you can send data from Salesforce to anywhere not just to SAP-PO. But the focus of this document is sending data from Salesforce over SAP-PO to SAP-Backend e.g. an SAP ECC 6.0. We are having three test cases to use this CDC Feature - CDD/CDT - Process Builder - Apex Trigger - **CDD/CDT:** **Creating an outbound adapter in Salesforce.** To Create an Adapter in Salesforce. Go to Integration tab and the select "SAP Control Board" as shown below. ![](../images/2020/06/Untitled-92.png) Go to Adapter tab and click on new ![](../images/2020/06/Untitled-93.png) ![](../images/2019/07/Untitled-37.png) ![](../images/2020/06/Untitled-94.png) ![](../images/2020/06/Untitled-95.png) ![](../images/2020/06/Untitled-97.png) Now specify the Name, description and select the type as SOAP Adapter. Here in the properties tab specify the endpoint of the receiver system for example here we are sending data to SAP PO. So here we have to specify the endpoint of SAP PO and the username and the password of the PO system. Since we are using SOAP Adapter. So, we need create message type with SOAP Template **Metadata Provider:** ![](../images/2020/06/Untitled-100.png) **Istructure Repository:** ![](../images/2020/06/Untitled-101.png) **Message Type:** ![](../images/2020/06/Untitled-102.png) **Creating an Outbound Asynchronous interface** Create Outbound interface as "Account_Out" and provide the necessary details. ![](../images/2020/06/Untitled-104.png) ![](../images/2020/06/Untitled-106.png) Specify the Outbound adapter as shown below. ![](../images/2020/06/Untitled-107.png) To use CDD/CDT outbound scheduler we need to do the below settings in the outbound interface ![](../images/2020/06/Untitled-108.png) If we use the CDC Mode as CDD then it will only change the data in the record but it will not transfer to the target system. If we choose CDT then it will transfer the change to the respective target system. If we choose none it will run as both modes like change and transfer the data to the target system. For the outbound interface mapping in skyvva interface is manadatory ![](../images/2020/06/Untitled-109.png) Download the WSDL and import it into SAP PO for mapping. - **Designing the objects in ESR** Import the Account WSDL as external definition into ESR and save activate it ![](../images/2020/06/Untitled-113.png) As we sending data to SAP. Here we are using DEBMAS07 Idoc as a target structure. Import Idoc from SAP and activate it. ![](../images/2019/08/Untitled-17.png) Create outbound service interface as shown below. ![](../images/2020/06/Untitled-114.png) Create message mapping as shown below ![](../images/2020/06/Untitled-115.png) Create Operation mapping as shown below ![](../images/2020/06/Untitled-116.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2020/06/Untitled-117.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using Salesforce as a source. So, here we are using SOAP  in the sender channel. ![](../images/2020/06/Untitled-119.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the IDOC receiver channel** ![](../images/2019/08/Untitled-24.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2020/06/Untitled-120.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2020/06/Untitled-122.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/06/Untitled-123.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/08/Image4-3.png) **Test the Outbound Interface with CDC outbound scheduler** Go to CDC Control Board ![](../images/2020/06/Untitled-125.png) Select the interface name ![](../images/2020/06/Untitled-126.png) Now go to scheduler tab to schedule the interface ![](../images/2020/06/Untitled-127.png) Here we have scheduled like after every record change the message will be processed for every 1 minute for both CDD and CDT. ![](../images/2020/06/Untitled-128.png) Now the scheduler is running. we need to change the data in the account object that change will be transfer to SAP system We have changed the Billing City value this change will be reflected into SAP ![](../images/2020/06/Untitled-130.png) Now we have saved the Munchin City to Munchin City 1 ![](../images/2020/06/Untitled-132.png) Now we can see the message in the message monitor ![](../images/2020/06/Untitled-133.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound asynchronous interface with the normal integrate operation in SAP PI/PO with V3 adapter module? Title: 1. How to create an inbound asynchronous interface with the normal integrate operation in SAP PI/PO with V3 adapter module? Slug: how-to-create-an-inbound-asynchronous-interface-with-the-normal-integrate-operation-in-sap-pi-po-with-v3-adapter-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-asynchronous-interface-with-the-normal-integrate-operation-in-sap-pi-po-with-v3-adapter-module ================================================================================ # 1. How to create an inbound asynchronous interface with the normal integrate operation in SAP PI/PO with V3 adapter module? This document explains us about how to create skyvva asynchronous inbound interface in SAP PI/PO with new V3 adapter module. And also, document briefs the implementation of SAP PI/PO and Salesforce interfaces which includes the testing as well. In this case considering Account as an object API at Salesforce end and message will be triggered from SAP ECC  to Salesforce using SAP PI/PO as middle-ware. ![](../images/2020/07/Untitled-63.png) Steps needs to be done in Skyvva Create Asynchronous Inbound Interface New V3 works only with Skyvva message type. To create the metadata provider, navigate to the MetaData Providers and create “New” and provide the metadata provider name. **Note:** Metadata provider name can be anything based on the project naming convention ![](../images/2022/03/Untitled-26.png) Create Metadata Provider: ![](../images/2020/07/Untitled.png) Once metadata provider created then go down and create “Repository” as shown in below screenshot. ![](../images/2020/07/Untitled-1.png) Create Message type: For Inbound we can use normal message type as shown. ![](../images/2020/07/Untitled-62.png) After providing the above highlighted details click on save to save the data. Then the message type will be created as shown below. This message type we use while creating the inbound interface. ![](../images/2020/07/Untitled-61.png) Use the above created Metadata provider, Repository and Message type details while creating the Inbound interface. **Inbound skyvva Interface - ** In this example we are creating the interfaces under "Lalitha_Test_Integration**"** Specify the Interface name, Description, Source/Target Name, Metadata Provider, Repository, Message type, Status, Direction and Operation Type as shown below ![](../images/2020/07/Untitled-3.png) ![](../images/2020/06/Untitled-10.png) Do the mapping as shown below ![](../images/2020/06/Untitled-12.png) Download the inbound interface XSD or WSDL to import to SAP PO for mapping. In SAP PI/PO we need to create Asynchronous interface **With respect to SAP its an outbound Interface(SAP to Salesforce)** **Import XSD or WSDL into ESR** First, we have to create a namespace in ESR like "http://DEBMAS07_to_AccountUpdate". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as ED_Ack_IN ![](../images/2020/07/Untitled-5.png) Now import the WSDL and Save and activate it. No need to create Datatype, Messagetype and Service Interface for Sender system SAP as we are using IDOC as a source. **Service Interface** Create service interface ![](../images/2020/07/Untitled-6.png) Now click on Save and activate it. **Message mapping** ![](../images/2020/07/Untitled-7.png) Do the respective mapping and save and activate it. **Operation Mapping for asynchronous inbound interface** Create Operation mapping. ![](../images/2020/06/Untitled-23.png) Then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/06/Untitled-24.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender Idoc communication channel** Create sender communication channel as shown below. Since we are using an IDOC as a source. So, here we are using IDoc adapter in the sender channel. ![](../images/2019/06/Untitled-40.png) Provide the necessary details. After that save and activate the channel. **10. Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/06/Untitled-21.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. ![](../images/2020/07/Untitled-8.png) ![](../images/2020/07/Untitled-9.png) Configuration of module parameters are described in detail below **Skyvva Module Parameters** **"Skyvva/V3/Integration"** to be used with SOAP receiver channels. Module parameters are outlined below **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Lalitha_Test_Integration SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://test.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation in skyvva integrate pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2019/06/Untitled-129.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2019/06/Untitled-130.png) In Receiver interfaces tab specify the operation mapping and also the values of the parameters. The parameter Account_Update_In is the interface name (on Skyvva side) of the interface Account. ![](../images/2019/06/Untitled-131.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2019/06/Untitled-132.png) **Testing the interface - ** Triggering the data from SAP ![](../images/2020/07/Untitled-10.png) Account data transferred to Skyvva ![](../images/2020/07/Untitled-11.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to pass Queue-ID into the URL parameter of the SAP-PI/PO using SKYVVA V3 SAP PI/PO Adapter with SOAP Protocol? Title: 1. How to pass Queue-ID into the URL parameter of the SAP-PI/PO using SKYVVA V3 SAP PI/PO Adapter with SOAP Protocol? Slug: how-to-pass-queue-id-into-the-url-parameter-of-the-sap-pi-po-using-skyvva-v3-sap-pi-po-adapter-with-soap-protocol URL: https://help.skyvva.com/#article/how-to-pass-queue-id-into-the-url-parameter-of-the-sap-pi-po-using-skyvva-v3-sap-pi-po-adapter-with-soap-protocol ================================================================================ # 1. How to pass Queue-ID into the URL parameter of the SAP-PI/PO using SKYVVA V3 SAP PI/PO Adapter with SOAP Protocol? This document describes how to create an outbound asynchronous interface with SAP PI/PO EOIO mode using SOAP Adapter. When talking about the outbound interface in this document the direction Salesforce to SAP is meant e.g. Salesforce Interface will be called from SAP-PO. The development of an outbound interface involves steps to be done in Salesforce and in PO. **Prerequisite for creating an Outbound interface** - The Skyvva solution framework has to be installed into your Salesforce instance. - An integration instance has been created - SAP-PO has been installed and set up correctly - Your workstation needs an internet browser IE or Firefox of the new release. You start developing outbound interface when you want to send data from Salesforce over PO to SAP-Backend. Of course, you can send data from Salesforce to anywhere not just to SAP-PO. But the focus of this document is sending data from Salesforce over SAP-PO to SAP-Backend e.g. an SAP ECC 6.0. - **Creating outbound Interface** The figure below depicts which steps to be followed to create an outbound interface with SAP PI/PO. ![](../images/2019/07/Untitled-34.png) - **Creating an outbound adapter in Salesforce.** To Create an Adapter in Salesforce. Go to Adapter tab as shown below. ![](../images/2019/07/Untitled-35.png) In the Adapter page. Click on New to create an adapter. ![](../images/2019/07/Untitled-37.png) ![](../images/2019/08/Image4-54.png) For EOIO mode we have to specify the “QueueId” in the endpoint as like below. **http://195.201.104.232:16080/sapo5b/XISOAPAdapter/MessageServlet?channel=Salesforce:CC_SOAP_s_IDOC_Account&QueueId=QueueName** In the QueueName, we have to give the name which we are defined in the sender channel of SAP PO. Now specify the Name, description and select the type as SOAP Adapter. Here in the properties tab specify the endpoint of the receiver system for example here we are sending data to SAP PO. So here we have to specify the endpoint of SAP PO and the username and the password of the PO system. Specify the payload format as XML as shown above. - **Create Metadata Provider** ![](../images/2019/07/Untitled-40.png) ![](../images/2019/07/Untitled-41.png) Here we are creating metadata for the message type. Metadata providers are plugins that do the actual metadata extraction from files. Metadata Provider tells the data processing layer of lib md which metadata fields (types) they can extract. In Skyvva, when we create metadata, the Name field is only the mandatory field. On MetaData the Name cannot be duplicated. - **Create IStructure repository** The term Repository is in fact to store data and structure of a message. The purpose of Istructure is An Interface for a structure that contains the metadata of a structure. ![](../images/2019/07/Untitled-42.png) **Create Message** **Type** Now Create Message Types for IStructure Repository. The free define message type is a type and structure definition which is stored in the Repository. The message type can be resided in a WSDL, in SAP IDoc, SAP Bapi, etc… It can be stored in a file in CSV, XML or other formats. For the Message Type, you have to use our defined Structure. As we are sending the Opportunity from Salesforce to create a project in SAP. Here we use  Account sObject. { "SOAP_Service": {//TYPE WILL BE : “WSDL Service” "SOAP_Request": {//SOAP_Request TYPE WILL BE : “WSDL Request” "SOAP_URLPARAM": { //TYPE WILL BE : “WSDL URL Parameter” "SOAP_URL_PATH": {}, // TYPE WILL BE : “WSDL Path Parameter” : This will use in to build Query path of Endpoint URL "SOAP_URL_QUERY": {} //TYPE WILL BE : “WSDL Query Parameter” : This will use in to build Query path of Endpoint URL }, "SOAP_Header": {},//TYPE WILL BE : “WSDL Header” : This is just of identify not need to include in building of request or response//Hear will be Actual Object which we suppose to insert in header of Request : Must be start by Object "SOAP_Body": {//TYPE WILL BE : “WSDL Body” : This is just of identify not need to include in building of request or response //Hear will be Actual Object which we suppose to insert in Body of Request : Must be start by Object "ISTRUCTURE_Account": { "Account": { "BillingCity": "", "SAP_Customer_Number__c": "" } } } }, "SOAP_Response": { //TYPE WILL BE : “WSDL Response” "SOAP_Header": {},//TYPE WILL BE : “WSDL Header” : This is just of identify not need to include in building of request or response "SOAP_Body": {//TYPE WILL BE : “WSDL Body” : This is just of identify not need to include in building of request or response //Hear will be Actual Object which we suppose to insert in Body of Response : Must be start by Object } } } } In Istructure repository click on "Open Editor" to create the message type as shown below. ![](../images/2019/07/Untitled-79.png) Select file type as JSON and give input to open text box as below: ![](../images/2019/07/Untitled-46.png) Click on the Save button and you can see the below message type. ![](../images/2019/08/Image4-61.png) **Creating an Outbound Asynchronous interface** Create Outbound interface as “Account_Async_Out” and provide the necessary details. ![](../images/2019/08/Image4-60.png) Specify the Outbound adapter as shown below. ![](../images/2019/08/Image4-56.png) Do the mapping in Skyvva as shown below. Here map the QueueId with the Id of the sObject. ![](../images/2019/08/Image4-58.png) ![](../images/2019/08/Image4-59.png) Then save the data mapping and then save the interface. Download the WSDL and import it into SAP PO for mapping. - **Designing the objects in ESR** Import the Account WSDL as external definition into ESR and save activate it ![](../images/2019/08/Untitled-16.png) As we sending data to SAP. Here we are using DEBMAS07 Idoc as a target structure. Import Idoc from SAP and activate it. ![](../images/2019/08/Untitled-17.png) Create outbound service interface as shown below. ![](../images/2019/08/Untitled-18.png) Create message mapping as shown below ![](../images/2019/08/Untitled-19.png) Create Operation mapping as shown below ![](../images/2019/08/Untitled-20.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/08/Untitled-21.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal “**Salesforce**” as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using Salesforce as a source. So, here we are using SOAP  in the sender channel. We need to select the Quality of service as Exactly once in order and give the queue name as shown in the screenshot below. ![](../images/2019/08/Untitled-23.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the IDOC receiver channel** ![](../images/2019/08/Untitled-24.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/08/Image4.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/08/Image4-1.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/08/Image4-2.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/08/Image4-3.png) **Test the Outbound Interface.** Triggering the data from the Source system using the following Apex Code. skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{‘0014E000012qeNYQAY’}; skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2(‘SAP_Skyvva_Salesforce’,’Account_Async_Out’,ids,’ASYNC’, c); Check the message on the message board. Message sent successfully to SAP PO. ![](../images/2019/08/Image4-4.png) Messages got delivered to SAP successfully from PO. ![](../images/2019/08/Image4-5.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound hierarchical interface using SKYVVA Batch mode with V3 SKYVVA Connector module? Title: 1. How to create an inbound hierarchical interface using SKYVVA Batch mode with V3 SKYVVA Connector module? Slug: how-to-create-an-inbound-hierarchical-interface-using-skyvva-batch-mode-with-v3-skyvva-connector-module URL: https://help.skyvva.com/#article/how-to-create-an-inbound-hierarchical-interface-using-skyvva-batch-mode-with-v3-skyvva-connector-module ================================================================================ # 1. How to create an inbound hierarchical interface using SKYVVA Batch mode with V3 SKYVVA Connector module? This document describes how to create an inbound hierarchical interface using SKYVVA Batch mode with V3 SKYVVA connector module. Our old SAP PO module is now enhanced to support the hierarchical message payload and the batch will also split the messages as small attachments as per our requirement. For the batch splitting we just need to add a new parameter "BatchPacketSize" in the receiver channel configuration **Introduction** Batch data processing is an efficient way of processing high volumes of data, where a group of transactions is collected over a period of time. Data is collected, entered, processed and then the batch results are produced. So, now we are going to create an inbound interface using integrate batch with Skyvva connector module Initially, we have to start with Salesforce Skyvva. This interface is also the same as "**How to create an inbound interface to post a single sObject**?" but few things to be added in Skyvva interface settings and in the module parameters configuration. - **SKYVVA interface creation** For the hierarchical interface we have to create parent child interface in skyvva. Create an inbound interface, for example, "AccountContactIntegrateBatch" as shown below. Account is the parent and contact is child ![](../images/2020/04/Untitled-105.png) maximum integrate Batch size will be 5000 ![](../images/2020/04/Untitled-106.png) ![](../images/2020/04/Untitled-40.png) As we are using Batch mode So, we have to check the Bulk mode checkbox as shown below: ![](../images/2020/04/Untitled-107.png) Create contact child interface ![](../images/2020/04/Untitled-108.png) maximum integrate Batch size will be 5000 ![](../images/2020/04/Untitled-42.png) As we are using Batch mode So, we have to check the Bulk mode checkbox as shown below: ![](../images/2020/04/Untitled-107.png) Now add the child interface as ichained interface in the parent interface related tab. ![](../images/2020/04/Untitled-110.png) ![](../images/2020/04/Untitled-111.png) Add the foreign key in the child interface to link the Contact with Account. ![](../images/2020/04/Untitled-112.png) Download the WSDL's from the classic mode to do further mapping in SAP PO. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "urn:skyvva:ChainedIntegrateBatch". Now create an external definition under the namespace like below. Here the WSDL is for Account. So, we can give the name as "ED_AccountContact_IntegrateBatch" ![](../images/2020/04/Untitled-113.png) Import the WSDL and save and activate the external definition. - **Sender data type** Create sender data type as shown below ![](../images/2020/04/Untitled-49.png) after creating the source data type click on save and activate. - **Source message type** Create the message type as shown below: ![](../images/2020/04/Untitled-114.png) - **Outbound Service Interface** Create an Outbound service interface, in that select category as outbound and select the respective message type. ![](../images/2020/04/Untitled-115.png) then save and activate the outbound service interface. - **Inbound Service Interface** Create an inbound service interface, in that select category as inbound and select the respective external definition. ![](../images/2020/04/Untitled-117.png) Save and active the inbound service interface. - Message Mapping Create message mapping as shown below: ![](../images/2020/04/Untitled-116.png) Insert the respective source and target structure and then do the mapping. Now save and activate the message mapping. - **Operation Mapping** Create Operation mapping as shown below ![](../images/2020/04/Untitled-118.png) Select the respective outbound and inbound service interfaces and also the message mapping then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2020/04/Untitled-119.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using SOAP UI as a source. So, here we are using SOAP  in the sender channel. ![](../images/2019/07/Untitled-15.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the SOAP receiver channel ** Configuration for Tab "General" ![](../images/2020/07/Untitled-13.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling must be specified. ![](../images/2020/07/Untitled-14.png) ![](../images/2020/04/Untitled-122.png) Configuration of module parameters are described in detail below - **SKYVVA Module Parameters** ![](../images/2020/04/Untitled-71.png) ![](../images/2020/04/Untitled-123.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2020/04/Untitled-125.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2020/04/Untitled-126.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/04/Untitled-127.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2020/07/Untitled-15.png) - **Test the Inbound Interface.** Triggering the data from the Source system. Now we have to check the result in Batch Control board as shown below. ![](../images/2020/04/Untitled-129.png) Here we have to select the Batch interface then click on search. ![](../images/2020/04/Untitled-130.png) We have a scheduler to schedule the jobs during a particular time intervals. ![](../images/2020/04/Untitled-131.png) In the "History Basket" we can see the processed files as batch files as shown. We have sent 4 records with BatchPacketSize 2, So the file got splitted to two batches each contains 2 records. ![](../images/2020/04/Untitled-132.png) Now the message processing completed. We can see the messages in message monitor. ![](../images/2020/04/Untitled-133.png) Click on related to to view the record ![](../images/2020/04/Untitled-134.png) Here is the data  which we sent from the source system. ![](../images/2020/04/Untitled-70.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound skyvva interface using Interface Execution Scheduler with SAP PI/PO using SFDC2SAPPI Adapter? Title: 1. How to create an outbound skyvva interface using Interface Execution Scheduler with SAP PI/PO using SFDC2SAPPI Adapter? Slug: how-to-create-an-outbound-skyvva-interface-using-interface-execution-scheduler-with-sap-pi-po-using-sfdc2sappi-adapter URL: https://help.skyvva.com/#article/how-to-create-an-outbound-skyvva-interface-using-interface-execution-scheduler-with-sap-pi-po-using-sfdc2sappi-adapter ================================================================================ # 1. How to create an outbound skyvva interface using Interface Execution Scheduler with SAP PI/PO using SFDC2SAPPI Adapter? This document explains us about how to create an outbound interface using Interface Execution Scheduler functionality with SAP PI/PO using SFDC2SAPPI Adapter #### Interface Execution Scheduler - This scheduler is only used with the outbound interface and is generated automatically for any outbound interface inside an integration. It uses the SOQL in the field “SOQL Query for filter sObject”. In this field, the user can write the SOQL statement which filter sObject to be passed on the method invokeCallout2(). The scheduler uses the method invokeCallout2() to execute the outbound interface. If the SOQL is not powerful enough to solve the requirement of a customer then they can use apex class to write their own logic for data selection. Then the flag “Use Apex Class” has to be set and in the field “Apex Class for Filter sObject” an apex class has to be specified. We have two test cases in this functionality **Case 1:-**  Callout data to SAP with SOQL Query to filter sObject by using InterfaceExecution schedule processing. **Case 2:-  **CallOut data by using apex class for filter sObject. **Configuration for Case 1:** Create Inbound interface as shown below ![](../images/2020/07/Untitled-17.png) ![](../images/2020/07/Untitled-18.png) In this inbound interface, we need to use the Id as the external Id. This Id is needed to update and the record id which was found by the filter query SOQL. If we don’t use the Id field of the sObject it will not work. Add the outbound interface as invoke inbound/outbound interface in the inbound interface ![](../images/2020/07/Untitled-24.png) Do the mapping as shown below. ![](../images/2020/07/Untitled-19.png) **Create an Outbound Interface - ** Select Operation type-  query/ PullQuery. Processing mode- Asynchronous. ![](../images/2020/07/Untitled-20.png) Select Outbound Adapter ![](../images/2020/07/Untitled-21.png) In Section “SOQL Query for filter sObject” Filter Query:- SELECT Id FROM Account WHERE BillingCity = 'PhnomPenh' AND skyvvasolutions__SAP_Sales_Org__c = '' Interface to change condition:- Enter Inbound Interface ID. In section “SOQL Query to select sObject data” or by using “Query Editor” we can write the query:- SELECT Id,BillingCity,BillingCountry,Name,SAP_Sales_Org__c FROM Account. ![](../images/2020/07/Untitled-22.png) Do the mapping as shown below. ![](../images/2020/07/Untitled-23.png) Download the outbound interface WSDL and import it into SAP PO for mapping. - **Designing the objects in ESR** Import the Account WSDL as external definition into ESR and save activate it ![](../images/2019/08/Untitled-16.png) As we sending data to SAP. Here we are using DEBMAS07 Idoc as a target structure. Import Idoc from SAP and activate it. ![](../images/2019/08/Untitled-17.png) Create outbound service interface as shown below. ![](../images/2019/08/Untitled-18.png) Create message mapping as shown below ![](../images/2019/08/Untitled-19.png) Create Operation mapping as shown below ![](../images/2019/08/Untitled-20.png) **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. ![](../images/2019/08/Untitled-21.png) An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal “**Salesforce**” as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using Salesforce as a source. So, here we are using SOAP  in the sender channel. ![](../images/2020/07/Untitled-27.png) Provide the necessary details as shown and then save and activate the channel. - **Configuring the IDOC receiver channel** ![](../images/2019/08/Untitled-24.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab “Inbound Processing” here we have to specify the sender communication channel. ![](../images/2019/08/Image4.png) Here in the “Receiver” tab, we have to specify the receiver business system. ![](../images/2019/08/Image4-1.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2019/08/Image4-2.png) In the “outbound processing” tab, we have to specify the receiver channel. ![](../images/2019/08/Image4-3.png) **Test the Outbound Interface.** On the Integration page Select the “Scheduler” tab. Check the section “Scheduler Per interface”. Run the “Interface execution Scheduler” as shown in the given picture below. ![](../images/2020/07/Untitled-25.png) #### Check the result on Message Monitoring For Case 1 once InterfaceExecution scheduler processed - ![](../images/2020/07/Untitled-26.png) **Configuration for Case 2:** Configuration for the inbound interface will be the same as case 1. Configuration for the outbound interface is given below. - In Section “SOQL Query for filter sObject” - Check the box of Use the apex class. - Interface to change condition:- Enter Inbound Interface ID. ![](../images/2019/09/ies6.png) #### Create a custom apex class with the code given below:- Global with sharing class InterfaceCustomClass implements skyvvasolutions.CustomInterfaceObjectCallout { Global map getMapObject(){ map ActMap = new map([SELECT Id,BillingCity,BillingCountry,Name,SAP_Sales_Org__c FROM Account where BillingCity='PhnomPenh' AND SAP_Sales_Org__c ='']); system.debug(ActMap); return ActMap; } } To add the above code we just need to go to Setup and the Apex classes and then click on new to create a new custom apex class ![](../images/2020/07/Untitled-28.png) Run the “Interface execution Scheduler” as shown in the given picture below. ![](../images/2020/07/Untitled-25.png) #### Check the result on Message Monitoring For Case 2 once InterfaceExecution scheduler processed - ![](../images/2020/07/Untitled-26.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: What is SKYVVA Connector Module? Title: 1. What is SKYVVA Connector Module? Slug: what-is-skyvva-connector-module URL: https://help.skyvva.com/#article/what-is-skyvva-connector-module ================================================================================ # 1. What is SKYVVA Connector Module? This document describes how to set up the Skyvva custom module used by SOAP receiver channels to call webservices in Salesforce. The module handles session management and enhances the functionality of the SOAP adapter creating an easy way to use interface with Salesforce #### Skyvva Module in SOAP Adapter The Skyvva module is integrated in SAP-PI and extends its functionality (as shown in the figure below). Instructions on deployment can be explained below. ![](../images/2020/07/Untitled-47.png) #### Deployment of Skyvva module Connector in SAP PO - Open Winscp and provide the highlighted details as shown in the below screenshot ![](../images/2020/07/Untitled-48.png) Once we provide the details click on login then we can see the below pop-up wizard ![](../images/2020/07/Untitled-49.png) We will get the SDA file from Skyvva support team then drag the SDA file from where you have saved in the local directory and place the file to the path usr/sap/trans/EPS/in ![](../images/2020/07/Untitled-50.png) Open putty to undeploy the previous SDA file ![](../images/2020/07/Untitled-51.png) Call up telnet e.g. telnet localhost 50108. The telnet port is normally 5 08 ![](../images/2020/07/Untitled-52.png) Log into telnet with the admin user and password. ![](../images/2020/07/Untitled-53.png) To deploy the SDA file use the below - deploy /usr/sap/trans/EPS/in/SKYVVA_Integration_EAR_71x_correlation_batchsize4.sda on_deploy_error=stop ![](../images/2020/07/Untitled-55.png) ![](../images/2020/07/Untitled-56.png) If we want to undeploy use the below - undeploy name=SKYVVA_Integration_EAR vendor=skyvva.com on_undeploy_error=stop ![](../images/2020/07/Untitled-57.png) Now the undeployment is completed. For V2 module configurations follow this link - #article/how-to-settingup-the-skyvva-module-parameters-v4-in-sap-pi-po For V3 module configurations follow this link  - (link not available) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create inbound synchronous query interface in SAP PI/PO with SAP BAPI using SKYVVA V3 connector module? Title: 1. How to create inbound synchronous query interface in SAP PI/PO with SAP BAPI using SKYVVA V3 connector module? Slug: how-to-create-inbound-synchronous-query-interface-in-sap-pi-po-with-sap-bapi-using-skyvva-v3-connector-module URL: https://help.skyvva.com/#article/how-to-create-inbound-synchronous-query-interface-in-sap-pi-po-with-sap-bapi-using-skyvva-v3-connector-module ================================================================================ # 1. How to create inbound synchronous query interface in SAP PI/PO with SAP BAPI using SKYVVA V3 connector module? This document describes how to create an inbound query interface in SAP PI/PO with SAP BAPI with new SKYVVA  V3 connector module. **What is Query?** If want to search the data/records present in your Salesforce then this module will help you. It will help you to create a dynamic nature of search. You can configure the search feature and use it as per your needs. Skyvva app will help you to configure your search. You need to follow the below steps to configure your search: - Create an integration or use an existing integration. - Create an interface using the above integration. - The interface should have operationType as "query“ or "queryAll“. The SOQL query to select sObject data needs to be set with required SOQL query. To fetch small size data we use query and for Big size data we are going to use Bulk query. **What is Query All?** Executes the specified SOQL query. Unlike the Query resource, Query All will return records that have been deleted. Query All will also return information about archived Task and Event records. **SKYVVA interface creation** Create an inbound interface, for example, "searchService_IN“ as shown below. Select the Operation type as query“ or "query All“ ![](../images/2020/02/Untitled-56.png) ![](../images/2020/02/Untitled-57.png) Similarly, create the Outbound scenario for Query response as "searchService_Out" as shown below ![](../images/2020/02/Untitled-58.png) ![](../images/2020/02/Untitled-59.png) Now save the interfaces and download the WSDL. This is needed to do mapping in SAP PO. **Step 3 - Import WSDL into ESR** First, we have to create a namespace in ESR like "**urn:skyvva: Querysalesforce**". Now create an external definition for Query Account request under the namespace like below. Here the WSDL is for Account. So, we can give the name as SearchService_IN ![](../images/2020/07/Untitled-29.png) Now import the WSDL and Save and activate it. Now create an external definition for Query Account response under the namespace like below. Here the WSDL is for Account. So, we can give the name as SearchService_Out ![](../images/2020/07/Untitled-30.png) Since in this example, we are sending data from SAP to Salesforce. So, no need to create data types for request and response. We just need to import the RFC from SAP system. ![](../images/2020/07/Untitled-31.png) Activate the imported RFC. As we are using RFC as source structure so no need to create outbound service interface. Create inbound service interface as shown below. ![](../images/2020/07/Untitled-32.png) Provide the necessary details as shown and then save and activate it. - **Message mapping** Create request and response message mapping as shown below. **Request Mapping - ** Select the Source structure and target structure and complete the mapping. ![](../images/2020/07/Untitled-33.png) **Response Mapping - ** ![](../images/2020/07/Untitled-34.png) Now save and activate both the mappings - **Operation Mapping ** Create Operation mapping as shown below. This is for request mapping ![](../images/2020/07/Untitled-35.png) In Response-Mapping, a java mapping is not needed for SKYVVA V3 which is included with connector module to convert the Skyvva message JSON format into a business structure. ![](../images/2020/07/Untitled-36.png) Now select the inbound and outbound service interfaces and the respective request and response mappings. Then save and activate the operation mapping. - **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/07/Untitled-37.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. - **Configuring the Sender RFC communication channel** Create sender communication channel as shown below. Since we are using RFC as a source. So, here we are using RFC adapter in the sender channel. ![](../images/2020/07/Untitled-38.png) ![](../images/2020/07/Untitled-39.png) Provide the necessary details. After that save and activate the channel. - **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2020/07/Untitled-40.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified.  For V3 Skyvva module: We need 3 modules in the soap receiver channel 1. Skyvva/V3/QueryBuilder -> prepare the execution of the REST and BULK query and pass the message payload to the 3. module 2. XISOAPAdapterBean -> calling our new soap API 'RouteRequest‘ to just pass back the request from the 1. module 3. Skyvva/V3/ExecuteQuery -> here we only fetching the result which has been executed ![](../images/2020/02/Untitled-60.png) ![](../images/2020/02/Untitled-61.png) For the new Module we no need to use the Java mapping in response mapping to convert the JSON response into XML. We can directly include the parameter in the module to convert the JSON Response. Here are the channel configurations for new module. Configuration of module parameters are described in detail below - **Skyvva V3 Module Parameters**  Module parameters are outlined below ![](../images/2020/02/Untitled-62.png) ![](../images/2020/02/Untitled-63.png) **The different way to put the SELECT statement** Here we are able to build the select statement dynamically by the pi mapping. Thus we need a field in the request payload which for example is called 'SKYVVA__SOQL_SELECT' and where we can build the SELECT-statement by using concat formula in the mapping. In this case, you are taking the value from this field and it will dominate the SELECT-statement on the module parameter. In the request WSDL we need to add SKYVVA system field e.g. 'SKYVVA__SOQL_SELECT' and build dynamically the SELECT in the mapping. We have at 3 different places to put the SELECT statement e.g.: - In the interface - In the module parameter - In the PO request mapping in the field 'SKYVVA__SOQL_SELECT' . Here is the SQL Statement used in Module Parameters. SELECT BillingCity,BillingPostalCode,BillingState,BillingStreet,Description,Fax,Id,Name,skyvvasolutions__SAP_Distribution_Channel__c,skyvvasolutions__SAP_Division__c,skyvvasolutions__SAP_Sales_Org__c FROM Account where skyvvasolutions__SAP_Distribution_Channel__c = {!skyvvasolutions__SAP_Distribution_Channel__c} and skyvvasolutions__SAP_Sales_Org__c = {!skyvvasolutions__SAP_Sales_Org__c} and skyvvasolutions__SAP_Division__c = {!skyvvasolutions__SAP_Division__c} - **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2020/07/Untitled-41.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2020/07/Untitled-42.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/07/Untitled-43.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2020/07/Untitled-44.png) **Testing the inbound synchronous Interface.** We are executing the FM from SAP. ![](../images/2020/07/Untitled-46.png) Got the response from skyvva to SAP ![](../images/2020/07/Untitled-45.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: What is SKYVVA SAP PI/PO Adapter? Title: 1. What is SKYVVA SAP PI/PO Adapter? Slug: 50-what-is-skyvva-sap-pi-po-adapter URL: https://help.skyvva.com/#article/50-what-is-skyvva-sap-pi-po-adapter ================================================================================ # 1. What is SKYVVA SAP PI/PO Adapter? This document describes us about the SKYVVA SAP PI/PO Adapter SAP PI/PO Adapter is used to communicate with SAP PO system. We use SAP PI/PO Adapter only in the outbound direction. It is used to communicate and inter-operate with each other over the Web. Inside the  SAP PI/PO Adapter we have two protocols - SOAP - REST **1. SOAP Adapter** If we want to create the SAP PI/PO Adapter. First we have to go to Integration tab and then select SAP Control Board. First Lets discuss about the SOAP Adapter inside the SAP PI/PO Adapter. Soap adapter is used for data processing of both directions. I,e Inbound and outbound. **Soap request-> Outbound interface** As we have three elements in Request: - HTTP Header - URL Query Parameter - SOAP Header - SOAP Body **Soap response-> Inbound interface** As we have two elements in Response - HTTP Header - SOAP Header - SOAP Body For SOAP V3 we have to create the message type in skyvva as explained below. **SOAP V3 message type template:** This is the request message type: { "Google SOAP Service" : { // This is the API name. This is of type 'WSDL Operation' "HTTP Header Parameter" : { //This is of type HTTP Header //Flate Structure.. }, "URL Query Parameter" : { //Flate Strture.. This is of type 'WSDL Query Parameter' }, "SOAP Header" : { // Custom Business Messagetype -- it's SOAP Header. This is of type 'WSDL Header' }, "SOAP Body" : { //Custom Buisness Messagetype. This is of type 'WSDL Body' } } } In the request, we have a URL section and inside that, we had two other Section URL path Parameters and Query Parameters but the path parameters are not supported by the SOAP protocol so we have removed from the Template. This is the response message type: { "Business Message Type" : { // Custom Buisness Messagetype. This is of type 'Plain structure' } } we have only the business object. **Step1: Create Adapter** - First Insert Adapter Record By giving prefer Name and select Type = SOAP - Now Insert Properties:   If Need Authorization - Endpoint: Insert Endpoint URL where Request will direct - Username: Your End service User Name - Password: Your End service Password - Authentication: “BASIC” Example: : Type: **SOAP** Endpoint : http://192.201.104.232:16080/sapo5b/... Authentication : Basic Operation : Post Username: e … admin Password : e … 12345 We can handle if the business has **URL Query Parameter** and **HTTP Header** URL Query Parameter : ?pCity={!City}&pCountry={!Country} HTTP Header : Content-Type:Application/xml|{!LastName}:{!FirstName} **Creation of Outbound Skyvva SAP PI/PO adapter**: Provide the details as shown below To create SAP PI/PO Adapter we have to go to Integration details tab and then select "**SAP Control board**" as shown ![](../images/2020/06/Untitled-65.png) Select Adapter tab and then click on new to create Adapter ![](../images/2020/06/Untitled-66.png) Provide the details as shown below: ![](../images/2020/08/Untitled-6.png) ![](../images/2020/08/Untitled-7.png) ![](../images/2020/08/Untitled-8.png) Now we have to use this adapter in the outbound interface as shown below - **Create Outbound parent request interface ** ![](../images/2020/05/Untitled-4.png) ![](../images/2020/05/Untitled-5.png) ![](../images/2020/05/Untitled-6.png) ![](../images/2020/05/Untitled-7.png) If we use the message type defined in skyvva then we have to do mapping in skyvva as shown. ![](../images/2020/05/Untitled-8.png) Now save the mapping and the outbound parent interface. ![](../images/2020/05/Untitled-29.png) ![](../images/2020/05/Untitled-30.png) ![](../images/2020/05/Untitled-31.png) - **Create an inbound parent response interface** ![](../images/2020/05/Untitled-13.png) ![](../images/2020/05/Untitled-28.png) ![](../images/2020/05/Untitled-15.png) Do the mapping for inbound parent response interface ![](../images/2020/05/Untitled-32.png) ![](../images/2020/05/Untitled-33.png) Save the mapping and the inbound response interface. Download the inbound and outbound parent interface WSDL's and upload it into SAP PO for mapping. - **Testing the Outbound synchronous Interface.** Callout from skyvva from developer console using the below apex code skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q03N000000HZYbSAO'}; skyvvasolutions.Iservices.invokeCalloutV3('SOAPV3','Quote_Sync_Out',ids,'SYNC', c); We can see the message status in the message monitor ![](../images/2020/05/Untitled-21.png) Quote Id is updated in salesforce ![](../images/2020/05/Untitled-20.png) **2. REST Adapter** The Representational State Transfer (REST) adapter enables you to exchange messages between remote clients or web service servers and the Integration Server. It supports dynamic URLs, REST API polling, multiple operations per channel as well as XML and JSON data formats. Rest adapter is used for data processing of both direction. I,e Inbound and outbound. **REST request-> Outbound interface** **REST response-> Inbound interface** What is REST request? REST requires that a client make a request to the server in order to retrieve or modify data on the server. A request generally consists of: an HTTP verb, which defines what kind of operation to perform. a header, which allows the client to pass along information about the request. Request Structure: { "Google REST Service":{ "Request":{ "URL":{ "PATH Param":{ //Flate Strture.. }, "Query Param":{ //Flate Strture.. } }, "Header":{ //Flate Strture.. }, "Body":{ //Custom Buisness Messagetype } } } } What is Rest response? When an JSON String is sent to a REST service, you must set Content-Type HTTP header to be “application/JSON”. The REST service converts the XML input data to the JSON format that is accepted by REST services. Response Structure: { //Custom Buisness Message Type like Account,Contact,Asset,Opportunity,Case } Resource Methods: Other important thing associated with REST is resource methods to be used to perform the desired transition. A large number of people wrongly relate resource methods to HTTP GET/PUT/POST/DELETE methods. Authentication Section: Here we make authentication three-way like 1) Basic Authentication 2) Certificate Authentication 3) OAuth2.0 Authentication 1) If the authentication type is Basic then the following properties required. Authentication Type: Basic, API Service Endpoint URL, Operation:GET|POST|PUT|UPDATE|DELETE, Request Format, Response Format, username, password, REST URL Path Parameter(optional) 2)If the authentication type is Certificate then the following properties required. Authentication Type: Certificate, API Service Endpoint URL, Operation:GET|POST|PUT|UPDATE|DELETE, Request Format, Response Format, clientCertName, clientCertPasswd, REST URL Path Parameter(optional) 3)If the authentication type is Oauth2.0 then the following properties required. Authentication Type: Oauth2.0, API Service Endpoint URL, Token Endpoint URL, Operation:GET|POST|PUT|UPDATE|DELETE, Request Format, Response Format, REST URL Path Parameter(optional) OAuth 2.0 Flow: Username-Password Credential //Below properties required for access service OAuth 2.0 client-id OAuth 2.0 client-secret OAuth 2.0 access-token OAuth 2.0 Flow: Client Credential //Below properties required for access service OAuth 2.0 client-id OAuth 2.0 client-secret OAuth 2.0 access-token OAuth 2.0 refresh-token OAuth 2.0 Flow: OAuth 20 refresh-token //Below properties required for access service OAuth 2.0 client-id OAuth 2.0 client-secret OAuth 2.0 access-token OAuth 2.0 refresh-token Message Type Template: Rest Adapter Template Rest Adapter Template "Rest Service":{ "Request":{ "URL":{ "PATH Parameter":{ //flat Structure }, "QUERY Parameter":{ //flat Structure } }, "Header":{ //flat Structure }, "Body":{ //flat Structure //Custom Hierarchical Business Message type } } } } SetUp: Step1: Create Adapter First Insert Adapter Record By giving prefer Name and select Type = REST Now Insert Properties If Need Authorization. REST API Service Endpoint URL : Insert Endpoint URL where Request will direct Username : Your Endservice UserName Password : Your Endservice Password Authentication : “BASIC” REST Operation : “POST” **Creation of Outbound REST Adapter:** To create SAP PI/PO Adapter we have to go to Integration details tab and then select "**SAP Control board**" as shown ![](../images/2020/06/Untitled-65.png) Select Adapter tab and then click on new to create Adapter ![](../images/2020/06/Untitled-66.png) Provide the details as shown below: ![](../images/2020/08/Untitled-9.png) ![](../images/2020/08/Untitled-10.png) ![](../images/2020/08/Untitled-11.png) Use this adapter in the skyvva outbound request interface. - **Create Outbound parent request interface ** ![](../images/2020/05/Untitled-48.png) ![](../images/2020/05/Untitled-49.png) ![](../images/2020/05/Untitled-50.png) If we use the message type defined in skyvva then we have to do mapping in skyvva as shown. ![](../images/2020/05/Untitled-51.png) ![](../images/2020/05/Untitled-52.png) ![](../images/2020/05/Untitled-53.png) Now save the mapping and the outbound parent interface. - **Create an inbound parent response interface** ![](../images/2020/05/Untitled-56.png) ![](../images/2020/05/Untitled-15.png) Do the mapping for inbound parent response interface ![](../images/2020/05/Untitled-57.png) ![](../images/2020/05/Untitled-58.png) ![](../images/2020/05/Untitled-59.png) Save the mapping and the inbound response interface. Download the inbound and outbound parent interface WSDL's and upload it into SAP PO for mapping. - **Testing the Outbound synchronous Interface.** Callout from skyvva from developer console using the below apex code skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q03N000000HZYbSAO'}; skyvvasolutions.Iservices.invokeCalloutV3('SOAPV3','REST_Quote_Out',ids,'SYNC', c); We can see the message status in the message monitor ![](../images/2020/05/Untitled-84.png) Quote Id is updated in salesforce ![](../images/2020/05/Untitled-20.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO Adapter using SOAP Protocol? Title: 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO Adapter using SOAP Protocol? Slug: how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-sap-pi-po-adapter-using-soap-protocol URL: https://help.skyvva.com/#article/how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-sap-pi-po-adapter-using-soap-protocol ================================================================================ # 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO Adapter using SOAP Protocol? This document describes how to create an outbound Synchronous interface in SAP PO with SKYVVA SAP PI/PO Adapter For SOAP V3 we have to create the message type in skyvva as explained below. **SOAP V3 message type template:** We use a standard message type template for SOAP Adapter { "Google SOAP Service": { //Type: WSDL Service "Request": { //Type: WSDL Request "HTTP Header": {//Type: HTTP Header }, "URL Query Parameter": { //Type: WSDL URL Query Parameter }, "SOAP Header": {//Type: WSDL Header "SessionHeader": { "SessionId": "" } }, "SOAP Body": {//Type: WSDL Body "Quote_Sync_Out": {//Type: Plain Structure "Quote_Header_Request": {//Type: Plain Structure "skyvvasolutions__SAP_Requested_Delivery_Date__c": "", "skyvvasolutions__SAP_Sales_Org__c": "", "skyvvasolutions__SAP_Distribution_Channel__c": "", "skyvvasolutions__SAP_Division__c": "", "skyvvasolutions__SAP_Group__c": "", "Id": "", "Name": "", "OpportunityId": "", "skyvvasolutions__SAP_Offer_Valid_To__c": "", "skyvvasolutions__SAP_Offer_valid_from__c": "", "QuoteLineItem": { "LineNumber": "", "Quantity": "", "skyvvasolutions__SAP_Material_Number__c": "", "skyvvasolutions__SAP_Customer_Number__c": "" } } } } }, "Response": {//Type: WSDL Response "Envelope": {//Type: Plain Structure "Header": {//Type: WSDL Header }, "Body": {//Type: WSDL Body "Quote_IN": {//Type: Plain Structure "Quote": {//Type: Plain Strucuture "Name": "", "Id": "", "OpportunityId": "", "skyvvasolutions__SAP_Quote_ID__c": "", "Status": "", "QuoteNumber": "", "QuoteLineItem": { "Id":"", "Quantity": "", "QuoteId": "", "skyvvasolutions__SAP_Material_Number__c": "", "skyvvasolutions__SAP_Quote_Line_ID__c": "", "OpportunityLineItemId": "" } } } } } } } } Note: For SOAP Adapter we have to use soap template. So here we have soap envelope structure and root has to be Envelope in the response interface but the Envelope is not Salesforce field name. So we cannot use external mapping in the inbound response interface with SOAP Adapter. Initially we have to create Metadata Provider. ![](../images/2020/05/Untitled.png) Now create Istructure repository ![](../images/2020/05/Untitled-1.png) Now create Message type for hierarchical request and response ![](../images/2020/05/Untitled-2.png) ![](../images/2020/05/Untitled-3.png) Now we have to use the message type in both request and response interface. For SOAP V3 we can generate the Business message type from Repository Click on Repository ![](../images/2020/08/Untitled.png) Select "Export Metadata" ![](../images/2020/08/Untitled-1.png) Select the message type name and then the type should be XSD. ![](../images/2020/08/Untitled-2.png) Now click on Export The downloaded file looks like below ![](../images/2020/08/Untitled-3.png) The XSD looks like below after import it into SAP PO.  It contains only the business message type. ![](../images/2020/08/Untitled-4.png) We can download the response interface XSD directly from the interface details tab. But we recommend to use WSDL for Synchronous interface. Here in V3 we have feature like the WSDL contains both request and response interface structure. Creation of Outbound Skyvva SAP PI/PO adapter: Provide the details as shown below To create SAP PI/PO Adapter we have to go to Integration details tab and then select "**SAP Control board**" as shown ![](../images/2020/06/Untitled-65.png) Select Adapter tab and then click on new to create Adapter ![](../images/2020/06/Untitled-66.png) Provide the details as shown below: ![](../images/2020/05/Untitled-88.png) ![](../images/2020/05/Untitled-89.png) ![](../images/2020/05/Untitled-90.png) Use this adapter in the outbound request interface. In this example, I have created the interface under "SOAPV3**"** - **Create Outbound request interface ** ![](../images/2020/05/Untitled-4.png) ![](../images/2020/05/Untitled-5.png) ![](../images/2020/05/Untitled-6.png) ![](../images/2020/05/Untitled-7.png) If we use the message type defined in skyvva then we have to do mapping in skyvva as shown. ![](../images/2020/05/Untitled-8.png) Now save the mapping and the outbound interface. ![](../images/2020/05/Untitled-29.png) ![](../images/2020/05/Untitled-30.png) ![](../images/2020/05/Untitled-31.png) - **Create an inbound response interface** ![](../images/2020/05/Untitled-13.png) ![](../images/2020/05/Untitled-28.png) ![](../images/2020/05/Untitled-15.png) Do the mapping for inbound  response interface ![](../images/2020/05/Untitled-32.png) ![](../images/2020/05/Untitled-33.png) Save the mapping and the inbound response interface. In the outbound interface add the inbound response interface as shown below. ![](../images/2020/08/Untitled-5.png) Download the inbound and outbound interface XSD's and upload it into SAP PO for mapping. Create external definition for outbound and inbound interfaces in SAP PO Outbound External definition: ![](../images/2020/05/Untitled-36.png) Import the WSDL and Save and activate it. Inbound External Definition: In synchronous inbound response interface we don't need Integration and Interface in the WSDL Structure. ![](../images/2020/05/Untitled-37.png) It’s a Salesforce to SAP outbound interface sending quote information to SAP. SAP side we are using RFC. So no need to create data type, message type and service interface for the target side. Create Outbound Service interface: ![](../images/2020/05/Untitled-38.png) Provide the necessary details as shown and then save and activate it. - **Message mapping** Create request and response message mapping as shown below. **Request Mapping - ** Select the Source structure and target structure and complete the mapping. ![](../images/2020/05/Untitled-39.png) **Response Mapping - ** ![](../images/2020/05/Untitled-40.png) Now save and activate both the mappings - **Operation Mapping ** Create Operation mapping as shown below. Now select the inbound and outbound service interfaces and the respective request and response mappings. This is for request mapping ![](../images/2020/05/Untitled-41.png) Response Mapping ![](../images/2020/05/Untitled-42.png) Then save and activate the operation mapping. - **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/05/Untitled-27.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. - **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. We are using SOAP adapter in the sender channel ![](../images/2020/05/Untitled-26.png) Provide the necessary details. After that save and activate the channel. - **Configuring the RFC receiver channel** ![](../images/2020/05/Untitled-25.png) - **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2020/05/Untitled-24.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2020/05/Untitled-23.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2020/05/Untitled-19.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2020/05/Untitled-22.png) - **Testing the Outbound synchronous Interface.** Callout from skyvva from developer console using the below apex code skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q03N000000HZYbSAO'}; skyvvasolutions.Iservices.invokeCalloutV3('SOAPV3','Quote_Sync_Out',ids,'SYNC', c); We can see the message status in the message monitor ![](../images/2020/05/Untitled-21.png) Quote Id is updated in salesforce ![](../images/2020/05/Untitled-20.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create message type from Import SAP Metadata? Title: 1. How to create message type from Import SAP Metadata? Slug: how-to-create-message-type-from-sap-import-metadata URL: https://help.skyvva.com/#article/how-to-create-message-type-from-sap-import-metadata ================================================================================ # 1. How to create message type from Import SAP Metadata? This document explains us about how to create the message type by importing IDOC and BAPI from SAP by using Import SAP Metadata function. Initially we need to create the Connection Destination in the SAP Control Board. Go to Integration details tab ![](../images/2020/09/Untitled.png) In the Configuration tab. Provide the details Here we need to provide the sap configuration details as below Type: SAP ERP Deployment: Embedded Logical System: LS10 Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2020/09/Untitled-1.png) **Tab Salesforce-->SAP ** ![](../images/2020/09/Untitled-2.png) Here we need to ping the **Ping SAP Connection button.** ![](../images/2020/09/Untitled-3.png) ![](../images/2020/09/Untitled-4.png) Now we can ping the **Ping Salesforce Connection** ![](../images/2020/09/Untitled-5.png) Ping connection is working. Create **Metadata Provider** ![](../images/2020/09/Untitled-6.png) **Create Repository** ![](../images/2020/09/Untitled-7.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/09/Untitled-8.png) Here we need to give the details of Connection Destination which we created earlier in the SAP Control Board and RFC destination from SAP and the Select the Application Data type IDOC/RFC. ![](../images/2020/09/Untitled-9.png) Now click on Retrieve to create the message type from SAP ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to Setup the SKYVVA Module Parameters in SAP PI/PO with V3? Title: 1. How to Setup the SKYVVA Module Parameters in SAP PI/PO with V3? Slug: how-to-setup-the-skyvva-module-parameters-in-sap-pi-po-with-v3 URL: https://help.skyvva.com/#article/how-to-setup-the-skyvva-module-parameters-in-sap-pi-po-with-v3 ================================================================================ # 1. How to Setup the SKYVVA Module Parameters in SAP PI/PO with V3? This document describes on the list of SKYVVA module parameters used in SAP PI/PO with V3 module. Currently, bulk mode and Batch are old inbound processing, which supports flat message to fetch large data. New enhanced bulk mode and batch mode processing now supports V3 Inbound processing to handle hierarchical message payload. - #### SKYVVA Module in SOAP Adapter The SKYVVA module is integrated into SAP-PI and extends its functionality (as shown in the figure below). ![](../images/2019/08/Image4-18.png) This module is only used by the SOAP receiver channel to call SKYVVA Salesforce web services. Its functionality consists of establishing a session with Salesforce (retrieving the session Id), use of a session until expiration and session renewal upon expiration. - #### Configuring the SOAP Sender Channel A SOAP sender channel is created for data transfer from Salesforce to SAP-PI. Both synchronous and asynchronous are supported and are configurable from SAP-PI. The screenshot below shows a channel set up for synchronous communication.  ![](../images/2019/08/Image4-19.png) Settings in Advanced tab, Adapter status should be active. ![](../images/2019/08/Image4-20.png) No need to specify anything in Identifiers and module tab for sender SOAP Channel. - #### Configuring the SOAP Receiver Channel Create a SOAP receiver channel in SAP PI/PO as shown below. Configurations for General tab ![](../images/2021/02/Untitled.png) ![](../images/2021/02/Untitled-1.png) Below is the configuration for the "Advanced" Tab. ![](../images/2019/08/Image4-23.png) These two flags have to be checked. The value "TserverLocation" has to be entered for the parameter "Variable Header (XHeaderName1)". No need to specify anything in the Identifiers tab. Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. Below are the module parameters for the Webservice operation "integrate". ![](../images/2021/02/Untitled-2.png) ![](../images/2021/02/Untitled-3.png) - **Skyvva Module Parameters for new V3** **"Skyvva/V3/Integration" **to be used with SOAP receiver channels. Module parameters are outlined below. **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. SAP PI/PO Integration App V1 SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://test.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation  in skyvva integrate pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx ResponseFormat SforceBulkPackageSize This will convert the JSON response into xml This parameter determines how many records are split into chunks of the package size. For example if PI message contains 1000 records and the value of this parameter is 100 then we will get 10 batches each contain 100 records. xml Ex – 1000 sforceBulkMode It specifies the mode of Bulk Skyvva Bulk skyvvaVersion Skyvva version needs to be specify here Ex. 2.44 SforceBulkOperation This parameter is set when the interface uses the Bulk API. The bulk API enables transferring of mass data X SforceBulkInterfaceId It specifies the name of the skyvva interface AccountContactIntegrateBulk SforceUseAutoSwitchMode If the number of records (Data)<=Integrate Max Size, Interface will run in Normal Mode. If the number of records (Data)>Integrate Max Size and number of records (Data)<=Integrate Batch Max Size, Interface will run inBatch Mode. If the number of records (Data)>Integrate Batch Max Size, Interface will run in BULK Mode. This parameter will switch automatically based upon the above results. X BulkCreateLogFile SforceIntegrateMaxBatchSize This parameter is used to create the error log file for bulk batch job Maximum number of records that SKYVVA Integration using method integrate Batch. The default value is 5000. If a number of records to be integrated is bigger than this value, Agent will switch to use the Bulk API method automatically. X 5000 BulkLogFileFolder This will create the folder for the error log files X SforceIntegrateMaxSize Maximum number of records that SKYVVA Integration Agent can integrate using method integrate. The default value is 200. If the number of records to be integrated is bigger than this value, Agent will switch the API method automatically. 200 SforceUseFastBatchCreationMode This parameters works in conjunction with the “SforceAutoSwitchMode” and threshold flags (“SforceIntegrateMaxBatchSize” and “SforceIntegrateMaxSize”). If “SforceAutoSwitchMode” is not set but this flag is set , then bulk integration is used(Provided that the required parameters are set) If “SforceWebServiceOperation” is set to “integrateBatch” and this flag is set, then do bulk integration. If Bulk integration is used, the value of this parameter can be discarded. X SforceShowSAPChannelParameters When set displays the SAP PI parameters in the output log X or Empty SforceShowSSLCertificates This parameter is used in conjunction with “SforceShowSSLCertificates” and represents the password of the certificate store. If set certificate contents are also displayed in the log e.g xxxx (hidden password string) MessagePayloadFolder It defines the path to store the message payload Ex: /home/p1addm/work http.proxyHost This parameter holds the HTTP Proxy host if SAP-PI has to connect through a proxy 192.168.87.234 http.proxyPort This parameter holds the HTTP Proxy port 3128 https.proxyHost This parameter holds the HTTPS Proxy host if SAP-PI has to connect through a proxy 192.168.87.234 https.proxyPort This parameter holds the HTTPS Proxy port 3128 ProxyUsername This parameter holds the Proxy username Ex: username pwdProxyPassword This parameter holds the Proxy password Ex: ****** useObjectNamePrefix This parameter will add the object name as prefix in all the fields Ex: Account.Name BulkSetFieldValueToNULL This parameter will set null value for salesforce field when the field from sap is blank with salesforce direct bulk api X StoreMessagePayloadToFile It creates two files for each message e.g one to store the sap pi message and one for the  Skyvva message. The sap pi message id as file name to create the file. So name the file like _SAP_PI_Payload.xml and _Skyvva_Payload.xml X useObjectNamePrefix = true It will generate the prefix to differentiate between the field from the header and item Ex. Account.Name Following parameters are dynamic and mandatory: **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. SAP PI/PO Integration App V1 SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://test.salesforce.com/services/Soap/c/43.0 - **Mandatory Parameters from Salesforce** This chapter describes parameters who's values has to be retrieved from Salesforce. It has a dependency on Salesforce customizing and need to take out of the customizing setting from Salesforce. There are only some parameters where the value is dynamic and has to adapt accordingly. - **Parameter “IntegrationID”** This parameter is the integration id. Developing interfaces in Salesforce with skyvva solution is divided at runtime into the so-called integration instance. First, you have to create an integration instance where data is sent to or coming from this instance. You can have set up different integration instance in one Salesforce instance and thus has to distinguish between them. For example, you can create a integrations instance for Training, an integration instance for logistic interface and another integration instance for financial interfaces. Thus you have different integration instance within one Salesforce instance e.g. your development Salesforce instance. In order to send the data into the right integration instance, you have to point to the correct instance id. Be aware that the integration instance has to be created before you can develop any interface with the skyvva solution. Prerequisite: The integration instance has been created. Follow these step to get the integration instance-id: login into Salesforce instance. If your instance has the skyvva solution deployed you will see a tab with the name "Integration". Open the integration which you have created.  ![](../images/2021/02/Untitled-4.png) Now you see the Integration ID. In this example, the value is " SAP PI/PO Integration App V1". Just copy and paste this value into the parameter configuration tab of the soap receiver channel. - #### Parameter “SforceAccessPoint” The skyvva solution needs to call the web service operation login from the standard Salesforce Enterprise WSDL. Therefore you have to download the Enterprise WSDL from your Salesforce instance.  Follow the following step: Logon into Salesforce instance of your organization Goto set up and then click on "Develop" and then on "API". Now download the Enterprise WSDL and save somewhere on your desktop. ![](../images/2019/08/Image4-36.png) ![](../images/2019/08/Image4-37.png) Now create a SOAP Project using this WSDL. ![](../images/2021/02/Untitled-5.png) Here we can see the SforceAccessPoint. In this example, the value is " https://test.salesforce.com/services/Soap/c/43.0". Just copy and paste this value into the parameter configuration tab of the soap receiver channel. ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound interface for sending base 64 string attachment from SAP PO to Salesforce? Title: 1. How to create an inbound interface for sending base 64 string attachment from SAP PO to Salesforce? Slug: how-to-create-an-inbound-interface-for-sending-an-attachment-from-sap-po-to-salesforce URL: https://help.skyvva.com/#article/how-to-create-an-inbound-interface-for-sending-an-attachment-from-sap-po-to-salesforce ================================================================================ # 1. How to create an inbound interface for sending base 64 string attachment from SAP PO to Salesforce? This document explains us about how to create skyvva asynchronous inbound interface to send base 64 string attachment from SAP PI/PO to Skyvva with new V3 adapter module Steps needs to be done in Skyvva Create Asynchronous Inbound Interface New V3 works only with Skyvva message type. Create Metadata Provider: ![](../images/2021/06/Untitled.png) Create Istructure Repository: ![](../images/2021/06/Untitled-1.png) Under Repository create message type: Click on new to create new message type as shown below ![](../images/2021/06/Untitled-2.png) the below pop-up wizard will open. Provide the message type name, type as Salesforce sObject and the SObjectType as the one which we are going to use the Salesforce Object then click on Save to save the message type. ![](../images/2021/06/Untitled-5.png) ![](../images/2021/06/Untitled-6.png) Below is the created message type ![](../images/2021/06/Untitled-4.png) Now use these created metadata provider, repository and Message type while creating the inbound interface. **Inbound skyvva Interface - ** In this example i am creating the interfaces under "Attachment_Test**"** ![](../images/2021/06/Untitled-7.png) Provide all the required details and save the interface. After that click on "Open Mapping" to do the mapping. ![](../images/2021/06/Untitled-8.png) Do the mapping as shown below ![](../images/2021/06/Untitled-9.png) Download the inbound interface XSD to import to SAP PO for mapping. In SAP PI/PO we need to create Asynchronous interface **With respect to SAP its an outbound Interface(SAP to Salesforce)** **Import WSDL into ESR** First, we have to create a namespace in ESR like "http://SAP2SF/Attachment". Now create an external definition under the namespace like below. we can give the name as ED_ContentVersion_IN ![](../images/2021/06/Untitled-10.png) Import the XSD and Save and activate it. We need to create Datatype, Messagetype and Service Interface for Sender system as we are using SOAPUI. **Data type for Sender** Here we are selecting the base64Binary for the field versionData as shown below. In this field we are going to send file attachment from SAP PO. ![](../images/2021/06/Untitled-11.png) **Source Message type** ![](../images/2021/06/Untitled-12.png) **Outbound Service Interface** ![](../images/2021/06/Untitled-13.png) Select the Source message type and save and activate the service interface. **Inbound Service Interface** Create service interface ![](../images/2021/06/Untitled-14.png) Select the target message type and save and activate the service interface. **Message mapping** ![](../images/2021/06/Untitled-15.png) Do the respective mapping and save and activate it. **Operation Mapping for asynchronous inbound interface** Select the outbound and inbound service interface and the message mapping to create operation mapping ![](../images/2021/06/Untitled-16.png) Then save and activate it. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario.Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2021/06/Untitled-17.png) These are the objects we should create. We have to define our business component e.g. for the SOAPUI "**BC_SOAPUI**". For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are using an SOAPUI as a source. So, here we are using SOAP adapter in the sender channel. ![](../images/2021/06/Untitled-18.png) Provide the necessary details. After that save and activate the channel. **Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2021/06/Untitled-19.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. ![](../images/2021/06/Untitled-20.png) ![](../images/2021/06/Untitled-21.png) Configuration of module parameters are described in detail below **Skyvva Module Parameters** **"Skyvva/V3/Integration"** to be used with SOAP receiver channels. Module parameters are outlined below **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Attachment_Test SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://test.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation  in skyvva integrate pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2021/06/Untitled-22.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2021/06/Untitled-23.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2021/06/Untitled-24.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2021/06/Untitled-25.png) **Testing the interface - ** Triggering the data from SOAPUI ![](../images/2021/06/Untitled-26.png) Message is delivered from SAP PO ![](../images/2021/06/Untitled-27.png) Check the message in Skyvva message monitoring. ![](../images/2021/06/Untitled-28.png) ![](../images/2021/06/Untitled-29.png) Click on "**related to**" to check the transferred data in Skyvva ![](../images/2021/06/Untitled-30.png) We are sending the base 64 string from SAP PO to Skyvva as we can see the transferred data below ![](../images/2021/06/Untitled-31.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound interface for sending base 64 string attachment from Skyvva to SAP PO as file? Title: 1. How to create an outbound interface for sending base 64 string attachment from Skyvva to SAP PO as file? Slug: how-to-create-an-outbound-interface-for-sending-base-64-string-attachment-from-skyvva-to-sap-po-as-file URL: https://help.skyvva.com/#article/how-to-create-an-outbound-interface-for-sending-base-64-string-attachment-from-skyvva-to-sap-po-as-file ================================================================================ # 1. How to create an outbound interface for sending base 64 string attachment from Skyvva to SAP PO as file? This document explains us about how to create skyvva asynchronous outbound interface to send base 64 string file from Skyvva to SAP PO using SFDC2SAPPI Adapter Steps needs to be done in Skyvva Create Asynchronous Outbound Interface **Outbound skyvva Interface - ** In this example we are creating the interfaces under "**Attachment_Test"** Integration. Provide the Interface name, Description, Source name, Status, Direction, Interface type, Processing mode, outbound adapter and the SQL statement to query the data. ![](../images/2021/07/Untitled.png) ![](../images/2021/07/Untitled-1.png) ![](../images/2021/07/Untitled-2.png) Provide all the required details and save the interface. After that click on "Open Mapping" to do the mapping. ![](../images/2021/07/Untitled-3.png) Do the mapping as shown below ![](../images/2021/07/Untitled-4.png) Save the mapping. Download the outbound interface XSD to import to SAP PO for mapping. In SAP PI/PO we need to create Asynchronous interface **With respect to SAP its an inbound Interface(Skyvva to SAP)** **Import XSD into ESR** First, we have to create a namespace in ESR like "urn:SF2SAP:attachment". Now create an external definition under the namespace like below. we can give the name as ED_ContentVersion ![](../images/2021/07/Untitled-5.png) Import the XSD and Save and activate it. We need to create Datatype, Messagetype and Service Interface for target file system **Target Data type** Here we are selecting the base64Binary for the field versionData as shown below. In this field we are going to send file attachment from Skyvva. ![](../images/2021/07/Untitled-6.png) **Target Message type** ![](../images/2021/07/Untitled-7.png) **Outbound Service Interface** ![](../images/2021/07/Untitled-8.png) Select the Source message type and save and activate the service interface. **Inbound Service Interface** Create service interface ![](../images/2021/07/Untitled-9.png) Select the target message type and save and activate the service interface. **Message mapping** ![](../images/2021/07/Untitled-10.png) Do the respective mapping and save and activate it. **Operation Mapping for asynchronous inbound interface** Select the outbound and inbound service interface and the message mapping to create operation mapping ![](../images/2021/07/Untitled-11.png) Then save and activate it. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2021/07/Untitled-12.png) These are the objects we should create. We have to define our business component e.g. for the file system "**BC_File**". For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender SOAP communication channel** Create sender communication channel as shown below. Since we are sending file from Skyvva. So, here we are using SOAP adapter in the sender channel. ![](../images/2021/07/Untitled-13.png) Provide the necessary details. After that save and activate the channel. **Configuring the File receiver channel** Configurations for Target tab ![](../images/2021/07/Untitled-14.png) Configurations for Processing tab ![](../images/2021/07/Untitled-15.png) Configurations for Advanced Tab ![](../images/2021/07/Untitled-16.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2021/06/Untitled-22.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2021/06/Untitled-23.png) In Receiver interfaces tab specify the operation mapping. ![](../images/2021/06/Untitled-24.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2021/06/Untitled-25.png) **Testing the interface - ** Triggering the data from SOAPUI ![](../images/2021/06/Untitled-26.png) Message is delivered from SAP PO ![](../images/2021/06/Untitled-27.png) Check the message in Skyvva message monitoring. ![](../images/2021/06/Untitled-28.png) ![](../images/2021/06/Untitled-29.png) Click on "**related to**" to check the transferred data in Skyvva ![](../images/2021/06/Untitled-30.png) We are sending the base 64 string from SAP PO to Skyvva as we can see the transferred data below ![](../images/2021/06/Untitled-31.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound asynchronous interface with the normal integrate operation in SAP PI/PO with V3 adapter module to generate the Skyvva External ID and Transaction ID? Title: 1. How to create an inbound asynchronous interface with the normal integrate operation in SAP PI/PO with V3 adapter module to generate the Skyvva External ID and Transaction ID? Slug: how-to-create-an-inbound-asynchronous-interface-with-the-normal-integrate-operation-in-sap-pi-po-with-v3-adapter-module-to-generate-the-skyvva-external-id-and-transaction-id URL: https://help.skyvva.com/#article/how-to-create-an-inbound-asynchronous-interface-with-the-normal-integrate-operation-in-sap-pi-po-with-v3-adapter-module-to-generate-the-skyvva-external-id-and-transaction-id ================================================================================ # 1. How to create an inbound asynchronous interface with the normal integrate operation in SAP PI/PO with V3 adapter module to generate the Skyvva External ID and Transaction ID? This document explains us about how to create skyvva asynchronous inbound interface in SAP PI/PO with new V3 adapter module to generate the Skyvva External ID and Transaction ID? We have to understand the 4 fields we have in the message monitoring e.g. - Business External Id - System External Id - Transfer Id - Transaction Id **System External Id** - For every message we have the Id field as the Skyvva system external Id field. **Transfer Id -** SAP PO filled automatically the transfer id with the SAP PO message id. It is taken care by SKYVVA java module which is deployed in SAP PO. **Transaction Id** - It is generated by skyvva api internally if you don't set the field for 'Custom Transaction Id'. we set the path for this field to get the value from source. Such value we can see in the Transaction Id in the SKYVVA message monitor **Business External Id -** is the external id which we check the flag in the mapping tool. In this example System External Id is for example the IDOC Number. Steps needs to be done in Skyvva Create Asynchronous Inbound Interface New V3 works only with Skyvva message type. Create Metadata Provider: ![](../images/2020/07/Untitled.png) Create Istructure Repository: ![](../images/2020/07/Untitled-1.png) Create Message type: For Inbound we can use normal message type as shown. ![](../images/2021/08/Untitled.png) **Inbound skyvva Interface - ** In this example i am creating the interfaces under "Lalitha_Test_Integration**"** ![](../images/2020/07/Untitled-3.png) If we want to put the customer number into this field skyvvasolutions__SKYVVA_EXTERNAL_ID__c so that we can search in our monitor by the sap customer number for that we have to specify the path of system external Id and customer transaction Id. which comes from the IDOC source structure but here we have specify only the target skyvva sObject structure path. If we don't specify the Customer Transaction Id. Skyvva will generate the default transaction Id. In this example we are not specifying the path of Custom Transaction Id ![](../images/2021/08/Untitled-5.png) Do the mapping as shown below ![](../images/2020/06/Untitled-12.png) Download the inbound interface XSD to import to SAP PO for mapping. We have to create the SKYVVA__SystemExternalId field as Message type field entry from the Account message type related tab. To create Message type field entry initially we have to create Istructure as shown below. Click on "New Istructure" to create Istructure ![](../images/2021/08/Untitled-6.png) Now specify the Name and Category of the Istructure and then save the Istructure field. ![](../images/2021/08/Untitled-7.png) Create the message type field entry from the Account related tab. Click on "New" to create new field entry. ![](../images/2021/08/Untitled-9.png) Give the Message type field entry name and Istructure name and then click on Save. ![](../images/2021/08/Untitled-10.png) ![](../images/2021/08/Untitled-11.png) Now the field entry is created as shown below. ![](../images/2021/08/Untitled-8.png) Once we create this field in message type field entry. Now we can see this field in the Downloaded XSD. To download the XSD. Go to Integration details tab and then click on "Generate Metadata" ![](../images/2021/08/Untitled-12.png) Now select the Interface name and choose file format and then click on export to generate the XSD. ![](../images/2021/08/Untitled-13.png) Scroll down to see the generated XSD and click on View to download the XSD file. ![](../images/2021/08/Untitled-14.png) Import this downloaded XSD to SAP PO for further mapping steps. In SAP PI/PO we need to create Asynchronous interface **With respect to SAP its an outbound Interface(SAP to Salesforce)** **Import WSDL into ESR** First, we have to create a namespace in ESR like "http://DEBMAS07_to_AccountUpdate". Now create an external definition under the namespace like below. Here is the XSD  for Account. So, we can give the name as ED_32Demo_new ![](../images/2021/08/Untitled-16.png) Now import the XSD and Save and activate it. No need to create Datatype, Message type and Service Interface for Sender system SAP as we are using IDOC as a source. **Service Interface** Create service interface ![](../images/2020/07/Untitled-6.png) Now click on Save and activate it. **Message mapping** ![](../images/2020/07/Untitled-7.png) Map the DOCNUM with SKYVVA__SystemExternalId to send the IDOC number System external Id to show in SKYVVA monitor. ![](../images/2021/08/Untitled-17.png) Do the respective mapping and save and activate it. **Operation Mapping for asynchronous inbound interface** Create Operation mapping. ![](../images/2020/06/Untitled-23.png) Then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/06/Untitled-24.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender Idoc communication channel** Create sender communication channel as shown below. Since we are using an IDOC as a source. So, here we are using IDoc adapter in the sender channel. ![](../images/2019/06/Untitled-40.png) Provide the necessary details. After that save and activate the channel. **10. Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2019/06/Untitled-21.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. ![](../images/2020/07/Untitled-8.png) ![](../images/2020/07/Untitled-9.png) Configuration of module parameters are described in detail below **Skyvva Module Parameters** **"Skyvva/V3/Integration"** to be used with SOAP receiver channels. Module parameters are outlined below ![](../images/2020/02/Untitled-49.png) ![](../images/2019/06/Untitled-128.png) **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2019/06/Untitled-129.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2019/06/Untitled-130.png) In Receiver interfaces tab specify the operation mapping and also the values of the parameters. The parameter Account_Update_In is the interface name (on Skyvva side) of the interface Account. ![](../images/2019/06/Untitled-131.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2019/06/Untitled-132.png) **Testing the interface - ** Triggering the data from SAP ![](../images/2020/07/Untitled-10.png) ![](../images/2021/08/Untitled-18.png) We can see the Business External Id as we define the mapping tool, System external Id as IDOC Numberand Transaction Id as a auto generated value from SKYVVA and transfer Id as a SAP PO message Id in the SKYVVA message monitoring. Account data transferred to Skyvva ![](../images/2020/07/Untitled-11.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound asynchronous interface with the integrateBatch operation in SAP PI/PO with V3 adapter module to generate the Skyvva External ID and Transaction ID? Title: 1. How to create an inbound asynchronous interface with the integrateBatch operation in SAP PI/PO with V3 adapter module to generate the Skyvva External ID and Transaction ID? Slug: how-to-create-an-inbound-asynchronous-interface-with-the-integratebatch-operation-in-sap-pi-po-with-v3-adapter-module-to-generate-the-skyvva-external-id-and-transaction-id URL: https://help.skyvva.com/#article/how-to-create-an-inbound-asynchronous-interface-with-the-integratebatch-operation-in-sap-pi-po-with-v3-adapter-module-to-generate-the-skyvva-external-id-and-transaction-id ================================================================================ # 1. How to create an inbound asynchronous interface with the integrateBatch operation in SAP PI/PO with V3 adapter module to generate the Skyvva External ID and Transaction ID? This document explains us about how to create skyvva asynchronous inbound interface with Integrate Batch mode in SAP PI/PO with new V3 adapter module to generate the Skyvva External ID and Transaction ID? **IntegrateBatch -** Batch data processing is an efficient way of processing high volumes of data, where a group of transactions is collected over a period of time. Data is collected, entered, processed and then the batch results are produced. So, now we are going to create an inbound interface using integrate batch with Skyvva connector module We have to understand the 4 fields we have in the message monitoring e.g. - Business External Id - System External Id - Transfer Id - Transaction Id **System External Id** - For every message we have the Id field as the Skyvva system external Id field. **Transfer Id -** In case of integrate Batch transfer Id will not be generated by SAP SKYVVA module. **Transaction Id** - It is generated by skyvva api internally if you don't set the field for 'Custom Transaction Id'. If we set the path for this field to get the value from source. Such value we can see in the Transaction Id in the SKYVVA message monitor **Business External Id -** It is the external id which we check the flag in the mapping tool. In this example System External Id is for example the IDOC Number. Steps needs to be done in Skyvva Create Asynchronous Inbound Interface New V3 works only with Skyvva message type. Create Metadata Provider: ![](../images/2020/07/Untitled.png) Create Istructure Repository: ![](../images/2020/07/Untitled-1.png) Create Message type: For Inbound we can use normal message type as shown. ![](../images/2021/08/Untitled.png) **Inbound skyvva Interface - ** In this example we are creating the interfaces under "SAP PI/PO Integration App V1**".** Specify the Interface name, Description, Source/Target Name, Metadata Provider, Repository, Message type, Status, Direction and Operation Type as shown below ![](../images/2022/01/Untitled-16.png) ![](../images/2022/01/Untitled-17.png) If we want to put the customer number into this field skyvvasolutions__SKYVVA_EXTERNAL_ID__c so that we can search in our monitor by the sap customer number for that we have to specify the path of system external Id and customer transaction Id. which comes from the IDOC source structure but here we have specify only the target skyvva sObject structure path. If we don't specify the Customer Transaction Id. Skyvva will generate the default transaction Id. In this example we are specifying the path of System External Id and Custom Transaction Id as shown below. ![](../images/2022/01/Untitled.png) We have to enable the Batch mode in the skyvva interface. ![](../images/2022/01/Untitled-8.png) Do the mapping as shown below ![](../images/2020/06/Untitled-12.png) Download the inbound interface XSD to import to SAP PO for mapping. We have to create the SKYVVA__SystemExternalId field as Message type field entry from the Account message type related tab. To create Message type field entry initially we have to create Istructure as shown below. Click on "New Istructure" to create Istructure ![](../images/2021/08/Untitled-6.png) Now specify the Name and Category of the Istructure and then save the Istructure field. ![](../images/2021/08/Untitled-7.png) Create the message type field entry from the Account related tab. Click on "New" to create new field entry. ![](../images/2021/08/Untitled-9.png) Give the Message type field entry name and Istructure name and then click on Save. ![](../images/2021/08/Untitled-10.png) ![](../images/2021/08/Untitled-11.png) Now the field entry is created as shown below. ![](../images/2021/08/Untitled-8.png) Once we create this field in message type field entry. Now we can see this field in the Downloaded XSD. To download the XSD. Go to Integration details tab and then click on "Generate Metadata" ![](../images/2021/08/Untitled-12.png) Now select the Interface name and choose file format and then click on export to generate the XSD. ![](../images/2021/08/Untitled-13.png) Scroll down to see the generated XSD and click on View to download the XSD file. ![](../images/2021/08/Untitled-14.png) Import this downloaded XSD to SAP PO for further mapping steps. In SAP PI/PO we need to create Asynchronous interface **With respect to SAP its an outbound Interface(SAP to Salesforce)** **Import WSDL into ESR** First, we have to create a namespace in ESR like "http://DEBMAS07_to_AccountUpdate". Now create an external definition under the namespace like below. Here is the XSD  for Account. So, we can give the name as ED_32Demo_new ![](../images/2021/08/Untitled-16.png) Now import the XSD and Save and activate it. No need to create Datatype, Message type and Service Interface for Sender system SAP as we are using IDOC as a source. **Service Interface** Create service interface ![](../images/2020/07/Untitled-6.png) Now click on Save and activate it. **Message mapping** ![](../images/2020/07/Untitled-7.png) Map the DOCNUM with SKYVVA__SystemExternalId to send the IDOC number System external Id to show in SKYVVA monitor. ![](../images/2021/08/Untitled-17.png) Do the respective mapping and save and activate it. **Operation Mapping for asynchronous inbound interface** Create Operation mapping. ![](../images/2020/06/Untitled-23.png) Then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/06/Untitled-24.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender Idoc communication channel** Create sender communication channel as shown below. Since we are using an IDOC as a source. So, here we are using IDoc adapter in the sender channel. ![](../images/2019/06/Untitled-40.png) Provide the necessary details. After that save and activate the channel. **10. Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2022/01/Untitled-1.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. We have to specify the SKYVVA version for Acknowledgement handling with Batch mode. ![](../images/2022/01/Untitled-2.png) ![](../images/2022/01/Untitled-3.png) Configuration of module parameters are described in detail below **Skyvva Module Parameters** **"Skyvva/V3/Integration"** to be used with SOAP receiver channels. Module parameters are outlined below **Parameter** **Description** **Value** BatchPacketSize Size of the batch. If we put the packet size as 2. It means each batch contains 2 messages Ex - 2 IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Lalitha_Test_Integration SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://test.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation in skyvva integrateBatch pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx skyvvaVersion Skyvva version needs to be specify here Ex. 2.48 **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2022/01/Untitled-5.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2022/01/Untitled-6.png) In Receiver interfaces tab specify the operation mapping and also the values of the parameters. The parameter Account_IN is the interface name (on Skyvva side) of the interface Account. ![](../images/2022/01/Untitled-7.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2022/01/Untitled-4.png) **Testing the interface - ** Triggering the data from SAP We have to check in Bulk control board From the Integration details tab we have to select "Batch Control Board" I have sent four records from SAP. So we can see 2 batches in Batch control board. ![](../images/2022/01/Untitled-23.png) Then it will navigate to the below page. ![](../images/2022/01/Untitled-24.png) Click on search to see the Records sent from SAP ![](../images/2022/01/Untitled-25.png) In this example we have reprocessed the messages manually using the reprocess button. We are not using the Scheduler to process the messages. ![](../images/2022/01/Untitled-11.png) ![](../images/2022/01/Untitled-12.png) Now we can see the completed messages in the SKYVVA message monitor. ![](../images/2022/01/Untitled-13.png) ![](../images/2022/01/Untitled-14.png) We can see the Business External Id as we define in the mapping tool, System external Id as IDOC Number and Transaction Id as we defined the path as customer number from SAP and transfer Id will not generate by SAP skyvva module in case of Batch mode. Account data transferred to Skyvva ![](../images/2020/07/Untitled-11.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an inbound asynchronous interface with the integrateBulk operation in SAP PI/PO with V3 adapter module to generate the Skyvva External ID and Transaction ID? Title: 1. How to create an inbound asynchronous interface with the integrateBulk operation in SAP PI/PO with V3 adapter module to generate the Skyvva External ID and Transaction ID? Slug: 59-how-to-create-an-inbound-asynchronous-interface-with-the-integratebulk-operation-in-sap-pi-po-with-v3-adapter-module-to-generate-the-skyvva-external-id-and-transaction-id URL: https://help.skyvva.com/#article/59-how-to-create-an-inbound-asynchronous-interface-with-the-integratebulk-operation-in-sap-pi-po-with-v3-adapter-module-to-generate-the-skyvva-external-id-and-transaction-id ================================================================================ # 1. How to create an inbound asynchronous interface with the integrateBulk operation in SAP PI/PO with V3 adapter module to generate the Skyvva External ID and Transaction ID? This document explains us about how to create skyvva asynchronous inbound interface with Integrate Bulk mode in SAP PI/PO with new V3 adapter module to generate the Skyvva External ID and Transaction ID? **Introduction** SKYVVA provides different processing modes and uses API Dynamic Switch where incoming data goes automatically to be processed as asynchronous, batch or bulk. **What Is Bulk?** SKYVVA Bulk Interface Processing is an interface uses for running bulk attachments. When you have a huge amount of data I.e data >= 5000 records, then we should use bulk processing to process the interface. **We should know some terms:** - **BULK Mode**: We have to set this flag to run our interface in bulk mode using salesforce bulk API. - **SKYVVA Bulk**: SKYVVA Bulk is slow but very powerful, it allows you to do business mapping using our mapping tool and formula. Likewise, you can use SKYVVA workflow to validate the data before posting. You can use SKYVVA Bulk mode with both Bulk-processing mode, which are Parallel and Serial. The default value is Serial.With V2 Skyvva connector module we cannot support message type hierarchical data. SKYVVA Bulk will support both flat and hierarchical data. - **SFDC Bulk: **We support SFDC pure bulk mode in version 1.0 or 2.0 that is very fast but cannot use SKYVVA mapping tool to do business data mapping. On the other hand, SFDC Bulk require the data has to be mapped already on the sender side and doing additional mapping to enrich the business logic is not possible using SKYVVA mapping. This mode will work with both processing mode, Parallel and Serial, for version 1.0. Version 2.0, you can only use with Serial mode processing.SFDC Bulk will support only flat structure. - **Bulk Version**: SKYVVA support SFDC pure bulk mode in version1.0 or version 2.0 then we have our own skyvva bulk mode. This use skyvva workflow and mapping and thus it is more powerful but slower than pure bulk API technique from salesforce. - **Bulk Processing Mode**: This fields indicate two modes which is support with bulk version 1.0 and bulk version 2.0 only parallel mode is supported. So the value is depend here the selection of field bulk version. For example  When we want to use ‘ serial‘ we should select bulk 1.0. - Parallel: When you select this processing mode, it will run parallel. - Serial: When you select this mode, it will not run at the same time. - **Bulk Package Size**: This parameter determine how many records is splitted into Bulk data size. If your Message contain 10.000 records and the value for this parameter is 1000 so you will get 10 bulk data set in Salesforce. - **Bulk Monitor Keep Size**: The number of bulk execute logs to be keep. - Bulk Sch Frequency: This is the schedule time frequency for bulk scheduler on interface. - **Bulk Integrate Time Interval (minute**): The interval (minutes) used for integrate bulk job scheduler. For example, if its value is 10, then the integrate bulk scheduler will be run every 10 minutes. # - **What is needed for a BULK Inteface** The process and development of an inbound interface utilize the bulk api is almost the same like developing an ordinary inbound interface. How to develop an ordinary inbound interface with SKYVVA Integration Suite is described in the document "How to create an inbound interface to post a single sObject? ". The following steps to be follow to develop and processing an interface with bulk api: - Follow all the steps to develop an inbound interface - Configure these parameters SforceBulkOperation, SforceBulkPacketSize  and SforceBulkInterfaceId for in the soap inbound channel - Bulk data set will be created as bulk data load job and has to be processed inside Salesforce manually We have to understand the 4 fields we have in the message monitoring e.g. - Business External Id - System External Id - Transfer Id - Transaction Id **System External Id** - For every message we have the Id field as the Skyvva system external Id field. **Transfer Id -** In case of "integrateBulk" transfer Id will not be generated by SAP SKYVVA module. **Transaction Id** - It is generated by skyvva api internally if you don't set the field for 'Custom Transaction Id'. If we set the path for this field to get the value from source. Such value we can see in the Transaction Id in the SKYVVA message monitor **Business External Id -** It is the external id which we check the flag in the mapping tool. In this example System External Id is for example the IDOC Number. Steps needs to be done in Skyvva Create Asynchronous Inbound Interface New V3 works only with Skyvva message type. Create Metadata Provider: ![](../images/2020/07/Untitled.png) Create Istructure Repository: ![](../images/2020/07/Untitled-1.png) Create Message type: For Inbound we can use normal message type as shown. ![](../images/2021/08/Untitled.png) **Inbound skyvva Interface - ** In this example we are creating the interfaces under "SAP PI/PO Integration App V1**".** Specify the Interface name, Description, Source/Target Name, Metadata Provider, Repository, Message type, Status, Direction and Operation Type as shown below ![](../images/2022/01/Untitled-16.png) ![](../images/2022/01/Untitled-17.png) If we want to put the customer number into this field skyvvasolutions__SKYVVA_EXTERNAL_ID__c so that we can search in our monitor by the sap customer number for that we have to specify the path of system external Id and customer transaction Id. which comes from the IDOC source structure but here we have specify only the target skyvva sObject structure path. If we don't specify the Customer Transaction Id. Skyvva will generate the default transaction Id. In this example we are specifying the path of System External Id and Custom Transaction Id as shown below. ![](../images/2022/01/Untitled.png) We have to enable the Bulk mode in the skyvva interface. ![](../images/2022/01/Untitled-15.png) Do the mapping as shown below ![](../images/2020/06/Untitled-12.png) Download the inbound interface XSD to import to SAP PO for mapping. We have to create the SKYVVA__SystemExternalId field as Message type field entry from the Account message type related tab. To create Message type field entry initially we have to create Istructure as shown below. Click on "New Istructure" to create Istructure ![](../images/2021/08/Untitled-6.png) Now specify the Name and Category of the Istructure and then save the Istructure field. ![](../images/2021/08/Untitled-7.png) Create the message type field entry from the Account related tab. Click on "New" to create new field entry. ![](../images/2021/08/Untitled-9.png) Give the Message type field entry name and Istructure name and then click on Save. ![](../images/2021/08/Untitled-10.png) ![](../images/2021/08/Untitled-11.png) Now the field entry is created as shown below. ![](../images/2021/08/Untitled-8.png) Once we create this field in message type field entry. Now we can see this field in the Downloaded XSD. To download the XSD. Go to Integration details tab and then click on "Generate Metadata" ![](../images/2021/08/Untitled-12.png) Now select the Interface name and choose file format and then click on export to generate the XSD. ![](../images/2021/08/Untitled-13.png) Scroll down to see the generated XSD and click on View to download the XSD file. ![](../images/2021/08/Untitled-14.png) Import this downloaded XSD to SAP PO for further mapping steps. In SAP PI/PO we need to create Asynchronous interface **With respect to SAP its an outbound Interface(SAP to Salesforce)** **Import WSDL into ESR** First, we have to create a namespace in ESR like "http://DEBMAS07_to_AccountUpdate". Now create an external definition under the namespace like below. Here is the XSD  for Account. So, we can give the name as ED_32Demo_new ![](../images/2021/08/Untitled-16.png) Now import the XSD and Save and activate it. No need to create Datatype, Message type and Service Interface for Sender system SAP as we are using IDOC as a source. **Service Interface** Create service interface ![](../images/2020/07/Untitled-6.png) Now click on Save and activate it. **Message mapping** ![](../images/2020/07/Untitled-7.png) Map the DOCNUM with SKYVVA__SystemExternalId to send the IDOC number System external Id to show in SKYVVA monitor. ![](../images/2021/08/Untitled-17.png) Do the respective mapping and save and activate it. **Operation Mapping for asynchronous inbound interface** Create Operation mapping. ![](../images/2020/06/Untitled-23.png) Then save and activate the operation mapping. **Creation of Integrated Configuration Objects** After creating the objects in ESR. We have to configure these objects in the integration directory. First, we have to create Configuration Scenario. Now enter the name of the scenario, description and choose a folder if you have created then press on create button. An Integration scenario has the following objects. - Business System for Sender and Receiver - Sender and Receiver Communication channel - Integrated Configuration ![](../images/2020/06/Untitled-24.png) These are the objects we should create. We have to define our business system e.g. for the SAP-Backend. For Salesforce you can use our proposal "**Salesforce**" as the business system. We have to import these business systems from SLD. **Configuring the Sender Idoc communication channel** Create sender communication channel as shown below. Since we are using an IDOC as a source. So, here we are using IDoc adapter in the sender channel. ![](../images/2019/06/Untitled-40.png) Provide the necessary details. After that save and activate the channel. **10. Configuring the SOAP receiver channel** Configuration for Tab "General" ![](../images/2022/01/Untitled-18.png) Specify the parameters as shown in the above screenshot. Below is the configuration for the "Advanced" Tab. ![](../images/2019/06/Untitled-22.png) The value "TserverLocation" has to be entered for the parameter Variable Header (XHeaderName1). Below are the settings for Tab "Module". Here, the SKYVVA module containing the logic for session handling and transformation logic must be specified. We have to specify the SKYVVA version for Acknowledgement handling with BULK mode. ![](../images/2022/01/Untitled-19.png) ![](../images/2022/01/Untitled-20.png) Configuration of module parameters are described in detail below **Skyvva Module Parameters** **"Skyvva/V3/Integration"** to be used with SOAP receiver channels. Module parameters are outlined below **Parameter** **Description** **Value** IntegrationID This parameter contains the skyvva engine integration id on Salesforce. Here we recommend to use only Integration name instead of id because if we transport the objects from one environment to other environment IntegrationId will be changed but Integration Name will not be changed. Lalitha_Test_Integration SessionGlobalFilePath This parameter holds the path in which the session id is being stored /usr/sap/O5B/SYS/global SforceAccessPoint This parameter represents the URL(endpoint) for getting the session id. The URL is that of the Enterprise WSDL for Salesforce used for logging in and getting the session id https://test.salesforce.com/services/Soap/c/43.0 SessionPooling.Active A flag that actives or deactivates the session pooling. Set for better performance X SforceRequestPayload It will show the request payload of skyvva X SforceSecurityToken This parameters holds the security token from salesforce. Necessary only of configured in the salesforce instance By54dfe0000DerYvvv SforceShowSAPChannelParameters It displays the SAP PI parameters in the output log X SforceUsername This parameter is the salesforce username xxx@bbbb.com SforceWebServiceOperation Defines the webservice operation in skyvva integrateBulk pwdSforceLoginPassword It holds the password of the salesforce user used to log in to the salesforce xxxxxxx SforceBulkPackageSize This parameter determines how many records are split into chunks of the package size. For example if PI message contains 1000 records and the value of this parameter is 100 then we will get 10 batches each contain 100 records. Ex – 1000 sforceBulkMode It specifies the mode of Bulk Skyvva Bulk skyvvaVersion Skyvva version needs to be specify here Ex. 2.48 SforceBulkOperation This parameter is set when the interface uses the Bulk API. The bulk API enables transferring of mass data X SforceBulkInterfaceId It specifies the name of the skyvva interface Account_IN **Integrated Configuration** Create integrated configuration objects as shown below. Enter the required data e.g. the Communication Component, Interface and Namespace and then click on create button to create an ICO. Now go through the tabs from left to right to configure the relevant objects. In this first tab "Inbound Processing" here we have to specify the sender communication channel. ![](../images/2022/01/Untitled-5.png) Here in the "Receiver" tab, we have to specify the receiver business system. ![](../images/2022/01/Untitled-6.png) In Receiver interfaces tab specify the operation mapping and also the values of the parameters. The parameter Account_IN is the interface name (on Skyvva side) of the interface Account. ![](../images/2022/01/Untitled-7.png) In the "outbound processing" tab, we have to specify the receiver channel. ![](../images/2022/01/Untitled-21.png) **Testing the interface - ** Triggering the data from SAP We have to check in Bulk control board From the Integration details tab we have to select "Bulk Control Board" I have sent four records from SAP. So we can see 2 batches in BULK control board. ![](../images/2022/01/Untitled-22.png) Then it will navigate to the below page. Select the Interface name and click on search to see the records sent from SAP. ![](../images/2022/01/Untitled-26.png) We sent 4 records from SAP with Bulk package size as 2. So here we can see two attachments. In this example we are processing the attachments manually using the "Process Bulk Attachment". Not using any scheduler. ![](../images/2022/01/Untitled-28.png) Now we can see the manual processed files below with status completed. ![](../images/2022/01/Untitled-29.png) Now we can see the completed messages in the SKYVVA message monitor. ![](../images/2022/01/Untitled-13.png) ![](../images/2022/01/Untitled-14.png) We can see the Business External Id as we define in the mapping tool, System external Id as IDOC Number and Transaction Id as we defined the path as customer number from SAP and transfer Id will not generate by SAP skyvva module in case of Bulk mode. Account data transferred to Skyvva ![](../images/2020/07/Untitled-11.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to check the SKYVVA Java module version which is deployed in SAP PI/PO? Title: 1. How to check the SKYVVA Java module version which is deployed in SAP PI/PO? Slug: 60-how-to-check-the-skyvva-java-module-version-which-is-deployed-in-sap-pi-po URL: https://help.skyvva.com/#article/60-how-to-check-the-skyvva-java-module-version-which-is-deployed-in-sap-pi-po ================================================================================ # 1. How to check the SKYVVA Java module version which is deployed in SAP PI/PO? This document explains us about how to check the SKYVVA java module version which is deployed in SAP PI/PO. For this we have to open SAP PO NetWeaver Administration ![](../images/2022/02/Untitled.png) then we have to select the tab troubleshooting ![](../images/2022/02/Untitled-1.png) Now select JNDI browser ![](../images/2022/02/Untitled-2.png) Once we select JNDI browser we can navigate to the below page ![](../images/2022/02/Untitled-3.png) Scroll down to see JNDI registry "Skyvva.com" ![](../images/2022/02/Untitled-4.png) In that if we can expand  GetSessionID_V3. Here we can see the deployed module details as shown below ![](../images/2022/02/Untitled-5.png) Similarly for GetSessionID_V4. Once we expand this we can see the V4 module details as shown below. ![](../images/2022/02/Untitled-6.png) ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound synchronous interface in SAP PI/PO with XML format using SKYVVA REST V3 Adapter? Title: 1. How to create an outbound synchronous interface in SAP PI/PO with XML format using SKYVVA REST V3 Adapter? Slug: how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-with-xml-format-using-skyvva-rest-v3-adapter URL: https://help.skyvva.com/#article/how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-with-xml-format-using-skyvva-rest-v3-adapter ================================================================================ # 1. How to create an outbound synchronous interface in SAP PI/PO with XML format using SKYVVA REST V3 Adapter? ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO adapter using REST Protocol with JSON format? Title: 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO adapter using REST Protocol with JSON format? Slug: how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-sap-pi-po-adapter-using-rest-protocol-with-json-format URL: https://help.skyvva.com/#article/how-to-create-an-outbound-synchronous-interface-in-sap-pi-po-using-skyvva-sap-pi-po-adapter-using-rest-protocol-with-json-format ================================================================================ # 1. How to create an outbound synchronous interface in SAP PI/PO using SKYVVA SAP PI/PO adapter using REST Protocol with JSON format? # How to create an outbound Synchronous interface from Salesforce Skyvva to SAP ## 1.    Overview This document describes how to create an outbound synchronous interface from Salesforce to SAP using SAP PI/PO as middleware In Salesforce, we need to use the Skyvva **SAP PI/PO adapter** and provide the necessary PI/PO details to configure the adapter. Here, in this case we are going to send the account data from Salesforce to PI, where SAP PI/PO adapter will send this data in JSON format. Pre-requisites: - Skyvva Package should be installed on Salesforce - SAP PI/PO user with the required authorizations for message processing ## 2.    Salesforce Interface Development ### 2.1  Create Integration in Salesforce Logon to the Salesforce, and navigate to the Integration. ![](../images/2021/12/1-2.png) Click on New to create the new integration. Provide the integration name and save it. ![](../images/2022/03/Untitled-65.png) Once Integration is created navigate to the interfaces and click on “New Interface” to create the new interface. ![](../images/2022/03/Untitled-66.png) Provide the necessary details to create the outbound interface. In this example, I have created the interface under "**SAP PI/PO Integration App V1"** - **Create Outbound request interface ** ![](../images/2022/03/Untitled-69.png) ![](../images/2022/03/Untitled-71.png) If we use the message type defined in skyvva then we have to do mapping in skyvva as shown. ![](../images/2022/03/Untitled-72.png) ![](../images/2022/03/Untitled-73.png) Now mapping need to be done in the Skyvva interface to push what are the fields need to send from Account S-Object. - **Create an inbound response interface** ![](../images/2022/03/Untitled-74.png) ![](../images/2020/05/Untitled-15.png) Now mapping need to be done in the Skyvva interface to get what are the fields need to get from SAP ![](../images/2022/03/Untitled-75.png) Save the mapping and the inbound response interface. Download the inbound and outbound  interface XSD's and upload it into SAP PO for mapping. **Parameters:** Name SF_2_SAP_Account_Request_REST_Out Source/Target Name Account Status Deployed Processing Mode Synchronous Interface Direction Outbound Connect with Middleware Outbound Adapter Now save the interface. **Note:** Here we need to update the below details in interface. - **Outbound Adapter -** To connect the PI/PO system - MetaData Provider (To generate the Standard structure) - Repository (To generate the Standard structure) - Source/Target Message Type (To generate the Standard structure) ![](../images/2021/12/1-6.png) MetaData provider, Repository and Source/target message type are used in Skyvva standard REST template, which is used by SAP CPI adapter to send the data JSON format. This is the standard template which needs to be used in Skyvva outbound interface for CPI integration. **Hierarchy level**: MetaData contains Repository, repository contains Source/Target Message type ![](../images/2021/12/1-7.png) To create the metadata provider, navigate to the MetaData Providers and create “New” and provide the metadata provider name. **Note:** Metadata provider name can be anything based on the project naming convention ![](../images/2021/12/1-8.png) Once metadata provider created then go down and create “Repository” as shown in below screenshot. ![](../images/2021/12/1-9.png) Under the Repository, there is option to create the Message type. Click on new and create message type. **Message Type:** There are two ways to create message type with the below structure. - **Using REST Template (JSON)** - **Creating manually** **Using REST template: (Easy way)** To create the message type using REST template, navigate to the below path. Metadata provider > Repositories > Open Editor ![](../images/2021/12/1-10.png) Choose filetype as “JSON” and provide Input a JSON format with below JSON text. ***{*** ***  "REST Service": {*** ***    "Request": {*** ***      "URL": {},*** ***      "Header": {},*** ***      "Body": {*** ***        "Account": {*** ***        }*** ***      }*** ***    },*** ***    "Response": {*** ***      "root": {*** ***        "Account": {*** ***        }*** ***      }*** ***    }*** ***  }*** The above is the standard REST template that will used to create message type. ![](../images/2021/12/1-11.png) Click on save. Once saved we can find the message type as below. ![](../images/2021/12/1-12.png) Now edit the message type to add the TYPE, LEVEL, SEQUENCE NUMBER AND PARENT. Click on action to edit the message type structure. ![](../images/2021/12/1-13.png) Update the details like type and other parameters as below. ![](../images/2021/12/1-14.png) Similarly, need to update all. E.g. Account ![](../images/2021/12/1-15.png) Ensure that message type looks as below. ![](../images/2021/12/1-16.png) From the above screen shot, we can find Response where this will be used in the synchronous interface. **Message Type Name** à REST Service, can be free text where we can use any other name also depends on the project naming convention. If we need different name, we need to define it in the REST template. **Creating Manually:** To create below structure, please follow below steps. ![](../images/2021/12/1-17.png) To create message type, click on the “**New**” and provide the **message type name**, choose the **Type,** choose the **Level**, choose the **sequence number** and choose the **Parent.** For example, if we need to create the “Account” under Body with type Salesforce object. ![](../images/2021/12/1-18.png) Other example, to create the Body in structure ![](../images/2021/12/1-19.png) **Note**: Here Body has child so, we need to check the option “hasChild” Once Metadata provider, Repository name & Message types are created, then add these in Interface. Navigate to interface and add these as shown below. ![](../images/2021/12/1-20.png) Now save the interface. **Mapping in Skyvva Interface:** Open mapping in interface, please find below screenshot for reference. We can find the mapping as below which has both source and target structures. Map the fields based on the requirement and save it. ### 2.3  Create Skyvva SAP CPI adapter To create the CPI adapter for outbound interface, navigate to the below path. **Integration > Details > SAP Control Board > Adapter** ![](../images/2022/03/Untitled-76.png) Under adapter click on new to create the adapter. ![](../images/2022/03/Untitled-77.png) Create a new SAP PI/PO adapter by providing the necessary details. ![](../images/2022/03/Untitled-78.png) ![](../images/2022/03/Untitled-79.png) ![](../images/2022/03/Untitled-80.png) **CPI Adapter Parameters:** Adapter Name CustomerCreation_Rest  Type SAP PI/PO Direction Outbound Authentication Type Basic Status Active Protocol HTTP API Service Endpoint URL PI/PO interface endpoint url Operation POST Username Test Password ***** RequestFormat JSON Response Format JSON Salesforce Id Handling Return Salesforce Id into the Response Once all the details are provided then save it. **Now add the SAP PI/PO adapter in outbound interface under Outbound Setup as below.** ![](../images/2022/03/Untitled-70.png) ### 2.3  Generate the Skyvva XSD for PI/PO development Generation of Skyvva XSD (Structure) will be used in PI for PI message transformation. To generate the XSD from interface navigate to below path **Integration > Interface > Repository** ![](../images/2021/12/1-28.png) Under repository, in message types click on “Account” to download the XSD file. ![](../images/2021/12/1-29.png) ## 3.    SAP CPI Development Logon to CPI tenant, navigate to the Design > Packages > Artifacts > Create new **integration flow** **Step: 1** Create the sender HTTPS communication channel and provide the connection parameters. ![](../images/2021/12/1-30.png) **Step: 2** Import the Skyvva XSD created in Salesforce (refer section 2.3) into SAP CPI system. ![](../images/2021/12/1-31.png) Once the source XSD is loaded then import the target structure (in available format) Below is the integration flow created in SAP CPI ![](../images/2021/12/1-32.png) - Payload Script à Will log the source payload (JSON) - JSON to XML Convertor à This palate is used to convert the received JSON format data to xml ![](../images/2021/12/1-33.png) 3. Payload Script XML à Script to log the converted XML file 4. XSLT Mapping à This XSLT mapping is used to add the prefix and namespace to the converted XML. Below XSL code for reference. ![](../images/2021/12/1-34.png) 5.Payload Script XSLT, Script to log the XSLT payload 6. Message Mapping,  Source to Target transformation 7. Payload script After mapping, Script to log the payload after mapping ## 4.    Testing ### 4.1 Push the data from Salesforce to CPI using APEX code Now we are going to push the account data from Salesforce (Skyvva) to SAP CPI. Account data should be available in Salesforce. Please find below screenshot for reference. ![](../images/2021/12/1-35.png) To push this data from Salesforce, navigate to Developer console. ![](../images/2021/12/1-36.png) Navigate to below path Debug > Open Execute Anonymous Window ![](../images/2021/12/1-37.png) Use the below APEX code to trigger the data. *//Account_CPI_OB --Interface* *skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl();* *c.returnJSONComplete=true;* *c.actionDoIntegrate=true;* *c.isCreateMessage=true;* *String[] ids=new String[]{'0011j00001FbXAnAAN'};* *skyvvasolutions.Iservices.invokeCalloutV3('CPI Integrate','Account_CPI_Interface_OB',ids,'SYNC', c);* ![](../images/2021/12/1-38.png) Click on Execute Highlighted to push the data. Now monitor the message in Salesforce and CPI. ### 4.2 Salesforce message monitor: Navigate to Message monitoring and provide the details as below. ![](../images/2021/12/1-39.png) Click on search In below messages we can notice that message triggered to CPI “Green flag Status” ![](../images/2021/12/1-40.png) ### 4.3 CPI monitoring: Navigate to the Message monitoring in CPI and we can find the respective message in CPI with all logs. ![](../images/2021/12/1-41.png) From the above screen shot we can noticed that account data got processed in CPI. ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Subsection: (General) Title: Enhanced Domain with the Skyvva Salesforce Connector using the SOAP adapter Slug: enhanced-domain-with-the-skyvva-salesforce-connector-using-the-soap-adapter URL: https://help.skyvva.com/#article/enhanced-domain-with-the-skyvva-salesforce-connector-using-the-soap-adapter ================================================================================ # Enhanced Domain with the Skyvva Salesforce Connector using the SOAP adapter ## What is an enhanced domain? Please refer to the Salesforce help [https://help.salesforce.com/s/articleView?id=sf.domain_name_enhanced.htm&type=5](https://help.salesforce.com/s/articleView?id=sf.domain_name_enhanced.htm&type=5) to understand the reason and need to use the enhanced domain. ## Skyvva Salesforce Connector using with the soap adapter The old Salesforce connector is used with the soap adapter and therefore uses the soap api login to get the session Id. When you switch on the enhanced domain, there will be an impact on the operation of the interfaces.  ![](../images/2022/09/1.png) You have to uncheck the flag “Prevent SOAP API login from https://test.salesforce.com” as shown in the above screenshot. If you check this flag, the session handling using the login soap api in the Skyvva module will no longer work. ![](../images/2022/09/2.png) ![](../images/2022/09/3.png) In the soap receiver channel configuration, you are using the URL “[https://test.salesforce](https://test.salesforce).com” for your sandbox or “https://login.salesforce.com” for your production instance. Therefore you cannot check the flag “Prevent SOAP API login from https://test.salesforce.com”  when you activate the enhanced domain. If you want to check this flag, you must reconfigure the soap receiver channel everywhere you have been using the generic login URL of Salesforce. Note that the generic login URL of Salesforce is either [https://login.salesforce.com](https://login.salesforce.com) (production, development) or [https://test.salesforce.com](https://test.salesforce.com) (sandbox). You have to get the new correct domain URL after you have activated the enhanced domain and entered this domain into the soap receiver channel configuration.  ![](../images/2022/09/4.png) ![](../images/2022/09/5.png) In this example, we have activated the enhanced domain, and the URL is changed to “[https://skyvva32--skyvva15.sandbox.my.salesforce.com](https://skyvva32--skyvva15.sandbox.my.salesforce.com)” and you have to use this new URL in the soap receiver channel configuration.  We recommend not checking the flag, so you don’t need to spend time reconfiguring the soap receiver channel. Note that we also recommend you in our documentation here [#article/executive-summary](#article/executive-summary) to use the latest Salesforce connector module with the REST adapter. With the new Salesforce connector module, we are not using soap api. Switching the enhanced domain doesn’t create any issues because we are using REST api with OAuth authentication using the connected App. ================================================================================ Book: SAP PI/PO Adapter Section: SAP PI/PO Adapter Title: How to use the OAuth2 client-credential flow? Slug: how-to-use-the-oauth2-client-credential-flow URL: https://help.skyvva.com/#article/how-to-use-the-oauth2-client-credential-flow ================================================================================ # How to use the OAuth2 client-credential flow? description: "Client credential flow for the OAuth2 authentication" --- # How to use the OAuth2 client-credential flow? Starting with SKYVVA SAP PI/PO connector module **v2.3.6**, you can authenticate from SAP PI/PO to Salesforce using the OAuth2 **Client-Credentials** flow in addition to the existing Username-Password flow. This article explains when to use it and how to configure it. ## Why we added this flow Salesforce no longer supports the legacy *Connected App* for new technical integrations. The replacement, the **External Client App**, supports **only the Client-Credentials flow**. If you are setting up a new Salesforce integration today, or your Salesforce administrator has migrated an existing integration to an External Client App, you must use this flow — Username-Password authentication is not available there. Existing channels using Username-Password against a Connected App continue to work unchanged. The two flows run side by side; a single channel parameter (`OAuth2Flow`) selects which one applies to that channel. ## Prerequisites ### 1. Salesforce — External Client App Create an External Client App in Salesforce, enable the Client-Credentials flow, and assign a Run-As user. The detailed steps live in the Salesforce documentation — this is a Salesforce-side setup and not a SKYVVA feature, so we don't duplicate Salesforce's documentation here. After the app is created, copy the two values you will paste into the SAP PI/PO channel: - **Consumer Key** (the OAuth `client_id`) - **Consumer Secret** (the OAuth `client_secret`) You will also need the **OAuth2 token endpoint** for your Salesforce org. The URL pattern is: ``` https://.my.salesforce.com/services/oauth2/token ``` For sandbox orgs, replace the host with the sandbox `my.salesforce.com` host that Salesforce assigns to your org. The path (`/services/oauth2/token`) is the same in production and sandbox. ### 2. SKYVVA managed package on Salesforce The v2.3.6 module reads a new custom field on the SKYVVA Interface object to determine the per-interface API retry budget: ``` skyvvasolutions__Max_Number_Of_API_Retry__c ``` If your Salesforce SKYVVA managed package version is older than the version that ships this field, add the field manually before deploying v2.3.6 to your SAP PI/PO system. Default value `0` (no extra retries beyond the automatic INVALID_SESSION_ID renewal). ### 3. SAP PI/PO — V3 receiver channel This article assumes you already have a working V3 receiver channel using the `Skyvva/V3/RestIntegration` module. See *How to Setup the SKYVVA Module Parameters in SAP PI/PO with V3?* for the base setup. The Client-Credentials flow only changes which authentication parameters the channel reads — everything else (`Operation`, `BulkPackageSize`, payload format, interface, integration) is unchanged. ## Channel parameters Open your receiver channel's **Module** tab and configure the parameters below. The table is split into three groups: (a) parameters that select the flow, (b) authentication parameters specific to each flow, (c) parameters shared with the existing V3 setup. > **Important:** parameter names are case-sensitive. Copy them exactly from this table. ### Flow selector | Parameter Name | Parameter Value | Required | Notes | |---|---|---|---| | `OAuth2Flow` | `Client-Credentials` | Yes — for this flow | Exact match: `Client-Credentials` or `Username-Password`. If the parameter is missing, the module defaults to `Username-Password`. Typos throw a fail-fast error at message start. | ### Authentication parameters | Parameter Name | Used for `Client-Credentials` | Used for `Username-Password` | Notes | |---|---|---|---| | `AuthorizationServerURL` | Required | Required | OAuth2 token endpoint, e.g. `https:///services/oauth2/token` | | `ConsumerKey` | Required | Required | The OAuth `client_id` copied from your Salesforce External Client App (or Connected App). | | `ConsumerSecret` | Required | Required | The OAuth `client_secret` copied from Salesforce. | | `SforceUsername` | **Ignored** | Required | For Client-Credentials, the Run-As user is configured server-side in the External Client App. If you set this parameter on a Client-Credentials channel, the module ignores it and emits one info-log line. | | `pwdSforceLoginPassword` | **Ignored** | Required | Same as above. Owned by the External Client App, not the channel. | ### Shared with V3 base setup These exist in your channel already if it follows the V3 setup. They are unchanged for Client-Credentials. | Parameter Name | Example | Notes | |---|---|---| | `Integration` | `Ly-Na` | Your SKYVVA integration name. | | `Inteface` | `V3RestIntegration_Bulk` | Your SKYVVA interface name. The legacy parameter spelling is preserved; the module reads it as-is. | | `Operation` | `Skyvva Bulk` | The integration operation, e.g. `integrate`, `Skyvva Batch`, `Skyvva Bulk`, `Salesforce Bulk`. | | `BulkPackageSize` | `5` | Bulk processing package size — applies when Operation is a Bulk variant. | | `AppVersion` | `2.48` | The SKYVVA managed package version on Salesforce. | | `SessionPooling.Active` | `X` | Recommended — re-uses the OAuth session across messages and triggers automatic renewal when Salesforce returns `INVALID_SESSION_ID`. | | `SessionGlobalFilePath` | `/usr/sap//SYS/global` | Path on the SAP-PO host where the OAuth session is cached as a `.ser` file. | | `SforceShowSAPChannelParameters` | `X` | Optional — when set, emits the parameter dump in the audit log (useful when troubleshooting). | | `SforceRequestPayload` | `X` | Optional — when set, emits the request body in the audit log. | ### Screenshot example The below screenshot show an example how to use the new parameter "OAuth2Flow". This screenshot is just ane example and you cannot copy the parameter name from it. Copy the parameter name from the table above. ![image](../images/2026/05/paste-1779730940184.png) ### About `ConsumerKey` vs. the legacy `ConsumeKey` name Older SKYVVA versions read this parameter under the misspelled name `ConsumeKey` (missing the trailing `r`). Both names are accepted in v2.3.6 — the canonical name `ConsumerKey` is preferred (it matches the sibling `ConsumerSecret`), but channels using the legacy name keep working and emit a one-line deprecation message in the audit log. You can rename the parameter at your convenience. ## Migration from Username-Password to Client-Credentials If you have an existing channel using Username-Password and your Salesforce administrator wants to switch to Client-Credentials: 1. Get the **Consumer Key** and **Consumer Secret** from the External Client App in Salesforce. 2. On the receiver channel's **Module** tab: - Add or set parameter `OAuth2Flow` to `Client-Credentials`. - Replace `ConsumerKey` and `ConsumerSecret` with the External Client values. - Update `AuthorizationServerURL` if it currently points at the SOAP login URL — change it to `https:///services/oauth2/token`. - You may leave `SforceUsername` and `pwdSforceLoginPassword` in place (they are ignored), or remove them. 3. Save and activate the channel. 4. Send a test message and confirm success (next section). The session cache file is keyed by the OAuth flow plus the Consumer Key, so switching flows does not collide with cache files from the previous flow. The first message after the switch performs a fresh OAuth token request and writes a new cache file named `SKYVVA_SalesforceContainer_CC_.ser` for Client-Credentials. Subsequent messages reuse the cached session until Salesforce invalidates it. ## Verify success in the audit log Send a test message and inspect the receiver channel's audit log. A successful Client-Credentials run shows these log lines (line numbers omitted for clarity): ``` skyvva_v2.3.6/SKYVVA/...RestIntegrationV3.4: Begin session handling (SKYVVA version 2.3.6) skyvva_v2.3.6/SKYVVA/DisplaySAPChannelParams.1: [INFO] SAP-PO channel parameters: OAuth2Flow: Client-Credentials AuthorizationServerURL: https:///services/oauth2/token ConsumerKey: ... skyvva_v2.3.6/SKYVVA/...RestIntegrationV3TransLogic.1: Begin transformation skyvva_v2.3.6/SKYVVA/com.skyvva.xml.RestIntegrationV3TransHandler.4: (getNewSalesforceContainerPooling) check deadlock skyvva_v2.3.6/SKYVVA/com.skyvva.xml.RestIntegrationV3TransHandler.5: (getNewSalesforceContainerPooling) determine user home cache : /usr/sap//SYS/global skyvva_v2.3.6/SKYVVA/com.skyvva.xml.RestIntegrationV3TransHandler.6: (getNewSalesforceContainerPooling) from .../SKYVVA_SalesforceContainer_CC_.ser skyvva_v2.3.6/SKYVVA/com.skyvva.xml.RestIntegrationV3TransHandler.7: (getNewSalesforceContainerPooling) Pick up new session id from Salesforce ← first call only skyvva_v2.3.6/SKYVVA/com.skyvva.xml.RestIntegrationV3TransHandler.7: (getNewSalesforceContainerPooling) Session Id from Cache ← subsequent calls skyvva_v2.3.6/SKYVVA/...RestIntegrationV3TransLogic.2: End transformation skyvva_v2.3.6/SKYVVA/...RestIntegrationV3.13: End session handling ``` Three lines to check specifically: 1. **`Begin session handling (SKYVVA version 2.3.6)`** — confirms the deployed module is v2.3.6. If you see an older version, the SDA was not redeployed correctly. 2. **`OAuth2Flow: Client-Credentials`** in the channel parameter dump — confirms the channel was read with the right flow. If you see `Username-Password` (or no `OAuth2Flow` line), the parameter is missing or misspelled. 3. **`Pick up new session id from Salesforce`** on the first message; **`Session Id from Cache`** on every subsequent message. This is the normal pattern — the first call obtains the OAuth token, subsequent calls reuse it. If you set `SforceUsername` or `pwdSforceLoginPassword` on a Client-Credentials channel, you will additionally see one info-log line confirming the module ignored them: ``` OAuth2Flow=Client-Credentials: SforceUsername and pwdSforceLoginPassword are ignored. Configure the Run-As user in the Connected App's OAuth Policies instead. ``` This is informational only — the message processes normally. ## Troubleshooting ### `OAuth2Flow=Client-Credentials requires the following channel parameters but they are missing or blank: ...` The channel is missing one of `AuthorizationServerURL`, `ConsumerKey`, or `ConsumerSecret`. The error names the missing parameter — fix the channel configuration and re-send the message. This check runs **before** the OAuth call so misconfiguration fails fast with a clear cause instead of an opaque Salesforce error. ### `Unsupported OAuth2Flow value ''. Expected 'Username-Password' or 'Client-Credentials'.` The flow value was typed incorrectly (for example `Cleint-Credentials`, `client_credentials`, `CC`). The accepted values are exactly `Username-Password` and `Client-Credentials` — case-insensitive but no fuzzy matching. Correct the channel parameter. ### `Salesforce OAuth2 Client-Credentials error: invalid_client - ` Salesforce rejected the token request. The `` from Salesforce names the cause — typically one of: - The External Client App is not enabled for the Client-Credentials flow. - `ConsumerKey` or `ConsumerSecret` were copied incorrectly. - The Run-As user assigned to the External Client App is inactive or locked. - The External Client policy does not permit the calling IP or domain. Fix the External Client App setup in Salesforce. The SAP PI/PO module configuration is correct if you reach this error. ### `Salesforce OAuth2 Client-Credentials response missing access_token` Salesforce returned a token response without an `access_token` field. Indicates a Salesforce-side issue (the External Client App's OAuth Policies are misconfigured, or the userinfo endpoint is unreachable). Inspect the full Salesforce response in the audit log and consult Salesforce documentation. ### Audit log shows `INVALID_SESSION_ID detected. Renewing Salesforce session and retrying the API call once.` This is **not an error.** The module detected that the cached session was invalidated by Salesforce (typically because an admin ended the session, or the session timed out), and is automatically renewing it. The next line should show the renewal succeeding and the original API call retrying. If the *retry* also fails with `INVALID_SESSION_ID`, the module gives up with `Session invalid even after renewal` — verify that the External Client App is still active in Salesforce. ### After upgrading from an older version, the first message uses a stale cached session If the session cache file under `SessionGlobalFilePath` was written by an older module version, delete it and let v2.3.6 write a fresh one: ``` rm /usr/sap//SYS/global/SKYVVA_SalesforceContainer_*.ser ``` The next message creates a new cache file using the v2.3.6-format key (which includes `OAuth2Flow + ConsumerKey + USERNAME + PASSWORD + TOKEN` so different flows and Connected Apps isolate cache slots). ## Related articles - *How to Setup the SKYVVA Module Parameters in SAP PI/PO with V3?* — base channel setup, prerequisite for this article. - *How to check the SKYVVA Java module version which is deployed in SAP PI/PO* — confirms the running version after deploy. --- *This article applies to SKYVVA SAP PI/PO connector module v2.3.6 and later. Earlier versions support only the Username-Password flow.* ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: Prerequisite for SKYVVA solution Title: 1. Prerequisite for SKYVVA solution Slug: prerequisite-for-skyvva-solution URL: https://help.skyvva.com/#article/prerequisite-for-skyvva-solution ================================================================================ # 1. Prerequisite for SKYVVA solution Below are the prerequisite to set up the connection between SAP and Salesforce: - The firewall must be open/configured between Salesforce and SAP. Here, we usually advise: a. Reverse Proxy for the direction Salesforce to SAP b. Proxy for the direction SAP to Salesforce - IP Addresses which need to be configured for reverse proxy can be found on below URL: [Salesforce IP Addresses & Domains to whitelist](https://help.salesforce.com/articleView?id=000003652&type=1) - In case of Production environment, SSL server certificate must be installed on the reverse proxy. Salesforce trust the certificate which is issued by the listed CA (Certificate Authority) and below is the URL for all Trusted CAs from Salesforce. [all the SSL certificates that are supported by Salesforce](https://help.salesforce.com/articleView?id=000007225&type=1) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: Configure Enterprise Service Title: 1. Configure Enterprise Service Slug: enterprise-service URL: https://help.skyvva.com/#article/enterprise-service ================================================================================ # 1. Configure Enterprise Service **Learning Objectives:- ** #### This unit describes:- - How to configure the Login(Enterprise) Consumer Proxy in SAP? #### Introduction:- While sending data from SAP to Salesforce, we first need to get the session ID of the Salesforce user so that we can post the data to Salesforce using this session ID. To achieve this we first need to configure the Login(Enterprise) Consumer Proxy in SAP. #### How to use it:- - Run the SOAMANAGER transaction in SAP, it will open below screen in Web Browser. Here select the option "Web Service Configuration" - Now in the new screen, for the Object Name search for /SKYVVA/*. It will list down all the available SKYVVA "Consumer Proxy" and Service. [![](../images/2019/08/Image1-1.jpg)](../images/2019/08/Image1-1.jpg) - Select/Click the service /SKYVVA/CO_V32_ENTERPRISE ![](../images/2019/08/set1.png) - It will open a new screen, here select the option "Create" and choose the option "Manual Configuration". ![](../images/2019/08/set2-1.png) - Here, enter the "Logical Port Name" and its description and then press "Next". ![](../images/2019/08/set3.png) - Now select the option "User ID / Password" and press "Next". ![](../images/2019/08/set4.png) - In this screen, we need to give the details of the URL of Salesforce (whether it is a Sandbox or Enterprise edition) along with the path for the login service and also the protocol that will be used for login and once done press Next. Put **URL Access path** :-  /services/Soap/c/32.0 **Computer Name of Access URL**:-  login.salesforce.com ![](../images/2019/08/set5-2.png) - In the next screen, we need to select the "Message ID Protocol“ and this should be "Suppress ID Transfer" and press Next. ![](../images/2019/08/set6-1.png) - Now, just press the Next button ![](../images/2019/08/set10.png) - At last, it will show the operation involved in this proxy. Here select the option Finish. ![](../images/2019/08/set8.png) ![](../images/2019/08/set11.png) ![](../images/2019/08/set12.png) At this moment a logical port will be generated in the SAP. To verify if all the configuration is correct or not, login into SAP and go to the transaction code SE80. Here, select the package /SKYVVA/SALESFORCE and go to the option "Enterprise Services" and here under the option of "Service Consumers" select the CLAS/SKYVVA/CO_V32_ENTERPRISE. - Go to Tcode SE80 ![](../images/2019/08/set13-1.png) - Select “Package” ![](../images/2019/08/set14.png) - Enter the package name as “/SKYVVA/SALESFORCE” and then press ENTER:- ![](../images/2019/08/set15-1.png) - Here navigate as per below and double click on “/SKYVVA/CO_V32_ENTERPRISE” ![](../images/2019/08/set16.png) - Double click on CLAS/SKYVVA/CO_V32_ENTERPRISE and execute it. ![](../images/2019/08/set17-1.png) - Now, select the Logical Port Name and press F4 here, it will open a popup. Here double click/select the newly created Logical Port. - And under the "Method Name" first press F4 and then select/double click the operation "Login" and after that Execute it. ![](../images/2019/08/set18-1.png) - Here no need to put anything and simply execute it. ![](../images/2019/08/set19-1.png) - If all the configuration has properly been set up then it will give below error: ![](../images/2019/08/set20-1.png) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: Configuration of IService Title: 1. Configuration of IService Slug: configure-iservice URL: https://help.skyvva.com/#article/configure-iservice ================================================================================ # 1. Configuration of IService **Learning Objectives:- ** #### This unit describes:- - How to do Configuration of IService? #### Introduction:- While sending data from SAP to Salesforce, we need to configure the path of the SKYVVA adapter which will receive the data from SAP. To achieve this we need to configure one consumer proxy on the SAP side. Through this, we are making sure that data will be delivered at the correct Salesforce Organization. #### How to use it:- - Run the SOAMANAGER transaction in SAP, it will open below screen in Web Browser. Here select the option "Web Service Configuration" ![](../images/2019/08/service.png) - Now in the new screen, for the Object Name; search for /SKYVVA/*. It will list down all the available SKYVVA "Consumer Proxy" and Service. ![](../images/2019/08/service1.png) Select/Click the service /SKYVVA/CO_ISERVICES ![](../images/2019/08/service2.png) - It will open a new screen, here select the option "Create" and choose the option "Manual Configuration" ![](../images/2019/08/service3.png) - Here, enter the "Logical Port Name" and its description and then press "Next" ![](../images/2019/08/service4.png) - Now select the option "User ID / Password" and press "Next" [![](../images/2019/08/SOA-Manager.jpg)](../images/2019/08/SOA-Manager.jpg) In this screen, we need to give the details of the URL of Salesforce (Organization URL for the Salesforce) along with the path for the IService where data will be sent from SAP and also the protocol which will be used while sending the data and once done press Next. **/services/Soap/class/skyvvasolutions/IServices** ![](../images/2019/08/service5.png) - In the next screen, we need to select the "Message ID Protocol" and this should be "Suppress ID Transfer" and press Next. ![](../images/2019/08/service6.png) - Now, just press the Next button. ![](../images/2019/08/service7.png) - At last, it will show the operation involved in this proxy. Here select the option Finish. ![](../images/2019/08/service8.png) - At this moment a logical port will be generated in the SAP. We need to use this when we will configure the Interface in SAP. ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: Create SAP Adapter in Salesforce – Classic Version Title: 5. Create SAP Adapter in Salesforce - Classic Version Slug: create-adapter-in-salesforce-2 URL: https://help.skyvva.com/#article/create-adapter-in-salesforce-2 ================================================================================ # 5. Create SAP Adapter in Salesforce - Classic Version Prerequisite – Create Remote Site Settings using host name (IP Address) & Port Name. [https://help.salesforce.com/articleView?id=configuring_remoteproxy.htm&type=5](https://help.salesforce.com/articleView?id=configuring_remoteproxy.htm&type=5) ##### Remote Site Setting --> Before any Visualforce page, Apex callout, or JavaScript code using XmlHttpRequest in an s-control or custom button can call an external site, that site must be registered in the Remote Site Settings page, or the call fails. Path to access:: Setup-->Security-->Remote Site Settings ![](../images/2019/07/Remote-Site-Setting-Word.png) Login into your Salesforce organization and go to the “Adapter” and click on New Button ![](../images/2019/07/New-Adapter-Word.jpg) Enter the required details and press Save ![](../images/2019/07/New-Adapter.jpg) Following screen will appear after pressing Save. Here press the option for “New Property” ![](../images/2019/07/New-Adaptper.jpg) Here create 4 properties - Endpoint -- Use the generated path of genericinbound service of SOAMANAGER ([Generic Inbound Configuration)](#article/6-generic-inbound-configuration) - Username -- SAP User name - Password -- Password of SAP Client - IsMultipleResponseLine - When there are multiple value in response (a table or list) from SAP, if we don't set this as true then values will be come as a string. So to treat each value as separate entry in Salesforce it's values must be set as true. Once all property properly created, it will looks like below. ![](../images/2019/07/SOA-Management-1.jpg) Now press “Test Connection” to check if everything works fine. If below message appear then connection has properly been set up between Salesforce & SAP using our SKYVVA adapter. This means we can proceed for Interface creation for the direction of Salesforce to SAP. ![](../images/2019/07/New-Adapter-2.jpg) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: Import/Deploy ABAP Transport in SAP Title: 2. Import/Deploy ABAP Transport in SAP Slug: import-abap-transport URL: https://help.skyvva.com/#article/import-abap-transport ================================================================================ # 2. Import/Deploy ABAP Transport in SAP To let the SKYVVA Integration Suite exchange Data between SAP and SFDC (Salesforce.com) it is necessary that both systems agree on one data format. The leading system to create a common data structure here is the SKYVVA configuration environment in SAP. With creating a data structure, a communication interface for this specific message is also created on the SAP site. The created data structure will then be exported as a .xml file and saved in SFDC as a so-called iStructure. The focus of this document is to describe how to install/deploy SKYVVA adapter in SAP. Apsara team will provide a SAP transport package, which will contain 2 files in it. It needs to be handover to SAP Basis team so that they can upload it in SAP. Alternatively, upload the file starting with K* into the location "/usr/sap/trans/cofiles" and the other file which start from R* into the location "/usr/sap/trans/data". Once above activity get done, go to the Transaction code STMS (Transport Management System) [![](../images/2019/09/SOA-Manager.jpg)](../images/2019/09/SOA-Manager.jpg) Here, select the option "Import Overview" [![](../images/2019/09/SOA-Manager-1.jpg)](../images/2019/09/SOA-Manager-1.jpg) Now, based on your SAP system configuration there might be multiple Queue will appear. Double click on the correct Queue where you wanted to import this SAP Transport. [![](../images/2019/09/SOA-Manager-2.jpg)](../images/2019/09/SOA-Manager-2.jpg) It will open a new screen. Here, we need to manual enter the transport number, path for this activity is: Extras-->Other Requests-->Add [![](../images/2019/09/SOA-Manager-3.jpg)](../images/2019/09/SOA-Manager-3.jpg) It will open a pop-up, here enter/select the Transport Number and press Continue [![](../images/2019/09/SOA-Manager-4.jpg)](../images/2019/09/SOA-Manager-4.jpg) Now a popup will appear for the confirmation to add the transport into import Queue, here press Yes. [![](../images/2019/09/SOA-Manager-5.jpg)](../images/2019/09/SOA-Manager-5.jpg) Now, transport should come into display at the last. If it does not appear then press the button Refresh [![](../images/2019/09/SOA-Manager-6.jpg)](../images/2019/09/SOA-Manager-6.jpg) Now select the transport and click the option Import Request [![](../images/2019/09/SOA-Manager-7.jpg)](../images/2019/09/SOA-Manager-7.jpg) Now a new popup will appear, here enter the target client where you wanted to import the SKYVVA adapter. Here we can also schedule for specific time or event at which transport will be imported. By default "Immediate" option will be selected. [![](../images/2019/09/SOA-Manager-8.jpg)](../images/2019/09/SOA-Manager-8.jpg) Now, click on the Options. Here by default "Leave Transport Request in Queue for Later Import" option will be select, select also the option "Ignore Invalid Component Version" and press Continue. [![](../images/2019/09/SOA-Manager-9.jpg)](../images/2019/09/SOA-Manager-9.jpg) Now a final pop-up will appear which will show all the option selected. Here press Yes, it will put transport into Import Queue. [![](../images/2019/09/SOA-Manager-10.jpg)](../images/2019/09/SOA-Manager-10.jpg) Now observe the symbol will appear as Vehicle against the transport. Now select the refresh option after some time, if everything goes OK then the color will change in Green. [![](../images/2019/09/SOA-Manager-11.jpg)](../images/2019/09/SOA-Manager-11.jpg) In this case, transport imported successfully into the system(Green status), if it turned into RED or YELLOW then contact the SKYVVA support for further assistance. [![](../images/2019/09/SOA-Manager-12.jpg)](../images/2019/09/SOA-Manager-12.jpg) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: Certificate for Secured Communications Title: 3. Certificate for Secured Communications Slug: secure-communication URL: https://help.skyvva.com/#article/secure-communication ================================================================================ # 3. Certificate for Secured Communications Communicating with Salesforce happens via the internet, which is not entirely secure. Therefore, the data should be encrypted by means of SSL. We have to distinguish between two scenarios as to where the communication can happen. - First, when making an inbound call, i.e. Salesforce sends data to SAP-ECC. - Second, when making an outbound call, i.e. SAP-ECC sends data to Salesforce. Depending on the scenario, different SSL settings and configurations will be required. For using HTTPS in SAP to Salesforce Scenarios some SSL-Certificates has to be downloaded from Salesforce-site and imported in SAP with Transaction STRUST. This step is necessary to enable SAP-Outbound-Interfaces. The Client-Certificates are also used from the IE, Firefox or other Browsers and can be viewed and downloaded to files. The different SFDC-Servers uses different certificates and you have to download the certificate from your instance-server and import it into your SAP as client certificates for SAP-outbound-calls. #### Download of Certificate from SFDC The download of certificate can be done with the browser(in the below scenario Mozilla Firefox). Perform below steps to download the certificate: Call the [login.salesforce.com](https://login.salesforce.com) (or [test.Salesforce.com](https://Test.Salesforce.com)) in the browser(Step 1). Select the lock Icon(Step 2) Under the Connection, select the "Show connection details(Step 3) [![](../images/2019/09/SOA-Manager-14.jpg)](../images/2019/09/SOA-Manager-14.jpg) Now, select the "More Information(Step 4)" as shown in the above picture. It will open a new window, here select the option "View Certificate" and it will further open a new window now select the option "Details" [![](../images/2019/09/SOA-Manager-15.jpg)](../images/2019/09/SOA-Manager-15.jpg) Now select the Certificate (Step 1 below) and then select the option Export (Step 2) and then Save (Step 3) to the necessary path. [caption id="attachment_25064" align="aligncenter" width="1825"][![secure](../images/2019/09/SOA-Manager-16.jpg)](../images/2019/09/SOA-Manager-16.jpg) secure[/caption] #### Import certificate in SAP using transaction code STRUST This step is necessary if your SAP-Server is the endpoint for the SSL-communication with the internet. If you have a proxy between your server and the internet and the proxy is the endpoint for SSL-communication you don’t need to import the certificates in your SAP server.  In this case you have to  to import the certificates in your proxy-server. Start Transaction STRUST in SAP [![](../images/2019/09/SOA-Manager-17.jpg)](../images/2019/09/SOA-Manager-17.jpg) Now navigate to "SSL client SSL Client (Anonymous)" (step 1) and then double click on the system (Step 2) and then on "Import Certificate (Step 3)" [![](../images/2019/09/STRUST.jpg)](../images/2019/09/STRUST.jpg) Now select the earlier downloaded Certificate and then Continue [![](../images/2019/09/STRUST-1.jpg)](../images/2019/09/STRUST-1.jpg) After Import select the option "Add to Certificate List" (Step 1 below) [![](../images/2019/09/STRUST-2.jpg)](../images/2019/09/STRUST-2.jpg) Once this is done then don’t forget to save at the end (Step 2 above). The ICM has to be restarted (Transaction SMICM)  to make the new imported certificates accessible for the ICM (Internet Communication Manager). ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: Create SAP Adapter in Salesforce – Classic Version Title: 4. Configuration for SAP Adapter Slug: configuration-for-sap-adapter URL: https://help.skyvva.com/#article/configuration-for-sap-adapter ================================================================================ # 4. Configuration for SAP Adapter The purpose of this document is to explain the necessary setting required in the SAP side so that a proper 2-way connection can be established between Salesforce and SAP. To enable a 2-way connection we need to complete the below-mentioned activities. - Configuration of Inbound Service in SAP - This step is needed when you wanted to send the data from Salesforce to SAP. Here, we maintain the SOAP service in SAP so that when we send the data from Salesforce it goes to correct SAP instance. This step is explained in the below blog: [Generic Inbound Configuration](#article/6-generic-inbound-configuration) - Configuration of Enterprise Service - This step is needed when you wanted to send the data from SAP to Salesforce. Here, using this service we check whether Salesforce user exists or not. Based on this call we receive the token for the call which will be needed to send the data from SAP to Salesforce. This step is explained in the below blog: [Configuration of Enterprise SOAP Service](#article/enterprise-service) - Configuration of IService - This step is needed when you wanted to send the data from SAP to Salesforce. Here, we maintain the path of SKYVVA adapter which will exists in the Salesforce. This will enable data goes to correct Salesforce Organization. This step is explained in the below blog: [Configuration of IService](#article/configure-iservice) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to develop Outbound interface using IDoc asynchronously? Title: 1. How to develop Outbound interface using IDoc asynchronously? Slug: how-to-develop-inbound-interface-using-idoc-asynchronously URL: https://help.skyvva.com/#article/how-to-develop-inbound-interface-using-idoc-asynchronously ================================================================================ # 1. How to develop Outbound interface using IDoc asynchronously? **Create Customer in SAP from Salesforce using IDOC ****(ASYNCHRONOUS call)** **Table of Contents...** - Skyvva software landscape and building blocks - Used Convention - Prerequisite and requirement for creating an inbound Interface - Creating Inbound Interface - Overview of the steps to create an inbound Interface. 5.1 Define IDoc/BAPI and fields in the skyvvaconfig. - 5.2 Define Interface based on IDoc type. - 5.3 Export IDoc/BAPI structure from SAP. - 5.4 Create an Interface. - 5.5 Import IDoc/BAPI structure & Query - 5.6 Mapping of fields - 5.7 Define Routing to Integration/Interface in SkyvvaConfig 5.7.1 Define routing for IDoc type Interface - 5.8 Using workflow condition to route to the Interface - Testing and Monitoring message ## 1. Skyvva software landscape and building blocks Skyvva Integration Suite enables the integration between Salesforce and SAP-Backend with the native ABAP-Adapter sitting inside an SAP Backend e.g. an ECC 6.0 System with less effort and without programming neither in SAP nor in Salesforce. It based on the generation and customized the approach to reduce effort and to accelerate the development of Interfaces between these systems. To be able to provide such a toolset and framework some component (green) has been developed by Skyvva and has to be deployed on Salesforce and SAP-Backend of the customer. [![](../images/2019/10/a1.png)](../images/2019/10/a1.png) ### Architecture building blocks The creation of an outbound interface is only possible when the Skyvva solution framework is set up correctly. This work has to be done beforehand by an administrator e.g. an ABAP transport has to be imported into the customer SAP-Backend system. ## 2. Used Convention When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we couple two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound. ![](../images/2019/10/2019-10-07-20_18_24--e1570474282635.jpg) ### Outbound and Inbound Interface The term outbound is used when data is sent out from Salesforce to SAP. Therefore we call interfaces for sending data out of Salesforce to SAP '*Outbound Interface'*. For the other direction, we call interfaces '*Inbound Interface'* when data comes to Salesforce from SAP. So, the reference point is set to Salesforce. **Purpose: **The purpose of this document is to explain the necessary steps required in SAP & Salesforce to Create a Customer in SAP from Salesforce. For creating Customer Using Idoc, we need to use Message Type - DEBMAS and Basic Type - DEBMAS07. ** ** ** **** ** ## 3. Prerequisite : - The Skyvva solution framework has to be installed into your Salesforce instance. Refer to our website : [Install Skyvva in Salesforce](#article/skyvva-integration-suite-installation) to carry out this task. - An integration instance has been created. Refer to our website: [What is an integration and how to create it?](#article/what-is-an-integration-and-how-to-create-it) to carry out this task. - Adapter Configured in Salesforce. Refer to our website: [Create adapter in Salesforce](#article/create-adapter-in-salesforce-2) to carry out this task. - Creating logical Port via the SOA Manager. Refer to our website: [Create Enterprise Service](#article/enterprise-service) to carry out this task. - Your workstation needs an internet browser IE or Firefox of the new release. When this prerequisite is fulfilled you can start creating outbound interfaces with the Skyvva development framework to send data from SAP to Salesforce. ## 4.Creating Inbound Interface To create an interface you call the transaction /skyvva/config. **Run T-code – /n/SKYVVA/CONFIG** This is an SAP interface configuration screen to define the interface for the transfer of data between sap & salesforce through BAPI or Idoc. [![](../images/2019/10/a3.png)](../images/2019/10/a3.png) To create an SAP interface, Select **New Entry ** In this screen, you need to provide a name for the field 'SAP interface id' . This will be the name of your interface. Give a meaning full name for your interface. Then choose the value "Idoc maint. interface" for the type. Now, save interface with the save button. You might get a popup screen to record your change for later transport. Here just give a transport number of your choice. If you don't know the transport number you can create a new one or contact your SAP basis admin and ask him for a valid SAP transport number to use. ![](../images/2019/10/2019-10-08-21_59_54-Photos.jpg) Now, need to Save in Transport request. [![](../images/2019/10/a5.png)](../images/2019/10/a5.png) ## 5. Overview of the steps to create an inbound Interface. ### 5.1: Define Idoc and fields in the skyvva config Select the Interface and double click on IDOC interface maint. To provide the Message Type & Basic type. ![](../images/2019/10/2019-10-08-22_19_08-New-Entries_-Overview-of-Added-Entries.jpg) The Idoc which we provide in SAP interface is responsible for the process and its segments are defined for the exchange of data between two systems. A second flag you have to check when using function module is the flag "send input". This flag indicates the runtime of Skyvva that the data should be sent via the function module call and not IDoc. ### 5.2 Define Interface based on IDoc type. Now enter IDoc message type and the basic type. *Note that in this example we use an own message type DEBMAS we have created before in the ALE/IDoc customizing.* As the basic type, we use the SAP standard DEBMAS07. You can use the standard IDoc message type DEBMAS as well or you can also create your message type. Now save your setting by clicking on the button. As a result, you will get a new line as shown on this screen. [![](../images/2019/10/b4-e1570553639254.png)](../images/2019/10/b4.png) ** **After this step, you have created an interface. Now you need to specify the IDoc segment and fields you want to receive to Salesforce. Because an IDoc can have hundreds of Segment and within a segment hundred of fields you have to select only those segments and fields you want to send out. Otherwise, the structure which will be generated later as XML structure will be too big and can cause Salesforce limitation when trying to import this structure file into Salesforce. [![](../images/2019/10/b5-e1570553699947.png)](../images/2019/10/b5.png) ** ** Choose New Entry to add segment. We have to choose the least segments, through which we can create a customer. According to the business requirement, you may need to add multiple segments. Segment: choose from F4. Next level: At runtime, a new dataset will be transforming this segment created. Now save it. **[![](../images/2019/10/b6-e1570553976617.png)](../images/2019/10/b6.png)** The segment has many numbers of fields, but we need only a few fields to create customer so that need to add here. Select the segment & double click on Idoc Fields. [![](../images/2019/10/b7-e1570554060297.png)](../images/2019/10/b7.png) To add Idoc fields Click New Entry then add these fields using f4. [![](../images/2019/10/b8-e1570554113696.png)](../images/2019/10/b8.png) ## 5.3 Export IDoc/BAPI structure from SAP. The prerequisite to executing this step is that you have defined the IDoc/BAPI structure like described in step 2. You need to export the structure as an XML file to import it into Salesforce in the next step. This structure will represent the SAP structure on the left side in the mapping later on in the skyvva graphical mapping tool in Salesforce. Use the following transaction. From the starting Page: /n/SKYVVA/INTF_EXPORT From any other Page in SAP: - /n/ SKYVVA/INTF_EXPORT (opens transaction in the same page) - /o/ SKYVVA/INTF_EXPORT (opens transaction in another window) **Format**: There are 4 different output formats: D – Deployment Script U – Format for XML upload V – Format for XML upload (2) C – CSV file (not yet supported) The most commonly used formats of an IStructure to upload to Salesforce are either D or V. they differ in the XML structure and how they are uploaded into the SKYVVA Integration Suite in Salesforce. Structure V offers the possibility to get the SAP field description into the structure. ![](../images/2019/10/2019-10-08-22_35_44-_SKYVVA_INTF_XML_DOWNLOAD_V2.jpg) Execute and save the  XML file. [![](../images/2019/10/a17.png)](../images/2019/10/a17.png) After executing this step you have an XML file that contains the SAP structure definition. The next step is to upload this structure into Salesforce. ** ** ## 5.4 Create an Interface. Goto salesforce.com>login>skyvva>create new Interface. [![](../images/2019/10/a18.png)](../images/2019/10/a18.png) Enter the details: - Name: Salesforce Interface Name - Status: Deployed - Adapter: Your created adapter - Type:  Outbound. - Processing Mode: Asynchronous( Only data will be sent response will not come) - And then Save. Open the Interface. And Goto Related Tab. [![](../images/2019/10/a20.png)](../images/2019/10/a20.png) ## 5.5: Import IDoc structure from XML To upload the XML file and query for the selection of data to send. [![](../images/2019/10/a21.png)](../images/2019/10/a21.png) Need to upload the XML file which we created in step 3 and then click on the upload button and then close the pop-up, the file will be loaded. [![](../images/2019/10/a22.png)](../images/2019/10/a22.png) Now after loading we can see all the SAP interface fields which we have used from parameters.[![](../images/2019/10/2019-10-05-23_31_20-Window.jpg)](../images/2019/10/2019-10-05-23_31_20-Window.jpg) ## 5.5 Query editor Now we need to write Select Query for fetching the record that needs to send.[![](../images/2019/10/a24.png)](../images/2019/10/a24.png) Based on the select field we able to map Salesforce fields with SAP. So, goto Query Editor. - Select Objects from where we need to fetch and send data. - Select the required fields for selection. - Save and Test. Here, I have select Account Object And Query looks like: **SELECT AccountNumber,BillingCity,BillingCountry,BillingState,Name,Fax,Id,Phone,** **BillingPostalCode FROM Account** [![](../images/2019/10/a25.png)](../images/2019/10/a25.png) ## 5.6: Mapping of fields. Now Refresh the page(F5) and goto Details Tab. And goto to Mapping Tab and down. On the left side, the Salesforce field is present and the right side SAP interface field is present. Now we need to map the field by drag from Account and drop to SF2SAP_IDOC. [![](../images/2019/10/2019-10-05-23_42_45-Window-1.jpg)](../images/2019/10/2019-10-05-23_42_45-Window-1.jpg) After mapping, You see the mapped fields.SAVE the mapping. [![](../images/2019/10/2019-10-05-23_50_24-Window.jpg)](../images/2019/10/2019-10-05-23_50_24-Window.jpg) Now, SALESFORCE and SAP interface is ready. ## 5.7 Define Routing to Integration/Interface in SkyvvaConfig ### 5.7.1 Define routing for IDoc type Interface Open the transaction /n/skyvva/config and select the tree branch "Routing to Integration/Interface". Click on the button to create a new routing entry for an interface. [![](../images/2019/10/2019-10-06-00_12_45-Window.jpg)](../images/2019/10/2019-10-06-00_12_45-Window.jpg) You will get this screen below after clicking on the button "New Entries". Now fill in the fields. The first field to fill in is the field Partner No. This is the partner profile you have created beforehand with the transaction code we21. You get the value from the drop-down list. Here you see the value list and select the one that is the right one for your case. You can see that the field Partner No. and Partn. The type is filled from the value list. If your ALE/IDoc customizing need the Partner Role you have to fill it accordingly. In this example we don't need this and therefore leave it empty. Now fill the field Port. The port has to be created before like described in our website: `[Create Enterprise Service](#article/enterprise-service)` to carry out this task. It is Endpoint Access created in the Skyvvaconfig tool. Here click on the button to get the value list for the IDoc port. Select for example the port ACC_SF_V2. * Note that this port was created with the Skyvvaconfig tool. It is the Endpoint access.* Optionally you can enter a value for field Message Variant and Mess. function if the ALE/IDoc customizing need it. In this example, we don't need this. Now you have to enter the value for Message Type and Basic Type. Here again, you can choose from the value list by clicking on the appropriate field on the button. The screen below just shows the result of the selection for Message Type and Basic Type since the way how to do it is the same as described above. The field Extension is only needed if you have enhanced the IDoc with the customer segment. In this example, we don't and therefore the field is left empty. Now fill in the fields in the section "Routing to Integration/Interface". The first field to enter is the field Object TypeName. Here please enter this string for the current release **/SKYVVA/CL_IDOC2SOAP_TRANSF_V1** The next fields are Interface Name and Integration ID. These fields are information you get from Salesforce. The field interface name is the name of the interface you created in step 4. The field integration ID is the Id of an integration that you have created in Salesforce for the first time. Instead of Integration Id, you can also use the name of the integration. ( supported since  Version 2.22 of IntegrationSuite) . [![](../images/2019/10/2019-10-06-00_15_04-Window.jpg)](../images/2019/10/2019-10-06-00_15_04-Window.jpg) Now. Run the apex code from Developer Console. Open Console by going to set at the top corner and the Developer Console. [![](../images/2019/10/a29.png)](../images/2019/10/a29.png) New Window will appear and press **ctrl+E** to open Apex editor. [![](../images/2019/10/a30.png)](../images/2019/10/a30.png) Sample Apex Code. *skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl();* *c.returnXml=true;* *c.returnListRecord=true;* *c.isCreateMessage=true;* *c.actionDoIntegrate=false;* * String[] id1=new String[]{'Data Record-Id'};* *skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('Integration Name','Interface Name',id1,'SYNC', c);* Data Record Id :   Each database table in salesforce have Id field, which is unique identification of particular records. And then Execute,  Data will be saved in save. ## 6. Testing and Monitoring message To check the created Idoc in SAP goto T-code we05. And execute. ![](../images/2019/10/2019-10-20-20_54_04-Window.jpg) Here in this screen, you can find all the generated Idoc (outbound or inbound). To open double click on Idoc number. ![](../images/2019/10/2019-10-20-19_31_42-Window.jpg) A new screen with Idoc detail will appear. ![](../images/2019/10/2019-10-20-20_59_18-Window.jpg) Now, in T-code XD03, where we can check the customer. ![](../images/2019/10/2019-10-20-21_30_05-Window.jpg) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to develop inbound interface using BAPI with the multi-itab adapter synchronously? Title: 1. How to develop inbound interface using BAPI with the multi-itab adapter synchronously? Slug: how-to-develop-inbound-interface-using-bapi-with-the-mult-itab-adapter-asynchronously URL: https://help.skyvva.com/#article/how-to-develop-inbound-interface-using-bapi-with-the-mult-itab-adapter-asynchronously ================================================================================ # 1. How to develop inbound interface using BAPI with the multi-itab adapter synchronously? **Inbound Interface - Direction SAP to Salesforce with multi-tab adapter functionality** **Table of Contents** - [Skyvva software landscape and building blocks](#li1) - [Used Convention](#li2) - [Purpose & Prerequisite and requirement for creating an outbound interface](#li3) - [Creating Inbound Interface](#li4) [4.1: Overview of steps to create an inbound Interface](#li41) - [Scenario: Inbound interface using structure](#li5) 5.1: Develop BAPI/RFC - 5.2: Create Interface and define fields in the skyvva config - 5.3: Export BAPI structure from SAP - 5.4: Create interface, import BAPI structure and do mapping - 5.5: Develop a report program by referring (Report : /SKYVVA/SEND_ORDER_INVOICED) ### **1. Skyvva software landscape and building blocks** Skyvva Integration Suite enables the integration between Salesforce and SAP-Backend with the native ABAP-Adapter sitting inside on SAP Backend e.g. an ECC 6.0 System with less effort and without programming neither in SAP nor in Salesforce. It is based on the generation and customizing approach to reduce effort and to accelerate the development of interfaces between these systems. To be able to provide such a tool set and framework some component (green) has been developed by Skyvva and has to be deployed on Salesforce and SAP-Backend of the customer. [![](../images/2019/10/2019-10-02-14_48_25-Window.jpg)](../images/2019/10/2019-10-02-14_48_25-Window.jpg) Architecture building blocks: The creation of an inbound interface is only possible when the Skyvva solution framework is set up correctly. This work has to be done beforehand by an administrator e.g. an ABAP transport has to be imported into the customer SAP-Backend system. ### **2.   Used Convention** When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we couple two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound or inbound. [![](../images/2019/10/2019-10-02-14_59_23-Window.jpg)](../images/2019/10/2019-10-02-14_59_23-Window.jpg) **Outbound and Inbound Interface** The term outbound is used when data is sent out from Salesforce to SAP. Therefore we call interfaces for sending data out of Salesforce to SAP "*Outbound Interface*". For the other direction, we call interfaces *"Inbound Interface*" when data comes to Salesforce from SAP. So the reference point is set to Salesforce. ### ** 3.   Purpose & Prerequisite for creating an inbound interface** **Purpose: **Many a times we have to send the data from SAP to Salesforce either through some Background job which runs weekly or monthly or whenever there will be any change made by the user in SAP so that both the system's record will be in sync. To achieve this SKYVVA propose to use multi-itab functionality of Skyvva, as part of multi-itab functionality we have provided 2 methods to send the data: /SKYVVA/CL_CONTROLLER_OUTBOUND~SEND_TABLE() & /SKYVVA/CL_CONTROLLER_OUTBOUND~SEND_TABLE_W_ALL_FIELDS() This article uses /SKYVVA/CL_CONTROLLER_OUTBOUND~SEND_TABLE() approach to send the data, using this we can send the data of a structure or table which is available in ABAP Dictionary. To send the data of local defined structures use /SKYVVA/CL_CONTROLLER_OUTBOUND~SEND_TABLE_W_ALL_FIELDS(). **Prerequisite**: - The Skyvva solution framework has to be installed into your SAP & Salesforce instance. Refer to our website : [Install Skyvva in Salesforce](#article/skyvva-integration-suite-installation) to carry out this task. - An integration instance has been created. Refer to our website: [What is an integration and how to create it?](#article/what-is-an-integration-and-how-to-create-it) to carry out this task. - Creating logical Port via the SOAMANAGER. Refer to our website: [Create Enterprise Service](#article/enterprise-service) and [Create IService Port](#article/configure-iservice) to carry out this task. - Your workstation needs an internet browser IE or Firefox of the new release. When this prerequisite is fulfilled you can start creating inbound interfaces with the Skyvva development framework to send data from SAP to Salesforce. ### ** 4.   Creating Inbound Interface** You can start developing an inbound interface when you want to send data from SAP-Backend to Salesforce using Skyvva ABAP-Adapter. With the ABAP-Adapter you can send only data between SAP and Salesforce. If you want to send data from SAP to anywhere else you need to use other technology or middle-ware like SAP-PO. ##### **4.1**** Overview of steps to create an inbound interface** The first question you should have might be how should I start? What is the first step to do? Should I start first in SAP or first in Salesforce? This chapter gives you an overview of which step is involved in creating an inbound interface and why you need this step. Before you start to develop the interface make sure that the prerequisite e.g. creating a logical port in the SOAMANAGER and installing the Salesforce CA Root certificate is fulfilled. [![](../images/2019/10/2019-10-02-15_04_07-Window.jpg)](../images/2019/10/2019-10-02-15_04_07-Window.jpg) **Steps in creating an inbound interface** The creation of an inbound interface consists of steps shown above. Each step is carried out either in Salesforce or in SAP. In each block, you see in the bracket the name of the component e.g. Salesforce or SAP where the step is done. Note: The grey box contains complex customizing tasks to do in SAP and is therefore not described. Here, in this document. This block will be described in a separate document called "SAP ALE / IDoc Customizing". Without having done the task in the grey box you cannot send IDoc or use BAPI to send data from an SAP system. The table below summarizes the step/task at a higher level. **Number** **Task** **Where** **Remarks** **1.** Customize ALE/IDoc or write BAPI to extract the business data SAP Here you customize ALE and IDoc to send IDoc out of SAP. You need to do a change pointer customizing using IDoc. If you use BAPI you have to develop this BAPI yourself first. This task can be done by an experienced ABAP developer or ALE/IDoc customize. **2.** Define IDoc/BAPI and fields in the Skyvva Config SAP After you have done the ALE/IDoc customizing or BAPI Creation you can use this IDoc/BAPI as an interface. Here you use the skyvva transaction /skyvva/config to create an interface based on IDoc or BAPI and to select fields you need to send to Salesforce. **3.** Export the IDoc/BAPI structure from SAP SAP In this step, you need to export the interface definition based on IDoc or BAPI from SAP.  This is needed later in Salesforce as an interface that represents the data coming from SAP. **4.** Create Interface, Import IDoc/BAPI structure and do mapping Salesforce In this step, you first create an interface in Salesforce. Then you import the structure you have exported in step 3 above. Then you do the mapping with the Skyvva graphical mapping tool. **5.** Using workflow to route to the interface Salesforce In this step, you use workflow conditions to route incoming data from SAP to the right interface in Salesforce. **6.** Testing  and Monitoring messages SAP and Salesforce After step 5 you have successfully developed an inbound interface and have to test it. Testing involves creating a test ABAP report to call the BAPI or IDoc change pointer customizing. You can then monitor in SAP and Salesforce with the skyvva message monitoring. ### **5. Inbound interface using structure** The aim of this scenario is to create a BAPI Inbound interface from SAP to Salesforce. Here we are sending a structure(Customer Details) using the RFC from SAP to Salesforce through Skyvva ABAP adapter. As we are sending structure information so first create a structure with business requirement fields. **5.1 Develop BAPI/RFC** Based on the business requirement select/fill all the fields of structure/table in the Function Module. **5.2 Create Interface and define fields in the skyvva config** To create an interface call the transaction /N/skyvva/config in SAP and use the BAPI/RFC name created earlier. Call transaction /n/skyvva/config. [![](../images/2019/10/2019-10-02-15_56_54-Window.jpg)](../images/2019/10/2019-10-02-15_56_54-Window.jpg) Click on the New Entries button for creating New Interface. [![](../images/2019/10/2019-10-02-16_00_34-Window.jpg)](../images/2019/10/2019-10-02-16_00_34-Window.jpg) In this screen enter a name for the field SAP interface id. This is the name of your interface. Give a meaning full name for your interface. Then choose the value "BAPI interface" for the type. [![](../images/2019/10/2019-10-02-16_06_13-Window.jpg)](../images/2019/10/2019-10-02-16_06_13-Window.jpg) Now save you editing with the save button. You might get a popup screen to record your change for later transport. Here just give a transport number of your choice. If you don't know the transport number you can create a new one or contact your SAP basis admin and ask him for a valid SAP transport number to use. [![](../images/2019/10/2019-10-02-16_13_53-Window.jpg)](../images/2019/10/2019-10-02-16_13_53-Window.jpg) After this step, you have created an interface with the name **/SKYVVA/CUSTOMER_OUT.** Now you need to specify the parameter and fields you want to transfer to Salesforce. To do so select the created Interface and double click on **BAPI int. maintenance on** the left side. [![](../images/2019/10/2019-10-02-16_48_33-Window.jpg)](../images/2019/10/2019-10-02-16_48_33-Window.jpg) Now the screen will open where you need to provide a Function module. [![](../images/2019/10/2019-10-02-16_53_01-Window.jpg)](../images/2019/10/2019-10-02-16_53_01-Window.jpg) Now you have to choose the Function Module which is you developed above. In this example Function Module is  ZBAPI_SEND_CUSTOMER. Normally custom RFC usually have required fields which we need to send to Salesforce. Therefore there is an option to send all fields of RFC. If you select that then all field will be included in the XML file generation. Because of this characteristic of a BAPI/function module we don't describe the way how to add different parameters and fields but just use the option like shown in the screen below. Check the flag "All Fields" as shown in this screen. A second flag you have to check when using function module is the flag "send input". This flag indicates the run time of Skyvva that the data should be sent via function module call and not IDoc. [![](../images/2019/10/2019-10-02-16_55_32-Window.jpg)](../images/2019/10/2019-10-02-16_55_32-Window.jpg) Now save it. The function module has **importing & exporting parameter** for exchange of data. So, we need to define those fields in this interface too. To define fields, select the Function module & click on BAPI parameters [![](../images/2019/10/2019-10-02-17_19_19-Window.jpg)](../images/2019/10/2019-10-02-17_19_19-Window.jpg) Click on new entries.[![](../images/2019/10/2019-10-02-17_23_37-Window.jpg)](../images/2019/10/2019-10-02-17_23_37-Window.jpg) Here the field "parameter Name"  you can choose from F4 Help. The sequence you can mention the number if you are sending more than one parameters in the function module. If the parameter is a key field then set that field as "key field". The field "StructName extern" we can give sObject name from Salesforce here it is optional. If the Parameter is an input parameter in the interface, set the flag "Input Parameter". If the parameter is an output parameter in interface set the flag "Output Parameter" as shown in the below screen. [![](../images/2019/10/2019-10-02-17_35_14-Window.jpg)](../images/2019/10/2019-10-02-17_35_14-Window.jpg) The Parameter we selected is structure i.e it will have multiple fields. So, here we need to define these parameter. Now save and click on BAPI fields. [![](../images/2019/10/2019-10-02-17_42_03-Window.jpg)](../images/2019/10/2019-10-02-17_42_03-Window.jpg) Now add the fields of the parameter by F4. [![](../images/2019/10/2019-10-02-17_50_54-Window.jpg)](../images/2019/10/2019-10-02-17_50_54-Window.jpg) Save the interface. Now our SAP interface is ready. Now Interface is ready to export. **5.3 - Export IDoc / BAPI structure from SAP** The prerequisite for executing this step is that you have defined the BAPI structure as described in step 2. You need to export the structure as an XML file to import into Salesforce in the next step. This structure will represent the SAP structure on the left side in the mapping later on in the skyvva graphical mapping tool in Salesforce. Use the following transaction. Call transaction /n/SKYVVA/INTF_EXPORT in SAP Enter the following information on the screen: Interface: The exact name of the created Interface or select the Interface using F4 Language: Depending on the language it may be possible to get the SAP field descriptions into the IStructure ** ** Format: There are 4 different output formats: D – Deployment Script U – Format for XML upload V – Format for XML upload (2) C – CSV file (not yet supported) The most commonly used formats of an IStructure to upload to Salesforce are either D or V. they differ in the XML structure and how they are uploaded into the SKYVVA Integration Suite in Salesforce. Structure V offers the possibility to get the SAP field description into the IStructure. Select the interface name you have defined in step 2. [![](../images/2019/10/2019-10-02-18_08_40-Window.jpg)](../images/2019/10/2019-10-02-18_08_40-Window.jpg) Specify the location where you want to save the XML file. [![](../images/2019/10/3n.png)](../images/2019/10/3n.png) Execute to save the generated file in the desired path. The file generated is in XML format, which will be Salesforce to give the SAP fields, which are required to map. The next step is to upload this structure into Salesforce. Follow step 4 to upload the file into Salesforce. **5.4 - Create interface, import BAPI structure and do mapping** The prerequisite for executing this step is that you have exported the BAPI structure as described in step 3. In this step, you will create an interface, import the sap structure and do the mapping with the skyvva graphical mapping tool. Now login into your Salesforce instance and open your integration. - Enter the Desired Name of Salesforce Interface. - Here, provide the Salesforce object name, where need to save the data. - Choose Deployed, which makes this interface used to interact with SAP. - Inbound - As data need to send into Salesforce from SAP [![](../images/2019/10/2019-10-04-01_17_48-Window.jpg)](../images/2019/10/2019-10-04-01_17_48-Window.jpg) Save, then you able to see the interface. [![](../images/2019/10/2019-10-04-00_25_57-Window.jpg)](../images/2019/10/2019-10-04-00_25_57-Window.jpg) Now Open interface and go to Related Tab. [![](../images/2019/10/2019-10-04-00_35_23-Window.jpg)](../images/2019/10/2019-10-04-00_35_23-Window.jpg) Now, select the Import Field definition to upload the XML file, which we created in step 3. [![](../images/2019/10/2019-10-04-00_37_49-Window.jpg)](../images/2019/10/2019-10-04-00_37_49-Window.jpg) Choose the file to upload. [![](../images/2019/10/2019-10-04-00_42_43-Window.jpg)](../images/2019/10/2019-10-04-00_42_43-Window.jpg) After the upload is successful you will see the result like the screen below, after refreshing the page. You will get the fields you have selected from SAP. Now you can do the mapping from the SAP fields on the left-hand side to the field of Salesforce object e.g. Account on the right-hand side. How to do a mapping refers to the mapping guide. [![](../images/2019/10/2019-10-04-01_07_39-Window.jpg)](../images/2019/10/2019-10-04-01_07_39-Window.jpg) [![](../images/2019/10/2019-10-04-01_22_49-Window.jpg)](../images/2019/10/2019-10-04-01_22_49-Window.jpg) After you do all the required mapping based on the business requirement we are finished. Now need to develop SAP report to run the interface with the multi-tab adapter. **5.5 - Develop a report program by referring Report : /SKYVVA/SEND_ORDER_INVOICED** 1. Once this configuration is done, then go to the program “/SKYVVA/SEND_ORDER_INVOICED” using SE38. 2. There is already logic written to get the interface configuration during run time. 3. Use the logic in your program  from /SKYVVA/SEND_ORDER_INVOICED ![](../images/2019/10/MULTITAB.png) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to develop Outbound interface using BAPI asynchronously? Title: 1. How to develop Outbound interface using BAPI asynchronously? Slug: how-to-develop-inbound-interface-using-bapi-asynchronously URL: https://help.skyvva.com/#article/how-to-develop-inbound-interface-using-bapi-asynchronously ================================================================================ # 1. How to develop Outbound interface using BAPI asynchronously? **Create Customer in SAP from Salesforce using BAPI ****(ASYNCHRONOUS call)** **Table of Contents** - Skyvva software landscape and building blocks - Used Convention - Purpose & Prerequisite for creating an outbound interface - Creating Outbound Interface Define BAPI and fields in the skyvva config - Export BAPI structure from SAP - Create an interface - Import BAPI structure - Query editor - Mapping of fields - Running Apex code ** ** **1. Skyvva software landscape and building blocks** Skyvva Integration Suite enables the integration between Salesforce and SAP-Backend with the native ABAP-Adapter sitting inside on SAP Backend e.g. an ECC 6.0 System with less effort and without programming neither in SAP nor in Salesforce. It is based on the generation and customizing approach to reduce effort and to accelerate the development of interfaces between these systems. To be able to provide such a tool set and framework some component (green) has been developed by Skyvva and has to be deployed on Salesforce and SAP-Backend of the customer. [![](../images/2019/10/a1.png)](../images/2019/10/a1.png) Architecture building blocks: The creation of an outbound interface is only possible when the Skyvva solution framework is set up correctly. This work has to be done beforehand by an administrator e.g. an ABAP transport has to be imported into the customer SAP-Backend system. **2.**** Used Convention** When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we couple two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound. ![](../images/2019/10/2019-10-08-00_17_31-a2.png-610×365.jpg) **Outbound and Inbound Interface** The term outbound is used when data is sent out from Salesforce to SAP. Therefore we call interfaces for sending data out of Salesforce to SAP "Outbound Interface". For the other direction, we call interfaces "Inbound Interface" when data comes to Salesforce from SAP. So, the reference point is set to Salesforce. **3. Purpose & Prerequisite for creating an outbound interface** **Purpose: **The purpose of this document is to explain the necessary steps required in SAP & Salesforce to Create a Customer in SAP from Salesforce. For creating Customer we are going to use a standard BAPI(Business Application Programming Interfaces) provided by sap named as ‘BAPI_CUSTOMER_CREATEFROMDATA1**’. **In this BAPI we need to send the required data for the creation of customers from Salesforce. **Prerequisite : ** - The Skyvva solution framework has to be installed into your Salesforce instance. Refer to our website : [Install Skyvva in Salesforce](#article/skyvva-integration-suite-installation) to carry out this task. - An integration instance has been created. Refer to our website: [What is an integration and how to create it?](#article/what-is-an-integration-and-how-to-create-it) to carry out this task. - Adapter Configured in Salesforce. Refer to our website: [Create adapter in Salesforce](#article/create-adapter-in-salesforce-2) to carry out this task. - Creating logical Port via the SOA Manager. Refer to our website: [Create Enterprise Service](#article/enterprise-service) to carry out this task. - Your workstation needs an internet browser IE or Firefox of the new release. When this prerequisite is fulfilled you can start creating outbound interfaces with the Skyvva development framework to send data from SAP to Salesforce. **4. Creating Outbound Interface** **Step 1: Define BAPI and fields in the skyvva config** To create an interface you need to run the transaction /skyvva/config in SAP. **Run T-code – /n/SKYVVA/CONFIG** Below is the SAP interface configuration screen to define the interface for the transfer of data between SAP & Salesforce through BAPI or Idoc. [![](../images/2019/10/a3.png)](../images/2019/10/a3.png) To create a SAP interface, Select **New Entries(as shown above)** In the below screen enter a name for the field SAP interface id. This will be the name of your interface. Give a meaning full name for your interface. Then choose the value "BAPI interface" for the type(in case of Idoc select different option). [![](../images/2019/10/a4.png)](../images/2019/10/a4.png) Now save your editing with the save button. You might get a popup screen to record your change for later transport. Here just can select a transport number of your choice. If you don't know the transport number you can create a new one or contact your SAP basis administrator and ask him for a valid SAP transport number to use. Now, need to Save in Transport request(as shown below). [![](../images/2019/10/a5.png)](../images/2019/10/a5.png) Select the line(SAP interface id) and double click on BAPI int. maintenance. [![](../images/2019/10/a6.png)](../images/2019/10/a6.png) It will open a new screen(as shown below), here select the option "New Entries". This will let you to maintain the BAPI/RFC name for the interface.**[![](../images/2019/10/a7.png)](../images/2019/10/a7.png)** The BAPI/Function Module which we provide in SAP interface is responsible for the process and its parameter is defined for the exchange of data between two systems. Now you need to enter the BAPI/RFC name which is going to process the request from Salesforce. In this example the Function Module is  'BAPI_CUSTOMER_CREATEFROMDATA1**’.** If a BAPI/RFC does not have many fields and all fields can be part of the Interface then select the checkbox "All Fields" as shown in this screen. A second flag you have to check when using function module is the flag "send input". This flag indicates the run time of Skyvva that the data should be sent via the function module call and not IDoc. [![](../images/2019/10/a8.png)](../images/2019/10/a8.png) ** ** Now we need to maintain the parameter(import, export, table, changing) which we are going to send and receive back in Salesforce. To maintain this double click on the option 'BAPI parameters. maint.(as shown below)' and then click on NEW ENTRY to add the parameters [![](../images/2019/10/a9.png)](../images/2019/10/a9.png) ** ** Add the required number of parameters which we are going to send from Salesforce. It could be a single field or a structure. Maintain all the relevant parameters and Save it. ** [![](../images/2019/10/a10.png)](../images/2019/10/a10.png)** **Note: **Here, we will are using the least parameter fields required to create a customer to show the example. You can maintain multiple field as per your requirement. To add fields for a parameter, Select the PI_COMPANYDATA and then BAPI fields [![](../images/2019/10/a11.png)](../images/2019/10/a11.png) Add the required fields and SAVE. [![](../images/2019/10/a12.png)](../images/2019/10/a12.png) Repeat the same step for PI_PERSONALDATA Add the required field using F4 and Save. [![](../images/2019/10/a13.png)](../images/2019/10/a13.png) Repeat the same for PI_COPYREFERENCE. [![](../images/2019/10/a14.png)](../images/2019/10/a14.png) Now the necessary fields for Customers are added in the SAP interface. Now need this information to send these fields structure to Salesforce, so that necessary mapping with could be performed in Salesforce. ** ** **Step 2:  Export BAPI structure from SAP** To use the structure in Salesforce we first need to import the configuration into XML format. Use T-code: **/n/SKYVVA/INTF_EXPORT** [![](../images/2019/10/a15.png)](../images/2019/10/a15.png) ** ** Enter the following information on the screen: **Interface**: The exact name of the created Interface Language: Depending on the language it may be possible to get the SAP field descriptions into the IStructure **Format**: There are 4 different output formats: D – Deployment Script U – Format for XML upload V – Format for XML upload (2) C – CSV file (not yet supported) The most commonly used formats of an IStructure to upload to Salesforce are either D or V. They differ in the XML structure and how they are uploaded into the SKYVVA Integration Suite in Salesforce. Structure V offers the possibility to get the SAP field description into the IStructure. [![](../images/2019/10/a16.png)](../images/2019/10/a16.png) Execute and save the  XML file. [![](../images/2019/10/a17.png)](../images/2019/10/a17.png) After executing this step you have an XML file that contains the SAP structure definition. The next step is to upload this structure into Salesforce. ** ** **Step 3: Create an interface in Salesforce** Goto salesforce.com>login>skyvva>create new Interface. [![](../images/2019/10/a18.png)](../images/2019/10/a18.png) Enter the details: 1. Name: Salesforce Interface Name 2. Source name: Sap interface Name 3. Adapter: Your created adapter 4. Status: Deployed. 5. Save [![](../images/2019/10/a19.png)](../images/2019/10/a19.png) Open the Interface. And Goto Related Tab. [![](../images/2019/10/a20.png)](../images/2019/10/a20.png) **Step 4:  Import BAPI structure ** To upload the XML file and query for the selection of data to send. [![](../images/2019/10/a21.png)](../images/2019/10/a21.png) Upload file and then click on the upload button and then close the pop-up, the file will be loaded. [![](../images/2019/10/a22.png)](../images/2019/10/a22.png) Now after loading we can see all the SAP interface fields which we have used from parameters. [![](../images/2019/10/a23.png)](../images/2019/10/a23.png) **Step 5:  Query editor** Now we need to write Select Query (Note: you can either use the inbuilt query editor or you can directly write the SQL query, but make sure that SQL query should not give any error). [![](../images/2019/10/a24.png)](../images/2019/10/a24.png) Based on the selected field we will map Salesforce fields with SAP. In this example we are using Query editor. Go to Query Editor. - Select Objects from where we need to fetch and send data. - Select the required fields for selection. - Save and Test. In our example we have selected Account Object and final query looks like: **SELECT AccountNumber,BillingCity,BillingCountry,BillingState,Name,Fax,Id,Phone, ****BillingPostalCode FROM Account** [![](../images/2019/10/a25.png)](../images/2019/10/a25.png) **Step 6: Mapping of fields. ** Now Refresh the page(F5) and go to Details Tab. And go to Mapping Tab and scroll down. On the Left side, the Salesforce field is present and the right side SAP interface field is present. [0![](../images/2019/10/a26.png)](../images/2019/10/a26.png) Now we need to map the field by drag from Account and drop to SF_SAP_CUSTOMER. [![](../images/2019/10/a27.png)](../images/2019/10/a27.png) After mapping, You can see the mapped fields below. SAVE the mapping [![](../images/2019/10/a28.png)](../images/2019/10/a28.png) Now, Salesforce and SAP interface is ready. To test this we need to run the apex code from Developer Console. Open Developer Console by going to the top corner and then press the Developer Console option. [![](../images/2019/10/a29.png)](../images/2019/10/a29.png) New Window will appear and press **ctrl+E** to open Apex editor. [![](../images/2019/10/a30.png)](../images/2019/10/a30.png) Sample Apex Code. *skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl();* *c.returnXml=true;* *c.returnListRecord=true;* *c.isCreateMessage=true;* *c.actionDoIntegrate=false;* * String[] id1=new String[]{'Data Record-Id'};* *skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('Integration Name','Interface Name',id1,'SYNC', c);* Data Record Id: Each database table in Salesforce have Id field, which is a unique identification of particular records. Put the above Apex Code in Developer Console and replace the necessary details with actual value. After successful execution, the response will come back from SAP with the created customer number. ![](../images/2019/10/2019-10-10-01_57_33-Developer-Console.jpg) Now, we can verify the created customer exists in the SAP table or not. Go to transaction code SE16. Enter Table Name: **KNA1** Enter customer number(from above picture) in **KUNNR** field. ![](../images/2019/10/2019-10-10-02_03_24-Data-Browser_-Table-KNA1_-Selection-Screen-1.jpg) After execution, we can see a result record in the table. You can verify this record using the data sent earlier through the message monitoring. ![](../images/2019/10/2019-10-10-02_06_08-Data-Browser_-Table-KNA1-Select-Entries-1.jpg) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to develop inbound interface using IDoc asynchronously? Title: 1. How to develop inbound interface using IDoc asynchronously? Slug: how-to-develop-inbound-interface-using-idoc-asynchronously-2 URL: https://help.skyvva.com/#article/how-to-develop-inbound-interface-using-idoc-asynchronously-2 ================================================================================ # 1. How to develop inbound interface using IDoc asynchronously? # IDoc Inbound Interface from SAP to Salesforce **Table of Contents** - [Skyvva software landscape and building blocks](#li1) - [Used Convention](#li2) - [Prerequisite and requirement for creating an outbound interface](#li3) - [Creating Inbound Interface](#li4) 4.1 Overview of steps to create an inbound Interface - Scenario: Inbound interface using IDoc 5.1: Create Interface in SAP - 5.2: Define IDoc, Message Type - 5.3: Define IDoc and fields in the skyvva config - 5.4: Export IDoc structure from SAP - 5.5: Create an interface, import Idoc structure. - 5.6: Mapping of fields - 5.7: Define Routing to integration in Skyvva Config 6. Testing & Monitoring # 1.   Skyvva software landscape and building blocks Skyvva Integration Suite enables the integration between Salesforce and SAP-Backend with the native ABAP-Adapter sitting inside an SAP Backend e.g. an ECC 6.0 System with less effort and without programming neither in SAP nor in Salesforce. It based on the generation and customized an approach to reduce effort and to accelerate the development of interfaces between those systems. To be able to provide such a toolset and framework some component (green) has been developed by Skyvva and has to be deployed on Salesforce and SAP-Backend of the customer. [![](../images/2019/10/2019-10-02-14_48_25-Window.jpg)](../images/2019/10/2019-10-02-14_48_25-Window.jpg) **Architecture building blocks** The creation of an inbound interface is only possible when the Skyvva solution framework is set up correctly. This work has to be done beforehand by an administrator e.g. an ABAP transport has to be imported into the customer SAP-Backend system. # 2.   Used Convention When talking about the direction we have to clearly define the perspective from which platform we are looking for. Since we couple two platforms Salesforce and SAP together we have to clearly define from which view we are referencing when talking about direction outbound or inbound. [![](../images/2019/10/2019-10-02-14_59_23-Window.jpg)](../images/2019/10/2019-10-02-14_59_23-Window.jpg) **Outbound and Inbound Interface** The term outbound is used when data is sent out from Salesforce to SAP. Therefore we call interfaces for sending data out of Salesforce to SAP "*Outbound Interface*". For the other direction, we call interfaces "*Inbound Interface*" when data comes to Salesforce from SAP. So the reference point is set to Salesforce. # 3.   Prerequisite and requirement for creating an inbound interface This section describes the prerequisite to be done beforehand to start creating inbound interfaces. We only mentioned the prerequisite required to be able to create interfaces with the Skyvva development tool. It does not list prerequisites for the time when the interface is running e.g. open the firewall, doing port mapping, etc. Prerequisite: - The Skyvva solution framework has to be installed into your Salesforce instance. Refer to our website : [Install Skyvva in Salesforce](#article/skyvva-integration-suite-installation) to carry out this task. - An integration instance has been created. Refer to our website: [What is an integration and how to create it?](#article/what-is-an-integration-and-how-to-create-it) to carry out this task. - Adapter Configured in Salesforce. Refer to our website: [Create adapter in Salesforce](#article/create-adapter-in-salesforce-2) to carry out this task. - Setting up Salesforce CA Root Certificate for Inbound Call. Refer to our website[Inbound Configuration](#article/6-generic-inbound-configuration) to carry out this task. - Creating logical Port via the SOA Manager. Refer to our website: [Create Enterprise Service](#article/enterprise-service) to carry out this task. - Your workstation needs an internet browser IE or Firefox of the new release. When this prerequisite is fulfilled you can start creating inbound interfaces with the Skyvva development framework to send data from SAP to Salesforce. ### # 4. Creating Inbound Interface You start developing an inbound interface when you want to send data from SAP-Backend over the ABAP-Adapter to Salesforce. With the ABAP-Adapter you can send only data between SAP and Salesforce. If you want to send data from SAP to anywhere else you need to use other technology or middleware like SAP-PO. ## 4.1 Overview of steps to create an inbound interface The first question you should have might be how should I start? What is the first step to do? Should I start first in SAP or first in Salesforce? This chapter gives you an overview of which step is involved in creating an inbound interface and why you need this step. Before you start to develop the interface make sure that the prerequisite e.g. creating a logical port in the soamanager and installing the Salesforce CA Root certificate is fulfilled. [![](../images/2019/10/2019-10-02-15_04_07-Window.jpg)](../images/2019/10/2019-10-02-15_04_07-Window.jpg) Steps in creating an inbound interface The creation of an inbound interface consists of steps shown above. Each step is carried out either in Salesforce or in SAP. In each block, you see in the bracket the name of the component e.g. Salesforce or SAP where the step is done. Note: The grey box contains complex customizing tasks to do in SAP and is therefore not described. Here, in this document. This block will be described in a separate document called "SAP ALE/IDoc Customizing". Without having done the task in the grey box you cannot send IDoc or use BAPI to send data from an SAP system. The table below summarizes the step/task at a higher level. **Number** **Task** **Where** **Remarks** **1.** Customize ALE/IDoc or write BAPI to extract the business data SAP Here you customize ALE and IDoc to send IDoc out of SAP. You need to do a change pointer customizing using IDoc. If you use BAPI you have to develop this BAPI yourself first. This task can be done by an experienced ABAP developer or ALE/IDoc customizer. **2.** Define IDoc/BAPI and fields in the Skyvva Config SAP After you have done the ALE/IDoc customizing in you can use this IDoc as an interface. Here you use the skyvva transaction /skyvva/config to create an interface based on IDoc or BAPI and to select fields you need to send to Salesforce. **3.** Export the IDoc/BAPI structure from SAP SAP In this step, you need to export the interface definition based on IDoc or BAPI from SAP.  This is needed later in Salesforce as an interface that represents the data coming from SAP. **4.** Create Interface, Import IDoc/BAPI structure and do mapping Salesforce In this step, you first create an interface in Salesforce. Then you import the structure you have exported in step 3 using as the left side for the mapping. Then you do the mapping with the Skyvva graphical mapping tool. **5.** Define Routing to Integration /Interface in Skyvva Config SAP In this step, you define routing to the interface you have created in step 2. You use again the skyvva transaction /skyvva/config to create this routing. **6. ** Using workflow to route to the interface Salesforce In this step, you use workflow conditions to route incoming data from SAP to the right interface in Salesforce. **7.** Testing  and Monitoring messages SAP and Salesforce After step 7 you have successfully developed an inbound interface and have to test it. Testing involves creating a test ABAP report to call the BAPI or IDoc change pointer customizing. You can then monitor in SAP and Salesforce with the skyvva message monitoring. # 5. Inbound interface using Idoc The aim of this scenario is how to create an Idoc Inbound interface from SAP to Salesforce. Here we will be sending Customer using Basic type "DEBMAS07" using the IDoc from SAP to Salesforce through Skyvva ABAP adapter. **Prerequisites for Interface Development: ** To establish the connectivity some basic settings have to be done first.  With Soamanager configure the logical port  for the consumer-proxies and with WE21 the Port for IDOC-Processing has to be configured( Type ABAP-PI and assigning the actual ABAP_IDOC2SOAP_ADAPTER  ) Follow this tutorial for Configuration: [#article/configure-iservice](#article/configure-iservice) ## 5.1 Create Interface in SAP To create an interface you call the transaction /skyvva/config. If you use Idoc to send data out from SAP you have to define an interface that is based on type. Note that you have to develop your own Idoc type beforehand or use the SAP standard Idoc. Call transaction /n/skyvva/config. [![](../images/2019/10/2019-10-02-15_56_54-Window.jpg)](../images/2019/10/2019-10-02-15_56_54-Window.jpg) Click on the New Entries button for creating New Interface. [![](../images/2019/10/2019-10-02-16_00_34-Window.jpg)](../images/2019/10/2019-10-02-16_00_34-Window.jpg) In this screen enter a name for the field SAP interface id. This is the name of your interface. Give a meaning full name for your interface. Then choose the value "IDoc interface" for the type. ![](../images/2019/10/2019-10-08-01_24_16-New-Entries_-Overview-of-Added-Entries.jpg) Now save you editing with the save button. You might get a popup screen to record your change for later transport. Here just give a transport number of your choice. If you don't know the transport number you can create a new one or contact your SAP basis admin and ask him for a valid SAP transport number to use. [![](../images/2019/10/2019-10-02-16_13_53-Window.jpg)](../images/2019/10/2019-10-02-16_13_53-Window.jpg) After this step, you have created an interface with the name **/SKYVVA/CUS_S2SF.** Now you need to specify the Message type, Basic Type you want to transfer to Salesforce. To do so, select the created Interface and double click on **IDoc interface maintenance on** the left side. **[![](../images/2019/10/b3.png)](../images/2019/10/b3.png)** The Idoc which we provide in SAP interface is responsible for the process and its parameter is defined for the exchange of data between two systems. A second flag you have to check when using function module is the flag "send input". This flag indicates the runtime of Skyvva that the data should be sent via the function module call and not IDoc. ## 5.2 Define IDoc, Message Type Now enter IDoc message type and the basic type. Note that in this example we use an own message type DEBMAS we have created before in the ALE/IDoc customizing. As the basic type, we use the SAP standard DEBMAS07. You can use the standard IDoc message type DEBMAS as well or you can also create your message type. Refer to the document "SAP ALE/IDoc Customizing" for creating a new message type if needed. Now save your setting by clicking on the button. As a result, you will get a new line as shown on this screen. [![](../images/2019/10/b4.png)](../images/2019/10/b4.png) ** ** ## 5.3 Define Idoc and fields in the skyvva config After this step, you have created an interface. Now you need to specify the IDoc segment and fields you want to transfer to Salesforce. Because an IDoc can have hundreds of Segment and within a segment hundred of fields you have to select only those segments and fields you want to send out. Otherwise, the structure which will be generated later as XML structure will be too big and can cause Salesforce limitation when trying to import this structure file into Salesforce. [![](../images/2019/10/b5.png)](../images/2019/10/b5.png) ** ** Choose New Entry to add segment. We have to choose the least segments, through which we can create a customer. According to the business requirement, you may need to add multiple segments. Segment: choose from F4. Next level: At runtime, a new dataset will be transforming this segment created. Now save it. **[![](../images/2019/10/b6.png)](../images/2019/10/b6.png)** The segment has many numbers of fields, but we need only a few fields to create customer so that need to add here. Select the segment & double click on Idoc Fields. [![](../images/2019/10/b7.png)](../images/2019/10/b7.png) To add Idoc fields Click New Entry then add these fields using f4. [![](../images/2019/10/b8.png)](../images/2019/10/b8.png) ## 5.4 Export IDoc/BAPI structure from SAP The prerequisite to executing this step is that you have defined the IDoc/BAPI structure like described in step 2. You need to export the structure as an XML file to import it into Salesforce in the next step. This structure will represent the SAP structure on the left side in the mapping later on in the skyvva graphical mapping tool in Salesforce. Use the following transaction. From the starting Page: /n/SKYVVA/INTF_EXPORT From any other Page in SAP: - /n/ SKYVVA/INTF_EXPORT (opens transaction in the same window) - /o/ SKYVVA/INTF_EXPORT (opens transaction in new window) **Format**: There are 4 different output formats: D – Deployment Script U – Format for XML upload V – Format for XML upload (2) C – CSV file (not yet supported) The most commonly used formats of an IStructure to upload to Salesforce are either D or V. they differ in the XML structure and how they are uploaded into the SKYVVA Integration Suite in Salesforce. Structure V offers the possibility to get the SAP field description into the structure. [![](../images/2019/10/b9.png)](../images/2019/10/b9.png) Execute and save the  XML file. [![](../images/2019/10/a17.png)](../images/2019/10/a17.png) After executing this step you have an XML file that contains the SAP structure definition. The next step is to upload this structure into Salesforce. ** ** ## 5.5 Create interface, import Idoc structure Goto Salesforce.com>login>skyvva>create new Interface. [![](../images/2019/10/a18.png)](../images/2019/10/a18.png) Enter the details: - **Name**: Salesforce Interface Name - **Status**: Deployed ( Status of an interface e.g. if the interface is still under development or ready to run. If still on development the value is set to "Development". If ready for run it needs to set to "Deployed".) - **Operation Type**:  Upsert ( Choose the SKYVVA operation to define which kind of operation the interface should do. For example, we support CRUD operations like INSERT, UPDATE, DELETE and UPSERT. Furthermore, specific skyvva operations like query or pullQuery can be set.) - **Source/Target Name**: Account ( In case of Inbound Interface, it is an object API name (for example Account, Buffer__c, ...), the object that the integration for this interface is linked to) - **Interface Direction** : Inbound And then Save. ![](../images/2019/10/2019-10-08-11_43_26-interface-Excel-Product-Activation-Failed.jpg) Open the Interface. And Goto Related Tab. [![](../images/2019/10/a20-e1570517496264.png)](../images/2019/10/a20.png) To upload the XML file and query for the selection of data to send. [![](../images/2019/10/a21.png)](../images/2019/10/a21.png) Need to upload the XML file which we created in step 3 and then click on the upload button and then close the pop-up, the file will be loaded. [![](../images/2019/10/a22.png)](../images/2019/10/a22.png) Now after loading we can see all the SAP interface fields which we have used from parameters. [![](../images/2019/10/2019-10-05-23_31_20-Window.jpg)](../images/2019/10/2019-10-05-23_31_20-Window.jpg) ## 5.6: Mapping of fields. Now Refresh the page(F5) and goto Details Tab. And goto to Mapping Tab and down. On the left side, the Salesforce field is present and the right side SAP interface field is present. Now we need to map the field by drag from Account and drop to SF2SAP_IDOC. [![](../images/2019/10/2019-10-05-23_42_45-Window-1.jpg)](../images/2019/10/2019-10-05-23_42_45-Window-1.jpg) After mapping, You see the mapped fields.SAVE the mapping [![](../images/2019/10/2019-10-05-23_50_24-Window.jpg)](../images/2019/10/2019-10-05-23_50_24-Window.jpg) Now, Salesforce and SAP interface is ready. ## 5.7 Define Routing to integration in Skyvva Config Open the transaction /n/skyvva/config and select the tree branch "Routing to Integration/Interface". Click on the button to create a new routing entry for an interface. [![](../images/2019/10/2019-10-06-00_12_45-Window.jpg)](../images/2019/10/2019-10-06-00_12_45-Window.jpg) You will get this screen below after clicking on the button "New Entries". Now fill in the fields. The first field to fill in is the field Partner No. This is the partner profile you have created beforehand with the transaction code we21. You get the value from the drop-down list. ![](../images/2019/10/2019-10-08-12_48_27-New-Entries_-Details-of-Added-Entries-1.jpg) Click on the button to get the value list. Here you see the value list and select the one that is the right one for your case. You can see that the field Partner No. and Partn. The type is filled from the value list. If your ALE/IDoc customizing need the Partner Role you have to fill it accordingly. In this example we don't need this and therefore leave it empty. Now fill the field Port. The port has to be created before like described in the document "SKYVVA_061_Directcoupling SetupSKYVVASolution_vxxx". To create port goto Endpoint Access. Provide 2,3,4 as per the organization. For 5,6 Lport Enterprise & Lport Iservice from SOAMANAGER. ![](../images/2019/10/2019-10-08-12_37_57-Change-View-_Endpoint-Access__-Details-1.jpg) It is Endpoint Access created in the Skyvvaconfig tool. Here click on the button to get the value list for the IDoc port. Optionally you can enter a value for field Message Variant and Mess. function if the ALE/IDoc customizing need it. In this example, we don't need this. Now you have to enter the value for Message Type and Basic Type. Here again, you can choose from the value list by clicking on the appropriate field on the button. The screen below just shows the result of the selection for Message Type and Basic Type since the way how to do it is the same as described above. The field Extension is only needed if you have enhanced the IDoc with the customer segment. In this example, we don't and therefore the field is left empty. Now fill in the fields in the section "Routing to Integration/Interface". The first field to enter is the field Object TypeName. Here please enter this string for the current release **/SKYVVA/CL_IDOC2SOAP_TRANSF_V1** The next fields are Interface Name and Integration ID. These fields are information you get from Salesforce. The field interface name is the name of the interface you created in step 4. The field integration ID is the Id of an integration that you have created in Salesforce for the first time. Instead of Integration Id, you can also use the name of the integration. ( supported since  Version 2.22 of IntegrationSuite) . ![](../images/2019/10/2019-10-08-12_59_00-Change-View-_Routing-to-Integration_Interface__-Details.jpg) Follow like this, Now Sap and Salesforce interface is ready. # 6. Testing & Monitoring Now to send customer there is standard t-Code BD12 ![](../images/2019/10/2019-10-08-02_08_33-Send-Customers.jpg) Press F8 to execute. ![](../images/2019/10/2019-10-08-13_00_58-SAP.jpg) The message shows 1 Idoc sent. To check, goto Salesforce message tab in Integration. ![](../images/2019/10/2019-10-08-13_03_18-Change-View-_Routing-to-Integration_Interface__-Details.jpg) ![](../images/2019/10/2019-10-08-13_04_32-Anand-Khatri-_-Salesforce.jpg) ![](../images/2019/10/2019-10-08-13_04_59-Change-View-_Routing-to-Integration_Interface__-Details.jpg) These messages show the data came in Salesforce. ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to develop Outbound interface using BAPI synchronously? Title: 1. How to develop Outbound interface using BAPI synchronously? Slug: how-to-develop-the-outbound-interface-using-bapi-synchronously URL: https://help.skyvva.com/#article/how-to-develop-the-outbound-interface-using-bapi-synchronously ================================================================================ # 1. How to develop Outbound interface using BAPI synchronously? **Create Customer in SAP from Salesforce using BAPI and Save created customer in Salesforce table.SYNCHRONOUS call)** **Table of Contents** - Skyvva software landscape and building blocks - Used Convention - Introduction, Prerequisite for creating an outbound interface - Creating Outbound Interface Define BAPI and fields in the skyvva config - Export BAPI structure from SAP - Create an interface - Import BAPI structure - Query editor - Mapping of fields - [Create Inbound Interface in Salesforce](#li5) - [Import XML file](#li6) - [Mapping of field](#li7) - [Changing the outbound interface](#li8) - [Making Response Interface in sap](#li9) - [Run Apex code](#li10) - [Testing Result](#li11) From **Step 1** to **Step 4** refer to the document: [How to develop an Outbound interface using BAPI asynchronously?](#article/how-to-develop-inbound-interface-using-bapi-asynchronously) After following the above document, the outbound interface would have been created. ## 5. Create Inbound Interface in Salesforce Here, we Need to create Inbound Interface to save the created customer number into the salesforce table. Create a New Interface. ![](../images/2019/10/2019-10-10-03_06_18-Anand-Khatri-_-Salesforce.jpg) - Give appropriate interface name - Deployed - Operation Type: upsert(update fields) - Source/Target Name: Account (Table to update) - Interface Direction: Inbound ![](../images/2019/10/2019-10-10-03_01_49-I-201910-0087-_-Salesforce.jpg) ## 6. Import XML Save and Goto Related tab for XML file upload. ![](../images/2019/10/2019-10-10-03_16_19-I-201910-0087-_-Salesforce.jpg) Upload file and then click on the upload button and then close the pop-up, the file will be loaded. [![](../images/2019/10/a22.png)](../images/2019/10/a22.png) Now after loading we can see all the SAP interface fields which we have used from parameters. [![](../images/2019/10/a23.png)](../images/2019/10/a23.png) Add a salesforce id field to uniquely identify the table data as ext. id. ![](../images/2019/10/2019-10-10-03_22_15-I-201910-0087-_-Salesforce.jpg) Provide the necessary details. ![](../images/2019/10/2019-10-10-03_22_57-I-201910-0087-_-Salesforce.jpg) ## 7. Mapping of fields Goto Detail tab and Mapping section. ![](../images/2019/10/2019-10-10-03_25_30-interface-Excel-Product-Activation-Failed.jpg) Here, we need to map only 2 fields,** salesforceid and customerid.** - **SALESFORCEID** : This field identifies the record in a table which is needed to update, the salesforce will be what we have used in apex code for running interface, same record will be updated. - **CUSTOMERID**: This field is a customer number which is created in SAP and the same needs to save in our salesforce 'ACCOUNT' table. So, we need to map the customer field with our salesforce ACCOUNT table field. ![](../images/2019/10/2019-10-10-21_58_20-I-201910-0087-_-Salesforce.jpg) Here, CustomerNo is mapped to Account->AccountSource field, where CustomerNo is going to save. ## 8. Change Outbound Interface. Goto to the interface created in step 4. Goto Runtime Config. and Add Inbound interface-id which we created in Step 5. Save it. It specific the workflow of execution after the Outbound Interface, Inbound Interface will be called (CUSTOMER_SAVE). ![](../images/2019/10/2019-10-10-03_32_03-I-201906-0010-_-Salesforce.jpg) ## 9. Making Response Interface in sap Goto T-code /skyvva/config: ![](../images/2019/10/2019-10-02-15_56_54-Window.jpg) Goto Response interface tab. ![](../images/2019/10/2019-10-10-22_18_22-Change-View-_Response-interface__-Overview.jpg) After New entry, the parent the Interface and port from f4 help. ![](../images/2019/10/2019-10-10-22_20_23-New-Entries_-Details-of-Added-Entries.jpg) ## ## 10. Run Apex code Now, SALESFORCE and SAP interface is ready. Run the apex code from Developer Console. Open Console by going to set at the top corner and the Developer Console. [![](../images/2019/10/a29.png)](../images/2019/10/a29.png) New Window will appear and press **ctrl+E** to open Apex editor. [![](../images/2019/10/a30.png)](../images/2019/10/a30.png) Sample Apex Code. *skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl();* *c.returnXml=true;* *c.returnListRecord=true;* *c.isCreateMessage=true;* *c.actionDoIntegrate=false;* * String[] id1=new String[]{'Data Record-Id'};* *skyvvasolutions.CallOutResponse r=skyvvasolutions.Iservices.invokeCallout2('Integration Name','Interface Name',id1,'SYNC', c);* Data Record Id: Each database table in salesforce have Id field, which is a unique identification of particular records. And then Execute,  Data will be saved in save. After successful execution, the response will come with the created customer number. ![](../images/2019/10/2019-10-10-22_25_54-Developer-Console.jpg) ## 11. Testing Result Now, we can the Message in Integration. ![](../images/2019/10/2019-10-10-22_27_41-Anand-Khatri-_-Salesforce.jpg) Both the Outbound and Inbound get called one after another. Now, we see out the created customer in the Account Table. ![](../images/2019/10/2019-10-10-22_32_09-Workbench.jpg) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: Generic Inbound Configuration Title: 1. Generic Inbound Configuration Slug: 6-generic-inbound-configuration URL: https://help.skyvva.com/#article/6-generic-inbound-configuration ================================================================================ # 1. Generic Inbound Configuration #### To send the data from Salesforce to SAP using SKYVVA, we can use 2 approach - Send data using HTTP Protocol - Send data using HTTPS Protocol Here, we can select the protocol based on the Reverse-proxy setting. If Reverse-proxy sends the data using HTTP protocol then we need to configure using the below configuration. - Run the SOAMANAGER transaction in SAP, it will open below screen in Web Browser. Here select the option "Web Service Configuration" ![](../images/2019/08/generic1-3.png) - Now in the new screen, for the Object Name; search for /SKYVVA/*. It will list down all the Consumer Proxy and Service definitions from SAP repository. ![](../images/2019/08/generic2-6.png) - Select/Click the service /SKYVVA/GENERICINBOUND_HTTP ![](../images/2019/08/generic3-6.png) 2. Here, select the option "Create Service". ![](../images/2020/04/generic4.png) 3.  Enter the details for "Service Name", "Service Description Text" and "New Binding Name". Once done press on "Next Button". ![](../images/2020/04/generic5.png) - Now select the below option and press "Next Button". ![](../images/2020/04/generic6.png) 5. Put This URL “/sap/bc/srt/rfc/skyvva/inbound_http/100/inbound_http/httpbinding” **change the client code** ![](../images/2020/04/generic7.png) 6. In the below screen, press the  "Finish Button" to complete this configuration. After this a new service will be generated in SAP. ![](../images/2020/04/generic8.png) #### Step to create HTTPS (/SKYVVA/GenericInbound_sync)GenericInbound:- - Select/Click the service /SKYVVA/GenericInbound_sync. - Here, select the option "Create Service". - Enter the details for "Service Name", "Service Description Text" and "New Binding Name". Once done press on "Next Button". - Now select the below option and press "Next Button". ![](../images/2020/04/generic9.png) 5. Put This URL “/sap/bc/srt/rfc/skyvva/genericinbound_sync/110/inbound_https/httpsbinding” **change the client code.** ![](../images/2020/04/generic10.png) - Follow the below step to get Adapter Endpoint URL. 1. Login in sap. 6. Use Tcode **SICF.** 7. To get url from SAP generated in Tcode **SICF.** 8. By follow the path (“/sap/bc/srt/rfc/skyvva/genericinbound_sync) / client /your  genericinbound name/httpbinding OR httpsbinding. ![](../images/2020/04/generic11.png) ![](../images/2020/04/generic12.png) ![](../images/2020/04/generic13.png) Test the generated service. ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: Skyvva configuration generic Information Title: 1. Skyvva configuration generic Information Slug: kyvva-configuration-generic-information URL: https://help.skyvva.com/#article/kyvva-configuration-generic-information ================================================================================ # 1. Skyvva configuration generic Information #### SKYVAA CONFIGURATION GENERIC DETAILS #### CONTENT:- 1. Introduction. 2. Basic Configurations. 3. Creating Interface in SAP. 4. Creating an IDOC-Interface SAP to SFDC. 4.1 Introduction IDOC and IStructure. 4.2 Preparation and design considerations. 4.3 Maintain Fields. 4.4 Download of created IStrucures as. XML-file. 5. Creating a BAPI-Interface SAP to SFDC. 6. Defining Endpoint Access. 7. Defining Routing to Interface/Integration. #### Introduction To let the SKYVVA Integration Suite exchange Data between SAP and SFDC (Salesforce.com) it is necessary that both systems agree on one data format. The leading system to create a common data structure here is the SKYVVA configuration environment in SAP. With creating a data structure, a communication interface for this specific message is also created on the SAP site. The created data structure will then be exported as an XML file and saved in SFDC as a so-called IStructure. The focus of this document is to describe how to create such a Data structure in SAP, export it and import it as an IStructure in SFDC. As pre-requisites, it is highly recommended that all necessary information about what BAPIs or IDOC, with what Tables, Segments and Fields that are needed, are gathered on beforehand. Also, should the person developing on the Integration Suite on SFDC site contact the Responsible Person on the SAP site to get information about the data sent from SAP or to SAP. For one reason it is to get information about what field name has what meaning since the names in SAP are not always clear and may have multiple meanings, depending on the usage. Another reason is that SAP and SFDC are not treating all dates in the same way (e.g. date formats) and therefore some conversions have to be done in the mapping via formulas. When using IDOC, you can define own IDOC-type, IDOC-Extensions Message Types.  For your Message Types, you can also maintain relevant fields in Transaction BD52 for Master data like Material, Customer and so on.  For document-based IDOCs like ORDRSP, DLVRVY, etc. you can customize own OutputControl-Messagetype and Output-Control-Conditions with the transaction NACE may be using the Transfer medium ALE-Processing.  For the Distribution of Master data-IDOCs or Document-Idocs with ALE-Processing, you also have to maintain a logical System for your Salesforce-Instance in transaction SALE and a Distribution Model for your SAP-System in connection with your Salesforce-System for the exchange of the IDOCs. Please ask your ALE/IDOC-Administrator.  These SAP-Standard-activities are not described here, we recommend reading SAP Documentations for this purpose. #### Basic Configurations To establish the connectivity some basic settings have to be done first.  With SOA MANAGER configure the logical port for the consumer-proxies and with WE21 the Port for IDOC-Processing has to be configured (Type ABAP-PI and assigning the actual ABAP_IDOC2SOAP_ADAPTER) #### Note: Please check below link - [#article/6-generic-inbound-configuration](#article/6-generic-inbound-configuration) - [#article/enterprise-service](#article/enterprise-service) - [#article/configure-iservice](#article/configure-iservice) **Creating Interface in SAP** After installing the Components of the SKYVVA Integration Suite in SAP, the interface configuration tool can be reached via the following transaction: **Run T-code – /n/SKYVVA/CONFIG** After calling the transaction **/SKYVVA/CONFIG** the SKYVVA configuration page appears. Mark with the mouse the first tree branch with the name "**Header maintenance**". Click on the button "**New Entries**" to create a new Interface. The screen below appears. If this Button is not visible change the window to edit mode by pressing the edit button or **ctrl F4**. ![](../images/2020/04/confi.png) When entering a new interface a name and a description have to be entered. It also has to be decided whether the interface should communicate with an IDOC or a BAPI. This choice appears as a drop down field. Press **Save (ctrl + s).** ![](../images/2020/04/confi1.png) ![](../images/2020/04/confi2.png) When saving a new interface SAP requires this to be maintained in a transport. So here it should also be checked with the SAP Basis team what to use here. ![](../images/2020/04/confi3.png) #### 4. Creating an IDOC-Interface SAP to SFDC #### 4.1 Introduction IDOC and IStructure One way to interact with SAP and to invoke a business Process is via so called IDOC (**I**ntermediate **Doc**ument). An IDOC is working asynchronous and consists of many Segments, sometimes with child segments and qualifiers for single fields which can give these fields more than one meaning. Also it can the segments of which an IDOC consists of, have multiple child segments. An IDOC can also contain data from more than one message type (e.g. Account and Contacts or header and items of a document). These Messages have to be sent to different interfaces in SFDC although they come from the same IDOC. So in the configuration it has to be determined which Segment belongs to which message and which segments has to be sent together. In the configuration this is configured via the header (main) segment in that way that it is configurable what segment should be send with what message (main segment). So to create an Interface it is necessary to rebuild the IDOC structure in a way that all data are correctly processed. The Interface is therefore always built from the top-level (interface) to the bottom (field level).  And these configurations are used to generate a xml-structure for the IStructure-Generation in SFDC via file. upload. So the metadata-exchange is implemented, to enable the mapping from SAP-fields to SFDC-Fields with the Mapping-functionality of the Integration Suite. **4.2 Preparation and design considerations:-have** When beginning the configuration you should have already defined the target-objects in SFDC and it is a good idea to collect the interface-details in the design phase in an excel-mapping-sheet. On the top-level you have to identify the related IDOC-segments; In our example in SFDC 2 objects have been created for the integration of delivery. As result we will need at least 2 interfaces. In SAP the IDOC-Type DELVRY05 has been identified as medium for the interface. In the screenshot the WE30-transaction is on the left and the Interfaces in SFDC are displayed together.  We identify the E1EDL20-segment as leading Segment for the Delivery header interface in SFDC and the E1EDL24 (Delivery Item) as the leading segment for the Deliver Item interface in SFDC. ![](../images/2020/04/confi4.png) **The Steps are:** - Select an IDOC enabled Interface and mark it by hitting the field left of the Interface name - Select the next level in the left pane (**IDOC interface maintenance**) ![](../images/2020/04/confi5.png) ![](../images/2020/04/confi6.png) 1.  Press New Entries (F5) 2.  Fill in the message Type of the IDOC you want to use and its basic type. ![](../images/2020/04/confi7.png) ![](../images/2020/04/confi8.png) ![](../images/2020/04/confi9.png) Press **Save** (or **ctrl** **+ s**) ![](../images/2020/04/confi10.png) ![](../images/2020/04/confi11.png) - Mark the message type as described before and choose the next level of the IDOC (**IDOC Segments**) in the left pane - Press **New Entries** (**F5**) (If not visible press **Change** Button (**ctrl** + **F4**)) - Fill in all needed Segments which has to be processed (**Segment Type**) - Determine from which segments the child segments has to be send also and check the corresponding check box (**Next Level**). (The main segment of a message type has to be checked in every case since each checked segment will spawn a message of its own!) - Determine which segments has to be sent together with what main segment an fill in the name of this segment in the third column (**Target Segment**). ![](../images/2020/04/confi12.png) Mark the entry in the rigth pane and choose the below folder “IDOC-segments maint”. ![](../images/2020/04/confi13.png) You can either paste the segment types from your Excel Mapping Sheet or search via F4-Search help. ![](../images/2020/04/confi14.png) ![](../images/2020/04/confi15.png) Press **Save** (or **ctrl** **+ s**) ![](../images/2020/04/confi16.png) ![](../images/2020/04/confi17.png) The following screen shows us two checked **Next Level**. i.e E1EDL20 as Header and E1EDL24 as Item and the belonging target segment of segment type. ![](../images/2020/04/confi18.png) In this example the user maintained the target segment explicitely for all joined segments,  but in most cases this is not necessary, because the default target-record is the identical to the last processed leading segment. Here an example where target-object is needed, because the last segment should be linked to header because instead to  the previous segment in the hierarchy which is the item-segment. The E1EDP20 is joined with E1EDP01 by **implicitly**. When the E1EDS01-segment will be processed the actual record will be a item record. To join the E1EDS01 with the E1EDK01-segment into one record, we specify the target-segment explicitly here. ![](../images/2020/04/confi19.png) #### 4.3 Maintain Fields - To select the needed IDOC Fields in the segments mark the segments as done before by checking the field **left** of the Segment Type you want to edit. - The initial Field selection screen appears - Press **New Entries **(**F5**) => Again, when this button is not visible press the **Change** Button (**ctrl** + **F4**) - The Screen for new entries appears. Fill in all needed field names for this IDOC segment. **Save** (**ctrl** + **s**) after every new entry. - Depending on the Version of the software it may be necessary to press the Back Button (F3) to come back to enter new fields: ![](../images/2020/04/confi20.png) ![](../images/2020/04/confi21.png) ![](../images/2020/04/confi22.png) Press **Save** (or **ctrl** **+ s**) ![](../images/2020/04/confi23.png) The following screen shows the IDOC fields „VBELN“ as Keyfield ![](../images/2020/04/confi24.png) ![](../images/2020/04/confi25.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Please be careful, If the **Keyfield** is not checked in the configuration on SAP side, we get the following error on Salesforce side. The following figure is from Interface Billing.[/su_box] ![](../images/2020/04/confi26.png) ![](../images/2020/04/confi27.png) **How to find a Qualifier?** The following screenshot steps show a qualifier ![](../images/2020/04/confi28.png) ![](../images/2020/04/confi29.png) ![](../images/2020/04/confi30.png) ![](../images/2020/04/confi31.png) ![](../images/2020/04/confi32.png) ![](../images/2020/04/confi33.png) ![](../images/2020/04/confi34.png) Now we can select qualifier for the following segment type. Click on Qualified Segment. ![](../images/2020/04/confi35.png) ![](../images/2020/04/confi36.png) ![](../images/2020/04/confi37.png) ![](../images/2020/04/confi38.png) ![](../images/2020/04/confi39.png) ![](../images/2020/04/confi40.png) 4.4 Download of created IStrucures as XML-file. To interact with the interface of the SKYVVA Integration Suite on SAP site, it is necessary to have a corresponding IStructure in SFDC (Salesforce.com). This IStructure can be downloaded directly after the creation of the Interface from SAP and uploaded into Salesforce. These are the Steps: - Navigate to the following transaction: - From the starting Page: 4.5 1. /n/SKYVVA/INTF_EXPORT From any other Page in SAP: **4.6 2. /n/ SKYVVA/INTF_EXPORT (opens transaction in the same page)** **4.7 3. /o/ SKYVVA/INTF_EXPORT (opens transaction in a new page)** - The download page opens - Fill in the mandatory fields: **Interface:** The exact name of the created Interface **Language:** Depending on the language it may be possible to get the SAP field descriptions into the IStructure **Format:** There are 4 different output formats: **D –** Deployment Script **U –** Format for XML upload **V –** Format for XML upload (2) **C –** CSV file (not yet supported) The most common used formats of an IStructure to upload to SFDC are either D or V. they differ in the XML structure and how they are uploaded into the SKYVVA Integration Suite in SFDC. Structure V offers the possibility to get the SAP field description into the IStructure ![](../images/2020/04/confi41.png) ![](../images/2020/04/confi42.png) ![](../images/2020/04/confi43.png) ![](../images/2020/04/confi44.png) ![](../images/2020/04/confi45.png) **5. Creating an BAPI-Interface SAP to SFDC** If you use BAPI or function module to send data out from SAP you have to define an interface which is based on BAPI type. Note that you have to develop your own BAPI/Function module beforehand or use SAP standard function module. Call transaction /n/skyvva/config. ![](../images/2020/04/confi46.png) Mark with the mouse the first tree branch with the name "**Header maintenance**". Click on button "New Entries" to create a new Interface. The screen below appear. ![](../images/2020/04/confi47.png) In this screen enter a name for the field SAP interface id. This is the name of your interface. Give a meaning full name for your interface. Then choose the value "BAPI interface" for the type. Now save you editing with the save button. You might get a popup screen to record your change for later transport. Here just give an transport number of your choice. If you don't know the transport number you can create a new one or contact your SAP basis admin and ask him for a valid SAP transport number to use. ![](../images/2020/04/confi48.png) As a result you will get a new line in the overview list like shown in the below screen. ![](../images/2020/04/confi49.png) After this step you have created a interface with the name CUSTOMER. Now you need to specify the parameter and fields you want to transfer to Salesforce. To define the Function module select the interface on the right side in the list (yellow highlighted). Now double click on the tree branch "BAPI int. maintenance" on the left side. You will get the screen below where the list on the right side is empty. ![](../images/2020/04/confi50.png) Now you have to choose the Function Module which is you developed in the Scenario1 step1 above. In this example the Function Module is ZBAPI_SEND_CUSTOMER. **Case1: **BAPI and function module normally don't have huge parameter and fields. Therefore there is an option to set that all parameters and fields of parameters of a BAPI/function module should be included in the xml file generation. Because of this characteristic of a BAPI/function module we don't describe the way how to add different parameters and fields but just use the option like shown in the screen below. Check the flag "All Fields" like shown in this screen. A second flag you have to check when using function module is the flag "send input". This flag indicate the runtime of Skyvva that the data should be send via function module call and not IDoc. ![](../images/2020/04/confi51.png) Now you are finish in defining the structure and fields for the xml file export. Now go to step 3 and export the BAPI structure. **Case 2: **Should the BAPI/function module in some exceptional case has very large number of parameters and fields you can select parameters and fields individually. To define the parameters select the Function module and on the right side in the list (yellow highlighted). Now double click on the tree branch "BAPI parameters maint." on the left side. You will get the screen below where the list on the right side is empty. ![](../images/2020/04/confi52.png) Click on new entries. Here the field "parameter Name" you can choose from F4Help. **Sequence** you can mention the number if you are using the more parameters in the function module. Because of this characteristic of a BAPI/function module parameters we don't describe the way how to add different fields but just use the option like shown in the screen below. Check the flag "**All Fields**" like shown in this screen. If the parameter is a field and that is **key field** then use the option like shown in the screen below. Check the flag "**Keyfield**" if it is an keyfield. the field "StructName extern" we can give sObject name from Salesforce here it is an optional. If the Parameter is an input parameter in interface. the flag "**Input Parameter**" you can see the  option in the screen below. If the parameter is an output parameter in interface check the flag "**Output Parameter**" like shown in the below screen. ![](../images/2020/04/confi53.png) after saving you can see like below. ![](../images/2020/04/confi54.png) To define the fields select the parameter on the right side in the list (yellow highlighted). Now double click on the tree branch "**BAPI fields**" on the left side. You will get the screen below where the list on the right side is empty. ![](../images/2020/04/confi55.png) you can add the parameter fields like as functional parameters. Add all the required fields then after adding the screen look like below screen. ![](../images/2020/04/confi56.png) Now Interface is ready to export. Follow the steps : **4.4 Download of created IStrucures as .XML-file** #### 6. Defining Endpoint Access:- The Endpoint Access has to be setup to tell SAP where and how to connect to. It also defines the logical port over which all the internal communication with the SKYVVA Integration suite runs. In our case the endpoint is needed to get the session id from Salesforce to use for subsequent webservice call. This connection has to create only one time and not for each interfaces. There are following fields: **Port** - Name of the defined physical Port for the connection - Area Name - SAP shared Objects: Name of the Objects in the shared memory. Needed if session pooling is used. **Organization ID** **Portal ID** Optional: Specify only if user is a Customer Portal user. The ID of the portal for this Organization. The ID is available in the Salesforce user interface: **Username** Login Username for the external Salesforce system **Password** Login Password for the external Salesforce system **Token** Token used to connect to the Salesforce system **Logical Port ENTERPRISE** Logical Port used for internal communication **Logical Port ISERVICES** Logical Port used for internal communication **Session Pooling** Boolean. Enabling session pooling y/n To define the endpoint access of an integration - Go to the folder **Endpoint Access** on the left panePress - **New Entries (F5)** (If not visible press **Change** Button (**ctrl + F4**)) - Fill in all the needed fields with the appropriate valuesPress - **Save** (or **ctrl** **+ s**) ![](../images/2020/04/confi57.png) ![](../images/2020/04/confi58.png) If check the flag „SessionPooling“ we activate the functionality that the session id is get one time and store in a abap shared memory. This stored session is use again for other webservice call. It perform better when using session pooling. So we recommend to always use this flag. If this flag is not check each time a webservice from salesforce is called a separate login webservice is also called to get the session id. With every webservice call we use a new. session id and this is not a good performance. It is not neccersary to get everytime a new session id. One session id is valid e.g. for 8 hour and can be use for many webservice call. So to increase performance session pooling should used e.g. the flag should tagged! #### What is a session ID? A session ID is a unique number that a Web site's server assigns a specific user for the duration of that user's visit (session). The session ID can be stored as a cookie, form field, or URL (Uniform Resource Locator). Some Web servers generate session IDs by simply incrementing static numbers. However, most servers use algorithms that involve more complex methods, such as factoring in the date and time of the visit along with other variables defined by the server administrator. In the following figure we see the Session Settings on Salesforce ![](../images/2020/04/confi59.png) This screen show the validity of a session id. In this example a session id can last 8 hour. #### LPort Enterprise and LPort Iservice are the names of logical Ports which has been configured in SOA-Manager (or in older versions in LPCONFIG). 7. Defining Routing to Interface/Integration Prerequisites:  the integration is already created in SFDC and you have already created the interface within this integration or you have decided this to do in the next steps. Double Click on Routing to Integration/Interface and after that Press Button New Entries ![](../images/2020/04/confi60.png) ![](../images/2020/04/confi61.png) The Field ObjectTypeName has to be filled with   /SKYVVA/CL_IDOC2SOAP_TRANSF_V1 for the actual version of the transformation class. The values for Interface Name and Integration ID has to be retrieved from Salesforce. For the SAP interface id please choose your previous configured interface name. ![](../images/2020/04/confi62.png) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke IDOC XML using SAP ERP Adapter? Title: 1. How to invoke IDOC XML using SAP ERP Adapter? Slug: how-to-invoke-idoc-xml-using-sap-erp-adapter URL: https://help.skyvva.com/#article/how-to-invoke-idoc-xml-using-sap-erp-adapter ================================================================================ # 1. How to invoke IDOC XML using SAP ERP Adapter? **Posting IDOC XML to SAP ERP over Skyvva SAP ERP Adapter** In SAP ERP we have to do the following settings Transaction: **SRTIDOC** - Execute with the default values in the transaction with the option “**Register Service**” selected - Registration should be successful with the message “Registration Successful” - If this service has already been registered, you may get the error message – “Access Address already used for Web service”. In such a case, this step can be ignored as the SOAP Service is already registered and running. Transaction: **SICF** Hierarchy Type: **SERVICE** & Execute Navigate to **Default Host –> sap –> bc –> srt –> IDoc**. Right Click & **Test Service** Note the URL that comes in your browser. This is the generic endpoint for idoc xml posting to SAP. **http:/*/host:port*/sap/bc/srt/idoc?sap-client*=. *** The following is the endpoint for our SAP system ID7 with client 800 **"http://195.201.104.232:16080/sapid7/sap/bc/srt/idoc?sap-client=800"** This endpoint we will use while creating the SAP ERP adapter in skyvva. Importing IDOC from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/10/Untitled-4.png) Provide the details as shown for the SAP system In the Configuration tab. Provide the details Here we need to provide the sap configuration details as below Type: SAP ERP Deployment: Embedded Logical System: LSSAP Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2020/10/Untitled-5.png) ![](../images/2020/10/Untitled-6.png) Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up like its successfully connected to SAP Backend. ![](../images/2020/10/Untitled-7.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/10/Untitled-8.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/10/Untitled-9.png) With this connection. we can import the IDOC/RFC's from SAP. **Create Metadata Provider** ![](../images/2020/10/Untitled-10.png) **Create Repository** ![](../images/2020/10/Untitled-11.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-12.png) Here we need to give the details of connection type, Connection Destination which we created earlier in the SAP Control Board and the Select the Application Data type IDOC ![](../images/2020/10/Untitled-63.png) Now click on Retrieve to create the message type from SAP Here is the IDOC template. Here we need message type for both Request and Response also to get the IDOC number back from SAP and to show it in Skyvva Monitor. But we use only Request message type while creating the outbound interface. ![](../images/2020/12/Untitled-35.png) ![](../images/2020/12/Untitled-36.png) **Creating the SAP ERP Adapter in Skyvva** We need to provide the following details to create the soap adapter Name - Name of the adapter Type - SAP ERP Description - IDOC XML Adapter Direction - Outbound Status - Active ![](../images/2020/10/Untitled-22.png) ![](../images/2020/10/Untitled-64.png) objectFormat - IDOC Connection Destination - It means the SAP Connection which we created earlier for the backend connection - SAPID9 Now click on save button to create the adapter. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface In our example DEBMAS.DEBMAS07.ZNBDEBMAS is the root message type as shown below. ![](../images/2020/10/Untitled-65.png) ![](../images/2020/12/Untitled-42.png) ![](../images/2020/10/Untitled-16.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-38.png) ![](../images/2020/10/Untitled-18.png) Save the interface once provide all the necessary details. Now do the callout using below apex code: Cskyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013E00001DKgY9QAL'}; skyvvasolutions.Iservices.invokeCalloutV3('IDOCXML','IDOCXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/10/Untitled-32.png) IDOC posted to SAP ![](../images/2020/10/Untitled-29.png) And we got the acknowledgement response back from SAP in Skyvva message monitor in the comment section like IDOC got created in SAP. This IDOC number we can search in the Business external ID ![](../images/2020/10/Untitled-33.png) We have also a Copy node function in Skyvva. Copy node is used to duplicate the segment if needed. ![](../images/2020/10/Untitled-56.png) In our example we have duplicated the segment for one time ![](../images/2020/10/Untitled-57.png) Now we can see the repeated segments in SAP as well as shown below. ![](../images/2020/10/Untitled-58.png) This is the functionality of Skyvva copy node. ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke IDOC XML using SKYVVA SOAP Adapter? Title: 1. How to invoke IDOC XML using SKYVVA SOAP Adapter? Slug: 16-how-to-invoke-idoc-xml-using-skyvva-soap-adapter URL: https://help.skyvva.com/#article/16-how-to-invoke-idoc-xml-using-skyvva-soap-adapter ================================================================================ # 1. How to invoke IDOC XML using SKYVVA SOAP Adapter? **Posting IDOC XML to SAP ERP over Skyvva SOAP Adapter** In SAP ERP we have to do the following settings Transaction: **SRTIDOC** - Execute with the default values in the transaction with the option “**Register Service**” selected - Registration should be successful with the message “Registration Successful” - If this service has already been registered, you may get the error message – “Access Address already used for Web service”. In such a case, this step can be ignored as the SOAP Service is already registered and running. Transaction: **SICF** Hierarchy Type: **SERVICE** & Execute Navigate to **Default Host –> sap –> bc –> srt –> IDoc**. Right Click & **Test Service** Note the URL that comes in your browser. This is the generic endpoint for idoc xml posting to SAP. **http:/*/host:port*/sap/bc/srt/idoc?sap-client*=. *** The following is the endpoint for our SAP system ID7 with client 800 **"http://195.201.104.232:16080/sapid7/sap/bc/srt/idoc?sap-client=800"** This endpoint we will use while creating the Skyvva SOAP adapter in skyvva. **Creating the SOAP Adapter in Skyvva** We need to provide the following details to create the soap adapter Name - Name of the adapter Type - SOAP Description - IDOC XML Adapter Direction - Outbound Status - Active ![](../images/2020/10/Untitled.png) Authentication - Basic endpoint - http://195.201.104.232:16080/sapid7/sap/bc/srt/idoc?sap-client=800 Operation - POST ![](../images/2020/10/Untitled-1.png) PayloadFormat - XML ![](../images/2020/10/Untitled-2.png) Username - idadmin Password - ****** HTTP Header - Server:{!servertype}|content-type:{!type}|content-length:{!length} ![](../images/2020/10/Untitled-3.png) Now click on save button to create the adapter. Importing IDOC from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/10/Untitled-4.png) Provide the details as shown for the SAP system In the Configuration tab. Provide the details Here we need to provide the sap configuration details as below Type: SAP ERP Deployment: Embedded Logical System: LS10 Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2020/10/Untitled-5.png) ![](../images/2020/10/Untitled-6.png) Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up like its successfully connected to SAP Backend. ![](../images/2020/10/Untitled-7.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/10/Untitled-8.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/10/Untitled-9.png) With this connection. we can import the IDOC/RFC's from SAP. **Create Metadata Provider** ![](../images/2020/10/Untitled-10.png) **Create Repository** ![](../images/2020/10/Untitled-11.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-12.png) Here we need to give the details of Connection Destination which we created earlier in the SAP Control Board and RFC destination from SAP and the Select the Application Data type IDOC/RFC. ![](../images/2020/09/Untitled-9.png) Now click on Retrieve to create the message type from SAP As we are using soap adapter. We have specific template for soap. Merging soap template with SAP IDOC message type. ![](../images/2020/10/Untitled-13.png) **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below ![](../images/2020/10/Untitled-14.png) ![](../images/2020/10/Untitled-15.png) ![](../images/2020/10/Untitled-16.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/10/Untitled-17.png) ![](../images/2020/10/Untitled-18.png) Save the interface once provide all the necessary details. Now do the callout using below apex code: CallOutcontrol c = new CallOutcontrol(); Map header = new Map(); // for HTTP Header. header.put('servertype','Apache'); header.put('type','text/xml; charset=utf-8'); header.put('length','279'); c.headerParam= header; IServices.invokeCalloutV3('IDOCXML','IDOCXML_Out',new String[]{'0011X00000gUY28QAG'},'SYNC',c); Now we can see the message in the message monitor: ![](../images/2020/10/Untitled-19.png) IDOC posted to SAP ![](../images/2020/10/Untitled-21.png) And we got the acknowledgement response back from SAP to Skyvva ![](../images/2020/10/Untitled-20.png) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke BAPI XML using SAP ERP Adapter? Title: 1. How to invoke BAPI XML using SAP ERP Adapter? Slug: how-to-invoke-bapi-xml-using-sap-erp-adapter URL: https://help.skyvva.com/#article/how-to-invoke-bapi-xml-using-sap-erp-adapter ================================================================================ # 1. How to invoke BAPI XML using SAP ERP Adapter? **Posting BAPI XML to SAP ERP over Skyvva SAP ERP Adapter** In SAP ERP we have to do the following settings **Calling RFC-enabled Function Modules over HTTP from external application** As a prerequisite, go to transaction SICF and locate the following service: **sap -> bc -> soap -> rfc.** Its description gives you some more details about the functionality: SOAP HTTP HANDLER FOR RFC-CAPABLE FUNCTION MODULES. Now, right-click on that service and choose Test Service, and make sure that you allow SAP to open your web browser (in a popup that appears). Make note of the URL that is opened in the browser. Generally, this URL would look as follows: **http://[hostname]:[SICF port]/sap/bc/soap/rfc?sap-client=[client]** It’s a central endpoint for all BAPI’s. Now that we know the communication URL use an HTTP client to communicate with SAP. In this example, I will use the SOAP UI tool for this purpose, but it can be any application. Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/10/Untitled-30.png) Provide the details as shown for the SAP system In the Configuration tab. Provide the details Here we need to provide the sap configuration details as below Type: SAP ERP Deployment: Embedded Logical System: LSSAP Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2020/10/Untitled-72.png) ![](../images/2020/10/Untitled-6.png) Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up like its successfully connected to SAP Backend. ![](../images/2020/10/Untitled-7.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/10/Untitled-8.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/10/Untitled-9.png) We got the Consumer Key and Consumer Secret from App manager. With this connection. we can import the IDOC/RFC's from SAP. **Create Metadata Provider** ![](../images/2020/10/Untitled-38.png) **Create Repository** ![](../images/2020/10/Untitled-39.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-40.png) Here we need to give the details of connection type, Connection Destination which we created earlier in the SAP Control Board and Select the Application Data type BAPI/RFC's and then click on Retrive. ![](../images/2020/10/Untitled-60.png) Select the BAPI name to create message type ![](../images/2020/10/Untitled-42.png) Below is the message type template for BAPI ![](../images/2020/12/Untitled-25.png) ![](../images/2020/12/Untitled-26.png) This message type we use in the outbound interface and inbound interface **Creating the SAP ERP Adapter in Skyvva** We need to provide the following details to create the Skyvva SAP ERP adapter Name - Name of the adapter Type - SAP ERP Description - BAPI XML Adapter Direction - Outbound Status - Active Integration protocol - BAPI ![](../images/2020/10/Untitled-73.png) ![](../images/2020/10/Untitled-66.png) Connection Destination - It means the SAP Connection which we created earlier for the backend connection - SAP_ID7_SF_Integration Salesforce Id Handling - It means the salesforce Id will come back along with the Response message to update the existing account in order to avoid the new record creation. Now click on save button to create the adapter. **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface and point to Response in the response interface. In our example BAPI_CUSTOMER_CREATEFROMDATA1 is the root message type as shown below. ![](../images/2020/10/Untitled-62.png) ![](../images/2020/10/Untitled-61.png) ![](../images/2020/10/Untitled-48.png) ![](../images/2020/10/Untitled-49.png) Add the response interface in the request interface. ![](../images/2020/10/Untitled-50.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/10/Untitled-51.png) ![](../images/2020/10/Untitled-52.png) Save the interface once provide all the necessary details. **Creating an Inbound Response Interface:** Provide the Name, sObject type, Description, Processing mode, Status, Operation Type, Metadata provider, Repository, Message type as shown in the screenshots below ![](../images/2020/12/Untitled-31.png) Do the inbound mapping as shown below. We have to map the Id field in the response mapping to get the Id back in the response message. For the below example we don't have Id field in the source side so we are going to map Id with functions as shown below. ![](../images/2020/10/Untitled-67.png) ![](../images/2020/10/Untitled-68.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013E00001DKgY9QAL'}; skyvvasolutions.Iservices.invokeCalloutV3('BAPIXML_ERP','BAPIXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/10/Untitled-55.png) Expand the response interface dropdown to see the message Id. ![](../images/2020/10/Untitled-69.png) We can see the salesforce Id coming in the response message along with the customer number. ![](../images/2020/10/picturemessage_ncwatxpr.40h.png) Click on "related to" to see the updated record. ![](../images/2020/10/Untitled-70.png) Updated record in Salesforce. **![](../images/2020/12/Untitled-73.png)** ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke IDOC XML using Agent SAP ERP Adapter? Title: 1. How to invoke IDOC XML using Agent SAP ERP Adapter? Slug: how-to-invoke-idoc-xml-using-agent-sap-erp-adapter URL: https://help.skyvva.com/#article/how-to-invoke-idoc-xml-using-agent-sap-erp-adapter ================================================================================ # 1. How to invoke IDOC XML using Agent SAP ERP Adapter? **Posting IDOC XML to SAP ERP over Agent SAP ERP Adapter** Agent SAP ERP Adapter supports both in Linux and Windows Server. In SAP ERP we have to do the following settings Transaction: **SRTIDOC** - Execute with the default values in the transaction with the option “**Register Service**” selected - Registration should be successful with the message “Registration Successful” - If this service has already been registered, you may get the error message – “Access Address already used for Web service”. In such a case, this step can be ignored as the SOAP Service is already registered and running. Transaction: **SICF** Hierarchy Type: **SERVICE** & Execute Navigate to **Default Host –> sap –> bc –> srt –> IDoc**. Right Click & **Test Service** Note the URL that comes in your browser. This is the generic endpoint for idoc xml posting to SAP. **http:/*/host:port*/sap/bc/srt/idoc?sap-client*=. *** The following is the endpoint for our SAP system ID7 with client 800 **"http://195.201.104.232:16080/sapid7/sap/bc/srt/idoc?sap-client=800"** This endpoint we will use while creating the SAP ERP adapter in skyvva. Importing IDOC from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/12/Untitled-43.png) Provide the details for the connection destination like Name, Description and Type as shown below. ![](../images/2020/12/Untitled-44.png) In the Salesforce->AGENT tab. Provide the details of Agent Host Url: http://xxxx.com Port: 90** Username: xxxx Password: ****** ![](../images/2020/12/Untitled-45.png) Once we provide the details we need to ping the Agent Connection. Then we can see the pop-up like its successfully connected to Agent. ![](../images/2020/12/Untitled-46.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/12/Untitled-47.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/12/Untitled-48.png) Next provide the SAP details like Host URL, Port, Username, Password, the reverse proxy path, SAP system client and the logical system name as shown below. ![](../images/2020/12/Untitled-49.png) Click on Ping SAP connection from Agent if its connected successfully or not ![](../images/2020/12/Untitled-50.png) Again provide the details of Agent ![](../images/2020/12/Untitled-52.png) Click on ping connection of Agent ![](../images/2020/12/Untitled-53.png) Save the connection after entering all the required details ![](../images/2020/12/Untitled-54.png) **Create Metadata Provider** ![](../images/2020/10/Untitled-10.png) **Create Repository** ![](../images/2020/10/Untitled-11.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-12.png) Here we need to select the SAP Connection through the Agent and select Adapter type  which we created earlier in the Agent Control Board and Select the Application Data type IDOC and then Select create message type to call IDOC in SAP. Click on Retrieve after selecting all the above details as shown in the screenshot. ![](../images/2020/12/Untitled-34.png) Now click on Retrieve to create the message type from SAP Here is the IDOC template. Here we need message type for both Request and Response also to get the IDOC number back from SAP and to show it in Skyvva Monitor. But we use only Request message type while creating the outbound interface. ![](../images/2020/12/Untitled-35.png) ![](../images/2020/12/Untitled-36.png) **Creating the Agent SAP ERP Adapter in Skyvva** We need to provide the following details to create the Agent SAP ERP adapter Name: IDOCXML_Agent Type: SAP ERP Adapter Status: Active Direction - Outbound Description: IDOC XML adapter objectFormat - IDOC Connection Destination- It means the Agent Connection which we created earlier for the backend connection - Agent Window SAP ![](../images/2020/12/Untitled-55.png) Now click on save button to create the adapter. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface In our example DEBMAS.DEBMAS07.ZNBDEBMAS is the root message type as shown below. ![](../images/2020/10/Untitled-65.png) ![](../images/2020/12/Untitled-56.png) ![](../images/2020/12/Untitled-57.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-38.png) ![](../images/2020/10/Untitled-18.png) Save the interface once provide all the necessary details. Now we have to synchronize the cache to push the Integration, Interface, Adapter and Mapping to Agent H2 table. For that we have to go to cache Monitor in that select Object Name and Integration Name and Status and then click on Synchronize Cache. ![](../images/2020/12/Untitled-58.png) ![](../images/2020/12/Untitled-8.png) Now click on Yes to Synchronize the Cache ![](../images/2020/12/Untitled-59.png) Now click on Refresh ![](../images/2020/12/Untitled-60.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'001f000001Z60gpAAB'}; skyvvasolutions.Iservices.invokeCalloutV3('SAP ERP Integration App V1','IDOCXML_Out',ids,'AUTO', c); Now we can see the message in the message monitor: ![](../images/2020/12/Untitled-61.png) IDOC posted to SAP ![](../images/2020/10/Untitled-29.png) And we got the acknowledgement response back from SAP in Skyvva message monitor in the comment section like IDOC got created in SAP. This IDOC number we can search in the Business external ID ![](../images/2020/12/Untitled-62.png) We have also a Copy node function in Skyvva. Copy node is used to duplicate the segment if needed. ![](../images/2020/10/Untitled-56.png) In our example we have duplicated the segment for one time ![](../images/2020/10/Untitled-57.png) Now we can see the repeated segments in SAP as well as shown below. ![](../images/2020/10/Untitled-58.png) This is the functionality of Skyvva copy node. ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke BAPI XML using Agent SAP ERP Adapter? Title: 1. How to invoke BAPI XML using Agent SAP ERP Adapter? Slug: how-to-invoke-bapi-xml-using-agent-sap-erp-adapter URL: https://help.skyvva.com/#article/how-to-invoke-bapi-xml-using-agent-sap-erp-adapter ================================================================================ # 1. How to invoke BAPI XML using Agent SAP ERP Adapter? **Posting BAPI XML to SAP ERP over Skyvva Agent SAP ERP Adapter** In SAP ERP we have to do the following settings **Calling RFC-enabled Function Modules over HTTP from external application** As a prerequisite, go to transaction SICF and locate the following service: **sap -> bc -> soap -> rfc.** Its description gives you some more details about the functionality: SOAP HTTP HANDLER FOR RFC-CAPABLE FUNCTION MODULES. Now, right-click on that service and choose Test Service, and make sure that you allow SAP to open your web browser (in a popup that appears). Make note of the URL that is opened in the browser. Generally, this URL would look as follows: **http://[hostname]:[SICF port]/sap/bc/soap/rfc?sap-client=[client]** It’s a central endpoint for all BAPI’s. Now that we know the communication URL use an HTTP client to communicate with SAP. In this example, I will use the SOAP UI tool for this purpose, but it can be any application. Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/12/Untitled-43.png) Provide the details for the connection destination like Name, Description and Type as shown below. ![](../images/2020/12/Untitled-44.png) In the Salesforce->AGENT tab. Provide the details of Agent Host Url: http://xxxx.com Port: 90** Username: xxxx Password: ****** ![](../images/2020/12/Untitled-45.png) Once we provide the details we need to ping the Agent Connection. Then we can see the pop-up like its successfully connected to Agent. ![](../images/2020/12/Untitled-46.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/12/Untitled-47.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/12/Untitled-48.png) Next provide the SAP details like Host URL, Port, Username, Password, the reverse proxy path, SAP system client and the logical system name as shown below. ![](../images/2020/12/Untitled-49.png) Click on Ping SAP connection from Agent if its connected successfully or not ![](../images/2020/12/Untitled-50.png) Again provide the details of Agent ![](../images/2020/12/Untitled-52.png) Click on ping connection of Agent ![](../images/2020/12/Untitled-53.png) Save the connection after entering all the required details ![](../images/2020/12/Untitled-54.png) **Create Metadata Provider** ![](../images/2020/10/Untitled-38.png) **Create Repository** ![](../images/2020/10/Untitled-39.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-40.png) Here we need to select the SAP Connection through the Agent and select Adapter type  which we created earlier in the Agent Control Board and Select the Application Data type BAPI/RFC's and then Select create message type to call in BAPI in SAP. Click on Retrieve after selecting all the above details as shown in the screenshot. ![](../images/2020/12/Untitled-24.png) Select the BAPI name to create message type ![](../images/2020/10/Untitled-42.png) Below is the message type template for BAPI ![](../images/2020/12/Untitled-25.png) ![](../images/2020/12/Untitled-26.png) This message type we use in the outbound interface and inbound interface **Creating the Agent SAP ERP Adapter in Skyvva** We need to provide the following details to create the Agent SAP ERP adapter Name - Name of the adapter Type - Agent SAP ERP Description - IDOC XML Adapter Direction - Outbound Status - Active objectFormat - BAPI Connection Destination: Agent Window SAP ![](../images/2020/12/Untitled-74.png) ![](../images/2020/12/Untitled-75.png) Salesforce Id Handling - It means the salesforce Id will come back along with the Response message to update the existing account in order to avoid the new record creation. Now click on save button to create the adapter. **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface and point to Response in the response interface. In our example BAPI_CUSTOMER_CREATEFROMDATA1 is the root message type as shown below. ![](../images/2020/10/Untitled-62.png) ![](../images/2020/12/Untitled-64.png) ![](../images/2020/12/Untitled-65.png) ![](../images/2020/10/Untitled-49.png) Add the response interface in the request interface. ![](../images/2020/10/Untitled-50.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-33.png) ![](../images/2020/10/Untitled-52.png) Save the interface once provide all the necessary details. **Creating an Inbound Response Interface:** Provide the Name, sObject type, Description, Processing mode, Status, Operation Type, Metadata provider, Repository, Message type as shown in the screenshots below ![](../images/2020/12/Untitled-66.png) Do the inbound mapping as shown below. We have to map the Id field in the response mapping to get the Id back in the response message. For the below example we don't have Id field in the source side so we are going to map Id with functions as shown below. ![](../images/2020/10/Untitled-67.png) ![](../images/2020/10/Untitled-68.png) Now we have to synchronize the cache to push the Integration, Interface, Adapter and Mapping to Agent H2 table. For that we have to go to cache Monitor in that select Object Name and Integration Name and Status and then click on Synchronize Cache. ![](../images/2020/12/Untitled-58.png) ![](../images/2020/12/Untitled-8.png) Now click on Yes to Synchronize the Cache ![](../images/2020/12/Untitled-59.png) Now click on Refresh ![](../images/2020/12/Untitled-60.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'001f000001bN527AAC'}; skyvvasolutions.Iservices.invokeCalloutV3('SAP ERP Integration App V1','BAPIXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/12/Untitled-67.png) Expand the response interface dropdown to see the message Id. ![](../images/2020/10/Untitled-69.png) We can see the salesforce Id coming in the response message along with the customer number. ![](../images/2020/10/picturemessage_ncwatxpr.40h.png) Click on Related to as shown in below screenshot ![](../images/2020/12/Untitled-71.png) Then we can see the updated customer ID in SKYVVA as shown below ![](../images/2020/12/Untitled-73.png) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke Asynchronous BAPI XML using Agent SAP ERP Adapter? Title: 1. How to invoke Asynchronous BAPI XML using Agent SAP ERP Adapter? Slug: how-to-invoke-asynchronous-bapi-xml-using-agent-sap-erp-adapter URL: https://help.skyvva.com/#article/how-to-invoke-asynchronous-bapi-xml-using-agent-sap-erp-adapter ================================================================================ # 1. How to invoke Asynchronous BAPI XML using Agent SAP ERP Adapter? **Posting BAPI XML to SAP ERP over Skyvva Agent SAP ERP Adapter** In SAP ERP we have to do the following settings **Calling RFC-enabled Function Modules over HTTP from external application** As a prerequisite, go to transaction SICF and locate the following service: **sap -> bc -> soap -> rfc.** Its description gives you some more details about the functionality: SOAP HTTP HANDLER FOR RFC-CAPABLE FUNCTION MODULES. Now, right-click on that service and choose Test Service, and make sure that you allow SAP to open your web browser (in a popup that appears). Make note of the URL that is opened in the browser. Generally, this URL would look as follows: **http://[hostname]:[SICF port]/sap/bc/soap/rfc?sap-client=[client]** It’s a central endpoint for all BAPI’s. Now that we know the communication URL use an HTTP client to communicate with SAP. In this example, I will use the SOAP UI tool for this purpose, but it can be any application. Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/12/Untitled-43.png) Provide the details for the connection destination like Name, Description and Type as shown below. ![](../images/2020/12/Untitled-44.png) In the Salesforce->AGENT tab. Provide the details of Agent Host Url: http://xxxx.com Port: 90** Username: xxxx Password: ****** ![](../images/2020/12/Untitled-45.png) Once we provide the details we need to ping the Agent Connection. Then we can see the pop-up like its successfully connected to Agent. ![](../images/2020/12/Untitled-46.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/12/Untitled-47.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/12/Untitled-48.png) Next provide the SAP details like Host URL, Port, Username, Password, the reverse proxy path, SAP system client and the logical system name as shown below. ![](../images/2020/12/Untitled-49.png) Click on Ping SAP connection from Agent if its connected successfully or not ![](../images/2020/12/Untitled-50.png) Again provide the details of Agent ![](../images/2020/12/Untitled-52.png) Click on ping connection of Agent ![](../images/2020/12/Untitled-53.png) Save the connection after entering all the required details ![](../images/2020/12/Untitled-54.png) **Create Metadata Provider** ![](../images/2020/10/Untitled-38.png) **Create Repository** ![](../images/2020/10/Untitled-39.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-40.png) Here we need to select the SAP Connection through the Agent and select Adapter type  which we created earlier in the Agent Control Board and Select the Application Data type BAPI/RFC's and then Select create message type to call in BAPI in SAP. Click on Retrieve after selecting all the above details as shown in the screenshot. ![](../images/2020/12/Untitled-24.png) Select the BAPI name to create message type ![](../images/2020/10/Untitled-42.png) Below is the message type template for BAPI ![](../images/2020/12/Untitled-25.png) ![](../images/2020/12/Untitled-26.png) This message type we use in the outbound asynchronous interface **Creating the Agent SAP ERP Adapter in Skyvva** We need to provide the following details to create the Agent SAP ERP adapter Name - Name of the adapter Type - Agent SAP ERP Description - IDOC XML Adapter Direction - Outbound Status - Active objectFormat - BAPI Connection Destination: Agent Window SAP ![](../images/2020/12/Untitled-63.png) Now click on save button to create the adapter. **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface and point to Response in the response interface. In our example BAPI_CUSTOMER_CREATEFROMDATA1 is the root message type as shown below. ![](../images/2020/10/Untitled-62.png) ![](../images/2020/12/Untitled-68.png) ![](../images/2020/12/Untitled-65.png) ![](../images/2020/10/Untitled-49.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-33.png) ![](../images/2020/10/Untitled-52.png) Save the interface once provide all the necessary details. Now we have to synchronize the cache to push the Integration, Interface, Adapter and Mapping to Agent H2 table. For that we have to go to cache Monitor in that select Object Name and Integration Name and Status and then click on Synchronize Cache. ![](../images/2020/12/Untitled-58.png) ![](../images/2020/12/Untitled-8.png) Now click on Yes to Synchronize the Cache ![](../images/2020/12/Untitled-59.png) Now click on Refresh ![](../images/2020/12/Untitled-60.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'001f000001bN527AAC'}; skyvvasolutions.Iservices.invokeCalloutV3('SAP ERP Integration App V1','BAPIXML_Out',ids,'AUTO', c); Now we can see the message in the message monitor: ![](../images/2020/12/Untitled-70.png) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke Asynchronous BAPI XML using Skyvva SAP ERP Adapter? Title: 1. How to invoke Asynchronous BAPI XML using Skyvva SAP ERP Adapter? Slug: how-to-invoke-asynchronous-bapi-xml-using-skyvva-sap-erp-adapter URL: https://help.skyvva.com/#article/how-to-invoke-asynchronous-bapi-xml-using-skyvva-sap-erp-adapter ================================================================================ # 1. How to invoke Asynchronous BAPI XML using Skyvva SAP ERP Adapter? **Posting BAPI XML to SAP ERP over Skyvva SAP ERP Adapter** In SAP ERP we have to do the following settings **Calling RFC-enabled Function Modules over HTTP from external application** As a prerequisite, go to transaction SICF and locate the following service: **sap -> bc -> soap -> rfc.** Its description gives you some more details about the functionality: SOAP HTTP HANDLER FOR RFC-CAPABLE FUNCTION MODULES. Now, right-click on that service and choose Test Service, and make sure that you allow SAP to open your web browser (in a popup that appears). Make note of the URL that is opened in the browser. Generally, this URL would look as follows: **http://[hostname]:[SICF port]/sap/bc/soap/rfc?sap-client=[client]** It’s a central endpoint for all BAPI’s. Now that we know the communication URL use an HTTP client to communicate with SAP. In this example, I will use the SOAP UI tool for this purpose, but it can be any application. Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first we need to create Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/10/Untitled-30.png) Provide the details as shown for the SAP system In the Configuration tab. Provide the details Here we need to provide the sap configuration details as below Type: SAP ERP Deployment: Embedded Logical System: LSSAP Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2020/10/Untitled-5.png) ![](../images/2020/10/Untitled-6.png) Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up like its successfully connected to SAP Backend. ![](../images/2020/10/Untitled-7.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/10/Untitled-8.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/10/Untitled-9.png) We got the Consumer Key and Consumer Secret from App manager. With this connection. we can import the IDOC/RFC's from SAP. **Create Metadata Provider** ![](../images/2020/10/Untitled-38.png) **Create Repository** ![](../images/2020/10/Untitled-39.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-40.png) Here we need to give the details of connection type, Connection Destination which we created earlier in the SAP Control Board and Select the Application Data type BAPI/RFC's and then click on Retrive. ![](../images/2020/10/Untitled-60.png) Select the BAPI name to create message type ![](../images/2020/10/Untitled-42.png) Below is the message type template for BAPI ![](../images/2020/12/Untitled-25.png) ![](../images/2020/12/Untitled-26.png) This message type we use in the outbound interface and inbound interface **Creating the SAP ERP Adapter in Skyvva** We need to provide the following details to create the Skyvva SAP ERP adapter Name - Name of the adapter Type - SAP ERP Description - BAPI XML Adapter Direction - Outbound Status - Active objectFormat - BAPI ![](../images/2021/01/Untitled.png) ![](../images/2021/01/Untitled-1.png) Connection Destination - It means the SAP Connection which we created earlier for the backend connection - SAPID9 Now click on save button to create the adapter. **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface ![](../images/2020/12/Untitled-29.png) ![](../images/2020/10/Untitled-48.png) ![](../images/2020/10/Untitled-49.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-33.png) ![](../images/2020/10/Untitled-52.png) Save the interface once provide all the necessary details. Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013E00001DKgY9QAL'}; skyvvasolutions.Iservices.invokeCalloutV3('BAPIXML_ERP','BAPIXML_Out',ids,'AUTO', c); Now we can see the message in the message monitor: ![](../images/2020/12/Untitled-22.png) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke SAP REST API using Skyvva REST Adapter? Title: 1. How to invoke SAP REST API using Skyvva REST Adapter? Slug: how-to-invoke-sap-rest-api-using-skyvva-rest-adapter URL: https://help.skyvva.com/#article/how-to-invoke-sap-rest-api-using-skyvva-rest-adapter ================================================================================ # 1. How to invoke SAP REST API using Skyvva REST Adapter? **Posting BAPI XML to SAP ERP over Skyvva REST Adapter** In SAP ERP we have to do the following settings How to Activate the Skyvva service in SAP using Tcode SICF. #### Introduction:- In this chapter, you will learn about the “Activation of  Skyvva service in sap”. The service is used to send & receive data from SAP <> salesforce . #### Activation of Skyvva service in Tcode SICF Once you have installed the Skyvva package(TR) all Internet Communication Framework (ICF) services are available in an inactive state for security reasons. After the installation you have to decide which services must be activated for the applications you want to use. Since multiple services can be executed when you call a URL, all service nodes must be activated in the SICF tree. The URL path is mapped in ICF subnodes (services). For example, if you want to activate the services for URL  /default_host/sap/bc/skyvva/, you have to activate the service tree default_host* *in transaction SICF. Then you have to activate services sap, bc and skyvva separately. You activate an ICF service as follows: - Select the required ICF service in the ICF tree in transaction SICF. - Activate the ICF service in one of the following ways: - Using menu option ***Service/Host*  ->  *Activate*** - Using the context menu and choosing ***Activate Service****.* ### Services for Skyvav For skyvva ABAP  the following services must be activated in the system. #### Using skyvva Applications /default_host/sap/public/ping This node itself must be activated, for ping service. /default_host/sap/bc/skyvva/ Here only the node itself must be activated, and **not** the subnodes. /default_host/sap/bc/skyvva/v3/ #### This node is activated automatically when the subnodes described below are activated. Likewise, here only the node itself must be activated, as well as the following subnodes: /default_host/sap/bc/skyvva/v3/cache /default_host/sap/bc/skyvva/v3/ GetBapiDetail /default_host/sap/bc/skyvva/v3/ GetIdocSegField /default_host/sap/bc/skyvva/v3/ GetIdocSegList /default_host/sap/bc/skyvva/v3/ GetObjCount /default_host/sap/bc/skyvva/v3/ GetObjectList /default_host/sap/bc/skyvva/v3/ GetPartnProfile /default_host/sap/bc/skyvva/v3/ GetQualifier /default_host/sap/bc/skyvva/v3/ GetTabFieldList /default_host/sap/bc/skyvva/v3/ restoreendpoint - **Activate All the service as shown below.**![](../images/2021/02/SICF.png) We will get the endpoint and request and response JSON payloads from SAP. By using that we have to create message type in Skyvva. **Creating the REST Adapter in Skyvva** We need to provide the following details to create the REST adapter Name - Name of the adapter Type - REST Description - BAPI REST Adapter Direction - Outbound Status - Active ![](../images/2021/02/Untitled-6.png) Authentication - Basic endpoint - http://195.201.104.232:16080/sapid7/sap/bc/skyvva_sf/createso?sap-client=820 Operation - POST ![](../images/2021/02/Untitled-7.png) Request and Response Format - application/json ![](../images/2021/02/Untitled-8.png) Username - idadmin Password - ****** Now click on save button to create the adapter. **Create Metadata Provider** - ![](../images/2021/02/Untitled-11.png) **Create Repository** - ![](../images/2021/02/Untitled-12.png) **Create Message type - ** Creating the message type using the following JSON payload. **Request Structure:** {   "DocType" : "TA",   "SalesOrg" : "1000",   "DistrChan" : "12",   "Division" : "00",   "NvHeaderToOrdItem" : [     {       "ItmNumber" : "000010",       "Plant" : "1000",       "Material" : "1400-300",       "TargetQty" : "100.000",       "NvOrdItemToSchLine" : [         {           "ItmNumber" : "000010",           "ReqQty" : "100.000",           "ReqDate" : "2020-08-23T12:34:56"         }       ]     }   ],   "NvHeaderToPartners" : [     {       "PartnRole" : "AG",       "PartnNumb" : "0000002300"     }   ],   "ReturnSet" : [{   "Type" : "",   "Message" : "",   "MessageV1" : ""   }] } **Response Structure:** { "ARRAY": [ { "TYPE": "S", "ID": "V4", "NUMBER": "233", "MESSAGE": "SALES_HEADER_IN has been processed\r\nsuccessfully", "LOG_NO": "", "LOG_MSG_NO": "000000", "MESSAGE_V1": "VBAKKOM", "MESSAGE_V2": "", "MESSAGE_V3": "", "MESSAGE_V4": "", "PARAMETER": "SALES_HEADER_IN", "ROW": 0, "FIELD": "", "SYSTEM": "CNT_DEV820" }, { "TYPE": "S", "ID": "V4", "NUMBER": "233", "MESSAGE": "SALES_ITEM_IN\r\nhas been processed\r\nsuccessfully", "LOG_NO": "", "LOG_MSG_NO": "000000", "MESSAGE_V1": "VBAPKOM", "MESSAGE_V2": "000010", "MESSAGE_V3": "", "MESSAGE_V4": "", "PARAMETER": "SALES_ITEM_IN", "ROW": 1, "FIELD": "", "SYSTEM": "CNT_DEV820" }, { "TYPE": "S", "ID": "V1", "NUMBER": "311", "MESSAGE": "Standard\r\nOrder 20469 has been saved", "LOG_NO": "", "LOG_MSG_NO": "000000", "MESSAGE_V1": "Standard\r\nOrder", "MESSAGE_V2": "20469", "MESSAGE_V3": "", "MESSAGE_V4": "", "PARAMETER": "SALES_HEADER_IN", "ROW": 0, "FIELD": "", "SYSTEM": "CNT_DEV820" } ] } Now create the message type using the above payloads along with the rest template. ![](../images/2021/02/Untitled-9.png) ![](../images/2021/02/Untitled-10.png) Use the above messagetype while creating the outbound and inbound interface. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below ![](../images/2021/02/Untitled-13.png) ![](../images/2021/02/Untitled-14.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2021/02/Untitled-15.png) ![](../images/2021/02/Untitled-16.png) ![](../images/2021/02/Untitled-17.png) Save the interface once provide all the necessary details. **Create Inbound response interface:** ![](../images/2021/02/Untitled-18.png) Do the mapping as shown ![](../images/2021/02/Untitled-19.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q0f0000000ASn6CAG'}; skyvvasolutions.Iservices.invokeCalloutV3('BAPIXML_REST','BAPI_SalesOrder_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2021/02/Untitled-20.png) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke SAP SOAP API using Skyvva SOAP Adapter? Title: 1. How to invoke SAP SOAP API using Skyvva SOAP Adapter? Slug: how-to-invoke-sap-soap-api-using-skyvva-soap-adapter URL: https://help.skyvva.com/#article/how-to-invoke-sap-soap-api-using-skyvva-soap-adapter ================================================================================ # 1. How to invoke SAP SOAP API using Skyvva SOAP Adapter? **Posting BAPI XML to SAP ERP over Skyvva SOAP Adapter** In SAP ERP we have to do the following settings How to Activate the Skyvva service in SAP using Tcode SICF. #### Introduction:- In this chapter, you will learn about the “Activation of  Skyvva service in sap”. The service is used to send & receive data from SAP <> salesforce . #### Activation of Skyvva service in Tcode SICF Once you have installed the Skyvva package(TR) all Internet Communication Framework (ICF) services are available in an inactive state for security reasons. After the installation you have to decide which services must be activated for the applications you want to use. Since multiple services can be executed when you call a URL, all service nodes must be activated in the SICF tree. The URL path is mapped in ICF subnodes (services). For example, if you want to activate the services for URL  /default_host/sap/bc/skyvva/, you have to activate the service tree default_host* *in transaction SICF. Then you have to activate services sap, bc and skyvva separately. You activate an ICF service as follows: - Select the required ICF service in the ICF tree in transaction SICF. - Activate the ICF service in one of the following ways: - Using menu option ***Service/Host*  ->  *Activate*** - Using the context menu and choosing ***Activate Service****.* ### Services for Skyvva For skyvva ABAP  the following services must be activated in the system. #### Using skyvva Applications /default_host/sap/public/ping This node itself must be activated, for ping service. /default_host/sap/bc/skyvva/ Here only the node itself must be activated, and **not** the subnodes. /default_host/sap/bc/skyvva/v3/ #### This node is activated automatically when the subnodes described below are activated. Likewise, here only the node itself must be activated, as well as the following subnodes: /default_host/sap/bc/skyvva/v3/cache /default_host/sap/bc/skyvva/v3/ GetBapiDetail /default_host/sap/bc/skyvva/v3/ GetIdocSegField /default_host/sap/bc/skyvva/v3/ GetIdocSegList /default_host/sap/bc/skyvva/v3/ GetObjCount /default_host/sap/bc/skyvva/v3/ GetObjectList /default_host/sap/bc/skyvva/v3/ GetPartnProfile /default_host/sap/bc/skyvva/v3/ GetQualifier /default_host/sap/bc/skyvva/v3/ GetTabFieldList /default_host/sap/bc/skyvva/v3/ restoreendpoint - **Activate All the service as shown below.**![](../images/2021/02/SICF.png) Also we will get the soap wsdl from SOAMANAGER. We use the SOAP WSDL to create the message type in Skyvva. **Creating the SOAP Adapter in Skyvva** We need to provide the following details to create the SOAP adapter Name - Name of the adapter Type - SOAP Description - BAPI SOAP Adapter Direction - Outbound Status - Active ![](../images/2021/02/Untitled-21.png) Authentication - Basic endpoint - http://195.201.104.232:16080/sapid7/sap/bc/srt/rfc/sap/zget_po_detail/820/zget_po_detail/zget_po_detail Operation - POST Request and Response Format - application/xml ![](../images/2021/02/Untitled-22.png) ![](../images/2021/02/Untitled-23.png) Username - idadmin Password - ****** Now click on save button to create the adapter. **Create Metadata Provider** - ![](../images/2021/02/Untitled-24.png) **Create Repository** - ![](../images/2021/02/Untitled-25.png) **Create Message type - ** Creating the message type using the provided WSDL from SAP To import the WSDL Click on Open editor ![](../images/2021/02/Untitled-26.png) Choose the file type as WSDL 1.1 and Copy the WSDL and click on save to create the message type. ![](../images/2021/02/Untitled-27.png) ![](../images/2021/02/Untitled-28.png) ![](../images/2021/02/Untitled-29.png) Use the above messagetype while creating the outbound and inbound interface. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below ![](../images/2021/02/Untitled-30.png) ![](../images/2021/02/Untitled-31.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2021/02/Untitled-32.png) Save the interface once provide all the necessary details. **Create Inbound response interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below ![](../images/2021/02/Untitled-33.png) Do the mapping as shown ![](../images/2021/02/Untitled-34.png) ![](../images/2021/02/Untitled-35.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); Map header = new Map(); header.put('servertype','Apache'); header.put('type','application/soap+xml; charset=utf-8'); header.put('length','1368'); c.headerParam= header; skyvvasolutions.IServices.invokeCalloutV3('BAPI_GET_SOAPAPI','BAPI_PO_Out',new String[]{'801f0000000gw6HAAQ'},'SYNC',c); Now we can see the message in the message monitor: ![](../images/2021/02/Untitled-20.png) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke BAPI XML using SAP S/4 HANA Adapter? Title: 1. How to invoke BAPI XML using SAP S/4 HANA Adapter? Slug: how-to-invoke-bapi-xml-using-sap-s-4-hana-adapter URL: https://help.skyvva.com/#article/how-to-invoke-bapi-xml-using-sap-s-4-hana-adapter ================================================================================ # 1. How to invoke BAPI XML using SAP S/4 HANA Adapter? **Posting BAPI XML to SAP S/4 HANA over Skyvva SAP S/4 HANA Adapter** Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/10/Untitled-30.png) Provide the details as shown for the SAP system In the Configuration tab. Provide the details Here we need to provide the sap configuration details as below Type: SAP S/4 HANA Deployment: Embedded Logical System: tr5 Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2021/07/Untitled-17.png) ![](../images/2020/10/Untitled-6.png) Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up like its successfully connected to SAP Backend. ![](../images/2020/10/Untitled-7.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/10/Untitled-8.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/10/Untitled-9.png) We got the Consumer Key and Consumer Secret from App manager. With this connection. we can import the IDOC/RFC's from SAP. **Create Metadata Provider** ![](../images/2020/10/Untitled-38.png) **Create Repository** ![](../images/2020/10/Untitled-39.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-40.png) Here we need to give the details of connection type, Connection Destination which we created earlier in the SAP Control Board and Select the Application Data type BAPI/RFC's and then click on Retrive. ![](../images/2021/07/Untitled-18.png) Select the BAPI name to create message type ![](../images/2020/10/Untitled-42.png) Below is the message type template for BAPI ![](../images/2020/12/Untitled-25.png) ![](../images/2020/12/Untitled-26.png) This message type we use in the outbound interface and inbound interface **Creating the SAP S/4 HANA Adapter in Skyvva** We need to provide the following details to create the Skyvva SAP ERP adapter Name - Name of the adapter Type - SAP S/4 HANA Description - BAPI S/4 HANA Adapter Direction - Outbound Status - Active Deployment - On Premise objectFormat - BAPI ![](../images/2021/07/Untitled-20.png) ![](../images/2021/07/Untitled-19.png) Connection Destination - It means the SAP Connection which we created earlier for the backend connection - S4HANA_Test Now click on save button to create the adapter. **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface and point to Response in the response interface. In our example BAPI_CUSTOMER_CREATEFROMDATA1 is the root message type as shown below. ![](../images/2020/10/Untitled-62.png) ![](../images/2021/07/Untitled-22.png) ![](../images/2021/07/Untitled-21.png) ![](../images/2020/10/Untitled-49.png) Add the response interface in the request interface. ![](../images/2020/10/Untitled-50.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/10/Untitled-51.png) ![](../images/2020/10/Untitled-52.png) Save the interface once provide all the necessary details. **Creating an Inbound Response Interface:** Provide the Name, sObject type, Description, Processing mode, Status, Operation Type, Metadata provider, Repository, Message type as shown in the screenshots below ![](../images/2021/07/Untitled-23.png) Do the inbound mapping as shown below. ![](../images/2020/10/Untitled-54.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013E00001DKgY9QAL'}; skyvvasolutions.Iservices.invokeCalloutV3('BAPIXML_ERP','BAPIXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/12/Untitled-67.png) Click on Related to as shown in below screenshot ![](../images/2020/12/Untitled-71.png) Then we can see the updated customer ID in SKYVVA as shown below ![](../images/2020/12/Untitled-72.png) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke IDOC XML using SAP S/4 HANA Adapter? Title: 1. How to invoke IDOC XML using SAP S/4 HANA Adapter? Slug: how-to-invoke-idoc-xml-using-sap-s-4-hana-adapter URL: https://help.skyvva.com/#article/how-to-invoke-idoc-xml-using-sap-s-4-hana-adapter ================================================================================ # 1. How to invoke IDOC XML using SAP S/4 HANA Adapter? **Posting IDOC XML to SAP S/4 HANA over Skyvva SAP S/4 HANA Adapter** Importing IDOC from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/10/Untitled-30.png) Provide the details as shown for the SAP system In the Configuration tab. Provide the details Here we need to provide the sap configuration details as below Type: SAP S/4 HANA Deployment: Embedded Logical System: tr5 Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2021/07/Untitled-17.png) ![](../images/2020/10/Untitled-6.png) Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up like its successfully connected to SAP Backend. ![](../images/2020/10/Untitled-7.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/10/Untitled-8.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/10/Untitled-9.png) We got the Consumer Key and Consumer Secret from App manager. With this connection. we can import the IDOC/RFC's from SAP. **Create Metadata Provider** ![](../images/2020/10/Untitled-10.png) **Create Repository** ![](../images/2020/10/Untitled-11.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-12.png) Here we need to give the details of connection type, Connection Destination which we created earlier in the SAP Control Board and the Select the Application Data type IDOC ![](../images/2021/07/Untitled-29.png) Now click on Retrieve to create the message type from SAP Here is the IDOC template. Here we need message type for both Request and Response also to get the IDOC number back from SAP and to show it in Skyvva Monitor. But we use only Request message type while creating the outbound interface. ![](../images/2020/12/Untitled-35.png) ![](../images/2020/12/Untitled-36.png) **Creating the SAP S/4 HANA Adapter in Skyvva** We need to provide the following details to create the soap adapter Name - Name of the adapter Type - SAP S/4 HANA Description - IDOCXML S/4 HANA Adapter Direction - Outbound Status - Active Deployment - On Premise ![](../images/2021/07/Untitled-24.png) ![](../images/2021/07/Untitled-25.png) ![](../images/2021/07/Untitled-27.png) objectFormat - IDOC Connection Destination - It means the SAP Connection which we created earlier for the backend connection - S4HANA_Test Now click on save button to create the adapter. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface In our example DEBMAS.DEBMAS07.ZNBDEBMAS is the root message type as shown below. ![](../images/2020/10/Untitled-65.png) ![](../images/2020/12/Untitled-42.png) ![](../images/2021/07/Untitled-28.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-38.png) ![](../images/2020/10/Untitled-18.png) Save the interface once provide all the necessary details. Now do the callout using below apex code: Cskyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013E00001DKgY9QAL'}; skyvvasolutions.Iservices.invokeCalloutV3('IDOCXML','IDOCXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/10/Untitled-32.png) IDOC posted to SAP ![](../images/2020/10/Untitled-29.png) And we got the acknowledgement response back from SAP in Skyvva message monitor in the comment section like IDOC got created in SAP. This IDOC number we can search in the Business external ID ![](../images/2020/10/Untitled-33.png) We have also a Copy node function in Skyvva. Copy node is used to duplicate the segment if needed. ![](../images/2020/10/Untitled-56.png) In our example we have duplicated the segment for one time ![](../images/2020/10/Untitled-57.png) Now we can see the repeated segments in SAP as well as shown below. ![](../images/2020/10/Untitled-58.png) This is the functionality of Skyvva copy node. ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke BAPI XML using Agent SAP S/4 HANA Adapter? Title: 1. How to invoke BAPI XML using Agent SAP S/4 HANA Adapter? Slug: how-to-invoke-bapi-xml-using-agent-sap-s-4-hana-adapter URL: https://help.skyvva.com/#article/how-to-invoke-bapi-xml-using-agent-sap-s-4-hana-adapter ================================================================================ # 1. How to invoke BAPI XML using Agent SAP S/4 HANA Adapter? **Posting BAPI XML to SAP S/4 HANA over Skyvva Agent S/4 HANA Adapter** Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first we need to create Agent Connection in skyvva as shown below Go to Integration details tab and then select Agent Control Board ![](../images/2021/07/Untitled-32.png) Provide the details as shown for the Agent and the SAP system In the Configuration tab. Provide the details ![](../images/2021/07/Untitled-31.png) ![](../images/2020/12/Untitled-45.png) Once we provide the details we need to ping the Agent Connection. Then we can see the pop-up like its successfully connected to Agent. ![](../images/2020/12/Untitled-46.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/12/Untitled-47.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/12/Untitled-48.png) Next provide the SAP details like Host URL, Port, Username, Password, the reverse proxy path, SAP system client and the logical system name as shown below. Here we need to provide the sap configuration details as below Type: Agent S/4 HANA Logical System: tr5 Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2020/12/Untitled-49.png) Click on Ping SAP connection from Agent if its connected successfully or not ![](../images/2020/12/Untitled-50.png) Again provide the details of Agent ![](../images/2020/12/Untitled-52.png) Click on ping connection of Agent ![](../images/2020/12/Untitled-53.png) Save the connection after entering all the required details ![](../images/2020/12/Untitled-54.png) **Create Metadata Provider** ![](../images/2020/10/Untitled-38.png) **Create Repository** ![](../images/2020/10/Untitled-39.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-40.png) Here we need to select the SAP Connection through the Agent and select Adapter type  which we created earlier in the Agent Control Board and Select the Application Data type BAPI/RFC's and then Select create message type to call in BAPI in SAP S/4 HANA Click on Retrieve after selecting all the above details as shown in the screenshot. ![](../images/2021/07/Untitled-37.png) Select the BAPI name to create message type ![](../images/2020/10/Untitled-42.png) Below is the message type template for BAPI ![](../images/2020/12/Untitled-25.png) ![](../images/2020/12/Untitled-26.png) This message type we use in the outbound interface and inbound interface **Creating the Agent SAP ERP Adapter in Skyvva** We need to provide the following details to create the Agent SAP ERP adapter Name - Name of the adapter Type - Agent SAP S/4 HANA Description - Agent S4 test Adapter Direction - Outbound Status - Active objectFormat - BAPI Connection Destination: agentSapS/4Hana ![](../images/2021/07/Untitled-36.png) Now click on save button to create the adapter. **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface and point to Response in the response interface. In our example BAPI_CUSTOMER_CREATEFROMDATA1 is the root message type as shown below. ![](../images/2020/10/Untitled-62.png) ![](../images/2020/12/Untitled-64.png) ![](../images/2021/07/Untitled-38.png) ![](../images/2020/10/Untitled-49.png) Add the response interface in the request interface. ![](../images/2020/10/Untitled-50.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-33.png) ![](../images/2020/10/Untitled-52.png) Save the interface once provide all the necessary details. **Creating an Inbound Response Interface:** Provide the Name, sObject type, Description, Processing mode, Status, Operation Type, Metadata provider, Repository, Message type as shown in the screenshots below ![](../images/2020/12/Untitled-66.png) Do the inbound mapping as shown below. ![](../images/2020/12/Untitled-32.png) Now we have to synchronize the cache to push the Integration, Interface, Adapter and Mapping to Agent H2 table. For that we have to go to cache Monitor in that select Object Name and Integration Name and Status and then click on Synchronize Cache. ![](../images/2020/12/Untitled-58.png) ![](../images/2020/12/Untitled-8.png) Now click on Yes to Synchronize the Cache ![](../images/2020/12/Untitled-59.png) Now click on Refresh ![](../images/2020/12/Untitled-60.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'001f000001bN527AAC'}; skyvvasolutions.Iservices.invokeCalloutV3('SAP ERP Integration App V1','BAPIXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/12/Untitled-67.png) Click on Related to as shown in below screenshot ![](../images/2020/12/Untitled-71.png) Then we can see the updated customer ID in SKYVVA as shown below ![](../images/2020/12/Untitled-72.png) ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to invoke IDOC XML using Agent S/4 HANA Adapter? Title: 1. How to invoke IDOC XML using Agent S/4 HANA Adapter? Slug: how-to-invoke-idoc-xml-using-agent-sap-s-4-hana-adapter URL: https://help.skyvva.com/#article/how-to-invoke-idoc-xml-using-agent-sap-s-4-hana-adapter ================================================================================ # 1. How to invoke IDOC XML using Agent S/4 HANA Adapter? **Posting IDOC XML to SAP S/4 HANA over Agent S/4 HANA Adapter** Importing IDOC from Import SAP metadata To Import SAP metadata first we need to create Agent Connection in skyvva as shown below Go to Integration details tab and then select Agent Control Board ![](../images/2021/07/Untitled-32.png) Provide the details as shown for the Agent and the SAP system In the Configuration tab. Provide the details ![](../images/2021/07/Untitled-31.png) ![](../images/2020/12/Untitled-45.png) Once we provide the details we need to ping the Agent Connection. Then we can see the pop-up like its successfully connected to Agent. ![](../images/2020/12/Untitled-46.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/12/Untitled-47.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/12/Untitled-48.png) Next provide the SAP details like Host URL, Port, Username, Password, the reverse proxy path, SAP system client and the logical system name as shown below. Here we need to provide the sap configuration details as below Type: Agent S/4 HANA Logical System: tr5 Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2020/12/Untitled-49.png) Click on Ping SAP connection from Agent if its connected successfully or not ![](../images/2020/12/Untitled-50.png) Again provide the details of Agent ![](../images/2020/12/Untitled-52.png) Click on ping connection of Agent ![](../images/2020/12/Untitled-53.png) Save the connection after entering all the required details ![](../images/2020/12/Untitled-54.png) **Create Metadata Provider** ![](../images/2020/10/Untitled-10.png) **Create Repository** ![](../images/2020/10/Untitled-11.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-12.png) Here we need to give the details of connection type, Connection Destination which we created earlier in the SAP Control Board and the Select the Application Data type IDOC ![](../images/2021/07/Untitled-30.png) Now click on Retrieve to create the message type from SAP Here is the IDOC template. Here we need message type for both Request and Response also to get the IDOC number back from SAP and to show it in Skyvva Monitor. But we use only Request message type while creating the outbound interface. ![](../images/2020/12/Untitled-35.png) ![](../images/2020/12/Untitled-36.png) **Creating the Agent S/4 HANA Adapter in Skyvva** We need to provide the following details to create the soap adapter Name - Name of the adapter Type - Agent S/4 HANA Description - Agent S4 test Adapter Direction - Outbound Status - Active ![](../images/2021/07/Untitled-34.png) objectFormat - IDOC Connection Destination - It means the SAP Connection which we created earlier for the backend connection - agentSapS/4Hana Now click on save button to create the adapter. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface In our example DEBMAS.DEBMAS07.ZNBDEBMAS is the root message type as shown below. ![](../images/2020/10/Untitled-65.png) ![](../images/2020/12/Untitled-42.png) ![](../images/2021/07/Untitled-35.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-38.png) ![](../images/2020/10/Untitled-18.png) Save the interface once provide all the necessary details. Now do the callout using below apex code: Cskyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013E00001DKgY9QAL'}; skyvvasolutions.Iservices.invokeCalloutV3('IDOCXML','IDOCXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/10/Untitled-32.png) IDOC posted to SAP ![](../images/2020/10/Untitled-29.png) And we got the acknowledgement response back from SAP in Skyvva message monitor in the comment section like IDOC got created in SAP. This IDOC number we can search in the Business external ID ![](../images/2020/10/Untitled-33.png) We have also a Copy node function in Skyvva. Copy node is used to duplicate the segment if needed. ![](../images/2020/10/Untitled-56.png) In our example we have duplicated the segment for one time ![](../images/2020/10/Untitled-57.png) Now we can see the repeated segments in SAP as well as shown below. ![](../images/2020/10/Untitled-58.png) This is the functionality of Skyvva copy node. ================================================================================ Book: SAP ERP Adapter (Old) Section: SAP ERP Adapter (Old) Subsection: How to get the Salesforce Id return back in the response interface using Agent SAP ERP Adapter? Title: 1. How to get the Salesforce Id return back in the response interface using Agent SAP ERP Adapter? Slug: how-to-get-the-salesforce-id-return-back-in-the-response-interface-using-agent-sap-erp-adapter URL: https://help.skyvva.com/#article/how-to-get-the-salesforce-id-return-back-in-the-response-interface-using-agent-sap-erp-adapter ================================================================================ # 1. How to get the Salesforce Id return back in the response interface using Agent SAP ERP Adapter? This document explains us about how to get the Salesforce Id return back in the response interface using Agent SAP ERP Adapter **Posting BAPI XML to SAP ERP over Skyvva Agent SAP ERP Adapter** In SAP ERP we have to do the following settings **Calling RFC-enabled Function Modules over HTTP from external application** As a prerequisite, go to transaction SICF and locate the following service: **sap -> bc -> soap -> rfc.** Its description gives you some more details about the functionality: SOAP HTTP HANDLER FOR RFC-CAPABLE FUNCTION MODULES. Now, right-click on that service and choose Test Service, and make sure that you allow SAP to open your web browser (in a popup that appears). Make note of the URL that is opened in the browser. Generally, this URL would look as follows: **http://[hostname]:[SICF port]/sap/bc/soap/rfc?sap-client=[client]** It’s a central endpoint for all BAPI’s. Now that we know the communication URL use an HTTP client to communicate with SAP. In this example, I will use the SOAP UI tool for this purpose, but it can be any application. Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/12/Untitled-43.png) Provide the details for the connection destination like Name, Description and Type as shown below. ![](../images/2020/12/Untitled-44.png) In the Salesforce->AGENT tab. Provide the details of Agent Host Url: http://xxxx.com Port: 90** Username: xxxx Password: ****** ![](../images/2020/12/Untitled-45.png) Once we provide the details we need to ping the Agent Connection. Then we can see the pop-up like its successfully connected to Agent. ![](../images/2020/12/Untitled-46.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/12/Untitled-47.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/12/Untitled-48.png) Next provide the SAP details like Host URL, Port, Username, Password, the reverse proxy path, SAP system client and the logical system name as shown below. ![](../images/2020/12/Untitled-49.png) Click on Ping SAP connection from Agent if its connected successfully or not ![](../images/2020/12/Untitled-50.png) Again provide the details of Agent ![](../images/2020/12/Untitled-52.png) Click on ping connection of Agent ![](../images/2020/12/Untitled-53.png) Save the connection after entering all the required details ![](../images/2020/12/Untitled-54.png) **Create Metadata Provider** ![](../images/2020/10/Untitled-38.png) **Create Repository** ![](../images/2020/10/Untitled-39.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-40.png) Here we need to select the SAP Connection through the Agent and select Adapter type  which we created earlier in the Agent Control Board and Select the Application Data type BAPI/RFC's and then Select create message type to call in BAPI in SAP. Click on Retrieve after selecting all the above details as shown in the screenshot. ![](../images/2020/12/Untitled-24.png) Select the BAPI name to create message type ![](../images/2020/10/Untitled-42.png) Below is the message type template for BAPI ![](../images/2020/12/Untitled-25.png) ![](../images/2020/12/Untitled-26.png) This message type we use in the outbound interface and inbound interface **Creating the Agent SAP ERP Adapter in Skyvva** We need to provide the following details to create the Agent SAP ERP adapter Name - Name of the adapter Type - Agent SAP ERP Description - IDOC XML Adapter Direction - Outbound Status - Active objectFormat - BAPI Connection Destination: Agent Window SAP ![](../images/2020/12/Untitled-74.png) ![](../images/2020/12/Untitled-75.png) Salesforce Id Handling - It means the salesforce Id will come back along with the Response message to update the existing account in order to avoid the new record creation. Now click on save button to create the adapter. **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface and point to Response in the response interface. In our example BAPI_CUSTOMER_CREATEFROMDATA1 is the root message type as shown below. ![](../images/2020/10/Untitled-62.png) ![](../images/2020/12/Untitled-64.png) ![](../images/2020/12/Untitled-65.png) ![](../images/2020/10/Untitled-49.png) Add the response interface in the request interface. ![](../images/2020/10/Untitled-50.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-33.png) ![](../images/2020/10/Untitled-52.png) Save the interface once provide all the necessary details. **Creating an Inbound Response Interface:** Provide the Name, sObject type, Description, Processing mode, Status, Operation Type, Metadata provider, Repository, Message type as shown in the screenshots below ![](../images/2020/12/Untitled-66.png) Do the inbound mapping as shown below. We have to map the Id field in the response mapping to get the Id back in the response message. For the below example we don't have Id field in the source side so we are going to map Id with functions as shown below. ![](../images/2020/10/Untitled-67.png) ![](../images/2020/10/Untitled-68.png) Now we have to synchronize the cache to push the Integration, Interface, Adapter and Mapping to Agent H2 table. For that we have to go to cache Monitor in that select Object Name and Integration Name and Status and then click on Synchronize Cache. ![](../images/2020/12/Untitled-58.png) ![](../images/2020/12/Untitled-8.png) Now click on Yes to Synchronize the Cache ![](../images/2020/12/Untitled-59.png) Now click on Refresh ![](../images/2020/12/Untitled-60.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'001f000001bN527AAC'}; skyvvasolutions.Iservices.invokeCalloutV3('SAP ERP Integration App V1','BAPIXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/12/Untitled-67.png) Expand the response interface dropdown to see the message Id. ![](../images/2020/10/Untitled-69.png) We can see the salesforce Id coming in the response message along with the customer number. ![](../images/2020/10/picturemessage_ncwatxpr.40h.png) Click on Related to as shown in below screenshot ![](../images/2020/12/Untitled-71.png) Then we can see the updated customer ID in SKYVVA as shown below ![](../images/2020/12/Untitled-73.png) ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: SKYVVA CPI Salesforce Receiver Adapter in SAP Cloud Platform Integration Title: 1. SKYVVA CPI Salesforce Receiver Adapter in SAP Cloud Platform Integration Slug: 1-skyvva-cpi-salesforce-receiver-adapter-2 URL: https://help.skyvva.com/#article/1-skyvva-cpi-salesforce-receiver-adapter-2 ================================================================================ # 1. SKYVVA CPI Salesforce Receiver Adapter in SAP Cloud Platform Integration # SKYVVA CPI Salesforce Receiver Adapter in SAP Cloud Platform Integration Below figure is the sample integration flow using Skyvva Salesforce Adapter at receiver side. *Figure: sample CPI integration flow using Skyvva Salesforce adapter* ![](../images/2020/06/Untitled-58.png) * * Skyvva Salesforce receiver adapter is used to communicate with Salesforce system using HTTPS transport protocol and Skyvva message protocol. ![](../images/2020/06/Untitled-59.png) *Figure: Skyvva Salesforce receiver adapter channel configurations* * * **Connection:** LOGIN-CONFIG: Parameter Description Login Url Enter the URL of the Salesforce system to connect to. Use the following pattern: https:// User Credential Maintain Salesforce User Credential in CPI. Path: Monitoring > Manage Security > Security Material Client Id Enter the Salesforce Client Id Note: Client Id will be provided by Salesforce. Client Secret Enter the Client Secret. Note: Client Secret will be provided by Salesforce. **Skyvva:** URI SETTING: Parameter Description REST Operation APEX_CALL: Only APEX operation is available in the current version Note: In current version only REST operation is supporting. Other operations will support in next release. SALESFORCE ENDPOINT CONFIG: Parameter Description Apex Method Select the Method that you want to perform from the dropdown list. Available Methods: POST, PUT, DELETE, PATCH & GET Logging Option Select the Logging option that you want to perform from the dropdown list. Default: Only Default is supporting in this version Below Logging Option will support in next release. Debug Level, Error Level, Info Level, Trace Level &Warning Level Api Version (delete this content) Enter the API version from the Salesforce Apex Url Only Integrate, integrateBatch, IntegrateSynchronous & SearchService supported in this version. createNewMessage & ProcessMessage will be support in next release. Event Name Not supported at this moment. Format Salesforce supports two formats for representations of resources: JSON and XML. HTTP client timeout (sec) Enter the HTTP client timeout Example: 60 Secs Integrate Max Size Provide the maximum size. Example: 5000 Integrate Batch Max Size Provide the maximum batch size. Example: 5000 Note: Choose this if the Apex Url is integrateBatch Enable Autoswitch This will option support in next release. S Object Id This will option support in next release. S Object Fields This will option support in next release. S Object Id Name This will option support in next release. S Object Id Value This will option support in next release. S Object Blob Field Name This will option support in next release. S Object Class This will option support in next release. S Object Query This will option support in next release. S Object Search This will option support in next release. **Bulk API:** **Note: This will support in the next release version.** BULK API: Parameter Description Environment Skyvva Version Bulk Operation Bulk Package Size Request Payload Bulk Mode SFDC Bulk 1.0 SFDC Bulk 2.0 Switch to Batch Mode Use Fast Batch Creation Mode ** ** ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: How to create an inbound interface using integrate Apex URL with SKYVVA CPI Salesforce Adapter Title: How to create an inbound interface using integrate Apex URL with SKYVVA CPI Salesforce Adapter Slug: how-to-create-an-inbound-interface-using-integrate-apex-url-with-skyvva-cpi-salesforce-adapter URL: https://help.skyvva.com/#article/how-to-create-an-inbound-interface-using-integrate-apex-url-with-skyvva-cpi-salesforce-adapter ================================================================================ # How to create an inbound interface using integrate Apex URL with SKYVVA CPI Salesforce Adapter This document describes how to create an inbound interface using Integrate - Apex URL with SKYVVA CPI Salesforce adapter. And also, document briefs the implementation of SAP CPI and Salesforce interfaces which includes the testing as well. In this case considering Account as an object API at Salesforce end and message will be triggered from POSTMAN client tool to Salesforce using SAP CPI as middle-ware. ![](../images/2020/06/Untitled-131.png) ## Salesforce Interface Development Create an Interface under Integration in Salesforce, in this example creating interface name as “Account_CPI” Below are the necessary parameters need to entry while creating the interface. ![](../images/2020/06/Untitled-83.png) ![](../images/2020/06/Untitled-84.png) ![](../images/2020/06/Untitled-85.png) ![](../images/2020/06/Untitled-86.png) After providing the above parameters in the interface, save it. ## SAP CPI Development Create the package in SAP CPI in Design and add the integration flow. **Example:** **Integration Package:  **    Apsara Salesforce Adapter Testing **Integration Flow:   **         Apsara Account Interface to Salesforce_Demo32 SAP CPI receives the request message from POSTMAN/SOAPUI in json format. Since this use case is defining the capabilities of the SKYVVA SAP CPI Salesforce adapter, simple integration flow is defined with required channel parameters. Please find below integration flow: ![](../images/2020/06/Untitled-87.png) **On sender side,** choose the sender adapter** “HTTPS”** and provide the channel parameters details as below including with the CPI endpoint URL. ![](../images/2020/06/Untitled-88.png) ![](../images/2020/06/Untitled-89.png) **On receiver side,** choose the receiver adapter **“Salesforce” Skyvva adapter** and provide the channel parameters as below. ![](../images/2020/06/Untitled-90.png) ![](../images/2020/06/Untitled-91.png) Where the Login Url,  User Credential details (deployed in CPI keystore), Client Id and Client Secret shared from the Salesforce system. For Skyvva section below are parameters need to define for integrate. ![](../images/2020/06/Untitled-98.png) ![](../images/2020/06/Untitled-99.png) Bulk API section is not needed since we are not using the bulk mode in this use case. Once all the above channel parameters are defined save the integration flow and deploy. ![](../images/2020/06/Untitled-103.png) Go to **CPI > Monitoring > Manage Integration Content** to get the endpoint URL of CPI integration flow. Please find below screen shot for reference. ![](../images/2020/06/Untitled-105.png) **CPI Endpoint URL: ** *https://{{TenantId}}-iflmap.hcisbp.eu1.hana.ondemand.com/http/skyvva/Account/CPI/ReceiverChannel/32Demo* **Testing:** In this scenario, using POSTMAN as the client to push the data to SAP CPI endpoint URL, then message will send to Salesforce through SAP CPI using SKYVVA CPI Salesforce adapter. **Note: **Salesforce interface accepts the data in the below Json format. Since this example is using simple integration (without any transformation logic's in CPI), below data format is sending from POSTMAN directly. **Payload: ** ![](../images/2020/06/Untitled-112.png) Where integrationid is name of the Integration in Salesforce & interfacename is interface name in Salesforce. Use the above payload and CPI endpoint URL to trigger the data from the POSTMAN. ![](../images/2020/06/Untitled-118.png) **Monitor the message in SAP CPI:** Go to CPI > Monitor > Monitor Message Processing ![](../images/2020/06/Untitled-121.png) **Salesforce Monitoring:** Go to  Salesforce > Message Monitoring ![](../images/2020/06/Untitled-124.png) Account related data posted successfully into the Salesforce system. ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: How to create an inbound interface using integrateBatch Apex URL with SKYVVA CPI Salesforce Adapter Title: 1. How to create an inbound interface using integrateBatch Apex URL with SKYVVA CPI Salesforce Adapter Slug: how-to-create-an-inbound-interface-using-integratebatch-apex-url-with-skyvva-cpi-salesforce-adapter URL: https://help.skyvva.com/#article/how-to-create-an-inbound-interface-using-integratebatch-apex-url-with-skyvva-cpi-salesforce-adapter ================================================================================ # 1. How to create an inbound interface using integrateBatch Apex URL with SKYVVA CPI Salesforce Adapter This document describes how to create an inbound interface using integrateBatch - Apex URL with SKYVVA CPI Salesforce adapter. And also, document briefs the implementation of SAP CPI and Salesforce interfaces which includes the testing as well. In this case considering Account as an object API at Salesforce end and message will be triggered from POSTMAN client tool to Salesforce using SAP CPI as middleware. ![](../images/2020/06/Untitled-131.png) **What is IntegrateBatch Apex URL?** integratebatch data processing is an efficient way of processing high volumes of data, where a group of transactions is collected over a period of time. Data is collected, entered, processed and then the batch results are produced. In this case integrateBatch Apex Url is used in Skyvva CPI Salesforce adapter to process the data in batches. This is use is similar to the integrate Apex Url, however there are some changes in Skyvva CPI Salesforce adapter. ## Salesforce Interface Development Create an Interface under Integration in Salesforce, in this example creating Interface name as **"Account_CPI_integrateBatch”** Below are the necessary parameters need to provide while creating the interface. ![](../images/2020/06/Untitled-134.png) ![](../images/2020/06/Untitled-135.png) ![](../images/2020/06/Untitled-136.png) ![](../images/2020/06/Untitled-137.png) ![](../images/2020/06/Untitled-138.png) After providing the above parameters in the Salesforce interface, save it. ## SAP CPI Development Create the package in SAP CPI in Design and add the integration flow. **Example:** Integration Package:      Apsara Salesforce Adapter Testing Integration Flow:            Apsara Account Interface to Salesforce_integrateBatch_Demo32 SAP CPI receives the request message from POSTMAN/SOAPUI in json format. Since this use case is defining the capabilities of the SKYVVA SAP CPI Salesforce adapter, simple integration flow is defined with required channel parameters. **Please find below integration flow:** ![](../images/2020/06/Untitled-139.png) **On sender side,** choose the sender adapter** “HTTPS”** and provide the channel parameters details as below including with the CPI endpoint URL. ![](../images/2020/06/Untitled-88.png) ![](../images/2020/06/Untitled-140.png) **On receiver side,** choose the receiver adapter **“Salesforce” Skyvva adapter** and provide the channel parameters as below. ![](../images/2020/06/Untitled-141.png) ![](../images/2020/06/Untitled-91.png) Where the Login Url, User Credential details (deployed in CPI keystore), Client Id and Client Secret shared from the Salesforce system. For Skyvva section below are parameters need to define for **integrateBatch**. ![](../images/2020/06/Untitled-142.png) ![](../images/2020/06/Untitled-143.png) Bulk API section is not needed since we are not using the bulk mode in this use case. Once all the above channel parameters are defined save the integration flow and deploy. ![](../images/2020/06/Untitled-144.png) Go to **CPI > Monitoring > Manage Integration Content** to get the endpoint URL of CPI integration flow. ![](../images/2020/06/Untitled-145.png) **CPI Endpoint URL: ** *https://{{TenantId}}-iflmap.hcisbp.eu1.hana.ondemand.com/http/skyvva/Account/CPI/ReceiverChannel/IntegrateBatch/32Demo* ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: How to create an inbound synchronous interface using integrate Apex URL with SKYVVA CPI Salesforce Adapter Title: 4. How to create an inbound synchronous interface using integrate Apex URL with SKYVVA CPI Salesforce Adapter Slug: 4-how-to-create-an-inbound-synchronous-interface-using-integrate-apex-url-with-skyvva-cpi-salesforce-adapter URL: https://help.skyvva.com/#article/4-how-to-create-an-inbound-synchronous-interface-using-integrate-apex-url-with-skyvva-cpi-salesforce-adapter ================================================================================ # 4. How to create an inbound synchronous interface using integrate Apex URL with SKYVVA CPI Salesforce Adapter This document describes how to create an inbound synchronous interface using Integrate - Apex URL with SKYVVA CPI Salesforce adapter. And also, document briefs the implementation of SAP CPI and Salesforce interfaces which includes the testing as well. In this case considering Account as an object API at Salesforce end and message will be triggered from POSTMAN client tool to Salesforce using SAP CPI as middleware. ![](../images/2020/06/Untitled-146.png) ## Salesforce Interface Development This is an inbound synchronous interface where request and response interface should create in Salesforce. Create interfaces under Integration in Salesforce, in this example creating request interface name as **“Account_CPI_Integrate_Sync”** and response interface name as **“Account_CPI_Integrate_Sync_Response”**. **Request Interface (Account_CPI_Integrate_Sync):** Below are the necessary parameters need to provide while creating the interface. ![](../images/2020/06/Untitled-147.png) ![](../images/2020/06/Untitled-148.png) ![](../images/2020/06/Untitled-149.png) ![](../images/2020/06/Untitled-150.png) Where above marked "Response Interface" will be explained in the response interface section. **Response Interface (Account_CPI_Integrate_Sync_Response):** Below are the necessary parameters need to provide while creating the response interface. ![](../images/2020/06/Untitled-151.png) ![](../images/2020/06/Untitled-152.png) ![](../images/2020/06/Untitled-153.png) ![](../images/2020/06/Untitled-154.png) For the response interface need to define the mapping to send the required data as the response. ![](../images/2020/06/Untitled-156.png) In this use case, all the fields got mapped as to generate the response. Used the auto mapping functionality to map all the fields and save. ![](../images/2020/06/Untitled-157.png) ## ## SAP CPI Development Create the package in SAP CPI in Design and add the integration flow. Example: **Integration Package: **     Apsara Salesforce Adapter Testing **Integration Flow:   **         Apsara Account Interface to Salesforce_Sync_Demo32 SAP CPI receives the request message from POSTMAN/SOAPUI in json format. Since this use case is defining the capabilities of the SKYVVA SAP CPI Salesforce adapter, simple integration flow is defined with required channel parameters. Please find below integration flow: ![](../images/2020/06/Untitled-158.png) **On sender side,** choose the sender adapter “**HTTPS**” and provide the channel parameters details as below including with the CPI endpoint URL. ![](../images/2020/06/Untitled-159.png) ![](../images/2020/06/Untitled-160.png) **On receiver side,** choose the receiver adapter “Salesforce” Skyvva adapter and provide the channel parameters as below. ![](../images/2020/06/Untitled-161.png) ![](../images/2020/06/Untitled-162.png) Where the Login Url,  User Credential details (deployed in CPI keystore), Client Id and Client Secret shared from the Salesforce system. For Skyvva section below are parameters need to define for integrate. ![](../images/2020/06/Untitled-163.png) ![](../images/2020/06/Untitled-165.png) Need to select the Apex Url as "IntegrateSynchronous" in the channel. Bulk API section is not needed since this interface is not using the bulk mode in this use case. Once all the above channel parameters are defined save the integration flow and deploy. ![](../images/2020/06/Untitled-166.png) Go to CPI > Monitoring > Manage Integration Content to get the endpoint URL of CPI integration flow. **CPI Endpoint URL: ** *https://{{TenantId}}-iflmap.hcisbp.eu1.hana.ondemand.com/http/skyvva/Account/CPI/ReceiverChannel/IntegrateSync/32Demo* **Testing:** In this scenario, using POSTMAN as the client to push the data to SAP CPI endpoint URL, then message will send to Salesforce through SAP CPI using SKYVVA CPI Salesforce adapter. **Note: **Salesforce accepts the data in below Json format. Since this example is using simple integration (without any transformation logics), below data format is sending from POSTMAN directly. **Payload:** ![](../images/2020/06/Untitled-167.png) Where integrationid is name of the Integration in Salesforce & interfacename is interface name in Salesforce. Use the above payload and CPI endpoint URL to trigger the data from the POSTMAN. ![](../images/2020/06/Untitled-168.png) Below is the response from the Salesforce in JSON format. ![](../images/2020/06/Untitled-169.png) **Monitor the message in SAP CPI:** Go to CPI > Monitor > Monitor Message Processing. ![](../images/2020/06/Untitled-171.png) **Salesforce Monitoring:** Go to  Salesforce > Message Monitoring ![](../images/2020/06/Untitled-170.png) Account related data posted and response received successfully. ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: What is SKYVVA SAP CPI Adapter in Salesforce? Title: 5. What is SKYVVA SAP CPI Adapter in Salesforce? Slug: 5-what-is-skyvva-sap-cpi-adapter URL: https://help.skyvva.com/#article/5-what-is-skyvva-sap-cpi-adapter ================================================================================ # 5. What is SKYVVA SAP CPI Adapter in Salesforce? ## About SAP CPI Adapter Skyvva SAP CPI adapter is used in Salesforce to connect the SAP Cloud Platform Integration. ![](../images/2020/12/1-1.png) SAP CPI adapter in Salesforce is used in Skyvva outbound interfaces to push the data. On SAP CPI end, SAP standard HTTPS sender adapter should be used. To configure the SAP CPI adapter in Salesforce, below is the navigation path. **Integration > Details > SAP Control Board > Adapter** ![](../images/2020/12/1-2.png) Under adapter click on new to create the adapter. ![](../images/2020/12/1-3.png) ## SAP CPI Adapter Parameters: **Configuration:** **Parameter** **Description** **Information** Name Example: “SAP_CPI_Adapter_Account” Type SAP CPI Direction Outbound Description Status **Properties** Authentication Type Example: Basic, OAuth, Certificate Based authentication Generate CSRF Token Protocol Example: HTTP HTTP Header API Service Endpoint URL URL Query Parameter Operation Request Format Example: JSON Response Format Example: JSON Username Password Salesforce Id Handling Will be available in next versions ## SAP CPI Adapter limitations - Supported format are json and XML. CSV, free text and binary is not support currently. - Support Basic Authentication and OAuth2 client-credential flow. JWT is currently not supported. - Supported SAP Integration Suite adapter is https only. ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: How to create an outbound asynchronous interface from Salesforce Skyvva to SAP CPI Title: 6. How to create an outbound asynchronous interface from Salesforce Skyvva to SAP CPI Slug: 6-how-to-create-an-outbound-asynchronous-interface-from-salesforce-skyvva-to-sap-cpi URL: https://help.skyvva.com/#article/6-how-to-create-an-outbound-asynchronous-interface-from-salesforce-skyvva-to-sap-cpi ================================================================================ # 6. How to create an outbound asynchronous interface from Salesforce Skyvva to SAP CPI # How to create an outbound asynchronous interface from Salesforce Skyvva to SAP CPI ## 1.    Overview This document describes how to create an outbound asynchronous interface from Salesforce to SAP CPI. In Salesforce, we need to use the Skyvva **SAP CPI adapter** and provide the necessary CPI details to configure the adapter. ![](../images/2021/12/1-1.png) Here, in this case we are going to send the account data from Salesforce to CPI, where SAP CPI adapter will send this data in JSON format. Pre-requisites: - Skyvva Package should be installed on Salesforce - SAP CPI user with the required authorizations for message processing ## 2.    Salesforce Interface Development ### 2.1  Create Integration in Salesforce Logon to the Salesforce, and navigate to the Integration. ![](../images/2021/12/1-2.png) Click on New to create the new integration. Provide the integration name and save it. ![](../images/2021/12/1-3.png) Once Integration is created navigate to the interfaces and click on “New Interface” to create the new interface. ![](../images/2021/12/1-4.png) Provide the necessary details to create the outbound interface. ![](../images/2021/12/1-5.png) **Parameters:** Name Account_CPI_Interface_OB Source/Target Name Account Status Deployed Processing Mode Asynchronous Interface Direction Outbound Connect with Middleware Outbound Adapter Now save the interface. **Note:** Here we need to update the below details in interface. - **Outbound Adapter -** To connect the CPI system - MetaData Provider (To generate the Standard structure) - Repository (To generate the Standard structure) - Source/Target Message Type (To generate the Standard structure) ![](../images/2021/12/1-6.png) MetaData provider, Repository and Source/target message type are used in Skyvva standard REST template, which is used by SAP CPI adapter to send the data JSON format. This is the standard template which needs to be used in Skyvva outbound interface for CPI integration. **Hierarchy level**: MetaData contains Repository, repository contains Source/Target Message type ![](../images/2021/12/1-7.png) To create the metadata provider, navigate to the MetaData Providers and create “New” and provide the metadata provider name. **Note:** Metadata provider name can be anything based on the project naming convention ![](../images/2021/12/1-8.png) Once metadata provider created then go down and create “Repository” as shown in below screenshot. ![](../images/2021/12/1-9.png) Under the Repository, there is option to create the Message type. Click on new and create message type. **Message Type:** There are two ways to create message type with the below structure. - **Using REST Template (JSON)** - **Creating manually** **Using REST template: (Easy way)** To create the message type using REST template, navigate to the below path. Metadata provider > Repositories > Open Editor ![](../images/2021/12/1-10.png) Choose filetype as “JSON” and provide Input a JSON format with below JSON text. ***{*** ***  "REST Service": {*** ***    "Request": {*** ***      "URL": {},*** ***      "Header": {},*** ***      "Body": {*** ***        "Account": {*** ***        }*** ***      }*** ***    },*** ***    "Response": {*** ***      "root": {*** ***        "Account": {*** ***        }*** ***      }*** ***    }*** ***  }*** The above is the standard REST template that will used to create message type. ![](../images/2021/12/1-11.png) Click on save. Once saved we can find the message type as below. ![](../images/2021/12/1-12.png) Now edit the message type to add the TYPE, LEVEL, SEQUENCE NUMBER AND PARENT. Click on action to edit the message type structure. ![](../images/2021/12/1-13.png) Update the details like type and other parameters as below. ![](../images/2021/12/1-14.png) Similarly, need to update all. E.g. Account ![](../images/2021/12/1-15.png) Ensure that message type looks as below. ![](../images/2021/12/1-16.png) From the above screen shot, we can find Response where this will be used in the synchronous interface. **Message Type Name** à REST Service, can be free text where we can use any other name also depends on the project naming convention. If we need different name, we need to define it in the REST template. **Creating Manually:** To create below structure, please follow below steps. ![](../images/2021/12/1-17.png) To create message type, click on the “**New**” and provide the **message type name**, choose the **Type,** choose the **Level**, choose the **sequence number** and choose the **Parent.** For example, if we need to create the “Account” under Body with type Salesforce object. ![](../images/2021/12/1-18.png) Other example, to create the Body in structure ![](../images/2021/12/1-19.png) **Note**: Here Body has child so, we need to check the option “hasChild” Once Metadata provider, Repository name & Message types are created, then add these in Interface. Navigate to interface and add these as shown below. ![](../images/2021/12/1-20.png) Now save the interface. **Mapping in Skyvva Interface:** Now mapping need to be done in the Skyvva interface to push what are the fields need to send from Account S-Object. Open mapping in interface, please find below screenshot for reference. ![](../images/2021/12/1-21.png) We can find the mapping as below which has both source and target structures. Map the fields based on the requirement and save it. ![](../images/2021/12/1-22.png) ### 2.3  Create Skyvva SAP CPI adapter To create the CPI adapter for outbound interface, navigate to the below path. **Integration > Details > SAP Control Board > Adapter** ![](../images/2021/12/1-23.png) Under adapter click on new to create the adapter. ![](../images/2021/12/1-24.png) Create a new SAP CPI adapter by providing the necessary details. ![](../images/2021/12/1-25.png) ![](../images/2021/12/1-26.png) **CPI Adapter Parameters:** Adapter Name Account_CPI Type SAP CPI Direction Outbound Authentication Type Basic Generate CSRF token? Enable this if CSRF is checked in SAP CPI sender HTTPs adapter Protocol HTTP API Service Endpoint URL CPI interface endpoint url Operation Post RequestFormat Application/json Once all the details are provided then save it. **Now add the SAP CPI adapter in outbound interface under Outbound Setup as below.** ![](../images/2021/12/1-27.png) ### 2.3  Generate the Skyvva XSD for CPI development Generation of Skyvva XSD (Structure) will be used in CPI for CPI message transformation. To generate the XSD from interface navigate to below path **Integration > Interface > Repository** ![](../images/2021/12/1-28.png) Under repository, in message types click on “Account” to download the XSD file. ![](../images/2021/12/1-29.png) ## 3.    SAP CPI Development Logon to CPI tenant, navigate to the Design > Packages > Artifacts > Create new **integration flow** **Step: 1** Create the sender HTTPS communication channel and provide the connection parameters. ![](../images/2021/12/1-30.png) **Step: 2** Import the Skyvva XSD created in Salesforce (refer section 2.3) into SAP CPI system. ![](../images/2021/12/1-31.png) Once the source XSD is loaded then import the target structure (in available format) Below is the integration flow created in SAP CPI ![](../images/2021/12/1-32.png) - Payload Script à Will log the source payload (JSON) - JSON to XML Convertor à This palate is used to convert the received JSON format data to xml ![](../images/2021/12/1-33.png) 3. Payload Script XML à Script to log the converted XML file 4. XSLT Mapping à This XSLT mapping is used to add the prefix and namespace to the converted XML. Below XSL code for reference. ![](../images/2021/12/1-34.png) 5.Payload Script XSLT, Script to log the XSLT payload 6. Message Mapping,  Source to Target transformation 7. Payload script After mapping, Script to log the payload after mapping ## 4.    Testing ### 4.1 Push the data from Salesforce to CPI using APEX code Now we are going to push the account data from Salesforce (Skyvva) to SAP CPI. Account data should be available in Salesforce. Please find below screenshot for reference. ![](../images/2021/12/1-35.png) To push this data from Salesforce, navigate to Developer console. ![](../images/2021/12/1-36.png) Navigate to below path Debug > Open Execute Anonymous Window ![](../images/2021/12/1-37.png) Use the below APEX code to trigger the data. *//Account_CPI_OB --Interface* *skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl();* *c.returnJSONComplete=true;* *c.actionDoIntegrate=true;* *c.isCreateMessage=true;* *String[] ids=new String[]{'0011j00001FbXAnAAN'};* *skyvvasolutions.Iservices.invokeCalloutV3('CPI Integrate','Account_CPI_Interface_OB',ids,'SYNC', c);* ![](../images/2021/12/1-38.png) Click on Execute Highlighted to push the data. Now monitor the message in Salesforce and CPI. ### 4.2 Salesforce message monitor: Navigate to Message monitoring and provide the details as below. ![](../images/2021/12/1-39.png) Click on search In below messages we can notice that message triggered to CPI “Green flag Status” ![](../images/2021/12/1-40.png) ### 4.3 CPI monitoring: Navigate to the Message monitoring in CPI and we can find the respective message in CPI with all logs. ![](../images/2021/12/1-41.png) From the above screen shot we can noticed that account data got processed in CPI. ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: How to create an asynchronous inbound interface in SAP CPI with new V3 SKYVVA Salesforce adapter? Title: 7. How to create an asynchronous inbound interface in SAP CPI with new V3 SKYVVA Salesforce adapter? Slug: 7-how-to-create-an-asynchronous-inbound-interface-with-new-v3-sap-cpi-adapter URL: https://help.skyvva.com/#article/7-how-to-create-an-asynchronous-inbound-interface-with-new-v3-sap-cpi-adapter ================================================================================ # 7. How to create an asynchronous inbound interface in SAP CPI with new V3 SKYVVA Salesforce adapter? This document describes how to create an inbound interface using Asynchronous mode with SKYVVA Salesforce CPI adapter. And also, document briefs the implementation of SAP CPI and Salesforce interfaces which includes the testing as well. In this case considering Account as an object API at Salesforce end and message will be triggered from POSTMAN client tool to Salesforce using SAP CPI as middle-ware. ![](../images/2022/03/Untitled-42.png) Here, in this case we are going to send the account and contact data from POSTMAN to CPI, where SAP CPI adapter will send this data in XML format. Pre-requisites: - SkyvvaSalesforce adapter should be deployed in CPI tenant. - Skyvva Package should be installed on Salesforce - SAP CPI user with the required authorizations for message processing ## 2.    Salesforce Interface Development ### 2.1  Create Integration in Salesforce Logon to the Salesforce, and navigate to the Integration. ![](../images/2021/12/1-2.png) Click on New to create the new integration. Provide the integration name and save it. ![](../images/2022/03/Untitled-20.png) Once Integration is created navigate to the interfaces and click on “New Interface” to create the new interface. ![](../images/2022/03/Untitled-22.png) **Note:** Here we need to update the below details in interface. - MetaData Provider (To generate the Standard structure) - Repository (To generate the Standard structure) - Source/Target Message Type (To generate the Standard structure) ![](../images/2021/12/1-6.png) MetaData provider, Repository and Source/target message type are used in Skyvva standard template. This is the standard template which needs to be used in Skyvva inbound interface for CPI integration. Accounts --Account --Contact **Hierarchy level**: MetaData contains Repository, repository contains Source/Target Message type ![](../images/2021/12/1-7.png) To create the metadata provider, navigate to the MetaData Providers and create “New” and provide the metadata provider name. **Note:** Metadata provider name can be anything based on the project naming convention ![](../images/2022/03/Untitled-26.png) Once metadata provider created then go down and create “Repository” as shown in below screenshot. ![](../images/2022/03/Untitled-27.png) Under the Repository, there is option to create the Message type. Click on new and create message type. **Message Type:** For Inbound we can use normal message type as shown. ![](../images/2022/03/Untitled-28.png) Create root message type as shown below ![](../images/2022/03/Untitled-29.png) Click on new to create another child message type Account under Accounts ![](../images/2022/03/Untitled-30.png) Click on new to create another child message type Contact under Account ![](../images/2022/03/Untitled-31.png) Here is the created message type ![](../images/2022/03/Untitled-2.png) New V3 works only with Skyvva message type. Use the above created Metadata provider, Repository and Message type details while creating the Inbound interface. Specify the Interface name, Description, Source/Target Name, Metadata Provider, Repository, Message type, Status, Direction and Operation Type as shown below ![](../images/2022/03/Untitled-24.png) ![](../images/2022/03/Untitled-25.png) **Parameters:** Name IntegrateAsyn_IN Source/Target Name Account Status Deployed Processing Mode Asynchronous Interface Direction Inbound Connect with Middleware Now save the interface. When we use message type in the skyvva interface we have to do mapping in skyvva. ![](../images/2022/03/Untitled-32.png) ![](../images/2022/03/Untitled-6.png) After providing the above parameters and mapping in the interface, save it. ## SAP CPI Development Create the package in SAP CPI in Design and add the integration flow. **Example:** **Integration Package:  **  Skyvva_V4_Integration **Integration Flow:   **     Account_Contact_IntegrateAsync_Test_V4 SAP CPI receives the request message from POSTMAN/SOAPUI in XML format. Since this use case is defining the capabilities of the SKYVVA SAP CPI Salesforce adapter, simple integration flow is defined with required channel parameters. Please find below integration flow: ![](../images/2022/03/Untitled-33.png) **On sender side,** choose the sender adapter** “HTTPS”** and provide the channel parameters details as below including with the CPI endpoint URL. ![](../images/2020/06/Untitled-88.png) ![](../images/2022/03/Untitled-34.png) **On receiver side,** choose the receiver adapter **“SkyvvaSalesforce” adapter** and provide the channel parameters as below. ![](../images/2022/03/Untitled-9.png) ![](../images/2020/06/Untitled-91.png) Where the Login Url,  User Credential details (deployed in CPI keystore), Client Id and Client Secret shared from the Salesforce system. For Skyvva section below are parameters need to define for integrate. ![](../images/2022/03/Untitled-35.png) ![](../images/2022/03/Untitled-11.png) Once all the above channel parameters are defined save the integration flow and deploy. ![](../images/2022/03/Untitled-36.png) Go to **CPI > Monitoring > Manage Integration Content** to get the endpoint URL of CPI integration flow. Please find below screen shot for reference. ![](../images/2022/03/Untitled-37.png) **CPI Endpoint URL: ** *https://{{TenantId}}-iflmap.hcisbp.eu1.hana.ondemand.com/http/skyvva/AccountContactIntegrateAsync* **Testing:** In this scenario, using POSTMAN as the client to push the data to SAP CPI endpoint URL, then message will send to Salesforce through SAP CPI using SKYVVA CPI Salesforce adapter. **Note: **Salesforce interface accepts the data in the below XML format. Since this example is using simple integration (without any transformation logic's in CPI), below data format is sending from POSTMAN directly. **Payload: ** ![](../images/2022/03/Untitled-14.png) Use the above payload and CPI endpoint URL to trigger the data from the POSTMAN. ![](../images/2022/03/Untitled-16.png) For Asynchronous mode we can see the response status as "New" **Monitor the message in SAP CPI:** Go to CPI > Monitor > Monitor Message Processing ![](../images/2022/03/Untitled-39.png) **Salesforce Monitoring:** Go to  Salesforce > Message Monitoring ![](../images/2022/03/Untitled-38.png) Account and contact related data posted successfully into the Salesforce system. ![](../images/2022/03/Untitled-40.png) ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: How to create an inbound interface using Skyvva Batch mode with SkyvvaSalesforce Adapter? Title: 8. How to create an inbound interface using Skyvva Batch mode with SkyvvaSalesforce Adapter? Slug: 8-how-to-create-an-inbound-interface-using-skyvva-batch-mode-with-skyvvasalesforce-adapter URL: https://help.skyvva.com/#article/8-how-to-create-an-inbound-interface-using-skyvva-batch-mode-with-skyvvasalesforce-adapter ================================================================================ # 8. How to create an inbound interface using Skyvva Batch mode with SkyvvaSalesforce Adapter? This document describes how to create an inbound interface using SKYVVA Batch mode with SKYVVA Salesforce CPI adapter. And also, document briefs the implementation of SAP CPI and Salesforce interfaces which includes the testing as well. In this case considering Account as an object API at Salesforce end and message will be triggered from POSTMAN client tool to Salesforce using SAP CPI as middle-ware. ![](../images/2022/03/Untitled-43.png) Here, in this case we are going to send the account and contact data from POSTMAN to CPI, where SAP CPI adapter will send this data in XML format. Pre-requisites: - SkyvvaSalesforce adapter should be deployed in CPI tenant. - Skyvva Package should be installed on Salesforce - SAP CPI user with the required authorizations for message processing ## 2.    Salesforce Interface Development ### 2.1  Create Integration in Salesforce Logon to the Salesforce, and navigate to the Integration. ![](../images/2021/12/1-2.png) Click on New to create the new integration. Provide the integration name and save it. ![](../images/2022/03/Untitled-20.png) Once Integration is created navigate to the interfaces and click on “New Interface” to create the new interface. ![](../images/2022/03/Untitled-22.png) **Note:** Here we need to update the below details in interface. - MetaData Provider (To generate the Standard structure) - Repository (To generate the Standard structure) - Source/Target Message Type (To generate the Standard structure) ![](../images/2021/12/1-6.png) MetaData provider, Repository and Source/target message type are used in Skyvva standard template. This is the standard template which needs to be used in Skyvva inbound interface for CPI integration. Accounts --Account --Contact **Hierarchy level**: MetaData contains Repository, repository contains Source/Target Message type ![](../images/2021/12/1-7.png) To create the metadata provider, navigate to the MetaData Providers and create “New” and provide the metadata provider name. **Note:** Metadata provider name can be anything based on the project naming convention ![](../images/2022/03/Untitled-26.png) Once metadata provider created then go down and create “Repository” as shown in below screenshot. ![](../images/2022/03/Untitled-27.png) Under the Repository, there is option to create the Message type. Click on new and create message type. **Message Type:** For Inbound we can use normal message type as shown. ![](../images/2022/03/Untitled-28.png) Create root message type as shown below ![](../images/2022/03/Untitled-29.png) Click on new to create another child message type Account under Accounts ![](../images/2022/03/Untitled-30.png) Click on new to create another child message type Contact under Account ![](../images/2022/03/Untitled-31.png) Here is the created message type ![](../images/2022/03/Untitled-2.png) New V3 works only with Skyvva message type. Use the above created Metadata provider, Repository and Message type details while creating the Inbound interface. Specify the Interface name, Description, Source/Target Name, Metadata Provider, Repository, Message type, Status, Direction and Operation Type as shown below ![](../images/2022/03/Untitled-44.png) ![](../images/2022/03/Untitled-25.png) **Parameters:** Name IntegrateBatch_IN Source/Target Name Account Status Deployed Processing Mode Asynchronous Interface Direction Inbound Connect with Middleware Now save the interface. When we use message type in the skyvva interface we have to do mapping in skyvva. ![](../images/2022/03/Untitled-45.png) ![](../images/2022/03/Untitled-6.png) After providing the above parameters and mapping in the interface, save it. ## SAP CPI Development Create the package in SAP CPI in Design and add the integration flow. **Example:** **Integration Package:  **  Skyvva_V4_Integration **Integration Flow:   **     Account_Contact_IntegrateBatch_Test_V4 SAP CPI receives the request message from POSTMAN/SOAPUI in XML format. Since this use case is defining the capabilities of the SKYVVA SAP CPI Salesforce adapter, simple integration flow is defined with required channel parameters. Please find below integration flow: ![](../images/2022/03/Untitled-47.png) **On sender side,** choose the sender adapter** “HTTPS”** and provide the channel parameters details as below including with the CPI endpoint URL. ![](../images/2020/06/Untitled-88.png) ![](../images/2022/03/Untitled-48.png) **On receiver side,** choose the receiver adapter **“SkyvvaSalesforce” adapter** and provide the channel parameters as below. ![](../images/2022/03/Untitled-9.png) ![](../images/2020/06/Untitled-91.png) Where the Login Url,  User Credential details (deployed in CPI keystore), Client Id and Client Secret shared from the Salesforce system. For Skyvva section below are parameters need to define for integrate. ![](../images/2022/03/Untitled-49.png) ![](../images/2022/03/Untitled-11.png) Once all the above channel parameters are defined save the integration flow and deploy. ![](../images/2022/03/Untitled-50.png) Go to **CPI > Monitoring > Manage Integration Content** to get the endpoint URL of CPI integration flow. Please find below screen shot for reference. ![](../images/2022/03/Untitled-51.png) **CPI Endpoint URL: ** *https://{{TenantId}}-iflmap.hcisbp.eu1.hana.ondemand.com/http/skyvva/AccountContactIntegrateBatch* **Testing:** In this scenario, using POSTMAN as the client to push the data to SAP CPI endpoint URL, then message will send to Salesforce through SAP CPI using SKYVVA CPI Salesforce adapter. **Note: **Salesforce interface accepts the data in the below XML format. Since this example is using simple integration (without any transformation logic's in CPI), below data format is sending from POSTMAN directly. **Payload: ** ![](../images/2022/03/Untitled-14.png) Use the above payload and CPI endpoint URL to trigger the data from the POSTMAN. ![](../images/2022/03/Untitled-16.png) For Asynchronous mode we can see the response status as "New" **Monitor the message in SAP CPI:** Go to CPI > Monitor > Monitor Message Processing ![](../images/2022/03/Untitled-39.png) **Salesforce Monitoring:** Go to  Salesforce > Message Monitoring ![](../images/2022/03/Untitled-38.png) Account and contact related data posted successfully into the Salesforce system. ![](../images/2022/03/Untitled-40.png) ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: How to create an inbound interface using Salesforce BULK mode with SkyvvaSalesforce Adapter? Title: 9. How to create an inbound interface using Skyvva BULK mode with SkyvvaSalesforce Adapter? Slug: 9-how-to-create-an-inbound-interface-using-skyvva-bulk-mode-with-skyvvasalesforce-adapter URL: https://help.skyvva.com/#article/9-how-to-create-an-inbound-interface-using-skyvva-bulk-mode-with-skyvvasalesforce-adapter ================================================================================ # 9. How to create an inbound interface using Skyvva BULK mode with SkyvvaSalesforce Adapter? This document describes how to create an inbound interface using SKYVVA BULK mode with SKYVVA Salesforce CPI adapter. And also, document briefs the implementation of SAP CPI and Salesforce interfaces which includes the testing as well. In this case considering Account as an object API at Salesforce end and message will be triggered from POSTMAN client tool to Salesforce using SAP CPI as middle-ware. ![](../images/2022/03/Untitled-56.png) Here, in this case we are going to send the account and contact data from POSTMAN to CPI, where SAP CPI adapter will send this data in both XML and JSON format. Pre-requisites: - SkyvvaSalesforce adapter should be deployed in CPI tenant. - Skyvva Package should be installed on Salesforce - SAP CPI user with the required authorizations for message processing ## 2.    Salesforce Interface Development ### 2.1  Create Integration in Salesforce Logon to the Salesforce, and navigate to the Integration. ![](../images/2021/12/1-2.png) Click on New to create the new integration. Provide the integration name and save it. ![](../images/2022/03/Untitled-20.png) Once Integration is created navigate to the interfaces and click on “New Interface” to create the new interface. ![](../images/2022/03/Untitled-22.png) **Note:** Here we need to update the below details in interface. - MetaData Provider (To generate the Standard structure) - Repository (To generate the Standard structure) - Source/Target Message Type (To generate the Standard structure) ![](../images/2021/12/1-6.png) MetaData provider, Repository and Source/target message type are used in Skyvva standard template. This is the standard template which needs to be used in Skyvva inbound interface for CPI integration. Accounts --Account --Contact **Hierarchy level**: MetaData contains Repository, repository contains Source/Target Message type ![](../images/2021/12/1-7.png) To create the metadata provider, navigate to the MetaData Providers and create “New” and provide the metadata provider name. **Note:** Metadata provider name can be anything based on the project naming convention ![](../images/2022/03/Untitled-26.png) Once metadata provider created then go down and create “Repository” as shown in below screenshot. ![](../images/2022/03/Untitled-27.png) Under the Repository, there is option to create the Message type. Click on new and create message type. **Message Type:** For Inbound we can use normal message type as shown. ![](../images/2022/03/Untitled-28.png) Create root message type as shown below ![](../images/2022/03/Untitled-29.png) Click on new to create another child message type Account under Accounts ![](../images/2022/03/Untitled-30.png) Click on new to create another child message type Contact under Account ![](../images/2022/03/Untitled-31.png) Here is the created message type ![](../images/2022/03/Untitled-2.png) New V3 works only with Skyvva message type. Use the above created Metadata provider, Repository and Message type details while creating the Inbound interface. Specify the Interface name, Description, Source/Target Name, Metadata Provider, Repository, Message type, Status, Direction and Operation Type as shown below ![](../images/2022/03/Untitled-57.png) ![](../images/2022/03/Untitled-25.png) **Parameters:** Name SkyvvaBulk_IN Source/Target Name Account Status Deployed Processing Mode Asynchronous Interface Direction Inbound Connect with Middleware Now save the interface. When we use message type in the skyvva interface we have to do mapping in skyvva. ![](../images/2022/03/Untitled-58.png) ![](../images/2022/03/Untitled-6.png) After providing the above parameters and mapping in the interface, save it. ## SAP CPI Development Create the package in SAP CPI in Design and add the integration flow. **Example:** **Integration Package:  **  Skyvva_V4_Integration **Integration Flow:   **     Account_Contact_SkyvvaBulk_Test_V4 SAP CPI receives the request message from POSTMAN/SOAPUI in XML format. Since this use case is defining the capabilities of the SKYVVA SAP CPI Salesforce adapter, simple integration flow is defined with required channel parameters. Please find below integration flow: ![](../images/2022/03/Untitled-59.png) **On sender side,** choose the sender adapter** “HTTPS”** and provide the channel parameters details as below including with the CPI endpoint URL. ![](../images/2020/06/Untitled-88.png) ![](../images/2022/03/Untitled-61.png) **On receiver side,** choose the receiver adapter **“SkyvvaSalesforce” adapter** and provide the channel parameters as below. ![](../images/2022/03/Untitled-9.png) ![](../images/2020/06/Untitled-91.png) Where the Login Url,  User Credential details (deployed in CPI keystore), Client Id and Client Secret shared from the Salesforce system. For Skyvva section below are parameters need to define for integrate. ![](../images/2022/03/Untitled-60.png) ![](../images/2022/03/Untitled-11.png) Once all the above channel parameters are defined save the integration flow and deploy. ![](../images/2022/03/Untitled-62.png) Go to **CPI > Monitoring > Manage Integration Content** to get the endpoint URL of CPI integration flow. Please find below screen shot for reference. ![](../images/2022/03/Untitled-63.png) **CPI Endpoint URL: ** *https://{{TenantId}}-iflmap.hcisbp.eu1.hana.ondemand.com/http/skyvva/AccountContactIntegrateSkyvvaBulk* **Testing:** In this scenario, using POSTMAN as the client to push the data to SAP CPI endpoint URL, then message will send to Salesforce through SAP CPI using SKYVVA CPI Salesforce adapter. **Note: **Salesforce interface accepts the data in the below XML format. Since this example is using simple integration (without any transformation logic's in CPI), below data format is sending from POSTMAN directly. **Payload: ** ![](../images/2022/03/Untitled-14.png) Use the above payload and CPI endpoint URL to trigger the data from the POSTMAN. ![](../images/2022/03/Untitled-16.png) For Asynchronous mode we can see the response status as "New" **Monitor the message in SAP CPI:** Go to CPI > Monitor > Monitor Message Processing ![](../images/2022/03/Untitled-39.png) **Salesforce Monitoring:** Go to  Salesforce > Message Monitoring ![](../images/2022/03/Untitled-38.png) Account and contact related data posted successfully into the Salesforce system. ![](../images/2022/03/Untitled-40.png) ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: How to create an inbound interface using Salesforce BULK mode with SkyvvaSalesforce Adapter? Title: 10. How to create an inbound interface using Salesforce BULK mode with SkyvvaSalesforce Adapter? Slug: 10-how-to-create-an-inbound-interface-using-salesforce-bulk-mode-with-skyvvasalesforce-adapter URL: https://help.skyvva.com/#article/10-how-to-create-an-inbound-interface-using-salesforce-bulk-mode-with-skyvvasalesforce-adapter ================================================================================ # 10. How to create an inbound interface using Salesforce BULK mode with SkyvvaSalesforce Adapter? This document describes how to create an inbound interface using Salesforce BULK mode with SKYVVA Salesforce CPI adapter. And also, document briefs the implementation of SAP CPI and Salesforce interfaces which includes the testing as well. In this case considering Account as an object API at Salesforce end and message will be triggered from POSTMAN client tool to Salesforce using SAP CPI as middle-ware. ![](../images/2022/03/Untitled-64.png) Here, in this case we are going to send the account data from POSTMAN to CPI, where SAP CPI adapter will send this data in both XML and JSON format. Also Salesforce Bulk supports only FLAT structure Pre-requisites: - SkyvvaSalesforce adapter should be deployed in CPI tenant. - Skyvva Package should be installed on Salesforce - SAP CPI user with the required authorizations for message processing ## 2.    Salesforce Interface Development ### 2.1  Create Integration in Salesforce Logon to the Salesforce, and navigate to the Integration. ![](../images/2021/12/1-2.png) Click on New to create the new integration. Provide the integration name and save it. ![](../images/2022/03/Untitled-20.png) Once Integration is created navigate to the interfaces and click on “New Interface” to create the new interface. ![](../images/2022/03/Untitled-22.png) **Note:** Here we need to update the below details in interface. - MetaData Provider (To generate the Standard structure) - Repository (To generate the Standard structure) - Source/Target Message Type (To generate the Standard structure) ![](../images/2021/12/1-6.png) MetaData provider, Repository and Source/target message type are used in Skyvva standard template. This is the standard template which needs to be used in Skyvva inbound interface for CPI integration. Accounts --Account --Contact **Hierarchy level**: MetaData contains Repository, repository contains Source/Target Message type ![](../images/2021/12/1-7.png) To create the metadata provider, navigate to the MetaData Providers and create “New” and provide the metadata provider name. **Note:** Metadata provider name can be anything based on the project naming convention ![](../images/2022/03/Untitled-26.png) Once metadata provider created then go down and create “Repository” as shown in below screenshot. ![](../images/2022/03/Untitled-27.png) Under the Repository, there is option to create the Message type. Click on new and create message type. **Message Type:** For Inbound we can use normal message type as shown. ![](../images/2022/03/Untitled-28.png) Create root message type as shown below ![](../images/2022/03/Untitled-29.png) Click on new to create another child message type Account under Accounts ![](../images/2022/03/Untitled-30.png) Click on new to create another child message type Contact under Account ![](../images/2022/03/Untitled-31.png) Here is the created message type ![](../images/2022/03/Untitled-2.png) New V3 works only with Skyvva message type. Use the above created Metadata provider, Repository and Message type details while creating the Inbound interface. Specify the Interface name, Description, Source/Target Name, Metadata Provider, Repository, Message type, Status, Direction and Operation Type as shown below ![](../images/2022/03/Untitled-57.png) ![](../images/2022/03/Untitled-25.png) **Parameters:** Name SkyvvaBulk_IN Source/Target Name Account Status Deployed Processing Mode Asynchronous Interface Direction Inbound Connect with Middleware Now save the interface. When we use message type in the skyvva interface we have to do mapping in skyvva. ![](../images/2022/03/Untitled-58.png) ![](../images/2022/03/Untitled-6.png) After providing the above parameters and mapping in the interface, save it. ## SAP CPI Development Create the package in SAP CPI in Design and add the integration flow. **Example:** **Integration Package:  **  Skyvva_V4_Integration **Integration Flow:   **     Account_Contact_SkyvvaBulk_Test_V4 SAP CPI receives the request message from POSTMAN/SOAPUI in XML format. Since this use case is defining the capabilities of the SKYVVA SAP CPI Salesforce adapter, simple integration flow is defined with required channel parameters. Please find below integration flow: ![](../images/2022/03/Untitled-59.png) **On sender side,** choose the sender adapter** “HTTPS”** and provide the channel parameters details as below including with the CPI endpoint URL. ![](../images/2020/06/Untitled-88.png) ![](../images/2022/03/Untitled-61.png) **On receiver side,** choose the receiver adapter **“SkyvvaSalesforce” adapter** and provide the channel parameters as below. ![](../images/2022/03/Untitled-9.png) ![](../images/2020/06/Untitled-91.png) Where the Login Url,  User Credential details (deployed in CPI keystore), Client Id and Client Secret shared from the Salesforce system. For Skyvva section below are parameters need to define for integrate. ![](../images/2022/03/Untitled-60.png) ![](../images/2022/03/Untitled-11.png) Once all the above channel parameters are defined save the integration flow and deploy. ![](../images/2022/03/Untitled-62.png) Go to **CPI > Monitoring > Manage Integration Content** to get the endpoint URL of CPI integration flow. Please find below screen shot for reference. ![](../images/2022/03/Untitled-63.png) **CPI Endpoint URL: ** *https://{{TenantId}}-iflmap.hcisbp.eu1.hana.ondemand.com/http/skyvva/AccountContactIntegrateSkyvvaBulk* **Testing:** In this scenario, using POSTMAN as the client to push the data to SAP CPI endpoint URL, then message will send to Salesforce through SAP CPI using SKYVVA CPI Salesforce adapter. **Note: **Salesforce interface accepts the data in the below XML format. Since this example is using simple integration (without any transformation logic's in CPI), below data format is sending from POSTMAN directly. **Payload: ** ![](../images/2022/03/Untitled-14.png) Use the above payload and CPI endpoint URL to trigger the data from the POSTMAN. ![](../images/2022/03/Untitled-16.png) For Asynchronous mode we can see the response status as "New" **Monitor the message in SAP CPI:** Go to CPI > Monitor > Monitor Message Processing ![](../images/2022/03/Untitled-39.png) **Salesforce Monitoring:** Go to  Salesforce > Message Monitoring ![](../images/2022/03/Untitled-38.png) Account and contact related data posted successfully into the Salesforce system. ![](../images/2022/03/Untitled-40.png) ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: How to create an inbound interface using Auto Switch mode with SkyvvaSalesforce Adapter? Title: 11. How to create an inbound interface using Auto Switch mode with SkyvvaSalesforce Adapter? Slug: 11-how-to-create-an-inbound-interface-using-auto-switch-mode-with-skyvvasalesforce-adapter URL: https://help.skyvva.com/#article/11-how-to-create-an-inbound-interface-using-auto-switch-mode-with-skyvvasalesforce-adapter ================================================================================ # 11. How to create an inbound interface using Auto Switch mode with SkyvvaSalesforce Adapter? ================================================================================ Book: SAP CPI Adapter Section: SAP CPI Adapter Subsection: How to create an outbound synchronous interface with Account and Contact Hierarchical structure using SAP CPI adapter from Salesforce Skyvva to SAP CPI and SAP CPI to Skyvva? Title: 12. How to create an outbound synchronous interface with Account and Contact Hierarchical structure using SAP CPI adapter from Salesforce Skyvva to SAP CPI and SAP CPI to Skyvva? Slug: 12-how-to-create-an-outbound-synchronous-interface-from-salesforce-skyvva-to-sap-cpi-and-sap-cpi-to-skyvva-using-skyvva-sap-cpi-adapter URL: https://help.skyvva.com/#article/12-how-to-create-an-outbound-synchronous-interface-from-salesforce-skyvva-to-sap-cpi-and-sap-cpi-to-skyvva-using-skyvva-sap-cpi-adapter ================================================================================ # 12. How to create an outbound synchronous interface with Account and Contact Hierarchical structure using SAP CPI adapter from Salesforce Skyvva to SAP CPI and SAP CPI to Skyvva? # How to create an outbound asynchronous interface from Salesforce Skyvva to SAP CPI ## 1.    Overview This document describes how to create an outbound Synchronous interface from Salesforce to SAP CPI. In Salesforce, we need to use the Skyvva **SAP CPI adapter** and provide the necessary CPI details to configure the adapter. ![](../images/2022/04/Untitled.png) Here, in this case we are going to send the account and contact data from Salesforce to CPI, where SAP CPI adapter will send this data in JSON format. Pre-requisites: - Skyvva Package should be installed on Salesforce - SAP CPI user with the required authorizations for message processing ## 2.    Salesforce Interface Development ### 2.1  Create Integration in Salesforce Logon to the Salesforce, and navigate to the Integration. ![](../images/2021/12/1-2.png) Click on New to create the new integration. Provide the integration name and save it. ![](../images/2022/04/Untitled-1.png) Once Integration is created navigate to the interfaces and click on “New Interface” to create the new interface. ![](../images/2022/03/Untitled-22.png) Provide the necessary details to create the outbound interface. ![](../images/2022/04/Untitled-2.png) ![](../images/2022/04/Untitled-3.png) **Parameters:** Name Account_Contact_INT_Hirerchy_REQ_SFDC2SAP_Sync_OB Source/Target Name Account Status Deployed Processing Mode Synchronous Interface Direction Outbound Connect with Middleware Outbound Adapter Internal Mapping Response Interface Account_Contact_INT_Hirerchy_RES_SFDC2SAP_Sync_IB Now save the interface. **Response Inbound Interface** - ![](../images/2022/04/Untitled-12.png) ![](../images/2022/04/Untitled-13.png) **Parameters** - Name Account_Contact_INT_Hirerchy_RES_SFDC2SAP_Sync_IB Source/Target Name Account Status Deployed Processing Mode Synchronous Interface Direction Inbound Connect with Middleware Internal Mapping Request Interface Account_Contact_INT_Hirerchy_REQ_SFDC2SAP_Sync_OB **Note:** Here we need to update the below details in the outbound and inbound interface. - **Outbound Adapter -** To connect the CPI system - MetaData Provider (To generate the Standard structure) - Repository (To generate the Standard structure) - Source/Target Message Type (To generate the Standard structure) ![](../images/2021/12/1-6.png) MetaData provider, Repository and Source/target message type are used in Skyvva standard REST template, which is used by SAP CPI adapter to send the data JSON format. This is the standard template which needs to be used in Skyvva outbound interface for CPI integration. **Hierarchy level**: MetaData contains Repository, repository contains Source/Target Message type ![](../images/2021/12/1-7.png) To create the metadata provider, navigate to the MetaData Providers and create “New” and provide the metadata provider name. **Note:** Metadata provider name can be anything based on the project naming convention ![](../images/2022/04/Untitled-4.png) Once metadata provider created then go down and create “Repository” as shown in below screenshot. ![](../images/2022/04/Untitled-5.png) Under the Repository, there is option to create the Message type. Click on new and create message type. **Message Type:** There are two ways to create message type with the below structure. - **Using REST Template (JSON)** - **Creating manually** **Using REST template: (Easy way)** Note: We recommend to use the REST Template for both Request and Response, when we use the SAP CPI adapter. Usually the Response Interface will also work with Business message type without the REST template. Example - -->Account -->Contact To create the message type using REST template, navigate to the below path. Metadata provider > Repositories > Open Editor ![](../images/2022/04/Untitled-6.png) Choose filetype as “JSON” and provide Input a JSON format with below JSON text. For Hierarchical structure. We recommend to use the below REST template. In Response Interface for hierarchical structure. We recommend to use the below rest template For this Account and Contact JSON we need a 3-level message type e.g. Response(REST_Response) Body(REST_Response_Body) ListOfAccount --> Plain Structure Account -----> Salesforce sObject Contact ---> Salesforce sObject If the data is Flat then we use below Response(REST_Response) root(REST_Response_Body) Account(Salesforce sObject) ***{*** ***  "REST Service": {*** ***    "Request": {*** ***      "URL": {},*** ***      "Header": {},*** ***      "Body": {*** ***        "Account": {***                                                                          ***"Contact":{*** ***                                                                   }*** ***        }*** ***      }*** ***    },*** ***    "Response": {***                                                                   ***"Body": {*** ***           "ListofAccount": {*** ***               "Account": {***                                                                               ***"Contact":{*** ***        }*** ***      }*** ***    }***                                                              ***}*** ***  }***                                                       ***}*** The above is the standard REST template that will used to create message type. ![](../images/2022/04/Untitled-7.png) Click on save. Once saved we can find the message type as below. ![](../images/2021/12/1-12.png) Now edit the message type to add the TYPE, LEVEL, SEQUENCE NUMBER AND PARENT. Click on action to edit the message type structure. ![](../images/2021/12/1-13.png) Update the details like type and other parameters as below. ![](../images/2021/12/1-14.png) Similarly, need to update all. E.g. Account ![](../images/2021/12/1-15.png) Ensure that message type looks as below. ![](../images/2021/12/1-16.png) ![](../images/2022/04/Untitled-11.png) From the above screen shot, we can find the Request and Response message type. These details will be used in the outbound and the inbound interface creation. **Message Type Name**  - REST Service, can be free text where we can use any other name also depends on the project naming convention. If we need different name, we need to define it in the REST template. **Creating Manually:** To create below structure, please follow below steps. ![](../images/2021/12/1-17.png) To create message type, click on the “**New**” and provide the **message type name**, choose the **Type,** choose the **Level**, choose the **sequence number** and choose the **Parent.** For example, if we need to create the “Account” under Body with type Salesforce object. ![](../images/2021/12/1-18.png) Other example, to create the Body in structure ![](../images/2021/12/1-19.png) **Note**: Here Body has child so, we need to check the option “hasChild” Once Metadata provider, Repository name & Message types are created, then add these in both Request and Response Interface. Navigate to the interfaces and add these as shown below. ![](../images/2022/04/Untitled-9.png) Now save the interface. Similarly for the inbound interface. ![](../images/2022/04/Untitled-10.png) **Mapping in Skyvva Interface:** Now mapping need to be done in the Skyvva interface to push what are the fields need to send from Account S-Object. Open mapping in interface, please find below screenshot for reference. ![](../images/2022/04/Untitled-14.png) We can find the mapping as below which has both source and target structures. Map the fields based on the requirement and save it. ![](../images/2022/04/Untitled-16.png) Similarly create the mapping for the Inbound response interface ![](../images/2022/04/Untitled-18.png) ![](../images/2022/04/Untitled-17.png) ### 2.3  Create Skyvva SAP CPI adapter To create the CPI adapter for outbound interface, navigate to the below path. **Integration > Details > SAP Control Board > Adapter** ![](../images/2022/04/Untitled-19.png) Under adapter click on new to create the adapter. ![](../images/2022/04/Untitled-20.png) Create a new SAP CPI adapter by providing the necessary details. ![](../images/2022/04/Untitled-21.png) ![](../images/2022/04/Untitled-22.png) ![](../images/2022/04/Untitled-23.png) ![](../images/2022/04/Untitled-24.png) Now click on Save to save the Adapter **CPI Adapter Parameters:** Adapter Name Account_Contact_ADAPTER_Hierarchy_Sync Type SAP CPI Direction Outbound Authentication Type Basic Generate CSRF token? Enable this if CSRF is checked in SAP CPI sender HTTPs adapter Protocol HTTP API Service Endpoint URL CPI interface endpoint url Operation Post RequestFormat Application/json Once all the details are provided then save it. **Now add the SAP CPI adapter in outbound interface under Outbound Setup as below.** ![](../images/2021/12/1-27.png) ### 2.3  Generate the Skyvva XSD for CPI development Generation of Skyvva XSD (Structure) will be used in CPI for CPI message transformation. To generate the XSD from interface navigate to below path **Integration > Interface > Repository** ![](../images/2021/12/1-28.png) Under repository, in message types click on “Account” to download the XSD file. ![](../images/2021/12/1-29.png) ## 3.    SAP CPI Development Logon to CPI tenant, navigate to the Design > Packages > Artifacts > Create new **integration flow** **Step: 1** Create the sender HTTPS communication channel and provide the connection parameters. ![](../images/2021/12/1-30.png) **Step: 2** Import the Skyvva XSD created in Salesforce (refer section 2.3) into SAP CPI system. ![](../images/2021/12/1-31.png) Once the source XSD is loaded then import the target structure (in available format) Below is the integration flow created in SAP CPI ![](../images/2021/12/1-32.png) - Payload Script à Will log the source payload (JSON) - JSON to XML Convertor à This palate is used to convert the received JSON format data to xml ![](../images/2021/12/1-33.png) 3. Payload Script XML à Script to log the converted XML file 4. XSLT Mapping à This XSLT mapping is used to add the prefix and namespace to the converted XML. Below XSL code for reference. ![](../images/2021/12/1-34.png) 5.Payload Script XSLT, Script to log the XSLT payload 6. Message Mapping,  Source to Target transformation 7. Payload script After mapping, Script to log the payload after mapping ## 4.    Testing ### 4.1 Push the data from Salesforce to CPI using APEX code Now we are going to push the account data from Salesforce (Skyvva) to SAP CPI. Account data should be available in Salesforce. Please find below screenshot for reference. ![](../images/2021/12/1-35.png) To push this data from Salesforce, navigate to Developer console. ![](../images/2021/12/1-36.png) Navigate to below path Debug > Open Execute Anonymous Window ![](../images/2021/12/1-37.png) Use the below APEX code to trigger the data. *//Account_CPI_OB --Interface* *skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl();* *c.returnJSONComplete=true;* *c.actionDoIntegrate=true;* *c.isCreateMessage=true;* *String[] ids=new String[]{'0011j00001FbXAnAAN'};* *skyvvasolutions.Iservices.invokeCalloutV3('CPI Integrate','Account_CPI_Interface_OB',ids,'SYNC', c);* ![](../images/2021/12/1-38.png) Click on Execute Highlighted to push the data. Now monitor the message in Salesforce and CPI. ### 4.2 Salesforce message monitor: Navigate to Message monitoring and provide the details as below. ![](../images/2021/12/1-39.png) Click on search In below messages we can notice that message triggered to CPI “Green flag Status” ![](../images/2021/12/1-40.png) ### 4.3 CPI monitoring: Navigate to the Message monitoring in CPI and we can find the respective message in CPI with all logs. ![](../images/2021/12/1-41.png) From the above screen shot we can noticed that account data got processed in CPI. ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 1. Pre-Requisite Title: 1.2. Import/Deploy ABAP Transport In SAP Slug: 2-import-deploy-abap-transport-in-sap URL: https://help.skyvva.com/#article/2-import-deploy-abap-transport-in-sap ================================================================================ # 1.2. Import/Deploy ABAP Transport In SAP **This unit describes:-** How to import skyvva transports into SAP #### Introduction:- In this chapter, you will learn about the “import skyvva transports into sap. Manually Importing Transports into SAP – you will receive transport files from Skyvva Team ,who have developed custom solutions for SAP and you will be required to import their transports into your SAP System manually. #### Import skyvva transports into sap You will receive transport files from Skyvva Team,  you did the following steps: - Unzipped the transport file sent through by the developer - This gave me four files: IDB - IDB - NWA - NWA - Naming convention used is R<6 digits>. and K<6 digits>.  (The Source system is the developers source system) a. K Type Transport = Cofile – Normally only 1 – 3 KB b. R Type Transport = Datafile – Normally more than the Colfile - IDB and K900326.NWA were a Cofile –  it doesn’t contain much data, it has the attributes of the data file stored in it. Command or change request information files that include information on the transport type, object classes, required import steps, and post-processing exit codes - IDB and K900326.NWA were a Datafile – This contains the actual data for the Transport – what changes will be made in your system. - Go to the Development Server and navigated to the following directory: D:\usr\sap\trans. a. Copy the K Type Transport to Cofile folder located in D:\usr\sap\trans\cofile . b. Copy the R Type Transport into the data folder located in D:\usr\sap\trans\data . ![](../images/2021/02/TRANS.png) - Go into the SAP ECC Dev System and proceed to transaction STMS - Proceed to import queue (F5 then Select Dev System) - Go to the Extras Menu, Select Other Requests then select Add![](../images/2021/02/2.png) - This will show the following screen, enter your target client (in our case it is 100 as the  golden development system) - Then select the Transport request search button![](../images/2021/02/3-3.png) Search for your transports by entering the * at the start for a wildcard selection and then putting in the digit code in the transport file – ie *901432 don’t include the . IDB extension, this will likely show up as the transport prefix) and lastly ensure you pump up your number restriction to a number that will give you the result you are after. ![](../images/2021/02/4.png) - Find your transport number and select it - Then you will end up with a screen like below with your transport request filled out, target client and import queue filled out. You can if you want select import again if you are re-importing this transport. ![](../images/2021/02/5.png) - Click Yes when asked to attach to import queue. ![](../images/2021/02/6-1.png) - Then once it is attached to the import buffers, import the transport then use the forward transport options from the menu system to send the transport to QA for testing ![](../images/2021/02/7.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 1. Pre-Requisite Title: 1.1 Pre-Requisite Slug: 1-pre-requisite URL: https://help.skyvva.com/#article/1-pre-requisite ================================================================================ # 1.1 Pre-Requisite Below are the prerequisite to set up the connection between SAP and Salesforce: - The firewall must be open/configured between Salesforce and SAP. Here, we usually advise: a. Reverse Proxy for the direction Salesforce to SAP b. Proxy for the direction SAP to Salesforce - IP Addresses which need to be configured for reverse proxy can be found on below URL: [Salesforce IP Addresses & Domains to whitelist](https://help.salesforce.com/articleView?id=000003652&type=1) - In case of Production environment, SSL server certificate must be installed on the reverse proxy. Salesforce trust the certificate which is issued by the listed CA (Certificate Authority) and below is the URL for all Trusted CAs from Salesforce. [all the SSL certificates that are supported by Salesforce](https://help.salesforce.com/articleView?id=000007225&type=1) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 1. Pre-Requisite Title: 1.3. Certificate for Secured Communications Slug: 3-certificate-for-secured-communications URL: https://help.skyvva.com/#article/3-certificate-for-secured-communications ================================================================================ # 1.3. Certificate for Secured Communications Communicating with Salesforce happens via the internet, which is not entirely secure. Therefore, the data should be encrypted by means of SSL. We have to distinguish between two scenarios as to where the communication can happen. - First, when making an inbound call, i.e. Salesforce sends data to SAP-ECC. - Second, when making an outbound call, i.e. SAP-ECC sends data to Salesforce. Depending on the scenario, different SSL settings and configurations will be required. For using HTTPS in SAP to Salesforce Scenarios some SSL-Certificates has to be downloaded from Salesforce-site and imported in SAP with Transaction STRUST. This step is necessary to enable SAP-Outbound-Interfaces. The Client-Certificates are also used from the IE, Firefox or other Browsers and can be viewed and downloaded to files. The different SFDC-Servers uses different certificates and you have to download the certificate from your instance-server and import it into your SAP as client certificates for SAP-outbound-calls. #### Download of Certificate from SFDC The download of certificate can be done with the browser(in the below scenario Mozilla Firefox). Perform below steps to download the certificate: Call the [login.salesforce.com](https://login.salesforce.com) (or [test.Salesforce.com](https://Test.Salesforce.com)) in the browser(Step 1). Select the lock Icon(Step 2) Under the Connection, select the "Show connection details(Step 3) [![](../images/2019/09/SOA-Manager-14.jpg)](../images/2019/09/SOA-Manager-14.jpg) Now, select the "More Information(Step 4)" as shown in the above picture. It will open a new window, here select the option "View Certificate" and it will further open a new window now select the option "Details" [![](../images/2019/09/SOA-Manager-15.jpg)](../images/2019/09/SOA-Manager-15.jpg) Now select the Certificate (Step 1 below) and then select the option Export (Step 2) and then Save (Step 3) to the necessary path. [caption id="attachment_25064" align="aligncenter" width="1825"][![secure](../images/2019/09/SOA-Manager-16.jpg)](../images/2019/09/SOA-Manager-16.jpg) secure[/caption] #### Import certificate in SAP using transaction code STRUST This step is necessary if your SAP-Server is the endpoint for the SSL-communication with the internet. If you have a proxy between your server and the internet and the proxy is the endpoint for SSL-communication you don’t need to import the certificates in your SAP server.  In this case you have to  to import the certificates in your proxy-server. Start Transaction STRUST in SAP [![](../images/2019/09/SOA-Manager-17.jpg)](../images/2019/09/SOA-Manager-17.jpg) Now navigate to "SSL client SSL Client (Anonymous)" (step 1) and then double click on the system (Step 2) and then on "Import Certificate (Step 3)" [![](../images/2019/09/STRUST.jpg)](../images/2019/09/STRUST.jpg) Now select the earlier downloaded Certificate and then Continue [![](../images/2019/09/STRUST-1.jpg)](../images/2019/09/STRUST-1.jpg) After Import select the option "Add to Certificate List" (Step 1 below) [![](../images/2019/09/STRUST-2.jpg)](../images/2019/09/STRUST-2.jpg) Once this is done then don’t forget to save at the end (Step 2 above). The ICM has to be restarted (Transaction SMICM)  to make the new imported certificates accessible for the ICM (Internet Communication Manager). ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 1. Pre-Requisite Title: 1.4. Setup Connection SAP SALESFORCE Slug: 4-setup-connection-sap-salesforce URL: https://help.skyvva.com/#article/4-setup-connection-sap-salesforce ================================================================================ # 1.4. Setup Connection SAP SALESFORCE ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 1. Pre-Requisite Title: 1.5 Activation of Skyvva service in SAP Slug: a-activation-of-skyvva-service-in-sap URL: https://help.skyvva.com/#article/a-activation-of-skyvva-service-in-sap ================================================================================ # 1.5 Activation of Skyvva service in SAP **This unit describes:-** How to Activate the skyvva service in SAP using Tcode SICF. #### Introduction:- In this chapter, you will learn about the “Activation of  skyvva service in sap”. The service is used to send & receive data from SAP <> salesforce . #### Activation of Skyvva service in Tcode SICF Once you have installed the Skyvva package(TR) all Internet Communication Framework (ICF) services are available in an inactive state for security reasons. After the installation you have to decide which services must be activated for the applications you want to use. Since multiple services can be executed when you call a URL, all service nodes must be activated in the SICF tree. The URL path is mapped in ICF subnodes (services). For example, if you want to activate the services for URL  /default_host/sap/bc/skyvva/, you have to activate the service tree default_host* *in transaction SICF. Then you have to activate services sap, bc and skyvva separately. You activate an ICF service as follows: - Select the required ICF service in the ICF tree in transaction SICF. - Activate the ICF service in one of the following ways: - Using menu option ***Service/Host*  ->  *Activate*** - Using the context menu and choosing ***Activate Service****.* ### Services for Skyvav For skyvva ABAP  the following services must be activated in the system. #### Using skyvva Applications /default_host/sap/public/ping This node itself must be activated, for ping service. /default_host/sap/bc/skyvva/ Here only the node itself must be activated, and **not** the subnodes. /default_host/sap/bc/skyvva/v3/ #### This node is activated automatically when the subnodes described below are activated. Likewise, here only the node itself must be activated, as well as the following subnodes: /default_host/sap/bc/skyvva/v3/cache /default_host/sap/bc/skyvva/v3/ GetBapiDetail /default_host/sap/bc/skyvva/v3/ GetIdocSegField /default_host/sap/bc/skyvva/v3/ GetIdocSegList /default_host/sap/bc/skyvva/v3/ GetObjCount /default_host/sap/bc/skyvva/v3/ GetObjectList /default_host/sap/bc/skyvva/v3/ GetPartnProfile /default_host/sap/bc/skyvva/v3/ GetQualifier /default_host/sap/bc/skyvva/v3/ GetTabFieldList /default_host/sap/bc/skyvva/v3/ restoreendpoint - **Activate All the service as shown below.**![](../images/2021/02/SICF.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 1. Pre-Requisite Title: 1.6 Create Connection Destination & SAP Adapter in Salesforce Slug: b-create-connection-destination-sap-adapter-in-salesforce URL: https://help.skyvva.com/#article/b-create-connection-destination-sap-adapter-in-salesforce ================================================================================ # 1.6 Create Connection Destination & SAP Adapter in Salesforce **This unit describes:-** How to Create Connection Destination & SAP Adapter in Salesforce #### Introduction:- In this chapter, you will learn about the **“Create Connection Destination & SAP Adapter in Salesforce”**. This is used to send & receive data from SAP <> salesforce . **Prerequisite** Create integration in Salesforce **Create Connection Destination & SAP Adapter in Salesforce.** To connect SAP<=> SALESFORCE We have two Option. - Connect SAP<=> SALESFORCE through AGENT - Connect SAP<=> SALESFORCE Direct **1. Connect SAP<=> SALESFORCE through AGENT ** **a. Create Connection Destination** Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Provide the details for connection details as shown below and click on continue button Note : Always select **Type:** "AGENT SAP ERP" ![](../images/2021/02/AGENT_CB1.png) Here we need to provide the agent connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** Provide the details of Agent as shown ![](../images/2021/02/AGENT_CB2.png) Once we provide the details we need to ping the agent Connection. Then we can see the pop-up as below ![](../images/2021/02/AGCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->agent control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/Adapter.png) Here we need to provide the sap details as below Name      : Any meaning full name Type      : Always “Agent SAP ERP” for agent Host Url  : http://xxxx.com Direction : Inbound/outbound Port      : 16xxx (sap port) Username  : xxxx(sap user id) Password  : ******(sap user id pass) Authentication  : always (basic) SAPID     : ID7 (Sap system id ) Client    : (sap client ) Is Https  : select if using Object format : Idoc, BAPI, Table Logical name  : any unique name Connection destination : select one create for agent ![](../images/2021/02/adapter2.png) **2. Connect SAP<=> SALESFORCE Direct** **a. Create Connection Destination** Go to Integration details tab and then select SAP Control Board as Below ![](../images/2021/02/SAPCB.png) Provide the details for connection details as shown below and click on continue button Type: SAP ERP Deployment: Embedded Logical System: LSSAP ![](../images/2021/02/SAPCB1.png) Here we need to provide the SAP connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: *** ![](../images/2021/02/SAPCB2.png)Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up as below ![](../images/2021/02/SAPCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->SAP control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/SAPADP.png) Click on new and fill the required details as below and save the adapter Type : SAP ERP Connection destination select which we have create in step **(2.a)** ![](../images/2021/02/SAPADAP2.png) Click on ping connection for test adapter is working or not ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: Generic Use of Multit-Tab Title: 8. Generic Use of Multit-Tab Slug: 6-generic-use-of-multit-tab URL: https://help.skyvva.com/#article/6-generic-use-of-multit-tab ================================================================================ # 8. Generic Use of Multit-Tab **This unit describes:-** How to use Skyvva MultiItab-Function module( /SKYVVA/MULTI_ITAB_ADAPTER_V3 ) in SAP Z Program/FM **Introduction:-** This document describes how data can be transferred to SFDC within your own Programs. The MultiItabAdapter allows you to transfer data of different RFC/BAPI or Structures(DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-IntegrationSuite on SFDC. **1. SAP Implementation Part** **1.1 Prerequisites** Please use repository based typing instead of program-internal types for the RFC/BAPI definition and Structure definition (DDIC). Otherwise the Adapter will have problems at runtime. **1.2 Implement a sender module for the transfer of Internal Tables (ITAB)** In this example a Sender Module : ZV3_BINARY_FILE_TRANSFER has been implemented . This Module is also used in salesforce for metadata provider in salesforce to create message type in salesforce on the Interface-definition of this module. Note : **We are supporting a single importing/exporting parameter only in RFC/BAPI to send data from sap to salesforce. The parameter must be table type only which can be hierarchical tables or flat table.** Follow the below steps to Create the function module and interface. - Create table type structure in SE11. - Create function module in SE37 - Create importing parameter for sending data from sap to salesforce. - Create exporting parameter for receiving data from salesforce to sap. - Call the Multi-tab function module **/SKYVVA/MULTI_ITAB_ADAPTER_V3 **in side function module. - Pass the all required parameter in multi-tab function module base on required scenario. - save and activate the function module which is created by you. - Create message type using your function module. - Create the interface and do the mapping. - In case if you change the function module importing/exporting parameter field(add/remove),override the message type and delete the field from message type in **related tab** which is remove and check if add field is there - Do the mapping again. - Configure the Function module in SAP/AGENT Control Board. - Finally call the function module from any report/program and send the data from sap to salesforce 1.Create table stature ![](../images/2021/02/Table.png) 2. Create Function Module with parameter ![](../images/2021/02/Function-module.png) in the importing Parameter “IM_MATERIAL_DATA” has data need to send  salesforce and the exporting parameter “EX_RETURN” has field or structure coming data back from salesforce in that format. #### 3. Calling function module /SKYVVA/MULTI_ITAB_ADAPTER_V3 in side Z function module ![](../images/2021/02/Calling_multi_tab.png) **The importing Parameters** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **The Exporting Parameter** 1. EX_RETURN is the parameter which return error/success message . 2. IM_SF_RESPONSE is the parameter which return the response from salesforce which is the exporting parameter of calling skyvva FM. The content of this Itabs is send via v3 adapter . The following lines are necessary for passing the data to the MultiItabAdapter . **Example code :** IF im_material_data IS NOT INITIAL . **   Selecting function module config data to get integration & interface id SELECT * from /skyvva/multitab INTO @Data(ls_config_data) WHERE funcname = 'ZV3_BINARY_FILE_TRANSFER'. **Calling muti-tab function module to send sap data to salesforce CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3' EXPORTING im_integration_id           = ls_config_data-integrationid " salesforce integration id  im_iinterface_id            = ls_config_data-interfaceid  "salesforce intrface id    im_endpoint                 = ls_config_data-endpointid " connection name *       IM_RESP_STRUCTURE_PARAM_NAME  =  if response required from salesforce im_req_structure_param_name = 'ZTT_MATERIAL_DATA' ""Function module table type pass in importing parameter it_req_data                 = im_material_data " data need to send salesforce *       IM_DATA                     = IM_DATA IMPORTING ex_return                   = ex_return. ""return message error/succss *       EX_SF_RESPONSE_DATA         = EX_SF_RESPONSE_DATA " in case data retrive from salesforce need to pass struture  ENDIF. 4. Prepare data and call z function module in report/program. ![](../images/2021/02/Report.png) **Remark: the importing/exporting structure must be used in salesforce as message type.** For call skyvva interface in a Asynchronous mode do not pass the response parameter “im_req_param_name” and exporting response parameter “IM_SF_RESPONSE” in skyvva Multi-tab FM. ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: How to develop inbound interface using FM/RFC/Report with the multi-itab adapter synchronously? Title: 13. How to develop inbound interface using FM/RFC/Report with the multi-itab adapter synchronously? Slug: 13-how-to-develop-inbound-interface-using-fm-rfc-report-with-the-multi-itab-adapter-synchronously URL: https://help.skyvva.com/#article/13-how-to-develop-inbound-interface-using-fm-rfc-report-with-the-multi-itab-adapter-synchronously ================================================================================ # 13. How to develop inbound interface using FM/RFC/Report with the multi-itab adapter synchronously? ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: How to develop inbound interface using FM/RFC/Report with the multi-itab adapter synchronously? Title: a. Direct SAP to SALESFORCE Slug: a-direct-sap-to-salesforce URL: https://help.skyvva.com/#article/a-direct-sap-to-salesforce ================================================================================ # a. Direct SAP to SALESFORCE **This unit describes:-** How to send sap data to salesforce (In synchronous mode) using Multitab #### Introduction:- This document describes how data can be transferred to SFDC within your own Programs. The MultiItabAdapter allows you to transfer data of different RFC/BAPI or Structures(DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-IntegrationSuite on SFDC. When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Develop function module with importing and exporting parameter. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Develop function module with importing and exporting parameter. ( For More Details See in Chapter 8) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 10) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 10) - Creating an inbound interface - Send SAP data using FM/Report **1. Develop function module with importing and exporting parameter. ** **  1. SAP Implementation Part** **  1.1 Prerequisites** Please use repository based typing instead of program-internal types for the RFC/BAPI definition and Structure definition (DDIC). Otherwise the Adapter will have problems at runtime. **1.2 Implement a sender module for the transfer of Internal Tables (ITAB)** In this example a SenderModule : ZV3_MULTI_ITAB_DEMO has been implemented . This Module is also used in salesforce for metadata provider in salesforce to create message type in salesforce on the Interface-definition of this module. ![](../images/2021/02/MUL_TAB.png) in the importing Parameter “IM_DEBITOR_NO” has data need to send  salesforce and the exporting parameter “EX_DEBITOR_DETAILS” has field or structure coming data back from salesforce in that format. #### Here you can see an example for call skyvva interface in a synchronous mode and process the response. ![](../images/2021/03/SysncFM.png) **The importing Parameters** 1. im_integration is the mandatory parameter in which we pass salesforce integration Id 2. im_iinterface is the mandatory parameter in which we pass salesforce interface Id. 3. im_endpoint is the mandatory parameter in which we pass salesforce endpoint name in endpoint we have maintain salesforce login details . 4. im_resp_param_name is the optional parameter in which we pass response param name which is exporting parameter of skyvva calling FM (Multi-tab). 5. im_req_param_name is the mandatory parameter in which we pass request param name which is importing parameter of skyvva calling FM . 6. im_req_data is the mandatory parameter in which we pass request data internal table which is importing parameter of skyvva calling FM **The Exporting Parameter** 1. EX_RETURN is the parameter which return error/success message . 2. IM_SF_RESPONSE is the parameter which return the response from salesforce which is the exporting parameter of calling skyvva FM. Example Code : "Selecting function config data for multi-tab SELECT SINGLE * FROM /skyvva/multitab INTO @DATA(ls_func_config) WHERE funcname = 'ZV3_MULTI_ITAB_DEMO'. "calling skyvva multi-tab function module to send data to salesforce CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3' EXPORTING im_integration_id            = ls_func_config-integrationid  " Salesforce integration id im_iinterface_id             = ls_func_config-interfaceid    " Salesforce interface id im_endpoint                  = ls_func_config-endpointid     " Salesforce connection name im_resp_structure_param_name = 'ZTT_KNA1'  " Reponse(exporting)parameter table type im_req_structure_param_name  = 'ZTT_KUNNR' " Request(importing) parameter table type it_req_data                  = im_debitor_no " bussinus data need to send to salesforce IMPORTING ex_sf_response_data          = ex_debitor_details. "Data retriving from salesforce **Remark: the importing/exporting structure must be used in salesforce as message type.** For call skyvva interface in a Asynchronous mode do not pass the response parameter “im_req_param_name” and exporting response parameter “IM_SF_RESPONSE” in skyvva Multi-tab FM. **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** Once you save integration below screen will display, Here we are selecting SAP Control Board. ![](../images/2021/02/SAPCB.png) **a. Create Connection Destination** Provide the details for connection details as shown below and click on continue button Type: SAP ERP Deployment: Embedded Logical System: **** ![](../images/2021/02/SAPCB1.png) Here we need to provide the SAP connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: *** ![](../images/2021/02/SAPCB2.png)Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up as below ![](../images/2021/02/SAPCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->SAP control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/SAPADP.png) Click on new and fill the required details as below and save the adapter Type : SAP ERP Connection destination select which we have create in step **(2.a)** ![](../images/2021/02/SAPADAP2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/BAPI_IMPORT.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/BAPI_IMPORT2.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/BAPI_IMPORT3.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/BAPI_INTERFACE.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/BAPI_INF_MAPPING.png) Save the interface once provide all the necessary details. **7. **Send SAP data using FM/Report Once the save the interface, now you can go to sap  and run/call the custom function module/report in order to send sap data into salesforce. In our case we are using below function module to send data in synchronous mode. ![](../images/2021/02/BAPI_SAP_SEND.png) We can also see the message in salesforce side in message monitor ![](../images/2021/02/BAPI_SF_MESSAGE.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: How to develop inbound interface using FM/RFC/Report with the multi-itab adapter synchronously? Title: b. Using AGENT Slug: b-using-agent URL: https://help.skyvva.com/#article/b-using-agent ================================================================================ # b. Using AGENT **This unit describes:-** How to send sap data to salesforce through Agent  (In synchronous mode) using Multitab #### Introduction:- This document describes how data can be transferred to SFDC within your own Programs. The MultiItabAdapter allows you to transfer data of different RFC/BAPI or Structures(DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-IntegrationSuite on SFDC. When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Develop function module with importing and exporting parameter. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Develop function module with importing and exporting parameter. ( For More Details See in Chapter 8) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 10) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 10) - Creating an inbound interface - Send SAP data using FM/Report **1. Develop function module with importing and exporting parameter. ** **  1. SAP Implementation Part** **  1.1 Prerequisites** Please use repository based typing instead of program-internal types for the RFC/BAPI definition and Structure definition (DDIC). Otherwise the Adapter will have problems at runtime. **1.2 Implement a sender module for the transfer of Internal Tables (ITAB)** In this example a SenderModule : ZV3_MULTI_ITAB_DEMO has been implemented . This Module is also used in salesforce for metadata provider in salesforce to create message type in salesforce on the Interface-definition of this module. ![](../images/2021/02/MUL_TAB.png) in the importing Parameter “IM_DEBITOR_NO” has data need to send  salesforce and the exporting parameter “EX_DEBITOR_DETAILS” has field or structure coming data back from salesforce in that format. #### Here you can see an example for call skyvva interface in a synchronous mode and process the response. ![](../images/2021/03/SysncFM.png) **The importing Parameters** 1. im_integration is the mandatory parameter in which we pass salesforce integration Id 2. im_iinterface is the mandatory parameter in which we pass salesforce interface Id. 3. im_endpoint is the mandatory parameter in which we pass salesforce endpoint name in endpoint we have maintain salesforce login details . 4. im_resp_param_name is the optional parameter in which we pass response param name which is exporting parameter of skyvva calling FM (Multi-tab). 5. im_req_param_name is the mandatory parameter in which we pass request param name which is importing parameter of skyvva calling FM . 6. im_req_data is the mandatory parameter in which we pass request data internal table which is importing parameter of skyvva calling FM **The Exporting Parameter** 1. EX_RETURN is the parameter which return error/success message . 2. IM_SF_RESPONSE is the parameter which return the response from salesforce which is the exporting parameter of calling skyvva FM. Example Code : "Selecting function config data for multi-tab SELECT SINGLE * FROM /skyvva/multitab INTO @DATA(ls_func_config) WHERE funcname = 'ZV3_MULTI_ITAB_DEMO'. "calling skyvva multi-tab function module to send data to salesforce CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3' EXPORTING im_integration_id            = ls_func_config-integrationid  " Salesforce integration id im_iinterface_id             = ls_func_config-interfaceid    " Salesforce interface id im_endpoint                  = ls_func_config-endpointid     " Salesforce connection name im_resp_structure_param_name = 'ZTT_KNA1'  " Reponse(exporting)parameter table type im_req_structure_param_name  = 'ZTT_KUNNR' " Request(importing) parameter table type it_req_data                  = im_debitor_no " bussinus data need to send to salesforce IMPORTING ex_sf_response_data          = ex_debitor_details. "Data retriving from salesforce **Remark: the importing/exporting structure must be used in salesforce as message type.** For call skyvva interface in a Asynchronous mode do not pass the response parameter “im_req_param_name” and exporting response parameter “IM_SF_RESPONSE” in skyvva Multi-tab FM. **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** Once you have save the integration below screen will display, Here we are selecting AGENT Control Board. **a. Create Connection Destination** Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Provide the details for connection details as shown below and click on continue button Note : Always select **Type:** "AGENT SAP ERP" ![](../images/2021/02/AGENT_CB1.png) Here we need to provide the agent connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** Provide the details of Agent as shown ![](../images/2021/02/AGENT_CB2.png) Once we provide the details we need to ping the agent Connection. Then we can see the pop-up as below ![](../images/2021/02/AGCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->agent control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/Adapter.png) Here we need to provide the sap details as below Name      : Any meaning full name Type      : Always “Agent SAP ERP” for agent Host Url  : http://xxxx.com Direction : Inbound/outbound Port      : 16xxx (sap port) Username  : xxxx(sap user id) Password  : ******(sap user id pass) Authentication  : always (basic) SAPID     : ID7 (Sap system id ) Client    : (sap client ) Is Https  : select if using Object format : Idoc, BAPI, Table Logical name  : any unique name Connection destination : select one create for agent ![](../images/2021/02/adapter2.png) Click on ping connection for test adapter is working or not ******** Click on ping connection for test adapter is working or not then save the adapter **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/Agent_metadata_imp.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/BAPI_IMPORT2.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/BAPI_IMPORT3.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/BAPI_INTERFACE.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/BAPI_INF_MAPPING.png) Save the interface once provide all the necessary details. **7. **Send SAP data using FM/Report Once the save the interface, now you can go to sap  and run/call the custom function module/report in order to send sap data into salesforce. In our case we are using below function module to send data in synchronous mode. ![](../images/2021/02/BAPI_SAP_SEND.png) We can also see the message in salesforce side in message monitor ![](../images/2021/02/BAPI_SF_MESSAGE.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: DEBMAS IDOC Sending from SAP -> SF Title: 14. DEBMAS IDOC Sending from SAP -> SF Slug: 14-debmas-idoc-sending-from-sap-sf URL: https://help.skyvva.com/#article/14-debmas-idoc-sending-from-sap-sf ================================================================================ # 14. DEBMAS IDOC Sending from SAP -> SF ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: ORDRSP IDOC Sending from SAP -> SF Title: 15. ORDRSP IDOC Sending from SAP -> SF Slug: 15-ordrsp-idoc-sending-from-sap-sf URL: https://help.skyvva.com/#article/15-ordrsp-idoc-sending-from-sap-sf ================================================================================ # 15. ORDRSP IDOC Sending from SAP -> SF ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: DESADV IDOC Sending from SAP -> SF Title: 16. DESADV IDOC Sending from SAP -> SF Slug: 16-desadv-idoc-sending-from-sap-sf URL: https://help.skyvva.com/#article/16-desadv-idoc-sending-from-sap-sf ================================================================================ # 16. DESADV IDOC Sending from SAP -> SF ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: INVOIC IDOC Sending from SAP -> SF Title: 17. INVOIC IDOC Sending from SAP -> SF Slug: 17-invoic-idoc-sending-from-sap-sf URL: https://help.skyvva.com/#article/17-invoic-idoc-sending-from-sap-sf ================================================================================ # 17. INVOIC IDOC Sending from SAP -> SF ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: DEBMAS IDOC Sending from SAP -> SF Title: a. Direct SAP to SALESFORCE Slug: a-direct-sap-to-salesforce-2 URL: https://help.skyvva.com/#article/a-direct-sap-to-salesforce-2 ================================================================================ # a. Direct SAP to SALESFORCE **This unit describes:-** How to send IDOC data from SAP to salesforce ? #### Introduction:- This document describe how to create an integration between SAP and salesforce using V3 adapter without agent . When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Configure standard IDOC. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Configuring the IDOC, port and partner Profile in SAP ( For More Details See in Chapter 5) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 9) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 9) - Creating an inbound interface: - Configuration SAP IDOC  in SALESFORCE (For More Details See in Chapter 6) - Send IDOC data on create & change - **Configuring the IDOC, port and partner Profile in SAP ** ### Use To send the outbound IDocs, you must first define a port and a partner profile. All  interfaces can use the same port and the same partner profile. In partner profile we define the system which are going to communicate between themselves and send data, here we give (SALESFORCE) as logical name which are going to be partners in data communication. We set it using WE20. Port is a medium through which we send the data it connect one system with the system in other end its unique, depend on the scenario we use diff ports, according to our scenario we will have Port type (ABAP-PI) .we select the ports we set port using WE21. Without defining a port we can’t communicate with other system it’s the linker b/w the 2 system ### Procedure For the port definition use (WE21), you can use the port type (ABAP-PI). processing in the SAP system is started with a synchronous RFC and the Function module Name will be **/SKYVVA/IDOC2REST_ADAPTER_V3**. Below is the WE21 screenshots ![](../images/2021/02/PORT.png) **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** Once you save integration below screen will display, Here we are selecting SAP Control Board. ![](../images/2021/02/SAPCB.png) **a. Create Connection Destination** Provide the details for connection details as shown below and click on continue button Type: SAP ERP Deployment: Embedded Logical System: **** ![](../images/2021/02/SAPCB1.png) Here we need to provide the SAP connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: *** ![](../images/2021/02/SAPCB2.png)Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up as below ![](../images/2021/02/SAPCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->SAP control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/SAPADP.png) Click on new and fill the required details as below and save the adapter Type : SAP ERP Connection destination select which we have create in step **(2.a)** ![](../images/2021/02/SAPADAP2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/import_metadata-_-Salesforce.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/Interface.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/mapping.png) **7. Configuration SAP IDOC  in SALESFORCE ** Now Go to Integration details tab and then select SAP Control Board ![](../images/2021/02/SAPCB.png) Select "**SAP SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below.**![](../images/2021/02/IDOC_CONFIG_1.png) ** Now select the interface you have created for IDOC and configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) **8. Send IDOC data on create & change** Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ![](../images/2021/02/Message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: ORDRSP IDOC Sending from SAP -> SF Title: a. Direct SAP to SALESFORCE Slug: a-direct-sap-to-salesforce-3 URL: https://help.skyvva.com/#article/a-direct-sap-to-salesforce-3 ================================================================================ # a. Direct SAP to SALESFORCE **This unit describes:-** How to send IDOC data from SAP to salesforce ? #### Introduction:- This document describe how to create an integration between SAP and salesforce using V3 adapter without agent . When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Configure standard IDOC. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Configuring the IDOC, port and partner Profile in SAP ( For More Details See in Chapter 5) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 9) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 9) - Creating an inbound interface: - Configuration SAP IDOC  in SALESFORCE (For More Details See in Chapter 6) - Send IDOC data on create & change - **Configuring the IDOC, port and partner Profile in SAP ** ### Use To send the outbound IDocs, you must first define a port and a partner profile. All  interfaces can use the same port and the same partner profile. In partner profile we define the system which are going to communicate between themselves and send data, here we give (SALESFORCE) as logical name which are going to be partners in data communication. We set it using WE20. Port is a medium through which we send the data it connect one system with the system in other end its unique, depend on the scenario we use diff ports, according to our scenario we will have Port type (ABAP-PI) .we select the ports we set port using WE21. Without defining a port we can’t communicate with other system it’s the linker b/w the 2 system ### Procedure For the port definition use (WE21), you can use the port type (ABAP-PI). processing in the SAP system is started with a synchronous RFC and the Function module Name will be **/SKYVVA/IDOC2REST_ADAPTER_V3**. Below is the WE21 screenshots ![](../images/2021/02/PORT.png) **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** Once you save integration below screen will display, Here we are selecting SAP Control Board. ![](../images/2021/02/SAPCB.png) **a. Create Connection Destination** Provide the details for connection details as shown below and click on continue button Type: SAP ERP Deployment: Embedded Logical System: **** ![](../images/2021/02/SAPCB1.png) Here we need to provide the SAP connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: *** ![](../images/2021/02/SAPCB2.png)Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up as below ![](../images/2021/02/SAPCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->SAP control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/SAPADP.png) Click on new and fill the required details as below and save the adapter Type : SAP ERP Connection destination select which we have create in step **(2.a)** ![](../images/2021/02/SAPADAP2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/import_metadata-_-Salesforce.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/Interface.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/mapping.png) **7. Configuration SAP IDOC  in SALESFORCE ** Now Go to Integration details tab and then select SAP Control Board ![](../images/2021/02/SAPCB.png) Select "**SAP SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below.**![](../images/2021/02/IDOC_CONFIG_1.png) ** Now select the interface you have created for IDOC and configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) **8. Send IDOC data on create & change** Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ![](../images/2021/02/Message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: DESADV IDOC Sending from SAP -> SF Title: a. Direct SAP to SALESFORCE Slug: a-direct-sap-to-salesforce-4 URL: https://help.skyvva.com/#article/a-direct-sap-to-salesforce-4 ================================================================================ # a. Direct SAP to SALESFORCE **This unit describes:-** How to send IDOC data from SAP to salesforce ? #### Introduction:- This document describe how to create an integration between SAP and salesforce using V3 adapter without agent . When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Configure standard IDOC. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Configuring the IDOC, port and partner Profile in SAP ( For More Details See in Chapter 5) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 9) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 9) - Creating an inbound interface: - Configuration SAP IDOC  in SALESFORCE (For More Details See in Chapter 6) - Send IDOC data on create & change - **Configuring the IDOC, port and partner Profile in SAP ** ### Use To send the outbound IDocs, you must first define a port and a partner profile. All  interfaces can use the same port and the same partner profile. In partner profile we define the system which are going to communicate between themselves and send data, here we give (SALESFORCE) as logical name which are going to be partners in data communication. We set it using WE20. Port is a medium through which we send the data it connect one system with the system in other end its unique, depend on the scenario we use diff ports, according to our scenario we will have Port type (ABAP-PI) .we select the ports we set port using WE21. Without defining a port we can’t communicate with other system it’s the linker b/w the 2 system ### Procedure For the port definition use (WE21), you can use the port type (ABAP-PI). processing in the SAP system is started with a synchronous RFC and the Function module Name will be **/SKYVVA/IDOC2REST_ADAPTER_V3**. Below is the WE21 screenshots ![](../images/2021/02/PORT.png) **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** Once you save integration below screen will display, Here we are selecting SAP Control Board. ![](../images/2021/02/SAPCB.png) **a. Create Connection Destination** Provide the details for connection details as shown below and click on continue button Type: SAP ERP Deployment: Embedded Logical System: **** ![](../images/2021/02/SAPCB1.png) Here we need to provide the SAP connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: *** ![](../images/2021/02/SAPCB2.png)Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up as below ![](../images/2021/02/SAPCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->SAP control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/SAPADP.png) Click on new and fill the required details as below and save the adapter Type : SAP ERP Connection destination select which we have create in step **(2.a)** ![](../images/2021/02/SAPADAP2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/import_metadata-_-Salesforce.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/Interface.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/mapping.png) **7. Configuration SAP IDOC  in SALESFORCE ** Now Go to Integration details tab and then select SAP Control Board ![](../images/2021/02/SAPCB.png) Select "**SAP SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below.**![](../images/2021/02/IDOC_CONFIG_1.png) ** Now select the interface you have created for IDOC and configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) **8. Send IDOC data on create & change** Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ![](../images/2021/02/Message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: INVOIC IDOC Sending from SAP -> SF Title: a. Direct SAP to SALESFORCE Slug: a-direct-sap-to-salesforce-5 URL: https://help.skyvva.com/#article/a-direct-sap-to-salesforce-5 ================================================================================ # a. Direct SAP to SALESFORCE **This unit describes:-** How to send IDOC data from SAP to salesforce ? #### Introduction:- This document describe how to create an integration between SAP and salesforce using V3 adapter without agent . When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Configure standard IDOC. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Configuring the IDOC, port and partner Profile in SAP ( For More Details See in Chapter 5) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 9) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 9) - Creating an inbound interface: - Configuration SAP IDOC  in SALESFORCE (For More Details See in Chapter 6) - Send IDOC data on create & change - **Configuring the IDOC, port and partner Profile in SAP ** ### Use To send the outbound IDocs, you must first define a port and a partner profile. All  interfaces can use the same port and the same partner profile. In partner profile we define the system which are going to communicate between themselves and send data, here we give (SALESFORCE) as logical name which are going to be partners in data communication. We set it using WE20. Port is a medium through which we send the data it connect one system with the system in other end its unique, depend on the scenario we use diff ports, according to our scenario we will have Port type (ABAP-PI) .we select the ports we set port using WE21. Without defining a port we can’t communicate with other system it’s the linker b/w the 2 system ### Procedure For the port definition use (WE21), you can use the port type (ABAP-PI). processing in the SAP system is started with a synchronous RFC and the Function module Name will be **/SKYVVA/IDOC2REST_ADAPTER_V3**. Below is the WE21 screenshots ![](../images/2021/02/PORT.png) **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** Once you save integration below screen will display, Here we are selecting SAP Control Board. ![](../images/2021/02/SAPCB.png) **a. Create Connection Destination** Provide the details for connection details as shown below and click on continue button Type: SAP ERP Deployment: Embedded Logical System: **** ![](../images/2021/02/SAPCB1.png) Here we need to provide the SAP connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: *** ![](../images/2021/02/SAPCB2.png)Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up as below ![](../images/2021/02/SAPCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->SAP control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/SAPADP.png) Click on new and fill the required details as below and save the adapter Type : SAP ERP Connection destination select which we have create in step **(2.a)** ![](../images/2021/02/SAPADAP2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/import_metadata-_-Salesforce.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/Interface.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/mapping.png) **7. Configuration SAP IDOC  in SALESFORCE ** Now Go to Integration details tab and then select SAP Control Board ![](../images/2021/02/SAPCB.png) Select "**SAP SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below.**![](../images/2021/02/IDOC_CONFIG_1.png) ** Now select the interface you have created for IDOC and configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) **8. Send IDOC data on create & change** Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ![](../images/2021/02/Message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: ORDRSP IDOC Sending from SAP -> SF Title: b. Using Agent Slug: b-using-agent-2 URL: https://help.skyvva.com/#article/b-using-agent-2 ================================================================================ # b. Using Agent **This unit describes:-** How to send IDOC data from SAP to salesforce Using Agent? #### Introduction:- This document describe how to create an integration between SAP and salesforce using V3 adapter Using Agent . When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Configure standard IDOC. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Configuring the IDOC, port and partner Profile in SAP ( For More Details See in Chapter 5) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 10) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 10) - Creating an inbound interface: - Configuration SAP IDOC  in SALESFORCE (For More Details See in Chapter 7) - Send IDOC data on create & change - **Configuring the IDOC, port and partner Profile in SAP ** ### Use To send the outbound IDocs, you must first define a port and a partner profile. All  interfaces can use the same port and the same partner profile. In partner profile we define the system which are going to communicate between themselves and send data, here we give (SALESFORCE) as logical name which are going to be partners in data communication. We set it using WE20. Port is a medium through which we send the data it connect one system with the system in other end its unique, depend on the scenario we use diff ports, according to our scenario we will have Port type (ABAP-PI) .we select the ports we set port using WE21. Without defining a port we can’t communicate with other system it’s the linker b/w the 2 system ### Procedure For the port definition use (WE21), you can use the port type (ABAP-PI). processing in the SAP system is started with a synchronous RFC and the Function module Name will be **/SKYVVA/IDOC2REST_ADAPTER_V3**. Below is the WE21 screenshots ![](../images/2021/02/PORT.png) **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** **a. Create Connection Destination** Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Provide the details for connection details as shown below and click on continue button Note : Always select **Type:** "AGENT SAP ERP" ![](../images/2021/02/AGENT_CB1.png) Here we need to provide the agent connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** Provide the details of Agent as shown ![](../images/2021/02/AGENT_CB2.png) Once we provide the details we need to ping the agent Connection. Then we can see the pop-up as below ![](../images/2021/02/AGCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->agent control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/Adapter.png) Here we need to provide the sap details as below Name      : Any meaning full name Type      : Always “Agent SAP ERP” for agent Host Url  : http://xxxx.com Direction : Inbound/outbound Port      : 16xxx (sap port) Username  : xxxx(sap user id) Password  : ******(sap user id pass) Authentication  : always (basic) SAPID     : ID7 (Sap system id ) Client    : (sap client ) Is Https  : select if using Object format : Idoc, BAPI, Table Logical name  : any unique name Connection destination : select one create for agent ![](../images/2021/02/adapter2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/Agent_metadata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/Interface.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/mapping.png) **7. Configuration SAP IDOC  in SALESFORCE ** **IDOC Configuration in SALESFORCE using AGENT** Now Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Select "**AGENT SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below. ![](../images/2021/02/AGENT_IDOC_CONFIG.png) Now select the interface you have created for IDOC and configure IDOC routing details as shown below **![](../images/2021/02/IDOC_CONFIG_1.png) ** Now you can configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor **8. Send IDOC data on create & change** Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ![](../images/2021/02/Message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: DEBMAS IDOC Sending from SAP -> SF Title: b. Using Agent Slug: b-using-agent-3 URL: https://help.skyvva.com/#article/b-using-agent-3 ================================================================================ # b. Using Agent **This unit describes:-** How to send IDOC data from SAP to salesforce Using Agent? #### Introduction:- This document describe how to create an integration between SAP and salesforce using V3 adapter Using Agent . When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Configure standard IDOC. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Configuring the IDOC, port and partner Profile in SAP ( For More Details See in Chapter 5) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 10) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 10) - Creating an inbound interface: - Configuration SAP IDOC  in SALESFORCE (For More Details See in Chapter 7) - Send IDOC data on create & change - **Configuring the IDOC, port and partner Profile in SAP ** ### Use To send the outbound IDocs, you must first define a port and a partner profile. All  interfaces can use the same port and the same partner profile. In partner profile we define the system which are going to communicate between themselves and send data, here we give (SALESFORCE) as logical name which are going to be partners in data communication. We set it using WE20. Port is a medium through which we send the data it connect one system with the system in other end its unique, depend on the scenario we use diff ports, according to our scenario we will have Port type (ABAP-PI) .we select the ports we set port using WE21. Without defining a port we can’t communicate with other system it’s the linker b/w the 2 system ### Procedure For the port definition use (WE21), you can use the port type (ABAP-PI). processing in the SAP system is started with a synchronous RFC and the Function module Name will be **/SKYVVA/IDOC2REST_ADAPTER_V3**. Below is the WE21 screenshots ![](../images/2021/02/PORT.png) **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** **a. Create Connection Destination** Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Provide the details for connection details as shown below and click on continue button Note : Always select **Type:** "AGENT SAP ERP" ![](../images/2021/02/AGENT_CB1.png) Here we need to provide the agent connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** Provide the details of Agent as shown ![](../images/2021/02/AGENT_CB2.png) Once we provide the details we need to ping the agent Connection. Then we can see the pop-up as below ![](../images/2021/02/AGCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->agent control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/Adapter.png) Here we need to provide the sap details as below Name      : Any meaning full name Type      : Always “Agent SAP ERP” for agent Host Url  : http://xxxx.com Direction : Inbound/outbound Port      : 16xxx (sap port) Username  : xxxx(sap user id) Password  : ******(sap user id pass) Authentication  : always (basic) SAPID     : ID7 (Sap system id ) Client    : (sap client ) Is Https  : select if using Object format : Idoc, BAPI, Table Logical name  : any unique name Connection destination : select one create for agent ![](../images/2021/02/adapter2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/Agent_metadata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/Interface.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/mapping.png) **7. Configuration SAP IDOC  in SALESFORCE ** **IDOC Configuration in SALESFORCE using AGENT** Now Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Select "**AGENT SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below. ![](../images/2021/02/AGENT_IDOC_CONFIG.png) Now select the interface you have created for IDOC and configure IDOC routing details as shown below **![](../images/2021/02/IDOC_CONFIG_1.png) ** Now you can configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor **8. Send IDOC data on create & change** Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ![](../images/2021/02/Message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: DESADV IDOC Sending from SAP -> SF Title: b. Using Agent Slug: b-using-agent-4 URL: https://help.skyvva.com/#article/b-using-agent-4 ================================================================================ # b. Using Agent **This unit describes:-** How to send IDOC data from SAP to salesforce Using Agent? #### Introduction:- This document describe how to create an integration between SAP and salesforce using V3 adapter Using Agent . When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Configure standard IDOC. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Configuring the IDOC, port and partner Profile in SAP ( For More Details See in Chapter 5) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 10) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 10) - Creating an inbound interface: - Configuration SAP IDOC  in SALESFORCE (For More Details See in Chapter 7) - Send IDOC data on create & change - **Configuring the IDOC, port and partner Profile in SAP ** ### Use To send the outbound IDocs, you must first define a port and a partner profile. All  interfaces can use the same port and the same partner profile. In partner profile we define the system which are going to communicate between themselves and send data, here we give (SALESFORCE) as logical name which are going to be partners in data communication. We set it using WE20. Port is a medium through which we send the data it connect one system with the system in other end its unique, depend on the scenario we use diff ports, according to our scenario we will have Port type (ABAP-PI) .we select the ports we set port using WE21. Without defining a port we can’t communicate with other system it’s the linker b/w the 2 system ### Procedure For the port definition use (WE21), you can use the port type (ABAP-PI). processing in the SAP system is started with a synchronous RFC and the Function module Name will be **/SKYVVA/IDOC2REST_ADAPTER_V3**. Below is the WE21 screenshots ![](../images/2021/02/PORT.png) **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** **a. Create Connection Destination** Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Provide the details for connection details as shown below and click on continue button Note : Always select **Type:** "AGENT SAP ERP" ![](../images/2021/02/AGENT_CB1.png) Here we need to provide the agent connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** Provide the details of Agent as shown ![](../images/2021/02/AGENT_CB2.png) Once we provide the details we need to ping the agent Connection. Then we can see the pop-up as below ![](../images/2021/02/AGCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->agent control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/Adapter.png) Here we need to provide the sap details as below Name      : Any meaning full name Type      : Always “Agent SAP ERP” for agent Host Url  : http://xxxx.com Direction : Inbound/outbound Port      : 16xxx (sap port) Username  : xxxx(sap user id) Password  : ******(sap user id pass) Authentication  : always (basic) SAPID     : ID7 (Sap system id ) Client    : (sap client ) Is Https  : select if using Object format : Idoc, BAPI, Table Logical name  : any unique name Connection destination : select one create for agent ![](../images/2021/02/adapter2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/Agent_metadata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/Interface.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/mapping.png) **7. Configuration SAP IDOC  in SALESFORCE ** **IDOC Configuration in SALESFORCE using AGENT** Now Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Select "**AGENT SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below. ![](../images/2021/02/AGENT_IDOC_CONFIG.png) Now select the interface you have created for IDOC and configure IDOC routing details as shown below **![](../images/2021/02/IDOC_CONFIG_1.png) ** Now you can configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor **8. Send IDOC data on create & change** Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ![](../images/2021/02/Message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: INVOIC IDOC Sending from SAP -> SF Title: b. Using Agent Slug: b-using-agent-5 URL: https://help.skyvva.com/#article/b-using-agent-5 ================================================================================ # b. Using Agent **This unit describes:-** How to send IDOC data from SAP to salesforce Using Agent? #### Introduction:- This document describe how to create an integration between SAP and salesforce using V3 adapter Using Agent . When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Configure standard IDOC. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Configuring the IDOC, port and partner Profile in SAP ( For More Details See in Chapter 5) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 10) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 10) - Creating an inbound interface: - Configuration SAP IDOC  in SALESFORCE (For More Details See in Chapter 7) - Send IDOC data on create & change - **Configuring the IDOC, port and partner Profile in SAP ** ### Use To send the outbound IDocs, you must first define a port and a partner profile. All  interfaces can use the same port and the same partner profile. In partner profile we define the system which are going to communicate between themselves and send data, here we give (SALESFORCE) as logical name which are going to be partners in data communication. We set it using WE20. Port is a medium through which we send the data it connect one system with the system in other end its unique, depend on the scenario we use diff ports, according to our scenario we will have Port type (ABAP-PI) .we select the ports we set port using WE21. Without defining a port we can’t communicate with other system it’s the linker b/w the 2 system ### Procedure For the port definition use (WE21), you can use the port type (ABAP-PI). processing in the SAP system is started with a synchronous RFC and the Function module Name will be **/SKYVVA/IDOC2REST_ADAPTER_V3**. Below is the WE21 screenshots ![](../images/2021/02/PORT.png) **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** **a. Create Connection Destination** Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Provide the details for connection details as shown below and click on continue button Note : Always select **Type:** "AGENT SAP ERP" ![](../images/2021/02/AGENT_CB1.png) Here we need to provide the agent connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** Provide the details of Agent as shown ![](../images/2021/02/AGENT_CB2.png) Once we provide the details we need to ping the agent Connection. Then we can see the pop-up as below ![](../images/2021/02/AGCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->agent control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/Adapter.png) Here we need to provide the sap details as below Name      : Any meaning full name Type      : Always “Agent SAP ERP” for agent Host Url  : http://xxxx.com Direction : Inbound/outbound Port      : 16xxx (sap port) Username  : xxxx(sap user id) Password  : ******(sap user id pass) Authentication  : always (basic) SAPID     : ID7 (Sap system id ) Client    : (sap client ) Is Https  : select if using Object format : Idoc, BAPI, Table Logical name  : any unique name Connection destination : select one create for agent ![](../images/2021/02/adapter2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/Agent_metadata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/Interface.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/mapping.png) **7. Configuration SAP IDOC  in SALESFORCE ** **IDOC Configuration in SALESFORCE using AGENT** Now Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Select "**AGENT SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below. ![](../images/2021/02/AGENT_IDOC_CONFIG.png) Now select the interface you have created for IDOC and configure IDOC routing details as shown below **![](../images/2021/02/IDOC_CONFIG_1.png) ** Now you can configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor **8. Send IDOC data on create & change** Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ![](../images/2021/02/Message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: Inbound Interface using Bulk Mode Title: 2. HOW TO DEVELOP INBOUND INTERFACE USING Bulk Mode (SAP Control Board) Slug: test URL: https://help.skyvva.com/#article/test ================================================================================ # 2. HOW TO DEVELOP INBOUND INTERFACE USING Bulk Mode (SAP Control Board) # Introduction to Bulk SKYVVA and SFDC Bulk Mode Both SKYVVA and Salesforce Bulk API's are based on REST principles and are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. Any data operation that includes more than 2,000 records is a good candidate for Bulk mode to successfully prepare, execute, and manage an *asynchronous* workflow that makes use of the Bulk framework. Jobs with fewer than 2,000 records should involve “Batch mode” a*synchronous* calls in REST (for example, Composite) or SOAP. Using the either Skyvva Bulk  or SFDC Bulk API requires basic familiarity with software development, web services, and the Salesforce user interface. ## What’s the Difference Between Skyvva Bulk Mode and SFDC Bulk Mode Skyvva Bulk Mode's predecessor, “SFDC Bulk mode”, is available, Skyvva Bulk mode can process hierarchical and flat data but SFDC Bulk mode process flat data only, use Skyvva Bulk mode instead of SFDC Bulk Mode if you want a more streamlined workflow. Skyvva Bulk Mode provides a simple interface to load large amounts of data into your Salesforce org and to perform bulk queries on your org data. Its design is more consistent and better integrated with other Salesforce APIs. Skyvva Bulk mode also has the advantage of future innovation. **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘SAP Control Board’ as shown below screenshot. ![](../images/2023/03/Control_board.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type – SAP SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/connection.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/ping_con.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. ![](../images/2023/03/Save.png) **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/Control_1.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_Bulktest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Interface_2.png) **Enable Bulk Mode in interface** Skyvva Bulk Mode OR  SFDC Bulk mode is available in interface. User can select Skyvva Bulk 1.0 for Skyvva Bulk Mode OR SFDC Bulk 2.0 for SFDC Bulk as below screen ![](../images/2023/03/Bulk.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For the Bulk scenario you can test with the size. How many records you are going to send in a Bulk Package size. In below I am mentioning the pack size is 2. ![](../images/2023/03/bulk_size.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM_MAPP.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST.png) ![](../images/2023/03/TEST_2.png) Click on execute or hit F8. You can see the following screen. Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/Test_3.png) You can choose your interface and then click on search you will get below screen. ![](../images/2023/03/Bulk_control.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/Bulk_Shl.png) Click on setup as shown in the below screen ![](../images/2023/03/Bulk_Con_bd.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: Inbound Interface using Bulk Mode Title: 1. HOW TO DEVELOP INBOUND INTERFACE USING BULK MODE (AGENT CONTROL BOARD) Slug: how-to-develop-inbound-interface-using-bulk-mode-agent-control-board URL: https://help.skyvva.com/#article/how-to-develop-inbound-interface-using-bulk-mode-agent-control-board ================================================================================ # 1. HOW TO DEVELOP INBOUND INTERFACE USING BULK MODE (AGENT CONTROL BOARD) # Introduction to Bulk SKYVVA and SFDC Bulk Mode Both SKYVVA and Salesforce Bulk API's are based on REST principles and are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. Any data operation that includes more than 2,000 records is a good candidate for Bulk mode to successfully prepare, execute, and manage an *asynchronous* workflow that makes use of the Bulk framework. Jobs with fewer than 2,000 records should involve “Batch mode” a*synchronous* calls in REST (for example, Composite) or SOAP. Using the either Skyvva Bulk  or SFDC Bulk API requires basic familiarity with software development, web services, and the Salesforce user interface. ## What’s the Difference Between Skyvva Bulk Mode and SFDC Bulk Mode Skyvva Bulk Mode's predecessor, “SFDC Bulk mode”, is available, Skyvva Bulk mode can process hierarchical and flat data but SFDC Bulk mode process flat data only, use Skyvva Bulk mode instead of SFDC Bulk Mode if you want a more streamlined workflow. Skyvva Bulk Mode provides a simple interface to load large amounts of data into your Salesforce org and to perform bulk queries on your org data. Its design is more consistent and better integrated with other Salesforce APIs. Skyvva Bulk mode also has the advantage of future innovation. **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘Agent Control Board’ as shown below screenshot. ![](../images/2023/03/AGENT_CB.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type – Agent SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/AGENT_CB2.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/AGCB5.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter-1.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/AGENT_CB-1.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_Bulktest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Interface_2.png) **Enable Bulk Mode in interface** Skyvva Bulk Mode OR  SFDC Bulk mode is available in interface. User can select Skyvva Bulk 1.0 for Skyvva Bulk Mode OR SFDC Bulk 2.0 for SFDC Bulk as below screen ![](../images/2023/03/Bulk.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For the Bulk scenario you can test with the size. How many records you are going to send in a Bulk Package size. In below I am mentioning the pack size is 2. ![](../images/2023/03/bulk_size.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM_MAPP.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST.png) ![](../images/2023/03/TEST_2.png) Click on execute or hit F8. You can see the following screen. Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/Test_3.png) You can choose your interface and then click on search you will get below screen. ![](../images/2023/03/Bulk_control.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/Bulk_Shl.png) Click on setup as shown in the below screen ![](../images/2023/03/Bulk_Con_bd.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: Inbound Interface using Batch Mode Title: 1. HOW TO DEVELOP INBOUND INTERFACE USING Batch MODE (AGENT CONTROL BOARD) Slug: how-to-develop-inbound-interface-using-batch-mode-agent-control-board URL: https://help.skyvva.com/#article/how-to-develop-inbound-interface-using-batch-mode-agent-control-board ================================================================================ # 1. HOW TO DEVELOP INBOUND INTERFACE USING Batch MODE (AGENT CONTROL BOARD) # Introduction to SKYVVA Batch SKYVVA Batch are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. A job runs to process batches that use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. All processed batches are managed on the batch control board. ## What is Batach Processing? Batch Processing is used for running a batch job. It has more capability than synchronous and we can check job monitoring. The job must contain more than 200 and less than 5000 records, or we can utilize it with batch processing. It can store many records in one batch, and we can set time interval in batch processing scheduler of Skyvva to run anytime that you operate. Batch class in Skyvva is used to run large jobs (think thousands or millions of records!) that would exceed normal processing limits. **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘Agent Control Board’ as shown below screenshot. ![](../images/2023/03/AGENT_CB.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type – Agent SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/AGENT_CB2.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/AGCB5.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter-1.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/AGENT_CB-1.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_Bulktest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Batch_inf.png) **Enable Batch Mode in interface** Skyvva Batch Mode is available in interface. User can select Skyvva Batch checkbox as below screen ![](../images/2023/03/Batch_mode.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For the Batch scenario you can test with the size. How many records you are going to send in a batch Package size. For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM-1.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST-1.png) Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/TEST1.png) You can choose your interface and then click on search you will get below screen. Go to  scheduler screen ![](../images/2023/03/Batch_BD.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/BATCH_SCH.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: Inbound Interface using Batch Mode Title: 2. HOW TO DEVELOP INBOUND INTERFACE USING BATCH MODE (SAP CONTROL BOARD) Slug: how-to-develop-inbound-interface-using-batch-mode-sap-control-board URL: https://help.skyvva.com/#article/how-to-develop-inbound-interface-using-batch-mode-sap-control-board ================================================================================ # 2. HOW TO DEVELOP INBOUND INTERFACE USING BATCH MODE (SAP CONTROL BOARD) # Introduction to SKYVVA Batch SKYVVA Batch are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. A job runs to process batches that use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. All processed batches are managed on the batch control board. ## What is Batch Processing? Batch Processing is used for running a batch job. It has more capability than synchronous and we can check job monitoring. The job must contain more than 200 and less than 5000 records, or we can utilize it with batch processing. It can store many records in one batch, and we can set time interval in batch processing scheduler of Skyvva to run anytime that you operate. Batch class in Skyvva is used to run large jobs (think thousands or millions of records!) that would exceed normal processing limits. **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘Agent Control Board’ as shown below screenshot. ![](../images/2023/03/Control_board-1.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type –  SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/AGENT_CB2.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/AGCB5.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter-2.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/Control_board-2.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_batchtest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Batch_inf.png) **Enable Batch Mode in interface** Skyvva Batch Mode is available in interface. User can select Skyvva Batch checkbox as below screen ![](../images/2023/03/Batch_mode.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For the Batch scenario you can test with the size. How many records you are going to send in a batch Package size. For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM-1.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST-1.png) Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/TEST1.png) You can choose your interface and then click on search you will get below screen. Go to  scheduler screen ![](../images/2023/03/Batch_BD.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/BATCH_SCH.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 4. SAP to Salesforce (Using SAP Control Board) Title: 4.1 How to send data using IDoc? Slug: 1-1-how-to-send-data-using-idoc URL: https://help.skyvva.com/#article/1-1-how-to-send-data-using-idoc ================================================================================ # 4.1 How to send data using IDoc? **This unit describes:-** How to send IDOC data from SAP to salesforce ? #### Introduction:- This document describe how to create an integration between SAP and salesforce using V3 adapter without agent . When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Configure standard IDOC. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Configuring the IDOC, port and partner Profile in SAP ( For More Details See in Chapter 5) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 9) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 9) - Creating an inbound interface: - Configuration SAP IDOC  in SALESFORCE (For More Details See in Chapter 6) - Send IDOC data on create & change - **Configuring the IDOC, port and partner Profile in SAP ** ### Use To send the outbound IDocs, you must first define a port and a partner profile. All  interfaces can use the same port and the same partner profile. In partner profile we define the system which are going to communicate between themselves and send data, here we give (SALESFORCE) as logical name which are going to be partners in data communication. We set it using WE20. Port is a medium through which we send the data it connect one system with the system in other end its unique, depend on the scenario we use diff ports, according to our scenario we will have Port type (ABAP-PI) .we select the ports we set port using WE21. Without defining a port we can’t communicate with other system it’s the linker b/w the 2 system ### Procedure For the port definition use (WE21), you can use the port type (ABAP-PI). processing in the SAP system is started with a synchronous RFC and the Function module Name will be **/SKYVVA/IDOC2REST_ADAPTER_V3**. Below is the WE21 screenshots ![](../images/2021/02/PORT.png) **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** Once you save integration below screen will display, Here we are selecting SAP Control Board. ![](../images/2021/02/SAPCB.png) **a. Create Connection Destination** Provide the details for connection details as shown below and click on continue button Type: SAP ERP Deployment: Embedded Logical System: **** ![](../images/2021/02/SAPCB1.png) Here we need to provide the SAP connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: *** ![](../images/2021/02/SAPCB2.png)Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up as below ![](../images/2021/02/SAPCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->SAP control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/SAPADP.png) Click on new and fill the required details as below and save the adapter Type : SAP ERP Connection destination select which we have create in step **(2.a)** ![](../images/2021/02/SAPADAP2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/import_metadata-_-Salesforce.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/Interface.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/mapping.png) **7. Configuration SAP IDOC  in SALESFORCE ** Now Go to Integration details tab and then select SAP Control Board ![](../images/2021/02/SAPCB.png) Select "**SAP SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below.**![](../images/2021/02/IDOC_CONFIG_1.png) ** Now select the interface you have created for IDOC and configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) **8. Send IDOC data on create & change** Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ![](../images/2021/02/Message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 4. SAP to Salesforce (Using SAP Control Board) Title: 4.2 How to send data using BAPI, FM? Slug: 1-2-how-to-send-data-using-bapi-fm URL: https://help.skyvva.com/#article/1-2-how-to-send-data-using-bapi-fm ================================================================================ # 4.2 How to send data using BAPI, FM? **This unit describes:-** How to send sap data to salesforce (In Asynchronous mode) using Multitab #### Introduction:- This document describes how data can be transferred to SFDC within your own Programs. The MultiItabAdapter allows you to transfer data of different RFC/BAPI or Structures(DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-IntegrationSuite on SFDC. When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Develop function module with importing and exporting parameter. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Develop function module with importing and exporting parameter. ( For More Details See in Chapter 8) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 10) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 10) - Creating an inbound interface - SAP Function Module Configure in Salesforce: - Send SAP data using FM/Report **1. Develop function module with importing and exporting parameter. ** **  1. SAP Implementation Part** **  1.1 Prerequisites** Please use repository based typing instead of program-internal types for the RFC/BAPI definition and Structure definition (DDIC). Otherwise the Adapter will have problems at runtime. **1.2 Implement a sender module for the transfer of Internal Tables (ITAB)** In this example a SenderModule : ZV3_MULTI_ITAB_DEMO has been implemented . This Module is also used in salesforce for metadata provider in salesforce to create message type in salesforce on the Interface-definition of this module. ![](../images/2021/02/Fdemo2.png) in the importing Parameter “IM_DEBITOR_NO” has data need to send  salesforce and the exporting parameter “EX_RETURN” has field or structure coming data back from salesforce in that format. #### Here you can see an example for call skyvva interface in a asynchronous mode and process the response. ![](../images/2021/02/Demo2.png) Here you can select the query for the /SKYVVA/MULTITAB with the function name condition. The Function name(function name) above mentioned as ‘**ZV3_MULTI_ITAB_DEMO**’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **The importing Parameters** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **The Exporting Parameter** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Example Code :** **"Selecting function config data for multi-tab** SELECT SINGLE * FROM /skyvva/multitab INTO @DATA(ls_func_config) WHERE funcname = 'ZV3_MULTI_ITAB_DEMO'. "calling skyvva multi-tab function module to send data to salesforce CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3' EXPORTING im_integration_id                = ls_func_config-integrationid  " Salesforce integration id im_iinterface_id                   = ls_func_config-interfaceid    " Salesforce interface id im_endpoint                        = ls_func_config-endpointid     " Salesforce connection name im_req_structure_param_name = 'ZTT_KNA1'    " Request(importing) parameter structure it_req_data                 = im_debitor_no " bussinus data need to send to salesforce IMPORTING ex_return                   = ex_return. **Remark: the importing/exporting structure must be used in salesforce as message type.** For call skyvva interface in a Asynchronous mode do not pass the response parameter “im_req_param_name” and exporting response parameter “IM_SF_RESPONSE” in skyvva Multi-tab FM. **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** Once you save integration below screen will display, Here we are selecting SAP Control Board. ![](../images/2021/02/SAPCB.png) **a. Create Connection Destination** Provide the details for connection details as shown below and click on continue button Type: SAP ERP Deployment: Embedded Logical System: **** ![](../images/2021/02/SAPCB1.png) Here we need to provide the SAP connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: *** ![](../images/2021/02/SAPCB2.png)Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up as below ![](../images/2021/02/SAPCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->SAP control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/SAPADP.png) Click on new and fill the required details as below and save the adapter Type : SAP ERP Connection destination select which we have create in step **(2.a)** ![](../images/2021/02/SAPADAP2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/BAPI_IMPORT.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/BAPI_IMPORT2.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/BAPI_IMPORT3.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/BAPI_INTERFACE.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/Mapping-1.png) Save the interface once provide all the necessary details. **7. SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM-1.png) **8**. **Send SAP data using FM/Report** Once the save the interface, now you can go to sap  and run/call the custom function module/report in order to send sap data into salesforce. In our case we are using below function module to send data in asynchronous mode. We can also see the message in salesforce side in message monitor ![](../images/2021/02/BAPI_SF_MESSAGE.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 4. SAP to Salesforce (Using SAP Control Board) Title: 4.3. How to use Batch mode? Slug: 1-3-how-to-use-batch-mode URL: https://help.skyvva.com/#article/1-3-how-to-use-batch-mode ================================================================================ # 4.3. How to use Batch mode? # Introduction to SKYVVA Batch SKYVVA Batch are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. A job runs to process batches that use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. All processed batches are managed on the batch control board. ## What is Batch Processing? Batch Processing is used for running a batch job. It has more capability than synchronous and we can check job monitoring. The job must contain more than 200 and less than 5000 records, or we can utilize it with batch processing. It can store many records in one batch, and we can set time interval in batch processing scheduler of Skyvva to run anytime that you operate. Batch class in Skyvva is used to run large jobs (think thousands or millions of records!) that would exceed normal processing limits. **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘Agent Control Board’ as shown below screenshot. ![](../images/2023/03/Control_board-1.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type –  SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/AGENT_CB2.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/AGCB5.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter-2.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/Control_board-2.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_batchtest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Batch_inf.png) **Enable Batch Mode in interface** Skyvva Batch Mode is available in interface. User can select Skyvva Batch checkbox as below screen ![](../images/2023/03/Batch_mode.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For the Batch scenario you can test with the size. How many records you are going to send in a batch Package size. For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM-1.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST-1.png) Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/TEST1.png) You can choose your interface and then click on search you will get below screen. Go to  scheduler screen ![](../images/2023/03/Batch_BD.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/BATCH_SCH.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 4. SAP to Salesforce (Using SAP Control Board) Title: 4.4 How to use Bulk mode? Slug: 1-4-how-to-use-bulk-mode URL: https://help.skyvva.com/#article/1-4-how-to-use-bulk-mode ================================================================================ # 4.4 How to use Bulk mode? # Introduction to SFDC Bulk Mode Both SKYVVA and Salesforce Bulk API's are based on REST principles and are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. Any data operation that includes more than 2,000 records is a good candidate for Bulk mode to successfully prepare, execute, and manage an *asynchronous* workflow that makes use of the Bulk framework. Jobs with fewer than 2,000 records should involve “Batch mode” a*synchronous* calls in REST (for example, Composite) or SOAP. Using the either Skyvva Bulk  or SFDC Bulk API requires basic familiarity with software development, web services, and the Salesforce user interface. ## What’s the Difference Between Skyvva Bulk Mode and SFDC Bulk Mode Skyvva Bulk Mode's predecessor, “SFDC Bulk mode”, is available, Skyvva Bulk mode can process hierarchical and flat data but SFDC Bulk mode process flat data only, use Skyvva Bulk mode instead of SFDC Bulk Mode if you want a more streamlined workflow. Skyvva Bulk Mode provides a simple interface to load large amounts of data into your Salesforce org and to perform bulk queries on your org data. Its design is more consistent and better integrated with other Salesforce APIs. Skyvva Bulk mode also has the advantage of future innovation. **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘SAP Control Board’ as shown below screenshot. ![](../images/2023/03/Control_board.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type – SAP SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/connection.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/ping_con.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. ![](../images/2023/03/Save.png) **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/Control_1.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_Bulktest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Interface_2.png) **Enable Bulk Mode in interface** Skyvva Bulk Mode OR  SFDC Bulk mode is available in interface. User can select Skyvva Bulk 1.0 for Skyvva Bulk Mode OR SFDC Bulk 2.0 for SFDC Bulk as below screen ![](../images/2023/03/Bulk.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For the Bulk scenario you can test with the size. How many records you are going to send in a Bulk Package size. In below I am mentioning the pack size is 2. ![](../images/2023/03/bulk_size.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM_MAPP.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST.png) ![](../images/2023/03/TEST_2.png) Click on execute or hit F8. You can see the following screen. Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/Test_3.png) You can choose your interface and then click on search you will get below screen. ![](../images/2023/03/Bulk_control.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/Bulk_Shl.png) Click on setup as shown in the below screen ![](../images/2023/03/Bulk_Con_bd.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 4. SAP to Salesforce (Using SAP Control Board) Title: 4.5 How to use Auto-Switch mode? Slug: 1-5-how-to-use-autoswitch-mode-mode URL: https://help.skyvva.com/#article/1-5-how-to-use-autoswitch-mode-mode ================================================================================ # 4.5 How to use Auto-Switch mode? # Introduction to Auto-Switch Mode Both SKYVVA and Salesforce Bulk API's are based on REST principles and are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. Any data operation that includes more than 2,000 records is a good candidate for Bulk mode to successfully prepare, execute, and manage an *asynchronous* workflow that makes use of the Bulk framework. Jobs with fewer than 2,000 records should involve “Batch mode” a*synchronous* calls in REST (for example, Composite) or SOAP. Using the either Skyvva Bulk  or SFDC Bulk API requires basic familiarity with software development, web services, and the Salesforce user interface. **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘SAP Control Board’ as shown below screenshot. ![](../images/2023/03/Control_board.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type – SAP SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/connection.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/ping_con.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. ![](../images/2023/03/Save.png) **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/Control_1.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_Bulktest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Interface_2.png) **Enable Use of Auto-Switch Mode Mode in interface** ![](../images/2023/04/autoswitch.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For the **Auto-Switch** scenario you can test with the size. How many records you are going to send in a Bulk Package size. For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM_MAPP.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST.png) ![](../images/2023/03/TEST_2.png) Click on execute or hit F8. You can see the following screen. Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/Test_3.png) You can choose your interface and then click on search you will get below screen. ![](../images/2023/03/Bulk_control.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/Bulk_Shl.png) Click on setup as shown in the below screen ![](../images/2023/03/Bulk_Con_bd.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 4. SAP to Salesforce (Using SAP Control Board) Title: 4.6 How to use Salesforce Bulk mode? Slug: 1-6-how-to-use-salesforce-bulk-mode URL: https://help.skyvva.com/#article/1-6-how-to-use-salesforce-bulk-mode ================================================================================ # 4.6 How to use Salesforce Bulk mode? # Introduction to Salesforce Bulk (SKYVVA) Both SKYVVA and Salesforce Bulk API's are based on REST principles and are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. Any data operation that includes more than 2,000 records is a good candidate for Bulk mode to successfully prepare, execute, and manage an *asynchronous* workflow that makes use of the Bulk framework. Jobs with fewer than 2,000 records should involve “Batch mode” a*synchronous* calls in REST (for example, Composite) or SOAP. Using the either Skyvva Bulk  or SFDC Bulk API requires basic familiarity with software development, web services, and the Salesforce user interface. ## What’s the Difference Between Skyvva Bulk Mode and SFDC Bulk Mode Skyvva Bulk Mode's predecessor, “SFDC Bulk mode”, is available, Skyvva Bulk mode can process hierarchical and flat data but SFDC Bulk mode process flat data only, use Skyvva Bulk mode instead of SFDC Bulk Mode if you want a more streamlined workflow. Skyvva Bulk Mode provides a simple interface to load large amounts of data into your Salesforce org and to perform bulk queries on your org data. Its design is more consistent and better integrated with other Salesforce APIs. Skyvva Bulk mode also has the advantage of future innovation. **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘SAP Control Board’ as shown below screenshot. ![](../images/2023/03/Control_board.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type – SAP SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/connection.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/ping_con.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. ![](../images/2023/03/Save.png) **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/Control_1.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_Bulktest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Interface_2.png) **Enable Bulk Mode in interface** Skyvva Bulk Mode OR  SFDC Bulk mode is available in interface. User can select Skyvva Bulk 1.0 for Skyvva Bulk Mode OR SFDC Bulk 2.0 for SFDC Bulk as below screen ![](../images/2023/03/Bulk.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For the Bulk scenario you can test with the size. How many records you are going to send in a Bulk Package size. In below I am mentioning the pack size is 2. ![](../images/2023/03/bulk_size.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM_MAPP.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST.png) ![](../images/2023/03/TEST_2.png) Click on execute or hit F8. You can see the following screen. Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/Test_3.png) You can choose your interface and then click on search you will get below screen. ![](../images/2023/03/Bulk_control.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/Bulk_Shl.png) Click on setup as shown in the below screen ![](../images/2023/03/Bulk_Con_bd.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 3. IDOC Configuration Title: 3.1. IDOC Configuration in SAP Slug: 5-1-idoc-configuration-in-sap URL: https://help.skyvva.com/#article/5-1-idoc-configuration-in-sap ================================================================================ # 3.1. IDOC Configuration in SAP **This unit describes:-** How to configure routing, the Port and Partner Profile to send Idoc data to SAP #### Introduction:- IDoc is an SAP object that carries data of a business transaction from one system to another in the form of electronic message. IDoc is an acronym for **I**ntermediate **Doc**ument. The purpose of an IDoc is to transfer data or information from SAP to other systems (ie Salesforce) and vice versa.  The transfer from SAP to non-SAP system is done via EDI (Electronic Data Interchange) subsystems whereas for transfer between two SAP systems, ALE is used. IDoc can be triggered in SAP system or in EDI subsystem. This depends on the direction in which IDoc is sent and is called as Inbound IDoc and Outbound IDoc accordingly. In case of outbound flow, IDoc is triggered in SAP through document message control which is then sent to EDI subsystem. EDI converts the data from IDoc into XML or equivalent format and then sends the data to partner system through Internet. **Configuring the Port and Partner Profile ** #### Use To send the outbound IDocs, you must first define a port and a partner profile. All  interfaces can use the same port and the same partner profile. In partner profile we define the system which are going to communicate between themselves and send data, here we give (SALESFORCE) as logical name which are going to be partners in data communication. We set it using WE20. Port is a medium through which we send the data it connect one system with the system in other end its unique, depend on the scenario we use diff ports, according to our scenario we will have Port type (ABAP-PI) .we select the ports we set port using WE21. Without defining a port we can’t communicate with other system it’s the linker b/w the 2 system ### Procedure For the port definition use (WE21), you can use the port type (ABAP-PI). Processing in the SAP system is started with a synchronous RFC and the Function module Name will be **/SKYVVA/IDOC2REST_ADAPTER_V3**. To create port perform the following steps: - Go into the SAP ECC System and proceed to transaction **WE21** - This will show the following screen, Select the ABAP-PI folder from right side , enter your port name, description and function module name as “**/SKYVVA/IDOC2REST_ADAPTER_V3**” ![](../images/2021/02/PORT.png) - Now use this port in Partner Profile **(Tcode WE20)** . ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 3. IDOC Configuration Title: 3.2. IDOC Configuration in SALESFORCE (Direct SAP Connection) Slug: 2-2-idoc-configuration-in-salesforce-direct-sap-connection URL: https://help.skyvva.com/#article/2-2-idoc-configuration-in-salesforce-direct-sap-connection ================================================================================ # 3.2. IDOC Configuration in SALESFORCE (Direct SAP Connection) **This unit describes:-** How to IDOC Configuration in SALESFORCE (Direct SAP->SF) in Salesforce #### Introduction:- In this chapter, you will learn about the **“IDOC Configuration in SALESFORCE (Direct SAP->SF)”**. This is used to send  data from SAP to salesforce . **IDOC Configuration in SALESFORCE (Direct SAP->SF)** Now Go to Integration details tab and then select SAP Control Board ![](../images/2021/02/SAPCB.png) Select "**SAP SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below.**![](../images/2021/02/IDOC_CONFIG_1.png) ** Now select the interface you have created for IDOC and configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 3. IDOC Configuration Title: 3.3. IDOC Configuration in SALESFORCE (Using AGENT) Slug: 2-3-idoc-configuration-in-salesforce-using-agent URL: https://help.skyvva.com/#article/2-3-idoc-configuration-in-salesforce-using-agent ================================================================================ # 3.3. IDOC Configuration in SALESFORCE (Using AGENT) **This unit describes:-** How to IDOC Configuration in SALESFORCE using AGENT in Salesforce #### Introduction:- In this chapter, you will learn about the **“IDOC Configuration in SALESFORCE using AGENT”**. This is used to send  data from SAP to salesforce . **IDOC Configuration in SALESFORCE using AGENT** Now Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Select "**AGENT SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below. ![](../images/2021/02/AGENT_IDOC_CONFIG.png) Now select the interface you have created for IDOC and configure IDOC routing details as shown below **![](../images/2021/02/IDOC_CONFIG_1.png) ** Now you can configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 2. Create Metadata provider Title: 2.1. How to Create Metadata provider in Salesforce (Direct SAP->SF) Slug: 1-1-how-to-create-metadata-provider-in-salesforce-direct-sap-sf URL: https://help.skyvva.com/#article/1-1-how-to-create-metadata-provider-in-salesforce-direct-sap-sf ================================================================================ # 2.1. How to Create Metadata provider in Salesforce (Direct SAP->SF) **This unit describes:-** How to Create Metadata Provider and Import metadata from sap in salesforce . #### Introduction:- In this chapter, you will learn about the **“Create Metadata Provider and Import Metadata From SAP in Salesforce”**. The service is used to create message type in salesforce . #### Create Metadata Provider, Import Metadata from SAP and create message type in salesforce. To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/import_metadata-_-Salesforce.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 2. Create Metadata provider Title: 2.2. How to Create Metadata provider in Salesforce Using AGENT Slug: 1-2-how-to-create-metadata-provider-in-salesforce-using-agent URL: https://help.skyvva.com/#article/1-2-how-to-create-metadata-provider-in-salesforce-using-agent ================================================================================ # 2.2. How to Create Metadata provider in Salesforce Using AGENT **This unit describes:-** How to Create Metadata Provider and Import metadata from sap in salesforce . #### Introduction:- In this chapter, you will learn about the **“Create Metadata Provider and Import Metadata From SAP in Salesforce”**. The service is used to create message type in salesforce . #### Create Metadata Provider, Import Metadata from SAP and create message type in salesforce. To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/Agent_metadata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 5. SAP to Salesforce (Using AGENT Control Board) Title: 5.1 How to send data using IDoc? Slug: 4-1-how-to-send-data-using-idoc URL: https://help.skyvva.com/#article/4-1-how-to-send-data-using-idoc ================================================================================ # 5.1 How to send data using IDoc? **This unit describes:-** How to send IDOC data from SAP to salesforce Using Agent? #### Introduction:- This document describe how to create an integration between SAP and salesforce using V3 adapter Using Agent . When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Configure standard IDOC. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Configuring the IDOC, port and partner Profile in SAP ( For More Details See in Chapter 5) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 10) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 10) - Creating an inbound interface: - Configuration SAP IDOC  in SALESFORCE (For More Details See in Chapter 7) - Send IDOC data on create & change - **Configuring the IDOC, port and partner Profile in SAP ** ### Use To send the outbound IDocs, you must first define a port and a partner profile. All  interfaces can use the same port and the same partner profile. In partner profile we define the system which are going to communicate between themselves and send data, here we give (SALESFORCE) as logical name which are going to be partners in data communication. We set it using WE20. Port is a medium through which we send the data it connect one system with the system in other end its unique, depend on the scenario we use diff ports, according to our scenario we will have Port type (ABAP-PI) .we select the ports we set port using WE21. Without defining a port we can’t communicate with other system it’s the linker b/w the 2 system ### Procedure For the port definition use (WE21), you can use the port type (ABAP-PI). processing in the SAP system is started with a synchronous RFC and the Function module Name will be **/SKYVVA/IDOC2REST_ADAPTER_V3**. Below is the WE21 screenshots ![](../images/2021/02/PORT.png) **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** **a. Create Connection Destination** Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Provide the details for connection details as shown below and click on continue button Note : Always select **Type:** "AGENT SAP ERP" ![](../images/2021/02/AGENT_CB1.png) Here we need to provide the agent connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** Provide the details of Agent as shown ![](../images/2021/02/AGENT_CB2.png) Once we provide the details we need to ping the agent Connection. Then we can see the pop-up as below ![](../images/2021/02/AGCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->agent control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/Adapter.png) Here we need to provide the sap details as below Name      : Any meaning full name Type      : Always “Agent SAP ERP” for agent Host Url  : http://xxxx.com Direction : Inbound/outbound Port      : 16xxx (sap port) Username  : xxxx(sap user id) Password  : ******(sap user id pass) Authentication  : always (basic) SAPID     : ID7 (Sap system id ) Client    : (sap client ) Is Https  : select if using Object format : Idoc, BAPI, Table Logical name  : any unique name Connection destination : select one create for agent ![](../images/2021/02/adapter2.png) Click on ping connection for test adapter is working or not **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/Agent_metadata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/import_metadata-_search.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/messagw_type.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/Interface.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/mapping.png) **7. Configuration SAP IDOC  in SALESFORCE ** **IDOC Configuration in SALESFORCE using AGENT** Now Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Select "**AGENT SAP ERP" **Destination created previously then click on SAP IDOC Configuration Tab as shown below. ![](../images/2021/02/AGENT_IDOC_CONFIG.png) Now select the interface you have created for IDOC and configure IDOC routing details as shown below **![](../images/2021/02/IDOC_CONFIG_1.png) ** Now you can configure IDOC routing details as shown below ![](../images/2021/02/IDOC_CONFIG_2.png) ![](../images/2021/02/IDOC_CONFIG_3.png) Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor **8. Send IDOC data on create & change** Once the IDOC assignment is done now you can go to sap create idoc and its send to salesforce  . we can see message in salesforce massage monitor ![](../images/2021/02/Message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 5. SAP to Salesforce (Using AGENT Control Board) Title: 5.2 How to send data using BAPI, FM? Slug: 4-2-how-to-send-data-using-bapi-fm URL: https://help.skyvva.com/#article/4-2-how-to-send-data-using-bapi-fm ================================================================================ # 5.2 How to send data using BAPI, FM? **This unit describes:-** How to send sap data to salesforce through Agent  (In Asynchronous mode) using Multitab #### Introduction:- This document describes how data can be transferred to SFDC within your own Programs. The MultiItabAdapter allows you to transfer data of different RFC/BAPI or Structures(DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-IntegrationSuite on SFDC. When talking about inbound interface in this document the direction SAP to Salesforce  . Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in Salesforce . This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems(SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce  process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite** - SKYVVA package installed at SAP side - SKYVVA package installed at Salesforce side - check the skyvva service active or not in SAP using **Tcode SICF **(For More Details See in Chapter (4.a)) - Develop function module with importing and exporting parameter. **The development of an interface involved set of steps to be done in SAP and SALESFORCE** - Develop function module with importing and exporting parameter. ( For More Details See in Chapter 8) - Create the Integration - Create SAP Connection Destination And Create Adapter (For More Details See in Chapter (4.b)) - Create Metadata Provider and Create Repository (For More Details See in Chapter 10) - Create the message type using Import SAP Metadata ( For More Details See in Chapter 10) - Creating an inbound interface - SAP Function Module Configure in Salesforce: - Send SAP data using FM/Report   **1. Develop function module with importing and exporting parameter. ** **  1. SAP Implementation Part** **  1.1 Prerequisites** Please use repository based typing instead of program-internal types for the RFC/BAPI definition and Structure definition (DDIC). Otherwise the Adapter will have problems at runtime. **1.2 Implement a sender module for the transfer of Internal Tables (ITAB)** In this example a SenderModule : ZV3_MULTI_ITAB_DEMO has been implemented . This Module is also used in salesforce for metadata provider in salesforce to create message type in salesforce on the Interface-definition of this module. ![](../images/2021/02/Fdemo2.png) in the importing Parameter “IM_DEBITOR_NO” has data need to send  salesforce and the exporting parameter “EX_RETURN” has field or structure coming data back from salesforce in that format. #### Here you can see an example for call skyvva interface in a synchronous mode and process the response. ![](../images/2021/02/Demo2.png) **The Exporting Parameter**. 1.im_integration is the mandatory parameter in which we pass salesforce integration Id 2. im_iinterface is the mandatory parameter in which we pass salesforce interface Id. 3. im_endpoint is the mandatory parameter in which we pass salesforce endpoint name in endpoint we have maintain salesforce login details . 4. im_resp_param_name is the optional parameter in which we pass response param name which is exporting parameter of skyvva calling FM (Multi-tab). 5. im_req_param_name is the mandatory parameter in which we pass request param name which is importing parameter of skyvva calling FM . 6. im_req_data is the mandatory parameter in which we pass request data internal table which is importing parameter of skyvva calling FM **The Exporting Parameter** 1. EX_RETURN is the parameter which return error/success message . 2. IM_SF_RESPONSE is the parameter which return the response from salesforce which is the exporting parameter of calling skyvva FM. Example Code : **"Selecting function config data for multi-tab** SELECT SINGLE * FROM /skyvva/multitab INTO @DATA(ls_func_config) WHERE funcname = 'ZV3_MULTI_ITAB_DEMO'. "calling skyvva multi-tab function module to send data to salesforce CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3' EXPORTING im_integration_id                = ls_func_config-integrationid  " Salesforce integration id im_iinterface_id                   = ls_func_config-interfaceid    " Salesforce interface id im_endpoint                        = ls_func_config-endpointid     " Salesforce connection name im_req_structure_param_name = 'ZTT_KNA1'    " Request(importing) parameter structure it_req_data                 = im_debitor_no " bussinus data need to send to salesforce IMPORTING ex_return                   = ex_return. **Remark: the importing/exporting structure must be used in salesforce as message type.** For call skyvva interface in a Asynchronous mode do not pass the response parameter “im_req_param_name” and exporting response parameter “IM_SF_RESPONSE” in skyvva Multi-tab FM. **2. Create the Integration** Goto the integration tab and Create the Integration in salesforce as below ![](../images/2021/02/Integration.png) **3. Create SAP Connection Destination And Create Adapter ** Once you have save the integration below screen will display, Here we are selecting AGENT Control Board. **a. Create Connection Destination** Go to Integration details tab and then select AGENT Control Board ![](../images/2021/02/AGENT_CB.png) Provide the details for connection details as shown below and click on continue button Note : Always select **Type:** "AGENT SAP ERP" ![](../images/2021/02/AGENT_CB1.png) Here we need to provide the agent connection details as below Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** Provide the details of Agent as shown ![](../images/2021/02/AGENT_CB2.png) Once we provide the details we need to ping the agent Connection. Then we can see the pop-up as below ![](../images/2021/02/AGCB3.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2021/02/AGCB4.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2021/02/AGCB5.png) **b. Create Adapter** To create adapter goto integration->agent control board then select adapter tab and click on new button and fill the details as below. ![](../images/2021/02/Adapter.png) Here we need to provide the sap details as below Name      : Any meaning full name Type      : Always “Agent SAP ERP” for agent Host Url  : http://xxxx.com Direction : Inbound/outbound Port      : 16xxx (sap port) Username  : xxxx(sap user id) Password  : ******(sap user id pass) Authentication  : always (basic) SAPID     : ID7 (Sap system id ) Client    : (sap client ) Is Https  : select if using Object format : Idoc, BAPI, Table Logical name  : any unique name Connection destination : select one create for agent ![](../images/2021/02/adapter2.png) Click on ping connection for test adapter is working or not ******** Click on ping connection for test adapter is working or not then save the adapter **4. Create Metadata Provider and Create Repository ** To create metadata provider click on tab **metadata provider** then click on **New** button and  give the metadata name then **Save **as shown below screenshot ![](../images/2021/02/Metadata.png) After save metadata below screen will come, Now click on **New **button to create repositories as shown below ![](../images/2021/02/Repositori.png) Give the repository name and select object format type :**(''SAP IDOC,SAP BAPI, SAP Table/view)** and save as shown below ![](../images/2021/02/REPO_S.png) After save the Repository below screen will come , now click on button **"Import SAP metadata"** ![](../images/2021/02/SAP_REPO_imp.png) Select the below details from list as per your requirement then click on retrieve button as shown below ![](../images/2021/02/Agent_metadata_imp.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5. Create the message type using Import SAP Metadata ** Select your object name from list and click on create message type . ![](../images/2021/02/BAPI_IMPORT2.png) Once you click on **Create Message Type** it will create message type in salesforce as shown below ![](../images/2021/02/BAPI_IMPORT3.png) Now use this message type in Interface . **6.Creating an inbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, adapter  as shown in the screenshots below ![](../images/2021/02/BAPI_INTERFACE.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter as below ![](../images/2021/02/Interface_adp.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2021/02/Mapping-1.png) Save the interface once provide all the necessary details. 7.SAP Function Module Configure in Salesforce: Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM-1.png) **8. **Send SAP data using FM/Report Once the save the interface, now you can go to sap  and run/call the custom function module/report in order to send sap data into salesforce. In our case we are using below function module to send data in asynchronous mode. We can also see the message in salesforce side in message monitor ![](../images/2021/02/BAPI_SF_MESSAGE.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 5. SAP to Salesforce (Using AGENT Control Board) Title: 5.3. How to use Batch mode? Slug: 4-3-how-to-use-batch-mode URL: https://help.skyvva.com/#article/4-3-how-to-use-batch-mode ================================================================================ # 5.3. How to use Batch mode? # Introduction to SKYVVA Batch SKYVVA Batch are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. A job runs to process batches that use API Dynamic Switch where incoming data goes automatically to be processed as synchronous, batch or bulk. All processed batches are managed on the batch control board. ## What is Batach Processing? Batch Processing is used for running a batch job. It has more capability than synchronous and we can check job monitoring. The job must contain more than 200 and less than 5000 records, or we can utilize it with batch processing. It can store many records in one batch, and we can set time interval in batch processing scheduler of Skyvva to run anytime that you operate. Batch class in Skyvva is used to run large jobs (think thousands or millions of records!) that would exceed normal processing limits. **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘Agent Control Board’ as shown below screenshot. ![](../images/2023/03/AGENT_CB.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type – Agent SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/AGENT_CB2.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/AGCB5.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter-1.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/AGENT_CB-1.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_Bulktest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Batch_inf.png) **Enable Batch Mode in interface** Skyvva Batch Mode is available in interface. User can select Skyvva Batch checkbox as below screen ![](../images/2023/03/Batch_mode.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For the Batch scenario you can test with the size. How many records you are going to send in a batch Package size. For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM-1.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST-1.png) Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/TEST1.png) You can choose your interface and then click on search you will get below screen. Go to  scheduler screen ![](../images/2023/03/Batch_BD.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/BATCH_SCH.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 5. SAP to Salesforce (Using AGENT Control Board) Title: 5.4 How to use SFDC Bulk mode? Slug: 4-4-how-to-use-bulk-mode URL: https://help.skyvva.com/#article/4-4-how-to-use-bulk-mode ================================================================================ # 5.4 How to use SFDC Bulk mode? # Introduction to SFDC Bulk Mode Both SKYVVA and Salesforce Bulk API's are based on REST principles and are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. Any data operation that includes more than 2,000 records is a good candidate for Bulk mode to successfully prepare, execute, and manage an *asynchronous* workflow that makes use of the Bulk framework. Jobs with fewer than 2,000 records should involve “Batch mode” a*synchronous* calls in REST (for example, Composite) or SOAP. Using the either Skyvva Bulk  or SFDC Bulk API requires basic familiarity with software development, web services, and the Salesforce user interface. ## What’s the Difference Between Skyvva Bulk Mode and SFDC Bulk Mode Skyvva Bulk Mode's predecessor, “SFDC Bulk mode”, is available, Skyvva Bulk mode can process hierarchical and flat data but SFDC Bulk mode process flat data only, use Skyvva Bulk mode instead of SFDC Bulk Mode if you want a more streamlined workflow. Skyvva Bulk Mode provides a simple interface to load large amounts of data into your Salesforce org and to perform bulk queries on your org data. Its design is more consistent and better integrated with other Salesforce APIs. Skyvva Bulk mode also has the advantage of future innovation. **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘Agent Control Board’ as shown below screenshot. ![](../images/2023/03/AGENT_CB.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type – Agent SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/AGENT_CB2.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/AGCB5.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter-1.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/AGENT_CB-1.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_Bulktest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Interface_2.png) **Enable Bulk Mode in interface** Skyvva Bulk Mode OR  SFDC Bulk mode is available in interface. User can select Skyvva Bulk 1.0 for Skyvva Bulk Mode OR SFDC Bulk 2.0 for SFDC Bulk as below screen ![](../images/2023/03/Bulk.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For the Bulk scenario you can test with the size. How many records you are going to send in a Bulk Package size. In below I am mentioning the pack size is 2. ![](../images/2023/03/bulk_size.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM_MAPP.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST.png) ![](../images/2023/03/TEST_2.png) Click on execute or hit F8. You can see the following screen. Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/Test_3.png) You can choose your interface and then click on search you will get below screen. ![](../images/2023/03/Bulk_control.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/Bulk_Shl.png) Click on setup as shown in the below screen ![](../images/2023/03/Bulk_Con_bd.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 5. SAP to Salesforce (Using AGENT Control Board) Title: 5.5 How to use AUTO-SWITCH mode? Slug: 4-5-how-to-use-auoswitch-mode URL: https://help.skyvva.com/#article/4-5-how-to-use-auoswitch-mode ================================================================================ # 5.5 How to use AUTO-SWITCH mode? # Introduction to AUTO-SWITCH Both SKYVVA and Salesforce API's are based on REST principles and are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. Any data operation that includes more than 2,000 records is a good candidate for auto-switch mode to successfully prepare, execute, and manage an *asynchronous* workflow that makes use of the Bulk/Batch framework. Jobs with fewer than 2,000 records should involve “Batch mode” a*synchronous* calls in REST (for example, Composite) or SOAP. Using the either Batch  or  Bulk API requires basic familiarity with software development, web services, and the Salesforce user interface. ## What’s the Difference Between Skyvva Bulk Mode and SFDC **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘Agent Control Board’ as shown below screenshot. ![](../images/2023/03/AGENT_CB.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type – Agent SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/AGENT_CB2.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/AGCB5.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter-1.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/AGENT_CB-1.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_Bulktest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Interface_2.png) **Enable auto-switch Mode in interface** ![](../images/2023/04/autoswitch.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM_MAPP.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST.png) ![](../images/2023/03/TEST_2.png) Click on execute or hit F8. You can see the following screen. Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/Test_3.png) You can choose your interface and then click on search you will get below screen. ![](../images/2023/03/Bulk_control.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/Bulk_Shl.png) Click on setup as shown in the below screen ![](../images/2023/03/Bulk_Con_bd.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 5. SAP to Salesforce (Using AGENT Control Board) Title: 5.6 How to use Salesforce Bulk mode? Slug: 4-6-how-to-use-salesforce-bulk-mode URL: https://help.skyvva.com/#article/4-6-how-to-use-salesforce-bulk-mode ================================================================================ # 5.6 How to use Salesforce Bulk mode? # Introduction to Salesforce Bulk (SKYVVA) Both SKYVVA and Salesforce Bulk API's are based on REST principles and are optimized for working with large sets of data. Use them to insert, update, upsert, or delete many records *asynchronously*, meaning that you submit a request and come back for the results later. Salesforce processes the request in the background. Any data operation that includes more than 2,000 records is a good candidate for Bulk mode to successfully prepare, execute, and manage an *asynchronous* workflow that makes use of the Bulk framework. Jobs with fewer than 2,000 records should involve “Batch mode” a*synchronous* calls in REST (for example, Composite) or SOAP. Using the either Skyvva Bulk  or SFDC Bulk API requires basic familiarity with software development, web services, and the Salesforce user interface. ## What’s the Difference Between Skyvva Bulk Mode and SFDC Bulk Mode Skyvva Bulk Mode's predecessor, “SFDC Bulk mode”, is available, Skyvva Bulk mode can process hierarchical and flat data but SFDC Bulk mode process flat data only, use Skyvva Bulk mode instead of SFDC Bulk Mode if you want a more streamlined workflow. Skyvva Bulk Mode provides a simple interface to load large amounts of data into your Salesforce org and to perform bulk queries on your org data. Its design is more consistent and better integrated with other Salesforce APIs. Skyvva Bulk mode also has the advantage of future innovation. **Introduction(Skyvva): ** This document describes how data can be transferred to Salesforce within your own programs. The Multi-Itab-Adapter allows you to transfer data of different RFC/BAPI or Structures (DDIC), which you have filled before in your own FM/Report, within one SKYVVA FM Call. The routing to the different Salesforce Objects is implemented with workflow in Skyvva-Integration Suite on Salesforce. When talking about inbound interface in this document the direction SAP to Salesforce. Interface will be called from sap to Salesforce. The development of an interface involved steps to be done in salesforce. This document does not describe the work at SAP-Backend e.g. developing business logic in SAP-Backend with ABAP. SKYVVA integrations connect Salesforce to your backend systems (SAP), whether by referencing through a call, or replicating the data into Salesforce. While SKYVVA provides a rich suite of pre-built integrations for SAP->Salesforce process integration, the SKYVVA Integration App gives you the ability to quickly and easily create your own integrations. The SAP integrations support S/4HANA in addition to SAP ECC, and we can also integrate with other systems via REST, SOAP, and OData web services. **Prerequisite:** SKYVVA Package installed at SAP Side SKYVVA Package installed at Salesforce Side Check the SKYVVA Service active or not in SAP using transaction SICF **To Develop Inbound Interface below steps we need to done step by step. ** - **Develop Function Module in SAP ** - **Create Integration in Salesforce** - **Create Connection Destination and Adapter** - **Create Metadata Provider and Create Repository ** - **Create the Message Type using Import SAP Metadata ** - **Creating Inbound Interface ** - **Test – Send SAP Data using FM Execute FM which is developed in the previous step)** The above steps detail explanation and screenshots to be continued. #### 1. Develop Function Module in SAP **Prerequisites to develop FM ** Please use repository-based typing instead of program internal types for the RFC /BAPI Definitions and structure definition (DDIC). Otherwise, we may encounter problems at runtime. - **Implement a sender module for the transfer of internal tables (ITAB)**  Here the sender module is ‘ZNK_FM_BULK_TEST’. But in the below screenshot we have shown the ZNK_TEST_MULTI_ITAB. The same we used in salesforce for metadata provider in salesforce to create message type in sales force on the interface definition of this module. ![](../images/2023/03/FM.png) In the above FM you can see Importing and Exporting parameters **IM_DEBITOR_NO:** This is the importing parameter in the above FM which will be used for the send the SAP data to Salesforce. Here in this example, we are sending General data customer master **EX_RETURN:** This is the exporting parameter in the above FM which will be used for the get the response either error messages nor success messages from the Salesforce after sending the data SAP to Salesforce. ![](../images/2023/03/FM_2.png) Here we have used select query for the /SKYVVA/MULTITAB with the funcname condition. The Function name(funcname) above mentioned as ‘ZNK_FM_BULK_TEST’ you can configure in salesforce side that you can see later steps. If you can configure this salesforce the entry will be automatically store in the /SKYVVA/MULTITAB Table. In the above example we can see an example for call SKYVVA Interface in a synchronous mode and the response. **SKYVVA Interface explanation:** **Exporting Parameters of SKYVVA Interface:** **IM_INTEGRATION:** Passing Salesforce Integration ID(Mandatory) **IM_INTERFACE:** Passing Salesforce Interface ID(Mandatory) **IM_ENDPOINT:** Passing Salesforce Endpoint name is nothing but salesforce login details (Mandatory) **IM_RESP_PARAM_NAME:** Passing Response Param Name is nothing but data type (Optional) **IM_REQ_PARAM_NAME:** Passing Request Param Name is nothing but data type (Mandatory) **IM_REQ_DATA:** Passing Request Data in the internal table format (Mandatory) **Importing Parameters of SKYVVA Interface:** **EX_RETURN:** Success / Errors Messages **IM_SF_RESPONSE:**  Salesforce response **Selecting function config data for multi-tab / FM logic explanation** **Function Module Logic:**   CONSTANTS c_fname TYPE funcname VALUE ‘ZNK_FM_BULK_TEST’. *&--- Get the function config data for multi tab   SELECT SINGLE       INTEGRATIONID,       INTERFACEID,       ENDPOINTID     FROM /SKYVVA/MULTITAB     INTO @DATA(LS_FUN_CONFIG)    WHERE FUNCNAME = @C_FNAME . *&--- CALLING SKYVVA FM TO SEND DATA TO SF   CALL FUNCTION '/SKYVVA/MULTI_ITAB_ADAPTER_V3'     EXPORTING       IM_INTEGRATION_ID = LS_FUN_CONFIG-INTEGRATIONID "Salesforce Integration ID       IM_IINTERFACE_ID = LS_FUN_CONFIG-INTERFACEID" Salesforce Interface ID       IM_ENDPOINT = LS_FUN_CONFIG-ENDPOINTID " Salesforce Connection name       IM_REQ_STRUCTURE_PARAM_NAME = 'ZTT_KNA1'" Request Parameter Structure       IT_REQ_DATA                 = IM_DEBITOR_NO " Business Data     IMPORTING       EX_RETURN                   = EX_RETURN." Salesforce response In the above source code select query we have used for the get the function config data for multi tab from /SKYVVA/MULTITAB table. SKYVVA Interface is /SKYVVA/MULTI_ITAB_ADAPTER_V3. Note: The importing or exporting structure must be defined in salesforce as a Message Type In the above example SKYVVA Interface we are not passing the response parameter ‘IM_REQ_PARAM_NAME’ (Importing Parameter) and ‘IM_SF_RESPONSE’ (Exporting Parameter) in an Asynchronous mode. **2.Creating Integration in Salesforce** Login to the test.salesforce.com with your credentials. Go to the  and type SKYVVA in search and choose SKYVVA Integration Cloud ![](../images/2023/03/Integ.png) It’s Navigate to the Integration tab. Here you can click on the new  and give the Integration name as shown in the below screenshot  or Search for existing Integration. ![](../images/2023/03/Integ_2.png) Then you can see the newly created integration in the separate tab as shown below. ![](../images/2023/03/Integ_3.png)3.**Create Connection Destination and Adapter** **Create Connection Destination:** In the above step you can see the Integration tab in the details section you can find the custom links choose ‘Agent Control Board’ as shown below screenshot. ![](../images/2023/03/AGENT_CB.png) You can open below screen and you are in the Configuration Tab. Provide all the necessary details and click on continue as shown below screenshot. Destination – New (As you are creating new destination) Type – Agent SAP ERP (Here you can choose SAP ERP as we are checking with the SAP ERP System – Mandatory Field) Logical System: Given SAP Logical System name (Mandatory Field) Name – Give any name (Mandatory Field) Description – Give any details description of your connection (Optional Field) SKYVVA App Version – SKYVVA Version you can provide (Optional Field) ![](../images/2023/03/AGENT_CB2.png) After clicking the continue button now you will navigate to the Salesforce -> SAP S/4 HANA Tab section. Here you will provide the all the necessary details to connect with the SAP S/4 HANA System. In this screen you are giving SAP credentials Host URL: SAP ERP system server URL (Mandatory Field) SAP URL for Ex: [https://demo.app.cnsint.de](https://s6h.app.cnsint.de) Port Forward: Above server port number (Mandatory Field) SAP URL port for Ex: 443 Username: SAP ERP System username of yours (Mandatory Field) SAP Username for Ex: *****(Sensitive Information) Password: SAP ERP System password of yours (Mandatory Field) SAP Password for Ex: ******(Sensitive Information) Client: What is the client we are using in SAP S/4 HANA System (Mandatory Field) SAP Client for Ex: *** (Sensitive Information) ![](../images/2023/03/config.png) Then Click on Ping SAP Connection it will navigate to the next tab which is SAP S/4HANA->Salesforce if it is everything you mentioned correct details and also you can see success message popup on the screen. ![](../images/2023/03/Ping.png) After seeing above pop up you are navigated below screen, here you will provide the all the necessary details to connect with the Salesforce System from SAP. Username: Salesforce username of yours (Mandatory Field) Password: Salesforce password of yours (Mandatory Field) Service Environment: Choose your environment (Mandatory Field) Consumer Key: Consumer secret: ![](../images/2023/03/AGCB5.png) Then click on Ping Salesforce Connection. if it is everything you mentioned correct details you can see success message popup on the screen. ![](../images/2023/03/SF_ping.png) After this you can save the connection. **Create Adapter:** To create an adapter, click on adapter tab in the same integration click on new button follow the below screen shot numbering ![](../images/2023/03/Adapter-1.png) If you are navigating from beginning/home screen, go to integration tab, choose your integration which is created earlier and then click on integration and choose SAP Control Board on the Custom links sections then it will open previous steps screen there you can choose Adapter tab and click on new button follow the screens below. ![](../images/2023/03/Integ-1.png) ![](../images/2023/03/AGENT_CB-1.png) Then you can see following screen for the create a new adapter. Name: You can give any name for the Adapter (Mandatory Field) Type: Choose SAP ERP as we are checking with the SAP ERP System (Mandatory) Direction: Choose Inbound as we are checking Inbound Interface from SAP to SF (Mandatory) Status: Choose an Active (Mandatory) Integration Protocol: BAPI (Mandatory) Connection Destination: Choose Destination connection which created earlier steps (Mandatory) Note: In the below screen Description and Salesforce Id Handling are Optional parameters so if you wish to give any data you can give. ![](../images/2023/03/New_Adp.png) After giving the all the necessary details you can click on the Ping Connection If you get success message pop up you can click on save. Now Adapter gets created and you can see it in the list. ![](../images/2023/03/Adp_SCR.png) **4.Create Metadata Provider and Repository.** To create a metadata provider, click on the metadata provider then click on new button as shown below screen. Metadata Provider Name: Provider the any name (Mandatory) Ex: METADATA_Bulktest_NK Description: You can give any meaning full description for the name. Then click on save. ![](../images/2023/03/META.png) You can see newly created Metadata provider in the list or directly it’s opened the below screen. Click on the Metadata Provider above selected one. You can see below screen. Here you can create a repository. To create a repository, click on new button as shown in the below screen. ![](../images/2023/03/Meta_2.png) After the click on new button below screen will appear provide the necessary details and click on save. Repository Name: You can give any name (Mandatory) Type: You can choose IDOC (Optional) Metadata Provider: This will come automatically from the previous step (Mandatory) ![](../images/2023/03/Repo.png) After click on save below screen will appear, then click on the Import SAP Metadata ![](../images/2023/03/REpo_DEl.png) Select the below details from list as per your requirement then click on retrieve button as shown below. ![](../images/2023/03/imp_mata.png) It will display all the object from sap which you have selected above, now you can search you object name here as shown below **5.Create the Message Type using Import SAP Metadata** Select your object name from list and click on create message type. ![](../images/2023/03/Importing.png) **6. Creating Inbound Interface:** To create new Interface, go to your integration and navigate to Interface tab and click on new Interface as shown in the below screenshot. ![](../images/2023/03/Interface.png) After click on new interface, you can see below screen popup. Give the all-necessary details and click on save. Name: You can give any name (Mandatory) Source name: You can choose available options I have choose Account (Where you want to see your SAP data here in salesforce - Mandatory) Status: Deployed (Mandatory) Operation Type: upsert (Mandatory) Sequence: 2 automatically populated Type: Choose Inbound as we are doing inbound interface (Mandatory) Adapter: You can give which created earlier steps Repository: You can choose which created earlier steps Processing Mode: Choose Asynchronous Source/Target Message Type: Choose your message type request ![](../images/2023/03/Interface_2.png) **Enable Bulk Mode in interface** Skyvva Bulk Mode OR  SFDC Bulk mode is available in interface. User can select Skyvva Bulk 1.0 for Skyvva Bulk Mode OR SFDC Bulk 2.0 for SFDC Bulk as below screen ![](../images/2023/03/Bulk.png) Save the interface once provide all the necessary details. Now again open the interface and assign inbound adapter if you not did in the previous step. For the Bulk scenario you can test with the size. How many records you are going to send in a Bulk Package size. In below I am mentioning the pack size is 2. ![](../images/2023/03/bulk_size.png) For inbound interface we have to do mapping, click on **open mapping** in interface and do mapping as shown below ![](../images/2023/03/Mapping.png) Drag the source fields to Target **7.SAP Function Module Configure in Salesforce:** Configure SAP newly created FM in the salesforce in the below given path. Integration -> SAP Function Module -> Click on new ![](../images/2023/03/FM_MAPP.png) **Test:** Get the General Customer Master Data from SE11(KNA1 Table) For this test I am passing few Customers to Salesforce from the above table. Go to se37 give the FM which we created earlier and click on execute or hit F8. ![](../images/2023/03/TEST.png) ![](../images/2023/03/TEST_2.png) Click on execute or hit F8. You can see the following screen. Click on EX_RETURN Table to see the response from Salesforce. ![](../images/2023/03/Test_3.png) You can choose your interface and then click on search you will get below screen. ![](../images/2023/03/Bulk_control.png) In the above screen we can see 3 Baskets (5 records) as we mentioned pack size as 2. These baskets we can process in different ways. One is Manual and another one is using scheduler Manual: Select basket and click on process as shown in the below screen. ![](../images/2023/03/Bulk_Shl.png) Click on setup as shown in the below screen ![](../images/2023/03/Bulk_Con_bd.png) In the search bar you can give name as Jobs click on apex jobs and you can see the queue. ![](../images/2023/03/Apex.png) Wait till the job get success. After that you can go to monitor screen and see the messages. ![](../images/2023/03/message.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 7. Salesforce to SAP(Using Agent Control Board) Title: 7.1 How to Call SAP ERP IDoc From Salesforce Slug: 6-1-how-to-call-idoc-from-salesforce URL: https://help.skyvva.com/#article/6-1-how-to-call-idoc-from-salesforce ================================================================================ # 7.1 How to Call SAP ERP IDoc From Salesforce **Posting IDOC to SAP ERP From SF Using Agent SAP ERP Adapter** Agent SAP ERP Adapter supports both in Linux and Windows Server. In SAP ERP we have to do the following settings Transaction: **SRTIDOC** - Execute with the default values in the transaction with the option “**Register Service**” selected - Registration should be successful with the message “Registration Successful” - If this service has already been registered, you may get the error message – “Access Address already used for Web service”. In such a case, this step can be ignored as the SOAP Service is already registered and running. Transaction: **SICF** Hierarchy Type: **SERVICE** & Execute Navigate to **Default Host –> sap –> bc –> srt –> IDoc**. Right Click & **Test Service** Note the URL that comes in your browser. This is the generic endpoint for idoc xml posting to SAP. **http:/*/host:port*/sap/bc/srt/idoc?sap-client*=. *** The following is the endpoint for our SAP system ID7 with client 800 **"http://195.201.104.232:16080/sapid7/sap/bc/srt/idoc?sap-client=800"** This endpoint we will use while creating the SAP ERP adapter in skyvva. Importing IDOC from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/12/Untitled-43.png) Provide the details for the connection destination like Name, Description and Type as shown below. ![](../images/2020/12/Untitled-44.png) In the Salesforce->AGENT tab. Provide the details of Agent Host Url: http://xxxx.com Port: 90** Username: xxxx Password: ****** ![](../images/2020/12/Untitled-45.png) Once we provide the details we need to ping the Agent Connection. Then we can see the pop-up like its successfully connected to Agent. ![](../images/2020/12/Untitled-46.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/12/Untitled-47.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/12/Untitled-48.png) Next provide the SAP details like Host URL, Port, Username, Password, the reverse proxy path, SAP system client and the logical system name as shown below. ![](../images/2020/12/Untitled-49.png) Click on Ping SAP connection from Agent if its connected successfully or not ![](../images/2020/12/Untitled-50.png) Again provide the details of Agent ![](../images/2020/12/Untitled-52.png) Click on ping connection of Agent ![](../images/2020/12/Untitled-53.png) Save the connection after entering all the required details ![](../images/2020/12/Untitled-54.png) **Create Metadata Provider** ![](../images/2020/10/Untitled-10.png) **Create Repository** ![](../images/2020/10/Untitled-11.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-12.png) Here we need to select the SAP Connection through the Agent and select Adapter type  which we created earlier in the Agent Control Board and Select the Application Data type IDOC and then Select create message type to call IDOC in SAP. Click on Retrieve after selecting all the above details as shown in the screenshot. ![](../images/2020/12/Untitled-34.png) Now click on Retrieve to create the message type from SAP Here is the IDOC template. Here we need message type for both Request and Response also to get the IDOC number back from SAP and to show it in Skyvva Monitor. But we use only Request message type while creating the outbound interface. ![](../images/2020/12/Untitled-35.png) ![](../images/2020/12/Untitled-36.png) **Creating the Agent SAP ERP Adapter in Skyvva** We need to provide the following details to create the Agent SAP ERP adapter Name: IDOCXML_Agent Type: SAP ERP Adapter Status: Active Direction - Outbound Description: IDOC XML adapter objectFormat - IDOC Connection Destination- It means the Agent Connection which we created earlier for the backend connection - Agent Window SAP ![](../images/2020/12/Untitled-55.png) Now click on save button to create the adapter. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface In our example DEBMAS.DEBMAS07.ZNBDEBMAS is the root message type as shown below. ![](../images/2020/10/Untitled-65.png) ![](../images/2020/12/Untitled-56.png) ![](../images/2020/12/Untitled-57.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-38.png) ![](../images/2020/10/Untitled-18.png) Save the interface once provide all the necessary details. Now we have to synchronize the cache to push the Integration, Interface, Adapter and Mapping to Agent H2 table. For that we have to go to cache Monitor in that select Object Name and Integration Name and Status and then click on Synchronize Cache. ![](../images/2020/12/Untitled-58.png) ![](../images/2020/12/Untitled-8.png) Now click on Yes to Synchronize the Cache ![](../images/2020/12/Untitled-59.png) Now click on Refresh ![](../images/2020/12/Untitled-60.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'001f000001Z60gpAAB'}; skyvvasolutions.Iservices.invokeCalloutV3('SAP ERP Integration App V1','IDOCXML_Out',ids,'AUTO', c); Now we can see the message in the message monitor: ![](../images/2020/12/Untitled-61.png) IDOC posted to SAP ![](../images/2020/10/Untitled-29.png) And we got the acknowledgement response back from SAP in Skyvva message monitor in the comment section like IDOC got created in SAP. This IDOC number we can search in the Business external ID ![](../images/2020/12/Untitled-62.png) We have also a Copy node function in Skyvva. Copy node is used to duplicate the segment if needed. ![](../images/2020/10/Untitled-56.png) In our example we have duplicated the segment for one time ![](../images/2020/10/Untitled-57.png) Now we can see the repeated segments in SAP as well as shown below. ![](../images/2020/10/Untitled-58.png) This is the functionality of Skyvva copy node. ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 6. Salesforce to SAP(Using SAP Control Board) Title: 6.1 How to Call IDoc From Salesforce Slug: 6-1-how-to-call-idoc-from-salesforce-2 URL: https://help.skyvva.com/#article/6-1-how-to-call-idoc-from-salesforce-2 ================================================================================ # 6.1 How to Call IDoc From Salesforce **Posting IDOC to SAP ERP From SF Using Skyvva SAP ERP Adapter** In SAP ERP we have to do the following settings Transaction: **SRTIDOC** - Execute with the default values in the transaction with the option “**Register Service**” selected - Registration should be successful with the message “Registration Successful” - If this service has already been registered, you may get the error message – “Access Address already used for Web service”. In such a case, this step can be ignored as the SOAP Service is already registered and running. Transaction: **SICF** Hierarchy Type: **SERVICE** & Execute Navigate to **Default Host –> sap –> bc –> srt –> IDoc**. Right Click & **Test Service** Note the URL that comes in your browser. This is the generic endpoint for idoc xml posting to SAP. **http:/*/host:port*/sap/bc/srt/idoc?sap-client*=. *** The following is the endpoint for our SAP system ID7 with client 800 **"http://195.201.104.232:16080/sapid7/sap/bc/srt/idoc?sap-client=800"** This endpoint we will use while creating the SAP ERP adapter in skyvva. Importing IDOC from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/10/Untitled-4.png) Provide the details as shown for the SAP system In the Configuration tab. Provide the details Here we need to provide the sap configuration details as below Type: SAP ERP Deployment: Embedded Logical System: LSSAP Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2020/10/Untitled-5.png) ![](../images/2020/10/Untitled-6.png) Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up like its successfully connected to SAP Backend. ![](../images/2020/10/Untitled-7.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/10/Untitled-8.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/10/Untitled-9.png) With this connection. we can import the IDOC/RFC's from SAP. **Create Metadata Provider** ![](../images/2020/10/Untitled-10.png) **Create Repository** ![](../images/2020/10/Untitled-11.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-12.png) Here we need to give the details of connection type, Connection Destination which we created earlier in the SAP Control Board and the Select the Application Data type IDOC ![](../images/2020/10/Untitled-63.png) Now click on Retrieve to create the message type from SAP Here is the IDOC template. Here we need message type for both Request and Response also to get the IDOC number back from SAP and to show it in Skyvva Monitor. But we use only Request message type while creating the outbound interface. ![](../images/2020/12/Untitled-35.png) ![](../images/2020/12/Untitled-36.png) **Creating the SAP ERP Adapter in Skyvva** We need to provide the following details to create the soap adapter Name - Name of the adapter Type - SAP ERP Description - IDOC XML Adapter Direction - Outbound Status - Active ![](../images/2020/10/Untitled-22.png) ![](../images/2020/10/Untitled-64.png) objectFormat - IDOC Connection Destination - It means the SAP Connection which we created earlier for the backend connection - SAPID9 Now click on save button to create the adapter. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface In our example DEBMAS.DEBMAS07.ZNBDEBMAS is the root message type as shown below. ![](../images/2020/10/Untitled-65.png) ![](../images/2020/12/Untitled-42.png) ![](../images/2020/10/Untitled-16.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-38.png) ![](../images/2020/10/Untitled-18.png) Save the interface once provide all the necessary details. Now do the callout using below apex code: Cskyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013E00001DKgY9QAL'}; skyvvasolutions.Iservices.invokeCalloutV3('IDOCXML','IDOCXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/10/Untitled-32.png) IDOC posted to SAP ![](../images/2020/10/Untitled-29.png) And we got the acknowledgement response back from SAP in Skyvva message monitor in the comment section like IDOC got created in SAP. This IDOC number we can search in the Business external ID ![](../images/2020/10/Untitled-33.png) We have also a Copy node function in Skyvva. Copy node is used to duplicate the segment if needed. ![](../images/2020/10/Untitled-56.png) In our example we have duplicated the segment for one time ![](../images/2020/10/Untitled-57.png) Now we can see the repeated segments in SAP as well as shown below. ![](../images/2020/10/Untitled-58.png) This is the functionality of Skyvva copy node. ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 7. Salesforce to SAP(Using Agent Control Board) Title: 7.3 How to Call SAP ERP BAPI/FM From Salesforce Slug: 7-2-how-to-call-sap-bapi-fm-from-salesforce URL: https://help.skyvva.com/#article/7-2-how-to-call-sap-bapi-fm-from-salesforce ================================================================================ # 7.3 How to Call SAP ERP BAPI/FM From Salesforce **Posting BAPI to SAP ERP From Salesforce using Skyvva Agent SAP ERP Adapter** In SAP ERP we have to do the following settings **Calling RFC-enabled Function Modules over HTTP from external application** As a prerequisite, go to transaction SICF and locate the following service: **sap -> bc -> soap -> rfc.** Its description gives you some more details about the functionality: SOAP HTTP HANDLER FOR RFC-CAPABLE FUNCTION MODULES. Now, right-click on that service and choose Test Service, and make sure that you allow SAP to open your web browser (in a popup that appears). Make note of the URL that is opened in the browser. Generally, this URL would look as follows: **http://[hostname]:[SICF port]/sap/bc/soap/rfc?sap-client=[client]** It’s a central endpoint for all BAPI’s. Now that we know the communication URL use an HTTP client to communicate with SAP. In this example, I will use the SOAP UI tool for this purpose, but it can be any application. Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/12/Untitled-43.png) Provide the details for the connection destination like Name, Description and Type as shown below. ![](../images/2020/12/Untitled-44.png) In the Salesforce->AGENT tab. Provide the details of Agent Host Url: http://xxxx.com Port: 90** Username: xxxx Password: ****** ![](../images/2020/12/Untitled-45.png) Once we provide the details we need to ping the Agent Connection. Then we can see the pop-up like its successfully connected to Agent. ![](../images/2020/12/Untitled-46.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/12/Untitled-47.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/12/Untitled-48.png) Next provide the SAP details like Host URL, Port, Username, Password, the reverse proxy path, SAP system client and the logical system name as shown below. ![](../images/2020/12/Untitled-49.png) Click on Ping SAP connection from Agent if its connected successfully or not ![](../images/2020/12/Untitled-50.png) Again provide the details of Agent ![](../images/2020/12/Untitled-52.png) Click on ping connection of Agent ![](../images/2020/12/Untitled-53.png) Save the connection after entering all the required details ![](../images/2020/12/Untitled-54.png) **Create Metadata Provider** ![](../images/2020/10/Untitled-38.png) **Create Repository** ![](../images/2020/10/Untitled-39.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-40.png) Here we need to select the SAP Connection through the Agent and select Adapter type  which we created earlier in the Agent Control Board and Select the Application Data type BAPI/RFC's and then Select create message type to call in BAPI in SAP. Click on Retrieve after selecting all the above details as shown in the screenshot. ![](../images/2020/12/Untitled-24.png) Select the BAPI name to create message type ![](../images/2020/10/Untitled-42.png) Below is the message type template for BAPI ![](../images/2020/12/Untitled-25.png) ![](../images/2020/12/Untitled-26.png) This message type we use in the outbound interface and inbound interface **Creating the Agent SAP ERP Adapter in Skyvva** We need to provide the following details to create the Agent SAP ERP adapter Name - Name of the adapter Type - Agent SAP ERP Description - IDOC XML Adapter Direction - Outbound Status - Active objectFormat - BAPI Connection Destination: Agent Window SAP ![](../images/2020/12/Untitled-74.png) ![](../images/2020/12/Untitled-75.png) Salesforce Id Handling - It means the salesforce Id will come back along with the Response message to update the existing account in order to avoid the new record creation. Now click on save button to create the adapter. **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface and point to Response in the response interface. In our example BAPI_CUSTOMER_CREATEFROMDATA1 is the root message type as shown below. ![](../images/2020/10/Untitled-62.png) ![](../images/2020/12/Untitled-64.png) ![](../images/2020/12/Untitled-65.png) ![](../images/2020/10/Untitled-49.png) Add the response interface in the request interface. ![](../images/2020/10/Untitled-50.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-33.png) ![](../images/2020/10/Untitled-52.png) Save the interface once provide all the necessary details. **Creating an Inbound Response Interface:** Provide the Name, sObject type, Description, Processing mode, Status, Operation Type, Metadata provider, Repository, Message type as shown in the screenshots below ![](../images/2020/12/Untitled-66.png) Do the inbound mapping as shown below. We have to map the Id field in the response mapping to get the Id back in the response message. For the below example we don't have Id field in the source side so we are going to map Id with functions as shown below. ![](../images/2020/10/Untitled-67.png) ![](../images/2020/10/Untitled-68.png) Now we have to synchronize the cache to push the Integration, Interface, Adapter and Mapping to Agent H2 table. For that we have to go to cache Monitor in that select Object Name and Integration Name and Status and then click on Synchronize Cache. ![](../images/2020/12/Untitled-58.png) ![](../images/2020/12/Untitled-8.png) Now click on Yes to Synchronize the Cache ![](../images/2020/12/Untitled-59.png) Now click on Refresh ![](../images/2020/12/Untitled-60.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'001f000001bN527AAC'}; skyvvasolutions.Iservices.invokeCalloutV3('SAP ERP Integration App V1','BAPIXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/12/Untitled-67.png) Expand the response interface dropdown to see the message Id. ![](../images/2020/10/Untitled-69.png) We can see the salesforce Id coming in the response message along with the customer number. ![](../images/2020/10/picturemessage_ncwatxpr.40h.png) Click on Related to as shown in below screenshot ![](../images/2020/12/Untitled-71.png) Then we can see the updated customer ID in SKYVVA as shown below ![](../images/2020/12/Untitled-73.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 6. Salesforce to SAP(Using SAP Control Board) Title: 6.3 How to Call SAP ERP BAPI/FM From Salesforce Slug: 6-2-how-to-call-sap-bapi-fm-from-salesforce URL: https://help.skyvva.com/#article/6-2-how-to-call-sap-bapi-fm-from-salesforce ================================================================================ # 6.3 How to Call SAP ERP BAPI/FM From Salesforce **Posting BAPI to SAP ERP From Salesforce using Skyvva SAP ERP Adapter** In SAP ERP we have to do the following settings **Calling RFC-enabled Function Modules over HTTP from external application** As a prerequisite, go to transaction SICF and locate the following service: **sap -> bc -> soap -> rfc.** Its description gives you some more details about the functionality: SOAP HTTP HANDLER FOR RFC-CAPABLE FUNCTION MODULES. Now, right-click on that service and choose Test Service, and make sure that you allow SAP to open your web browser (in a popup that appears). Make note of the URL that is opened in the browser. Generally, this URL would look as follows: **http://[hostname]:[SICF port]/sap/bc/soap/rfc?sap-client=[client]** It’s a central endpoint for all BAPI’s. Now that we know the communication URL use an HTTP client to communicate with SAP. In this example, I will use the SOAP UI tool for this purpose, but it can be any application. Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/10/Untitled-30.png) Provide the details as shown for the SAP system In the Configuration tab. Provide the details Here we need to provide the sap configuration details as below Type: SAP ERP Deployment: Embedded Logical System: LSSAP Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2020/10/Untitled-72.png) ![](../images/2020/10/Untitled-6.png) Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up like its successfully connected to SAP Backend. ![](../images/2020/10/Untitled-7.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/10/Untitled-8.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/10/Untitled-9.png) We got the Consumer Key and Consumer Secret from App manager. With this connection. we can import the IDOC/RFC's from SAP. **Create Metadata Provider** ![](../images/2020/10/Untitled-38.png) **Create Repository** ![](../images/2020/10/Untitled-39.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-40.png) Here we need to give the details of connection type, Connection Destination which we created earlier in the SAP Control Board and Select the Application Data type BAPI/RFC's and then click on Retrive. ![](../images/2020/10/Untitled-60.png) Select the BAPI name to create message type ![](../images/2020/10/Untitled-42.png) Below is the message type template for BAPI ![](../images/2020/12/Untitled-25.png) ![](../images/2020/12/Untitled-26.png) This message type we use in the outbound interface and inbound interface **Creating the SAP ERP Adapter in Skyvva** We need to provide the following details to create the Skyvva SAP ERP adapter Name - Name of the adapter Type - SAP ERP Description - BAPI XML Adapter Direction - Outbound Status - Active Integration protocol - BAPI ![](../images/2020/10/Untitled-73.png) ![](../images/2020/10/Untitled-66.png) Connection Destination - It means the SAP Connection which we created earlier for the backend connection - SAP_ID7_SF_Integration Salesforce Id Handling - It means the salesforce Id will come back along with the Response message to update the existing account in order to avoid the new record creation. Now click on save button to create the adapter. **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface and point to Response in the response interface. In our example BAPI_CUSTOMER_CREATEFROMDATA1 is the root message type as shown below. ![](../images/2020/10/Untitled-62.png) ![](../images/2020/10/Untitled-61.png) ![](../images/2020/10/Untitled-48.png) ![](../images/2020/10/Untitled-49.png) Add the response interface in the request interface. ![](../images/2020/10/Untitled-50.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/10/Untitled-51.png) ![](../images/2020/10/Untitled-52.png) Save the interface once provide all the necessary details. **Creating an Inbound Response Interface:** Provide the Name, sObject type, Description, Processing mode, Status, Operation Type, Metadata provider, Repository, Message type as shown in the screenshots below ![](../images/2020/12/Untitled-31.png) Do the inbound mapping as shown below. We have to map the Id field in the response mapping to get the Id back in the response message. For the below example we don't have Id field in the source side so we are going to map Id with functions as shown below. ![](../images/2020/10/Untitled-67.png) ![](../images/2020/10/Untitled-68.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013E00001DKgY9QAL'}; skyvvasolutions.Iservices.invokeCalloutV3('BAPIXML_ERP','BAPIXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/10/Untitled-55.png) Expand the response interface dropdown to see the message Id. ![](../images/2020/10/Untitled-69.png) We can see the salesforce Id coming in the response message along with the customer number. ![](../images/2020/10/picturemessage_ncwatxpr.40h.png) Click on "related to" to see the updated record. ![](../images/2020/10/Untitled-70.png) Updated record in Salesforce. **![](../images/2020/12/Untitled-73.png)** ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 7. Salesforce to SAP(Using Agent Control Board) Title: 7.2 HOW TO CALL SAP S/4 HANA IDOC FROM SALESFORCE Slug: 7-3-how-to-call-sap-s-4-hana-idoc-from-salesforce URL: https://help.skyvva.com/#article/7-3-how-to-call-sap-s-4-hana-idoc-from-salesforce ================================================================================ # 7.2 HOW TO CALL SAP S/4 HANA IDOC FROM SALESFORCE **Posting IDOC to SAP S/4 HANA From Salesforce Using Agent S/4 HANA Adapter** Importing IDOC from Import SAP metadata To Import SAP metadata first we need to create Agent Connection in skyvva as shown below Go to Integration details tab and then select Agent Control Board ![](../images/2021/07/Untitled-32.png) Provide the details as shown for the Agent and the SAP system In the Configuration tab. Provide the details ![](../images/2021/07/Untitled-31.png) ![](../images/2020/12/Untitled-45.png) Once we provide the details we need to ping the Agent Connection. Then we can see the pop-up like its successfully connected to Agent. ![](../images/2020/12/Untitled-46.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/12/Untitled-47.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/12/Untitled-48.png) Next provide the SAP details like Host URL, Port, Username, Password, the reverse proxy path, SAP system client and the logical system name as shown below. Here we need to provide the sap configuration details as below Type: Agent S/4 HANA Logical System: tr5 Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2020/12/Untitled-49.png) Click on Ping SAP connection from Agent if its connected successfully or not ![](../images/2020/12/Untitled-50.png) Again provide the details of Agent ![](../images/2020/12/Untitled-52.png) Click on ping connection of Agent ![](../images/2020/12/Untitled-53.png) Save the connection after entering all the required details ![](../images/2020/12/Untitled-54.png) **Create Metadata Provider** ![](../images/2020/10/Untitled-10.png) **Create Repository** ![](../images/2020/10/Untitled-11.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-12.png) Here we need to give the details of connection type, Connection Destination which we created earlier in the SAP Control Board and the Select the Application Data type IDOC ![](../images/2021/07/Untitled-30.png) Now click on Retrieve to create the message type from SAP Here is the IDOC template. Here we need message type for both Request and Response also to get the IDOC number back from SAP and to show it in Skyvva Monitor. But we use only Request message type while creating the outbound interface. ![](../images/2020/12/Untitled-35.png) ![](../images/2020/12/Untitled-36.png) **Creating the Agent S/4 HANA Adapter in Skyvva** We need to provide the following details to create the soap adapter Name - Name of the adapter Type - Agent S/4 HANA Description - Agent S4 test Adapter Direction - Outbound Status - Active ![](../images/2021/07/Untitled-34.png) objectFormat - IDOC Connection Destination - It means the SAP Connection which we created earlier for the backend connection - agentSapS/4Hana Now click on save button to create the adapter. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface In our example DEBMAS.DEBMAS07.ZNBDEBMAS is the root message type as shown below. ![](../images/2020/10/Untitled-65.png) ![](../images/2020/12/Untitled-42.png) ![](../images/2021/07/Untitled-35.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-38.png) ![](../images/2020/10/Untitled-18.png) Save the interface once provide all the necessary details. Now do the callout using below apex code: Cskyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013E00001DKgY9QAL'}; skyvvasolutions.Iservices.invokeCalloutV3('IDOCXML','IDOCXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/10/Untitled-32.png) IDOC posted to SAP ![](../images/2020/10/Untitled-29.png) And we got the acknowledgement response back from SAP in Skyvva message monitor in the comment section like IDOC got created in SAP. This IDOC number we can search in the Business external ID ![](../images/2020/10/Untitled-33.png) We have also a Copy node function in Skyvva. Copy node is used to duplicate the segment if needed. ![](../images/2020/10/Untitled-56.png) In our example we have duplicated the segment for one time ![](../images/2020/10/Untitled-57.png) Now we can see the repeated segments in SAP as well as shown below. ![](../images/2020/10/Untitled-58.png) This is the functionality of Skyvva copy node. ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 7. Salesforce to SAP(Using Agent Control Board) Title: 7.4 HOW TO CALL SAP S/4 HANA BAPI FROM SALESFORCE Slug: 7-4-how-to-call-sap-s-4-hana-bapi-from-salesforce URL: https://help.skyvva.com/#article/7-4-how-to-call-sap-s-4-hana-bapi-from-salesforce ================================================================================ # 7.4 HOW TO CALL SAP S/4 HANA BAPI FROM SALESFORCE **Posting BAPI to SAP S/4 HANA From Salesforce using Skyvva Agent S/4 HANA Adapter** Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first we need to create Agent Connection in skyvva as shown below Go to Integration details tab and then select Agent Control Board ![](../images/2021/07/Untitled-32.png) Provide the details as shown for the Agent and the SAP system In the Configuration tab. Provide the details ![](../images/2021/07/Untitled-31.png) ![](../images/2020/12/Untitled-45.png) Once we provide the details we need to ping the Agent Connection. Then we can see the pop-up like its successfully connected to Agent. ![](../images/2020/12/Untitled-46.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/12/Untitled-47.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/12/Untitled-48.png) Next provide the SAP details like Host URL, Port, Username, Password, the reverse proxy path, SAP system client and the logical system name as shown below. Here we need to provide the sap configuration details as below Type: Agent S/4 HANA Logical System: tr5 Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2020/12/Untitled-49.png) Click on Ping SAP connection from Agent if its connected successfully or not ![](../images/2020/12/Untitled-50.png) Again provide the details of Agent ![](../images/2020/12/Untitled-52.png) Click on ping connection of Agent ![](../images/2020/12/Untitled-53.png) Save the connection after entering all the required details ![](../images/2020/12/Untitled-54.png) **Create Metadata Provider** ![](../images/2020/10/Untitled-38.png) **Create Repository** ![](../images/2020/10/Untitled-39.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-40.png) Here we need to select the SAP Connection through the Agent and select Adapter type  which we created earlier in the Agent Control Board and Select the Application Data type BAPI/RFC's and then Select create message type to call in BAPI in SAP S/4 HANA Click on Retrieve after selecting all the above details as shown in the screenshot. ![](../images/2021/07/Untitled-37.png) Select the BAPI name to create message type ![](../images/2020/10/Untitled-42.png) Below is the message type template for BAPI ![](../images/2020/12/Untitled-25.png) ![](../images/2020/12/Untitled-26.png) This message type we use in the outbound interface and inbound interface **Creating the Agent SAP ERP Adapter in Skyvva** We need to provide the following details to create the Agent SAP ERP adapter Name - Name of the adapter Type - Agent SAP S/4 HANA Description - Agent S4 test Adapter Direction - Outbound Status - Active objectFormat - BAPI Connection Destination: agentSapS/4Hana ![](../images/2021/07/Untitled-36.png) Now click on save button to create the adapter. **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface and point to Response in the response interface. In our example BAPI_CUSTOMER_CREATEFROMDATA1 is the root message type as shown below. ![](../images/2020/10/Untitled-62.png) ![](../images/2020/12/Untitled-64.png) ![](../images/2021/07/Untitled-38.png) ![](../images/2020/10/Untitled-49.png) Add the response interface in the request interface. ![](../images/2020/10/Untitled-50.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-33.png) ![](../images/2020/10/Untitled-52.png) Save the interface once provide all the necessary details. **Creating an Inbound Response Interface:** Provide the Name, sObject type, Description, Processing mode, Status, Operation Type, Metadata provider, Repository, Message type as shown in the screenshots below ![](../images/2020/12/Untitled-66.png) Do the inbound mapping as shown below. ![](../images/2020/12/Untitled-32.png) Now we have to synchronize the cache to push the Integration, Interface, Adapter and Mapping to Agent H2 table. For that we have to go to cache Monitor in that select Object Name and Integration Name and Status and then click on Synchronize Cache. ![](../images/2020/12/Untitled-58.png) ![](../images/2020/12/Untitled-8.png) Now click on Yes to Synchronize the Cache ![](../images/2020/12/Untitled-59.png) Now click on Refresh ![](../images/2020/12/Untitled-60.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'001f000001bN527AAC'}; skyvvasolutions.Iservices.invokeCalloutV3('SAP ERP Integration App V1','BAPIXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/12/Untitled-67.png) Click on Related to as shown in below screenshot ![](../images/2020/12/Untitled-71.png) Then we can see the updated customer ID in SKYVVA as shown below ![](../images/2020/12/Untitled-72.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 6. Salesforce to SAP(Using SAP Control Board) Title: 6.4 How to call S/4 HANA BAPI from Salesforce Slug: 7-4-how-to-call-sap-s-4-hana-bapi-from-salesforce-2 URL: https://help.skyvva.com/#article/7-4-how-to-call-sap-s-4-hana-bapi-from-salesforce-2 ================================================================================ # 6.4 How to call S/4 HANA BAPI from Salesforce **Posting BAPI to SAP S/4 HANA From Salesforce using Skyvva SAP S/4 HANA Adapter** Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/10/Untitled-30.png) Provide the details as shown for the SAP system In the Configuration tab. Provide the details Here we need to provide the sap configuration details as below Type: SAP S/4 HANA Deployment: Embedded Logical System: tr5 Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2021/07/Untitled-17.png) ![](../images/2020/10/Untitled-6.png) Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up like its successfully connected to SAP Backend. ![](../images/2020/10/Untitled-7.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/10/Untitled-8.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/10/Untitled-9.png) We got the Consumer Key and Consumer Secret from App manager. With this connection. we can import the IDOC/RFC's from SAP. **Create Metadata Provider** ![](../images/2020/10/Untitled-38.png) **Create Repository** ![](../images/2020/10/Untitled-39.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-40.png) Here we need to give the details of connection type, Connection Destination which we created earlier in the SAP Control Board and Select the Application Data type BAPI/RFC's and then click on Retrive. ![](../images/2021/07/Untitled-18.png) Select the BAPI name to create message type ![](../images/2020/10/Untitled-42.png) Below is the message type template for BAPI ![](../images/2020/12/Untitled-25.png) ![](../images/2020/12/Untitled-26.png) This message type we use in the outbound interface and inbound interface **Creating the SAP S/4 HANA Adapter in Skyvva** We need to provide the following details to create the Skyvva SAP ERP adapter Name - Name of the adapter Type - SAP S/4 HANA Description - BAPI S/4 HANA Adapter Direction - Outbound Status - Active Deployment - On Premise objectFormat - BAPI ![](../images/2021/07/Untitled-20.png) ![](../images/2021/07/Untitled-19.png) Connection Destination - It means the SAP Connection which we created earlier for the backend connection - S4HANA_Test Now click on save button to create the adapter. **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface and point to Response in the response interface. In our example BAPI_CUSTOMER_CREATEFROMDATA1 is the root message type as shown below. ![](../images/2020/10/Untitled-62.png) ![](../images/2021/07/Untitled-22.png) ![](../images/2021/07/Untitled-21.png) ![](../images/2020/10/Untitled-49.png) Add the response interface in the request interface. ![](../images/2020/10/Untitled-50.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/10/Untitled-51.png) ![](../images/2020/10/Untitled-52.png) Save the interface once provide all the necessary details. **Creating an Inbound Response Interface:** Provide the Name, sObject type, Description, Processing mode, Status, Operation Type, Metadata provider, Repository, Message type as shown in the screenshots below ![](../images/2021/07/Untitled-23.png) Do the inbound mapping as shown below. ![](../images/2020/10/Untitled-54.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013E00001DKgY9QAL'}; skyvvasolutions.Iservices.invokeCalloutV3('BAPIXML_ERP','BAPIXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/12/Untitled-67.png) Click on Related to as shown in below screenshot ![](../images/2020/12/Untitled-71.png) Then we can see the updated customer ID in SKYVVA as shown below ![](../images/2020/12/Untitled-72.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 6. Salesforce to SAP(Using SAP Control Board) Title: 6.2 How to call S/4 HANA IDOC from Salesforce Slug: 7-2-how-to-call-sap-s-4-hana-idoc-from-salesforce URL: https://help.skyvva.com/#article/7-2-how-to-call-sap-s-4-hana-idoc-from-salesforce ================================================================================ # 6.2 How to call S/4 HANA IDOC from Salesforce **Posting IDOC  to SAP S/4 HANA IDOC From Salesforce Using Skyvva SAP S/4 HANA Adapter** Importing IDOC from Import SAP metadata To Import SAP metadata first we need to create SAP Connection in skyvva as shown below Go to Integration details tab and then select SAP Control Board ![](../images/2020/10/Untitled-30.png) Provide the details as shown for the SAP system In the Configuration tab. Provide the details Here we need to provide the sap configuration details as below Type: SAP S/4 HANA Deployment: Embedded Logical System: tr5 Host Url: http://xxxx.com Port: 16xxx Username: xxxx Password: ****** SAPID: System Id Client: 820 ![](../images/2021/07/Untitled-17.png) ![](../images/2020/10/Untitled-6.png) Once we provide the details we need to ping the SAP Connection. Then we can see the pop-up like its successfully connected to SAP Backend. ![](../images/2020/10/Untitled-7.png) Now we have to provide the salesforce details as shown below. Consumer Key and Consumer Secret we can get from the connected App. ![](../images/2020/10/Untitled-8.png) Click on Ping Connection of Salesforce to check if its connected successfully. ![](../images/2020/10/Untitled-9.png) We got the Consumer Key and Consumer Secret from App manager. With this connection. we can import the IDOC/RFC's from SAP. **Create Metadata Provider** ![](../images/2020/10/Untitled-10.png) **Create Repository** ![](../images/2020/10/Untitled-11.png) From the Repository Click on Import SAP Metadata Tab ![](../images/2020/10/Untitled-12.png) Here we need to give the details of connection type, Connection Destination which we created earlier in the SAP Control Board and the Select the Application Data type IDOC ![](../images/2021/07/Untitled-29.png) Now click on Retrieve to create the message type from SAP Here is the IDOC template. Here we need message type for both Request and Response also to get the IDOC number back from SAP and to show it in Skyvva Monitor. But we use only Request message type while creating the outbound interface. ![](../images/2020/12/Untitled-35.png) ![](../images/2020/12/Untitled-36.png) **Creating the SAP S/4 HANA Adapter in Skyvva** We need to provide the following details to create the soap adapter Name - Name of the adapter Type - SAP S/4 HANA Description - IDOCXML S/4 HANA Adapter Direction - Outbound Status - Active Deployment - On Premise ![](../images/2021/07/Untitled-24.png) ![](../images/2021/07/Untitled-25.png) ![](../images/2021/07/Untitled-27.png) objectFormat - IDOC Connection Destination - It means the SAP Connection which we created earlier for the backend connection - S4HANA_Test Now click on save button to create the adapter. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below In the message type we have to select the root message type then it will automatically point to Request in the request interface In our example DEBMAS.DEBMAS07.ZNBDEBMAS is the root message type as shown below. ![](../images/2020/10/Untitled-65.png) ![](../images/2020/12/Untitled-42.png) ![](../images/2021/07/Untitled-28.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2020/12/Untitled-38.png) ![](../images/2020/10/Untitled-18.png) Save the interface once provide all the necessary details. Now do the callout using below apex code: Cskyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0013E00001DKgY9QAL'}; skyvvasolutions.Iservices.invokeCalloutV3('IDOCXML','IDOCXML_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2020/10/Untitled-32.png) IDOC posted to SAP ![](../images/2020/10/Untitled-29.png) And we got the acknowledgement response back from SAP in Skyvva message monitor in the comment section like IDOC got created in SAP. This IDOC number we can search in the Business external ID ![](../images/2020/10/Untitled-33.png) We have also a Copy node function in Skyvva. Copy node is used to duplicate the segment if needed. ![](../images/2020/10/Untitled-56.png) In our example we have duplicated the segment for one time ![](../images/2020/10/Untitled-57.png) Now we can see the repeated segments in SAP as well as shown below. ![](../images/2020/10/Untitled-58.png) This is the functionality of Skyvva copy node. ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 6. Salesforce to SAP(Using SAP Control Board) Title: 6.5 How to call SAP REST API using Skyvva REST Adapter? Slug: 6-5-how-to-call-sap-rest-api-using-skyvva-rest-adapter URL: https://help.skyvva.com/#article/6-5-how-to-call-sap-rest-api-using-skyvva-rest-adapter ================================================================================ # 6.5 How to call SAP REST API using Skyvva REST Adapter? **Posting BAPI  to SAP ERP from salesforce using Skyvva REST Adapter** In SAP ERP we have to do the following settings How to Activate the Skyvva service in SAP using Tcode SICF. #### Introduction:- In this chapter, you will learn about the “Activation of  Skyvva service in sap”. The service is used to send & receive data from SAP <> salesforce . #### Activation of Skyvva service in Tcode SICF Once you have installed the Skyvva package(TR) all Internet Communication Framework (ICF) services are available in an inactive state for security reasons. After the installation you have to decide which services must be activated for the applications you want to use. Since multiple services can be executed when you call a URL, all service nodes must be activated in the SICF tree. The URL path is mapped in ICF subnodes (services). For example, if you want to activate the services for URL  /default_host/sap/bc/skyvva/, you have to activate the service tree default_host* *in transaction SICF. Then you have to activate services sap, bc and skyvva separately. You activate an ICF service as follows: - Select the required ICF service in the ICF tree in transaction SICF. - Activate the ICF service in one of the following ways: - Using menu option ***Service/Host*  ->  *Activate*** - Using the context menu and choosing ***Activate Service****.* ### Services for Skyvav For skyvva ABAP  the following services must be activated in the system. #### Using skyvva Applications /default_host/sap/public/ping This node itself must be activated, for ping service. /default_host/sap/bc/skyvva/ Here only the node itself must be activated, and **not** the subnodes. /default_host/sap/bc/skyvva/v3/ #### This node is activated automatically when the subnodes described below are activated. Likewise, here only the node itself must be activated, as well as the following subnodes: /default_host/sap/bc/skyvva/v3/cache /default_host/sap/bc/skyvva/v3/ GetBapiDetail /default_host/sap/bc/skyvva/v3/ GetIdocSegField /default_host/sap/bc/skyvva/v3/ GetIdocSegList /default_host/sap/bc/skyvva/v3/ GetObjCount /default_host/sap/bc/skyvva/v3/ GetObjectList /default_host/sap/bc/skyvva/v3/ GetPartnProfile /default_host/sap/bc/skyvva/v3/ GetQualifier /default_host/sap/bc/skyvva/v3/ GetTabFieldList /default_host/sap/bc/skyvva/v3/ restoreendpoint - **Activate All the service as shown below.**![](../images/2021/02/SICF.png) We will get the endpoint and request and response JSON payloads from SAP. By using that we have to create message type in Skyvva. **Creating the REST Adapter in Skyvva** We need to provide the following details to create the REST adapter Name - Name of the adapter Type - REST Description - BAPI REST Adapter Direction - Outbound Status - Active ![](../images/2021/02/Untitled-6.png) Authentication - Basic endpoint - http://195.201.104.232:16080/sapid7/sap/bc/skyvva_sf/createso?sap-client=820 Operation - POST ![](../images/2021/02/Untitled-7.png) Request and Response Format - application/json ![](../images/2021/02/Untitled-8.png) Username - idadmin Password - ****** Now click on save button to create the adapter. **Create Metadata Provider** - ![](../images/2021/02/Untitled-11.png) **Create Repository** - ![](../images/2021/02/Untitled-12.png) **Create Message type - ** Creating the message type using the following JSON payload. **Request Structure:** {   "DocType" : "TA",   "SalesOrg" : "1000",   "DistrChan" : "12",   "Division" : "00",   "NvHeaderToOrdItem" : [     {       "ItmNumber" : "000010",       "Plant" : "1000",       "Material" : "1400-300",       "TargetQty" : "100.000",       "NvOrdItemToSchLine" : [         {           "ItmNumber" : "000010",           "ReqQty" : "100.000",           "ReqDate" : "2020-08-23T12:34:56"         }       ]     }   ],   "NvHeaderToPartners" : [     {       "PartnRole" : "AG",       "PartnNumb" : "0000002300"     }   ],   "ReturnSet" : [{   "Type" : "",   "Message" : "",   "MessageV1" : ""   }] } **Response Structure:** { "ARRAY": [ { "TYPE": "S", "ID": "V4", "NUMBER": "233", "MESSAGE": "SALES_HEADER_IN has been processed\r\nsuccessfully", "LOG_NO": "", "LOG_MSG_NO": "000000", "MESSAGE_V1": "VBAKKOM", "MESSAGE_V2": "", "MESSAGE_V3": "", "MESSAGE_V4": "", "PARAMETER": "SALES_HEADER_IN", "ROW": 0, "FIELD": "", "SYSTEM": "CNT_DEV820" }, { "TYPE": "S", "ID": "V4", "NUMBER": "233", "MESSAGE": "SALES_ITEM_IN\r\nhas been processed\r\nsuccessfully", "LOG_NO": "", "LOG_MSG_NO": "000000", "MESSAGE_V1": "VBAPKOM", "MESSAGE_V2": "000010", "MESSAGE_V3": "", "MESSAGE_V4": "", "PARAMETER": "SALES_ITEM_IN", "ROW": 1, "FIELD": "", "SYSTEM": "CNT_DEV820" }, { "TYPE": "S", "ID": "V1", "NUMBER": "311", "MESSAGE": "Standard\r\nOrder 20469 has been saved", "LOG_NO": "", "LOG_MSG_NO": "000000", "MESSAGE_V1": "Standard\r\nOrder", "MESSAGE_V2": "20469", "MESSAGE_V3": "", "MESSAGE_V4": "", "PARAMETER": "SALES_HEADER_IN", "ROW": 0, "FIELD": "", "SYSTEM": "CNT_DEV820" } ] } Now create the message type using the above payloads along with the rest template. ![](../images/2021/02/Untitled-9.png) ![](../images/2021/02/Untitled-10.png) Use the above messagetype while creating the outbound and inbound interface. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below ![](../images/2021/02/Untitled-13.png) ![](../images/2021/02/Untitled-14.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2021/02/Untitled-15.png) ![](../images/2021/02/Untitled-16.png) ![](../images/2021/02/Untitled-17.png) Save the interface once provide all the necessary details. **Create Inbound response interface:** ![](../images/2021/02/Untitled-18.png) Do the mapping as shown ![](../images/2021/02/Untitled-19.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q0f0000000ASn6CAG'}; skyvvasolutions.Iservices.invokeCalloutV3('BAPIXML_REST','BAPI_SalesOrder_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2021/02/Untitled-20.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 6. Salesforce to SAP(Using SAP Control Board) Title: 6.6 How to call SAP SOAP API using Skyvva SOAP Adapter? Slug: 6-6-how-to-call-sap-soap-api-using-skyvva-soap-adapter URL: https://help.skyvva.com/#article/6-6-how-to-call-sap-soap-api-using-skyvva-soap-adapter ================================================================================ # 6.6 How to call SAP SOAP API using Skyvva SOAP Adapter? **Posting SAP BAPI to SAP ERP over Skyvva SOAP Adapter** In SAP ERP we have to do the following settings How to Activate the Skyvva service in SAP using Tcode SICF. #### Introduction:- In this chapter, you will learn about the “Activation of  Skyvva service in sap”. The service is used to send & receive data from SAP <> salesforce . #### Activation of Skyvva service in Tcode SICF Once you have installed the Skyvva package(TR) all Internet Communication Framework (ICF) services are available in an inactive state for security reasons. After the installation you have to decide which services must be activated for the applications you want to use. Since multiple services can be executed when you call a URL, all service nodes must be activated in the SICF tree. The URL path is mapped in ICF subnodes (services). For example, if you want to activate the services for URL  /default_host/sap/bc/skyvva/, you have to activate the service tree default_host* *in transaction SICF. Then you have to activate services sap, bc and skyvva separately. You activate an ICF service as follows: - Select the required ICF service in the ICF tree in transaction SICF. - Activate the ICF service in one of the following ways: - Using menu option ***Service/Host*  ->  *Activate*** - Using the context menu and choosing ***Activate Service****.* ### Services for Skyvva For skyvva ABAP  the following services must be activated in the system. #### Using skyvva Applications /default_host/sap/public/ping This node itself must be activated, for ping service. /default_host/sap/bc/skyvva/ Here only the node itself must be activated, and **not** the subnodes. /default_host/sap/bc/skyvva/v3/ #### This node is activated automatically when the subnodes described below are activated. Likewise, here only the node itself must be activated, as well as the following subnodes: /default_host/sap/bc/skyvva/v3/cache /default_host/sap/bc/skyvva/v3/ GetBapiDetail /default_host/sap/bc/skyvva/v3/ GetIdocSegField /default_host/sap/bc/skyvva/v3/ GetIdocSegList /default_host/sap/bc/skyvva/v3/ GetObjCount /default_host/sap/bc/skyvva/v3/ GetObjectList /default_host/sap/bc/skyvva/v3/ GetPartnProfile /default_host/sap/bc/skyvva/v3/ GetQualifier /default_host/sap/bc/skyvva/v3/ GetTabFieldList /default_host/sap/bc/skyvva/v3/ restoreendpoint - **Activate All the service as shown below.**![](../images/2021/02/SICF.png) Also we will get the soap wsdl from SOAMANAGER. We use the SOAP WSDL to create the message type in Skyvva. **Creating the SOAP Adapter in Skyvva** We need to provide the following details to create the SOAP adapter Name - Name of the adapter Type - SOAP Description - BAPI SOAP Adapter Direction - Outbound Status - Active ![](../images/2021/02/Untitled-21.png) Authentication - Basic endpoint - http://195.201.104.232:16080/sapid7/sap/bc/srt/rfc/sap/zget_po_detail/820/zget_po_detail/zget_po_detail Operation - POST Request and Response Format - application/xml ![](../images/2021/02/Untitled-22.png) ![](../images/2021/02/Untitled-23.png) Username - idadmin Password - ****** Now click on save button to create the adapter. **Create Metadata Provider** - ![](../images/2021/02/Untitled-24.png) **Create Repository** - ![](../images/2021/02/Untitled-25.png) **Create Message type - ** Creating the message type using the provided WSDL from SAP To import the WSDL Click on Open editor ![](../images/2021/02/Untitled-26.png) Choose the file type as WSDL 1.1 and Copy the WSDL and click on save to create the message type. ![](../images/2021/02/Untitled-27.png) ![](../images/2021/02/Untitled-28.png) ![](../images/2021/02/Untitled-29.png) Use the above messagetype while creating the outbound and inbound interface. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below ![](../images/2021/02/Untitled-30.png) ![](../images/2021/02/Untitled-31.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2021/02/Untitled-32.png) Save the interface once provide all the necessary details. **Create Inbound response interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below ![](../images/2021/02/Untitled-33.png) Do the mapping as shown ![](../images/2021/02/Untitled-34.png) ![](../images/2021/02/Untitled-35.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); Map header = new Map(); header.put('servertype','Apache'); header.put('type','application/soap+xml; charset=utf-8'); header.put('length','1368'); c.headerParam= header; skyvvasolutions.IServices.invokeCalloutV3('BAPI_GET_SOAPAPI','BAPI_PO_Out',new String[]{'801f0000000gw6HAAQ'},'SYNC',c); Now we can see the message in the message monitor: ![](../images/2021/02/Untitled-20.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 7. Salesforce to SAP(Using Agent Control Board) Title: 7.5 HOW TO CALL SAP REST API USING SKYVVA REST ADAPTER? Slug: 7-5-how-to-call-sap-rest-api-using-skyvva-rest-adapter URL: https://help.skyvva.com/#article/7-5-how-to-call-sap-rest-api-using-skyvva-rest-adapter ================================================================================ # 7.5 HOW TO CALL SAP REST API USING SKYVVA REST ADAPTER? **Posting BAPI  to SAP ERP from salesforce using Skyvva REST Adapter** In SAP ERP we have to do the following settings How to Activate the Skyvva service in SAP using Tcode SICF. #### Introduction:- In this chapter, you will learn about the “Activation of  Skyvva service in sap”. The service is used to send & receive data from SAP <> salesforce . #### Activation of Skyvva service in Tcode SICF Once you have installed the Skyvva package(TR) all Internet Communication Framework (ICF) services are available in an inactive state for security reasons. After the installation you have to decide which services must be activated for the applications you want to use. Since multiple services can be executed when you call a URL, all service nodes must be activated in the SICF tree. The URL path is mapped in ICF subnodes (services). For example, if you want to activate the services for URL  /default_host/sap/bc/skyvva/, you have to activate the service tree default_host* *in transaction SICF. Then you have to activate services sap, bc and skyvva separately. You activate an ICF service as follows: - Select the required ICF service in the ICF tree in transaction SICF. - Activate the ICF service in one of the following ways: - Using menu option ***Service/Host*  ->  *Activate*** - Using the context menu and choosing ***Activate Service****.* ### Services for Skyvav For skyvva ABAP  the following services must be activated in the system. #### Using skyvva Applications /default_host/sap/public/ping This node itself must be activated, for ping service. /default_host/sap/bc/skyvva/ Here only the node itself must be activated, and **not** the subnodes. /default_host/sap/bc/skyvva/v3/ #### This node is activated automatically when the subnodes described below are activated. Likewise, here only the node itself must be activated, as well as the following subnodes: /default_host/sap/bc/skyvva/v3/cache /default_host/sap/bc/skyvva/v3/ GetBapiDetail /default_host/sap/bc/skyvva/v3/ GetIdocSegField /default_host/sap/bc/skyvva/v3/ GetIdocSegList /default_host/sap/bc/skyvva/v3/ GetObjCount /default_host/sap/bc/skyvva/v3/ GetObjectList /default_host/sap/bc/skyvva/v3/ GetPartnProfile /default_host/sap/bc/skyvva/v3/ GetQualifier /default_host/sap/bc/skyvva/v3/ GetTabFieldList /default_host/sap/bc/skyvva/v3/ restoreendpoint - **Activate All the service as shown below.**![](../images/2021/02/SICF.png) We will get the endpoint and request and response JSON payloads from SAP. By using that we have to create message type in Skyvva. **Creating the REST Adapter in Skyvva** We need to provide the following details to create the REST adapter Name - Name of the adapter Type - REST Description - BAPI REST Adapter Direction - Outbound Status - Active ![](../images/2021/02/Untitled-6.png) Authentication - Basic endpoint - http://195.201.104.232:16080/sapid7/sap/bc/skyvva_sf/createso?sap-client=820 Operation - POST ![](../images/2021/02/Untitled-7.png) Request and Response Format - application/json ![](../images/2021/02/Untitled-8.png) Username - idadmin Password - ****** Now click on save button to create the adapter. **Create Metadata Provider** - ![](../images/2021/02/Untitled-11.png) **Create Repository** - ![](../images/2021/02/Untitled-12.png) **Create Message type - ** Creating the message type using the following JSON payload. **Request Structure:** {   "DocType" : "TA",   "SalesOrg" : "1000",   "DistrChan" : "12",   "Division" : "00",   "NvHeaderToOrdItem" : [     {       "ItmNumber" : "000010",       "Plant" : "1000",       "Material" : "1400-300",       "TargetQty" : "100.000",       "NvOrdItemToSchLine" : [         {           "ItmNumber" : "000010",           "ReqQty" : "100.000",           "ReqDate" : "2020-08-23T12:34:56"         }       ]     }   ],   "NvHeaderToPartners" : [     {       "PartnRole" : "AG",       "PartnNumb" : "0000002300"     }   ],   "ReturnSet" : [{   "Type" : "",   "Message" : "",   "MessageV1" : ""   }] } **Response Structure:** { "ARRAY": [ { "TYPE": "S", "ID": "V4", "NUMBER": "233", "MESSAGE": "SALES_HEADER_IN has been processed\r\nsuccessfully", "LOG_NO": "", "LOG_MSG_NO": "000000", "MESSAGE_V1": "VBAKKOM", "MESSAGE_V2": "", "MESSAGE_V3": "", "MESSAGE_V4": "", "PARAMETER": "SALES_HEADER_IN", "ROW": 0, "FIELD": "", "SYSTEM": "CNT_DEV820" }, { "TYPE": "S", "ID": "V4", "NUMBER": "233", "MESSAGE": "SALES_ITEM_IN\r\nhas been processed\r\nsuccessfully", "LOG_NO": "", "LOG_MSG_NO": "000000", "MESSAGE_V1": "VBAPKOM", "MESSAGE_V2": "000010", "MESSAGE_V3": "", "MESSAGE_V4": "", "PARAMETER": "SALES_ITEM_IN", "ROW": 1, "FIELD": "", "SYSTEM": "CNT_DEV820" }, { "TYPE": "S", "ID": "V1", "NUMBER": "311", "MESSAGE": "Standard\r\nOrder 20469 has been saved", "LOG_NO": "", "LOG_MSG_NO": "000000", "MESSAGE_V1": "Standard\r\nOrder", "MESSAGE_V2": "20469", "MESSAGE_V3": "", "MESSAGE_V4": "", "PARAMETER": "SALES_HEADER_IN", "ROW": 0, "FIELD": "", "SYSTEM": "CNT_DEV820" } ] } Now create the message type using the above payloads along with the rest template. ![](../images/2021/02/Untitled-9.png) ![](../images/2021/02/Untitled-10.png) Use the above messagetype while creating the outbound and inbound interface. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below ![](../images/2021/02/Untitled-13.png) ![](../images/2021/02/Untitled-14.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2021/02/Untitled-15.png) ![](../images/2021/02/Untitled-16.png) ![](../images/2021/02/Untitled-17.png) Save the interface once provide all the necessary details. **Create Inbound response interface:** ![](../images/2021/02/Untitled-18.png) Do the mapping as shown ![](../images/2021/02/Untitled-19.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); c.returnXml=true; c.returnListRecord=true; c.isCreateMessage=true; c.actionDoIntegrate=true; String[] ids=new String[]{'0Q0f0000000ASn6CAG'}; skyvvasolutions.Iservices.invokeCalloutV3('BAPIXML_REST','BAPI_SalesOrder_Out',ids,'SYNC', c); Now we can see the message in the message monitor: ![](../images/2021/02/Untitled-20.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 7. Salesforce to SAP(Using Agent Control Board) Title: 7.6 How to call SAP SOAP API using Skyvva SOAP Adapter? Slug: 7-6-how-to-call-sap-soap-api-using-skyvva-soap-adapter URL: https://help.skyvva.com/#article/7-6-how-to-call-sap-soap-api-using-skyvva-soap-adapter ================================================================================ # 7.6 How to call SAP SOAP API using Skyvva SOAP Adapter? **Posting SAP BAPI to SAP ERP over Skyvva SOAP Adapter** In SAP ERP we have to do the following settings How to Activate the Skyvva service in SAP using Tcode SICF. #### Introduction:- In this chapter, you will learn about the “Activation of  Skyvva service in sap”. The service is used to send & receive data from SAP <> salesforce . #### Activation of Skyvva service in Tcode SICF Once you have installed the Skyvva package(TR) all Internet Communication Framework (ICF) services are available in an inactive state for security reasons. After the installation you have to decide which services must be activated for the applications you want to use. Since multiple services can be executed when you call a URL, all service nodes must be activated in the SICF tree. The URL path is mapped in ICF subnodes (services). For example, if you want to activate the services for URL  /default_host/sap/bc/skyvva/, you have to activate the service tree default_host* *in transaction SICF. Then you have to activate services sap, bc and skyvva separately. You activate an ICF service as follows: - Select the required ICF service in the ICF tree in transaction SICF. - Activate the ICF service in one of the following ways: - Using menu option ***Service/Host*  ->  *Activate*** - Using the context menu and choosing ***Activate Service****.* ### Services for Skyvva For skyvva ABAP  the following services must be activated in the system. #### Using skyvva Applications /default_host/sap/public/ping This node itself must be activated, for ping service. /default_host/sap/bc/skyvva/ Here only the node itself must be activated, and **not** the subnodes. /default_host/sap/bc/skyvva/v3/ #### This node is activated automatically when the subnodes described below are activated. Likewise, here only the node itself must be activated, as well as the following subnodes: /default_host/sap/bc/skyvva/v3/cache /default_host/sap/bc/skyvva/v3/ GetBapiDetail /default_host/sap/bc/skyvva/v3/ GetIdocSegField /default_host/sap/bc/skyvva/v3/ GetIdocSegList /default_host/sap/bc/skyvva/v3/ GetObjCount /default_host/sap/bc/skyvva/v3/ GetObjectList /default_host/sap/bc/skyvva/v3/ GetPartnProfile /default_host/sap/bc/skyvva/v3/ GetQualifier /default_host/sap/bc/skyvva/v3/ GetTabFieldList /default_host/sap/bc/skyvva/v3/ restoreendpoint - **Activate All the service as shown below.**![](../images/2021/02/SICF.png) Also we will get the soap wsdl from SOAMANAGER. We use the SOAP WSDL to create the message type in Skyvva. **Creating the SOAP Adapter in Skyvva** We need to provide the following details to create the SOAP adapter Name - Name of the adapter Type - SOAP Description - BAPI SOAP Adapter Direction - Outbound Status - Active ![](../images/2021/02/Untitled-21.png) Authentication - Basic endpoint - http://195.201.104.232:16080/sapid7/sap/bc/srt/rfc/sap/zget_po_detail/820/zget_po_detail/zget_po_detail Operation - POST Request and Response Format - application/xml ![](../images/2021/02/Untitled-22.png) ![](../images/2021/02/Untitled-23.png) Username - idadmin Password - ****** Now click on save button to create the adapter. **Create Metadata Provider** - ![](../images/2021/02/Untitled-24.png) **Create Repository** - ![](../images/2021/02/Untitled-25.png) **Create Message type - ** Creating the message type using the provided WSDL from SAP To import the WSDL Click on Open editor ![](../images/2021/02/Untitled-26.png) Choose the file type as WSDL 1.1 and Copy the WSDL and click on save to create the message type. ![](../images/2021/02/Untitled-27.png) ![](../images/2021/02/Untitled-28.png) ![](../images/2021/02/Untitled-29.png) Use the above messagetype while creating the outbound and inbound interface. **Creating an Outbound interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below ![](../images/2021/02/Untitled-30.png) ![](../images/2021/02/Untitled-31.png) For outbound interface we have to do mapping in Skyvva as shown. ![](../images/2021/02/Untitled-32.png) Save the interface once provide all the necessary details. **Create Inbound response interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter and the SQL statement as shown in the screenshots below ![](../images/2021/02/Untitled-33.png) Do the mapping as shown ![](../images/2021/02/Untitled-34.png) ![](../images/2021/02/Untitled-35.png) Now do the callout using below apex code: skyvvasolutions.CallOutControl c=new skyvvasolutions.CallOutControl(); Map header = new Map(); header.put('servertype','Apache'); header.put('type','application/soap+xml; charset=utf-8'); header.put('length','1368'); c.headerParam= header; skyvvasolutions.IServices.invokeCalloutV3('BAPI_GET_SOAPAPI','BAPI_PO_Out',new String[]{'801f0000000gw6HAAQ'},'SYNC',c); Now we can see the message in the message monitor: ![](../images/2021/02/Untitled-20.png) ================================================================================ Book: SAP S/4HANA Adapter Section: SAP S/4HANA Adapter Subsection: 1. Pre-Requisite Title: 1.7 Activation of the "rfc" service service in SAP Slug: 1-7-activation-of-the-rfc-service-service-in-sap URL: https://help.skyvva.com/#article/1-7-activation-of-the-rfc-service-service-in-sap ================================================================================ # 1.7 Activation of the "rfc" service service in SAP **This unit describes:-** How to Activate the bc -> soap -> rfc service in SAP using Tcode SICF. #### Introduction:- In this chapter, you will learn about the “Activation of  bc -> soap -> rfc service in sap”. The service is used to send & receive data from SAP <> salesforce . #### Activation of  bc -> soap -> rfc service in Tcode SICF Once you have installed the Skyvva package(TR) all Internet Communication Framework (ICF) services are available in an inactive state for security reasons. After the installation you have to decide which services must be activated for the applications you want to use. Since multiple services can be executed when you call a URL, all service nodes must be activated in the SICF tree. The URL path is mapped in ICF subnodes (services). For example, if you want to activate the services for URL  /default_host/sap/bc/soap/, you have to activate the service tree default_host* *in transaction SICF. Then you have to activate services sap, bc and rfc separately. You activate an ICF service as follows: - Select the required ICF service in the ICF tree in transaction SICF. - Activate the ICF service in one of the following ways: - Using menu option ***Service/Host*  ->  *Activate*** - Using the context menu and choosing ***Activate Service****.* ### Services for RFC For skyvva ABAP  the following services must be activated in the system. #### Using skyvva Applications /default_host/sap/public/ping This node itself must be activated, for ping service. /default_host/sap/bc/soap/ Here only the node itself must be activated, and **not** the subnodes. /default_host/sap/bc/soap/rfc/ #### This node is activated automatically when the subnodes described below are activated. Likewise, here only the node itself must be activated, as well as the following subnodes: /default_host/sap/bc/soap/rfc - **Activate All the service as shown below.![](../images/2023/05/rfc_s1.png) ![](../images/2023/05/RFC_service.png)** ================================================================================ Book: Migration Guide Section: Migration Guide Subsection: (General) Title: EXECUTIVE SUMMARY Slug: executive-summary URL: https://help.skyvva.com/#article/executive-summary ================================================================================ # EXECUTIVE SUMMARY Due to the shift to the hyperforce platform, the HTTP protocol version 1.0 will be switched off and not supported anymore by Salesforce. See this youtube video https://www.youtube.com/watch?v=RXWoR8M_7BI to understand the reason. The soap adapter of the sap-po doesn’t support a higher HTTP protocol than 1.0, and the integration to Salesforce will no longer work using the sap-po soap adapter. Therefore we have created a new Salesforce connector module that can be used with the sap-po rest adapter. The sap-po rest adapter supports HTTP 1.1 and higher. The existing interface you have created with the Skyvva connector running on the soap adapter must be migrated. The migration must be done manually because an automatic upgrade is not possible. We have to use a new adapter type, e.g., moving from soap to the rest adapter to have HTTP 1.1 and higher protocol support. The migration has to be carried out only for the configuration part and not for the design part in the ESR. Only the configuration in the directory tool has to be adapted. Mainly the adapter has to be switched from the soap to the rest adapter. This paper will guide you on how to do the migration work. Note that you need the appropriate sap-po version that supports the REST adapter with the OAuth authentication. If not, you must upgrade to a higher SP level. ================================================================================ Book: Migration Guide Section: Migration Guide Subsection: (General) Title: 1 Pre requisites Slug: 1-pre-requisites URL: https://help.skyvva.com/#article/1-pre-requisites ================================================================================ # 1 Pre requisites The following prerequisites must be fulfilled to successfully configure the REST adapter using the new Skyvva connector module. ## 1.1 Skyvva new REST connector module To successfully migrate your existing interface configuration from the soap to the rest adapter, you must install the latest version of the Skyvva connector module. The new Skyvva connector contains the following module. - Skyvva/V2/RestIntegration - Skyvva/V3/RestIntegration Note that the new deployment file contains the old module versions used with the soap adapter. Ensure that your sap-po version supports the REST adapter with the OAuth authentication. Please upgrade your SAP-PO to the latest SP level if this is not the case. ## 1.2 Salesforce Connected App To use the sap-po REST adapter, you must create a so-called connected App in Salesforce. You need the client-id and client-secret to configure the OAuth authentication with the REST adapter. In Salesforce connected App, the client-id is called “Consumer Key, “ and the client-secret is called “Consumer Secret”. Refer to this Salesforce help [https://help.salesforce.com/s/articleView?id=sf.connected_app_overview.htm&type=5](https://help.salesforce.com/s/articleView?id=sf.connected_app_overview.htm&type=5) to create a connected App. Open the connected app you created to see the client-id and client-secret. ![](../images/2022/08/m1.png) Now you can see the client-id and client-secret of the connected app. ![](../images/2022/08/m2.png) This is the mapping between the Salesforce Connected App and the REST adapter OAuth authentication screen. ![](../images/2022/08/m3.png) These two parameters, “Consumer Key” and “Consumer Secret”, the username and password of a Salesforce user are always needed to use the REST adapter with the OAuth authentication. Before configuring the REST receiver channel, you must create the connected App in Salesforce. Note that it can take up to 10 minutes before the connected App is ready to use. ================================================================================ Book: Migration Guide Section: Migration Guide Subsection: (General) Title: 2. Differences between V2 and V3 Interface Slug: 2-differences-between-v2-and-v3-interface URL: https://help.skyvva.com/#article/2-differences-between-v2-and-v3-interface ================================================================================ # 2. Differences between V2 and V3 Interface You need to check your existing interface configuration to see which Skyvva connector module you used. There are two different versions based on the Skyvva App version you are using. From version 2.44 upward, we have introduced the new concept of using the so-called message type to design the interface. This technique allows for creating a hierarchical interface and mapping using the mapping tool in one shut. This technique is called Version 3 of the interface design style. Before this technique, we have the old approach to creating the interface without using the message type. Those interfaces are flat and based on the sObject, where the mapping cannot be done hierarchically. This technique is called version 2 design style.  From version 2.44, you might have migrated your old interface design, e.g., from V2 to V3 style, and thus start using the message type. If you have not migrated to the interface design style of V3, you might have the old style using the V2 interface design technique.  ## 2.1 V2 Interface Here is an example of how what the V2 interface design looks like. We see two separate modules “Salesforce/Transformation” and “Salesforce/GetSessionID_V3”. This was the first version of the Skyvva connector module that we released. ![](../images/2022/08/m4.png) The following example shows the later version of the connector module where we merged the two modules, e.g., ‘Salesforce/Transformation’ and ‘Salesforce/GetSessionID_V3’, to become one, e.g., /Salesforce/GetSessionID_V4 for simplification. There are no functional differences between the two versions except for the merge and simplification of to use of one module. ![](../images/2022/08/m5.png) Whether using two modules or one in the soap receiver channel, you are using the V2 interface design technique. This technique will be referenced in the whole guide as the V2 interface or V2 style. ## 2.2 V3 Interface You can recognize the V3 interface design when your soap receiver channel uses the “Skyvva/V3/Integration” module. Here is an example screenshot of the soap receiver channel. This version is a further development and improvement of the first V2 interface version. ![](../images/2022/08/m6.png) Why is it important to know which techniques you have used in the interface design? Based on which interface design techniques you have used e.g. if V2 or V3 interface there are different REST connector modules to be used.  For technical reasons, we must create two different versions of the new module for the V2 and V3 interface design. To migrate the V2 style interface, you must use the “Skyvva/V2/RestIntegration” module. If your interface is a V3 style interface, you must use the “Skyvva/V3/RestIntegration” module. Therefore it is important to know which design style your interfaces are based on. There is also a second way to recognize your interface design style. You have to look at the external data definition created by the Skyvva XSD or WSDL. The structure which is used with the V2 interface style looks like this. ![](../images/2022/08/m7.png) Note that the field “fromSystem” and “targetObject” is characteristic of the V2 interface style.  If the V3 interface style is used, the structure looks like this. ![](../images/2022/08/m8.png) By exploring these two different characteristics, you know which kind of interface design style you have currently on your sap-po instance. Based on which interface style you have, you need to use the correct REST connector module. For V2, choose “Skyvva/V2/RestIntegration” and for V3, the module “Skyvva/V3/RestIntegration”. ## ================================================================================ Book: Migration Guide Section: Migration Guide Subsection: (General) Title: 3. Operation Integrate Slug: 3-operation-integrate URL: https://help.skyvva.com/#article/3-operation-integrate ================================================================================ # 3. Operation Integrate With this operation, we send a small amount of data from sap-po to Skyvva. We can send the data in a synchronous or asynchronous mode, meaning that when we need a response, we design the interface in sap-po and Skyvva to be synchronous. If a response is not needed, then the interface is designed as an asynchronous one.  ## 3.1 Synchronous versus Asynchronous As mentioned above, we create a synchronous or asynchronous interface with SAP-PO. To support this concept, we provide two different operation methods called “Integrate Synchronous” and “Integrate Asynchronous”. If your interface in SAP-PO is a synchronous interface, you must use the operation “Integrate Synchronous” in the rest receiver channel configuration. If it is an asynchronous interface, use the operation “Integrate Asynchronous”. Here an example screenshots of the asynchronous operation.![](../images/2022/08/3.1.png) Here is an example of a synchronous operation. ![](../images/2022/08/3.2.png) These are the available operation mode you can use with the Skyvva connector module: - Integrate Synchronous - Integrate Asynchronous ## 3.2 Parameters of the Module The parameter names used with the old module have been changed to new names. Some parameters we have removed. Some parameters remain the same as in the old version. See the following table for which parameter has been changed, removed, or kept the same. The parameters with the color red are changed named. The ones in blue are removed parameters. **Old Parameter Name** **New Parameter Name** **Setting** **Comment** 1 skyvvaVersion AppVersion Mandatory Skyvva App version 2 IntegrationID Integration Optional Integration name 3 SforceWebServiceOperation Operation Mandatory Operation name 4 SessionGlobalFilePath SessionGlobalFilePath Optional No change 5 SessionPooling.Active SessionPooling.Active Optional No change 6 SforceAccessPoint Removed 7 SforceRequestPayload SforceRequestPayload Optional No change 8 SforceShowSAPChannelParameters SforceShowSAPChannelParameters Optional No change Some parameters have been removed because they are not needed anymore.  - SforceAccessPoint. This parameter is no longer needed because we use the OAuth REST API from Salesforce directly. - SforceSecurityToken. This parameter is not needed anymore. The security becomes part of the password and has to be entered as one string to the password field “pwdSforceLoginPassword”. This is an example of the old module with some parameters. You can see that in the old module, you need to configure the authentication to the one you have done for the soap receiver channel. With the new module, we don’t need to use the authentication inside the module anymore. We are using the authentication from the REST adapter. Therefore there is no need to configure the authentication for the new Skyvva REST module again ## ## 3.3 Creating the REST receiver channel For using the new connector module V2/ or V3/RestIntegration, you must create a rest receiver channel in SAP-PO. The SAP-PO generic parameter is the same for the V2/ and V3/RestIntegration modules. The only difference is the module's name, e.g., “Skyvva/V2/RestIntegration” for the V2, and for V3, the module “Skyvva/V3/RestIntegration”. In the following example, you will see an example with the V2/RestIntegration module.  Here is an example screenshot of the V2/RestIntegration module. ![](../images/2022/08/3.4.png) You have to create a new rest receiver channel module, as shown below screenshot. You need to configure the OAuth authentication using the client-id and client-secret. This can be found as the consumer-secret and consumer-id in the Salesforce Connected App. Enter the Salesforce instance URL of your organization into the field “Authorization Server URL”. Select the check box “Authorize with OAuth” as shown in the screenshot below.  Chose for the “OAuth 2.0 Grant Type” the value “Resource Owner Password Credentials Grant”. Set at the transfer method for the field “Use credentials and OAuth 2.0 access token as:” the value “HTTP Header”.  Enter the Salesforce username into the fields “Authorization Server Username” and “Resource Owner Username”. Enter the username's password into the fields “Authorization Server Password” and “Resource Owner Password”. Enter to both fields the same username and password! ![](../images/2022/08/3.5.png) ![](../images/2022/08/3e.png) In the tab “REST URL” enter the Skyvva API that consists of the instance URL and the fix string “/services/apexrest/skyvvasolutions/V3/integrate”.  It is your responsibility to get the correct Salesforce instance base URL of your organization! ![](../images/2022/08/3.7.png) In the tab “HTTP Header” enter the Content-Type parameter as shown on the screen below. ![](../images/2022/08/3.8.png) On the tab “Module” enter the Skyvva connector module. Note that in the example on the screenshot we use the V2 rest connector module and therefore we have entered the module “Skyvva/V2/RestIntegration”. As a required parameter you must enter the parameter “Operation” and set it to “Integrate Asynchronous” or “Integrate Synchronous”. If this parameter is not set then the interface will not work. The next parameter is the integration name which you have to enter into the parameter “Integration”. This is only needed if you have not set the integration name in the mapping. If you have set the integration name in the mapping, you can omit this parameter because in this case, we use the integration name from the mapping. You must enter the Skyvva App version using the parameter “AppVersion”. Ensure you enter the correct Skyvva App version installed on your Salesforce instance, for example, 2.47, 2.48, 2.49, etc. Other parameters on the below screenshot are optional. ![](../images/2022/08/3.9.png) As explained above the parameters for the V2/- and V3/RestIntegration are the same. Here is a second example of the configuration with V3/RestIntegration module. ![](../images/2022/08/3.10.png) ![](../images/2022/08/3.11.png) Here we can see that the V3/RestIntegration module is used instead of the V2/RestIntegration. The module parameters are the same as we have shown in the V2/RestIntegration module configuration. ![](../images/2022/08/3.12.png) The REST receiver channel is required in the migration work. We are using the REST receiver channel with the Skyvva connector module instead of the soap module. After you have created one working rest receiver channel you can use it as the template for a new channel you needed later. Ensure that you adapt the parameter accordingly when creating a new channel based on the existing one. The Salesforce instance URL, username, password, client-id, and client-secret parameters might be changed according to the Salesforce instance you are using. ## 3.4 How to migrate a V2 Interface? We need to distinguish between the V2 and V3 interface versions because different module is used. Here is an example of the REST adapter receiver channel configuration where you see some parameters. ![](../images/2022/08/3.1-1.png) The parameter “AppVersion” is needed to set the Skyvva App version you are running on the Salesforce instance. The parameter “Integration” is the integration name. This parameter is optional. If you set the integration name in the mapping, this parameter is not needed in the module configuration. If you set the parameter in both places, e.g., in the mapping and the module configuration, then the priority is given to the module parameter. This means that the module setting overwrites the mapping setting and therefore has a higher priority.  The parameter “Operation” is used to set the Skyvva operation. We have two different values for this mode, e.g., - Integrate Asynchronous. This operation is used when the interface is asynchronous and no response is needed in sap-po. - Integrate Synchronous. This operation is used when you need a response from the Skyvva API. The parameter “SforceRequestPayload” and “SforceShowSAPChannelParameters” are optional and used to create Skyvva-related traces in the adapter log. If you don’t need any log, then remove these parameters. It is recommended to use these parameters for testing in the UAT or Sandbox but removes them on the production because they create many log entries into the SAP-PO rest adapter trace. For your old V2 module configuration with the soap adapter, you have to create a rest receiver channel and use the new module with the name “Skyvva/V2/RestIntegration”. Then set the parameters as described above. Change your configuration to use the new rest receiver channel instead of the soap receiver channel.  Here is an example of a configuration scenario for the operation “Integrate Asynchronous”. Note that your interfaces in the ESR remain as it is and can be reused. You only need to adapt the configuration by replacing the soap with the rest receiver channel. ![](../images/2022/08/3.2-1.png) ![](../images/2022/08/3.3-1.png) ![](../images/2022/08/3.3-2.png) ![](../images/2022/08/3.4-1.png) ![](../images/2022/08/3.5-1.png) This is the rest receiver channel that you have to create. ![](../images/2022/08/3.6.png) ![](../images/2022/08/3.7-1.png)![](../images/2022/08/3.9-1.png) ## 3.5 How to migrate a V3 Interface? In this case, use the module “Skyvva/V3/RestIntegration”. The migration is the same as the V2 interface migration. The parameters are the same. You have just to replace the soap module with the V3 interface with the new rest module with the V3 version.  ![](../images/2022/08/3.10-1.png) ![](../images/2022/08/3.11-1.png)![](../images/2022/08/3.12-1.png) This is the adapter. ![](../images/2022/08/3.13.png) ![](../images/2022/08/3.14.png)![](../images/2022/08/3.15.png)![](../images/2022/08/3.16.png) In the example above we have shown how to use the asynchronous interface e.g. the operation “Integrate Asynchronous”. If you have a synchronous scenario, you just need to change the operation name to “Integrate Synchronous”. Of course, your ESR definition has to use the synchronous service interface, and your sender adapter must use the QoS = BE. These are SAP-PO-specific interface design concept that is not described in this guide. ================================================================================ Book: Migration Guide Section: Migration Guide Subsection: (General) Title: 5. Operation Skyvva Batch Slug: 5-operation-skyvva-batch URL: https://help.skyvva.com/#article/5-operation-skyvva-batch ================================================================================ # 5. Operation Skyvva Batch With the batch operation mode, you send medium-size data from SAP-PO to Skyvva, where the processing takes place in the background using the Salesforce background job. You have on the Skyvva side the batch control board to maintain the batch processing. As the operation integrate your old interfaces can be built by using the V2 or V3 connector module with the soap adapter. Therefore we have a similar way to replace the V2 and V3 soap module with the V2 and V3 rest connector modules. Again here, you don’t need to migrate the ESR object. You need only to make the configuration changes of the Directory object and replace the soap with the rest receiver adapter. Here is an example of the rest receiver channel. ![](../images/2022/08/1.png) The parameters used here have been described already in the section with the operation “Integrate XX”. Those parameters such as “AppVersion” are not described in this chapter. We described the parameter related to the mode batch. ![](../images/2022/08/2.png) Here is an example of the rest receiver channel for using the operation “Skyvva Batch”. ![](../images/2022/08/3.png) Set the parameter “AuthenticationServerURL” to the token URL of Salesforce. For the sandbox instance, the token server URL is “[https://test.salesforce.com/services/oauth2/token](https://test.salesforce.com/services/oauth2/token)”. For the production and development environment, the URL is “[https://login.salesforce.com/services/oauth2/token](https://login.salesforce.com/services/oauth2/token)”. You must set the operation using the parameter “Operation” to “Skyvva Batch”. Set again the consumer-key and consumer-secret was taken from the connected app into the parameter “ConsumerKey” and “ConsumerSecret”. Set the username and password using the parameters “SforceUsername” and “pwdSforceLoginPassword”. Note that you have to concatenate the password and security token of the user to a single string and put it to the parameter “pwdSforceLoginPassword”. For the package size handling with the batch mode, you must use the parameter “BatchPackageSize”. Based on the Skyvva App version, there is two way to set the package size for the batch mode. You can set in the module parameter as shown in the screenshot above or on the Skyvva interface. Till version 2.48 you cannot set the package size on the Skyvva interface. From version 2.49 you can set the package size on the interface. The field package size is first available in version 2.49. Here is an example of how to set the package size on the interface in version 2.49. ![](../images/2022/08/4.png) If you are using version 2.49, you have two possibilities to set the package size but only one when your Skyvva App version is below 2.49. For all versions below 2.49, you can only set the package size on the module parameter.  After creating the rest receiver channel with the new Skyvva connector module use it in your configuration and replace the old soap receiver channel.  ## 5.1 V2 Interface You use the module “Skyvva/V2/RestIntegration” here. Note that the OAuth configuration is the same as you have seen for the operation “Integrate XX” and is not repeated here.  Here is an example of the V2 module. ![](../images/2022/08/5.png) ## 5.2 V3 Interface You use the module “Skyvva/V3/RestIntegration” here. Note that the OAuth configuration is the same as you have seen for the operation “Integrate XX” and is not repeated here.  Here is an example of the V3 module. ![](../images/2022/08/6.png) ================================================================================ Book: Migration Guide Section: Migration Guide Subsection: (General) Title: 6. Operation Skyvva Bulk Slug: 6-operation-skyvva-bulk URL: https://help.skyvva.com/#article/6-operation-skyvva-bulk ================================================================================ # 6. Operation Skyvva Bulk The Skyvva bulk mode can handle more data than the batch mode. It uses the Salesforce bulk API to create ContentVersion (Files) and therefore can handle bigger data sizes than using the REST or SOAP API as we do in the Skyvva batch mode. When you run into the data size limit while using the Skyvva batch mode, you can switch to the Skyvva Bulk mode. As the operation integrate your old interfaces can be built by using the V2 or V3 connector module with the soap adapter. Therefore we have a similar way to replace the V2 and V3 soap module with the V2 and V3 rest connector modules. Again here, you don’t need to migrate the ESR object. You need only to make the configuration changes of the Directory object and replace the soap with the rest receiver adapter. Here is an example of the rest receiver channel. ![](../images/2022/08/7.png) The same parameters are used as shown above with the operation Integrate XX and Skyvva Batch. What you need to do is here setting the parameter Operation to “Skyvva Bulk” to indicate that the processing mode is a Skyvva bulk operation mode. The configuration of the OAuth authentication is the same as you have seen above in the Skyvva batch mode. You have to set the consumer-key and consumer-secreat, username, and password. Note that also here the password is the concatenation of the password and the security token. The parameter to set the package size for the bulk mode is called “BulkPackageSize” and works in a similar way as the package size for the Skyvva batch mode. The processing logic is the same and the setting of the parameter in the module overwrites the setting on the interface. Unlike the package size for batch, you can set this parameter on the Skyvva interface on any version up to 2.49. ## 6.1 V2 Interface You use the module “Skyvva/V2/RestIntegration” here. Note that the OAuth configuration is the same as you have seen for the operation “Integrate XX” and is not repeated here.  Here is an example of the V2 module. ![](../images/2022/08/8.png) ## 6.2 V3 Interface You use the module “Skyvva/V3/RestIntegration” here. Note that the OAuth configuration is the same as you have seen for the operation “Integrate XX” and is not repeated here.  Here is an example of the V3 module. ![](../images/2022/08/9.png) ================================================================================ Book: Migration Guide Section: Migration Guide Subsection: (General) Title: 7. Operation Skyvva Autoswitch Slug: 7-operation-skyvva-autoswitch URL: https://help.skyvva.com/#article/7-operation-skyvva-autoswitch ================================================================================ # 7. Operation Skyvva Autoswitch With the Skyvva integrate asynchronous mode, you send small-size data. With the Skyvva batch, you send medium-size data. With the Skyvva bulk, you can send large-size data. You have to configure these three different modes statically on the Skyvva interface and can run the interface specifically with the configured mode.  Sometimes you have a situation where you cannot control how the sender is going to send the data to Salesforce. In some circumstances, the sender sends 2 records per Call, in another case, it sends 500 records, and in another case sends 50k records. If your interface is configured to use the normal integration mode only then you will hit the Salesforce governor limit when you send 500 records and you have to change the interface configuration to use the Skyvva batch. If the client accidentally sends 50k records even the Skyvva batch will fail and you have to use the mode Skyvva Bulk. The problem is that you cannot keep changing the interface processing mode every hour. To handle this situation you have to use the mode “Skyvva Autoswitch”. Here is an example of the Autoswitch mode. ![](../images/2022/08/10.png) You have to set the operation in this case to “Skyvva Autoswitch” in the parameter “Operation”. Then you have to set the parameter “AutoswitchBatchMaxSize” and “AutoswitchIntegrateMaxSize” to define the threshold value for switching the mode based on the record size. Refer to this old documentation [#article/25-how-to-create-an-inbound-interface-using-integrate-autoswitch-mode-with-skyvva-v3-connector-module](#article/25-how-to-create-an-inbound-interface-using-integrate-autoswitch-mode-with-skyvva-v3-connector-module) on our website to understand the functionality of this mode.  The table below shows the parameter names that we have renamed. As you can see in the screenshot above same parameters are used as in the other operation mode. Therefore these parameters are not mentioned in the table below again. ![](../images/2022/08/11.png) For this mode our runtime needs to know the threshold value when to switch from the normal integrate to batch and from batch to bulk. Therefore it is important to set the correct parameter for the threshold and the package size. Here we have to set two different package sizes e.g. one for the batch and the other one for the bulk mode. Therefore we see here two different parameters with the package size  - BatchPackageSize. This is to set the batch package size. - BulkPackageSize. This is to set the bulk package size. These two parameters can be set on the Skyvva interface as well. Please refer to the chapter for the batch and bulk regarding the version-specific constraint.  ## 7.1 V2 Interface You use the module “Skyvva/V2/RestIntegration” here. Note that the OAuth configuration is the same as you have seen for the operation “Integrate XX” and is not repeated here.  Here is an example of the V2 module. ![](../images/2022/08/12.png) ## 7.2 V3 Interface You use the module “Skyvva/V3/RestIntegration” here. Note that the OAuth configuration is the same as you have seen for the operation “Integrate XX” and is not repeated here.  Here is an example of the V3 module. ![](../images/2022/08/13.png) ================================================================================ Book: Migration Guide Section: Migration Guide Subsection: (General) Title: 8. Operation Salesforce Bulk Slug: 8-operation-salesforce-bulk URL: https://help.skyvva.com/#article/8-operation-salesforce-bulk ================================================================================ # 8. Operation Salesforce Bulk We have seen the different operations provided by the Skyvva App. All operations cannot handle millions of records and therefore we also support the Salesforce bulk API to provide you the ability to load millions of records. But using this mode you cannot use the Skyvva mapping which is the limitation of this operation mode. The Salesforce bulk mode is only available with the V3 rest connector module. If you have an old Salesforce bulk interface you have to migrate them using the V3 connector module. Here is an example of the Bulk configuration. ![](../images/2022/08/14-1.png) ================================================================================ Book: Migration Guide Section: Migration Guide Subsection: (General) Title: 4. Operation Query Slug: 4-operation-query URL: https://help.skyvva.com/#article/4-operation-query ================================================================================ # 4. Operation Query For certain scenarios, you need to query data from Salesforce, e.g., the Account's status in Salesforce. The query functionality allows you to query data from SAP-PO using the Skyvva API and the Salesforce standard REST api. Refer to this documentation (link not available))  to understand the query option. ![](../images/2022/08/4.1.png) The old query method is called the V2 query and is invoked by the Skyvva SOAP API “searchService”. With this query operation, we can query a small amount of data e.g. the query result is not huge. The new query operation provides the ability to query huge amounts of data using the Salesforce REST and BULK Query API. ## 4.1 V2 searchService query You use the module “Skyvva/V2/RestIntegration” here. Note that the OAuth configuration is the same as you have seen for the operation “Integrate XX” and is not repeated here.  Here is an example of the V2 module. Note that the parameter value “searchService” has been renamed to “Query”. You have to set this parameter to indicate the operation mode. Other parameters such as “SforceRequestPayload” and “SforceShowSAPChannelParameters” are optional when you want to set the trace for debugging. ![](../images/2022/08/4.2.png) ## 4.2 V3 query service Coming Soon…. ================================================================================ Book: Migration Guide Section: Migration Guide Subsection: (General) Title: 1 Pre requisites Slug: 1-pre-requisites-2 URL: https://help.skyvva.com/#article/1-pre-requisites-2 ================================================================================ # 1 Pre requisites The following prerequisites must be fulfilled to successfully configure the REST adapter using the new Skyvva connector module. ## 1.1 Skyvva new REST connector module To successfully migrate your existing interface configuration from the soap to the rest adapter, you must install the latest version of the Skyvva connector module. The new Skyvva connector contains the following module. - Skyvva/V2/RestIntegration - Skyvva/V3/RestIntegration Note that the new deployment file contains the old module versions used with the soap adapter. Ensure that your sap-po version supports the REST adapter with the OAuth authentication. Please upgrade your SAP-PO to the latest SP level if this is not the case. ## 1.2 Salesforce Connected App To use the sap-po REST adapter, you must create a so-called connected App in Salesforce. You need the client-id and client-secret to configure the OAuth authentication with the REST adapter. In Salesforce connected App, the client-id is called “Consumer Key, “ and the client-secret is called “Consumer Secret”. Refer to this Salesforce help [https://help.salesforce.com/s/articleView?id=sf.connected_app_overview.htm&type=5](https://help.salesforce.com/s/articleView?id=sf.connected_app_overview.htm&type=5) to create a connected App. Open the connected app you created to see the client-id and client-secret. ![](../images/2022/08/m1.png) Now you can see the client-id and client-secret of the connected app. ![](../images/2022/08/m2.png) This is the mapping between the Salesforce Connected App and the REST adapter OAuth authentication screen. ![](../images/2022/08/m3.png) These two parameters, “Consumer Key” and “Consumer Secret”, the username and password of a Salesforce user are always needed to use the REST adapter with the OAuth authentication. Before configuring the REST receiver channel, you must create the connected App in Salesforce. Note that it can take up to 10 minutes before the connected App is ready to use. ================================================================================ Book: SAP Release Notes Section: SAP Release Notes Subsection: Release Notes V3 SAP-PO Connector Title: 1. V3 SAP PO Module Slug: 1-v3-sap-po-module URL: https://help.skyvva.com/#article/1-v3-sap-po-module ================================================================================ # 1. V3 SAP PO Module **V3 Skyvva SAP PO Connector Module ** For V3 module name changed to "**Skyvva/V3/Integration"** We have to use two modules in the receiver channel configuration. - Skyvva Module - SOAP module provided by SAP ![](../images/2020/04/Untitled-104.png) **SKYVVA V3 Connector module supports Special characters in the latest version.** SKYVVA V3 Connector module doesn't support special characters in the earlier versions. We have upgraded our SAP PO connector module to support this situation. If you want to pass the request data containing the special characters as shown below Upgrade the SAP PO Connector module to the latest version. ![](../images/2020/07/Untitled-58.png) Request we can see in SAP PI/PO message monitor logs as below. ![](../images/2020/07/Untitled-60.png) We can see the transferred data containing the special characters in Skyvva as shown below screenshot. ![](../images/2020/07/Untitled-59.png) Below is the latest version name - SKYVVA_Integration_EAR_71x_fix_emoji_in_request Please contact SKYVVA for the latest SDA file to deploy it in SAP PO server. ================================================================================ Book: SAP Release Notes Section: SAP Release Notes Subsection: Release Notes V3 SAP-PO Connector Title: 1.1 Warnings Slug: 1-1-warnings-2 URL: https://help.skyvva.com/#article/1-1-warnings-2 ================================================================================ # 1.1 Warnings **SKYVVA V3 Connector Module issue with SAP PO SP18 Patch 00 - ** Skyvva V3 Connector module will not work with SP 18 Patch level 00. We need at least patch 01 to use our skyvva connector module. We are having issue with inbound interfaces (SAP PO to Skyvva). In the initial path levels of SP18, there are some regression issues which were fixed in patch level 01. From SP18 Patch level 01 our skyvva connector module works as normal. ================================================================================ Book: SAP Release Notes Section: SAP Release Notes Subsection: Release Notes V3 SAP-PO Connector Title: 1.2 New Features Slug: 1-2-new-features-2 URL: https://help.skyvva.com/#article/1-2-new-features-2 ================================================================================ # 1.2 New Features #### V3 New Feature with SAP PO connector module #### V3 Adapters: We have only two adapters currently for SAP PI/PO. - SOAP Adapter - REST Adapter - SAP PI/PO Adapter Inside the SAP PI/PO Adapter we have two protocols 1. REST 2. SOAP We use soap/rest template only for the outbound interface which is going to be used as the request in the use case 'Outbound Call' e.g. Salesforce is the client and we use it with the SOAP, REST or SAP PI/PO adapter Whenever we are using the soap, rest or sap pi/po adapter we are using the soap/rest template for the request (outbound) interface. For the inbound response interface we can create the business type. SFDC2SAPPI Adapter is not available in V3 We recommend to use only XSD message type from the version 2.45 #### New Version of the SOAP and REST Adapter Currently, the SOAP and REST adapter works with the flat request message and flat response message. With the new enhanced version, it is able to generate hierarchical XML (SOAP adapter) and JSON (REST adapter) requests and process the hierarchical XML (SOAP adapter) and JSON (REST adapter) responses. #### Support Salesforce Query, REST and Bulk Query to retrieve large volume data New operations are now available which provides Query, REST Query and Bulk Query using the Salesforce REST and BULK API 2.0 to fetch large data from salesforce. - Query: If we want to search the data/records present in your Salesforce then this will help you. It will help you to create a dynamic nature of search. You can configure the search feature and use it as per your needs. Skyvva app will help you to configure your search. - Query All: It executes the specified SOQL query. Unlike the Query resource, Query All will return records that have been deleted. Query All will also return information about archived Task and Event records. - REST Query: To fetch small size data we use REST query. It will query the records using the REST API and leverage the feature of fetching the result set page by page. - REST Query All: Same as the REST Query but it will query all return records that have been deleted. Query All will also return information about archived Task and Event records. - BULK query – With this mode we can support the very big size of the query result. Like the REST query, it can return only the raw result of the select statement. It will retrieve the existing records only. It will query the records using the Salesforce BULK API v2.0 - Bulk Query All: Same as the Bulk Query but It will retrieve all archived and deleted records along with the existing records. #### SKYVVA Bulk and Batch Mode support the new version V3 of Inbound Processing Currently, bulk mode and Batch are old inbound processing, which supports flat message to fetch large data. New enhanced bulk mode and batch mode processing now supports V3 Inbound processing to handle hierarchical message payload. V3 inbound bulk processing supports with message type hierarchical structure. In V2 message type hierarchical structure is also supportive. ================================================================================ Book: SAP Release Notes Section: SAP Release Notes Subsection: SAP Integration Suite (CPI) Title: 1. Download Link Slug: sap-integration-suite-cpi-1-2-0-main-release-1-download-link URL: https://help.skyvva.com/#article/sap-integration-suite-cpi-1-2-0-main-release-1-download-link ================================================================================ # 1. Download Link ## Here is the Download Link for the SAP Integration Suite (CPI) Version 1.2.0 Download Link: [https://drive.google.com/open?id=1fcHUE_ZpAyFWsk-ukPe6HIPdwbVhJcIO&usp=drive_fs](https://drive.google.com/open?id=1fcHUE_ZpAyFWsk-ukPe6HIPdwbVhJcIO&usp=drive_fs) > ⚠️ Important Note > > - If your existing iFlow was previously upgraded to adapter version 1.1.4, you must reconfigure the adapter after upgrading to version 1.2.0 or later. > > - If your current adapter version is not 1.1.4 and you upgrade directly to version 1.2.0 or later, the existing iFlow can continue working with the old UI behavior after redeploy. > > - If you want to use the new Adapter UI introduced in version 1.2.0 or later, you must also reconfigure the adapter using the new UI features..
Release Date: 20-May-2026
================================================================================ Book: SAP Release Notes Section: SAP Release Notes Subsection: SAP Integration Suite (CPI) Title: 3. Enhancement Slug: sap-integration-suite-cpi-1-2-0-main-release-3-enhancement URL: https://help.skyvva.com/#article/sap-integration-suite-cpi-1-2-0-main-release-3-enhancement ================================================================================ # 3. Enhancement ## Enachend: SAP CPI Adapter Now Uses OAuth2 Token API Instead of SOAP Login In previous versions, the SAP CPI Adapter used the Salesforce SOAP Login API for authentication. As Salesforce has retired the SOAP Login method, the SAP CPI Adapter has been enhanced to use the REST OAuth Token API (https://login.salesforce.com/services/oauth2/token) to obtain the access token. The adapter now uses the REST token-based authentication approach instead of the SOAP Login API. It supports both Connected App authentication (Username-Password Credential and Client Credential flow) and External Client App authentication using the OAuth2 Client Credentials flow. ## Enhancement: Dynamic Interface Configuration Support for SAP CPI Adapter In previous versions, the interface name in the SAP CPI Adapter was statically configured after deploying the iFlow and could not be changed. To modify the interface name, the iFlow had to be undeployed and configured again. This has now been enhanced to support dynamic interface configuration. Users can define the interface name in the Skyvva interface using the variable ${property.SkyvvaInterface} and set the interface name in the Content Modifier as needed. With this enhancement, the interface name can be changed without undeploying the iFlow. ================================================================================ Book: SAP Release Notes Section: SAP Release Notes Subsection: SAP Integration Suite (CPI) Title: 4. Bug Fixed Slug: sap-integration-suite-cpi-1-2-0-main-release-4-bug-fixed URL: https://help.skyvva.com/#article/sap-integration-suite-cpi-1-2-0-main-release-4-bug-fixed ================================================================================ # 4. Bug Fixed ## External Mapping Not Working in Skyvva Batch Mode An issue occurred when using External Mapping with Batch Mode, where the interface failed during inbound integration execution with the error: “com.sap.it.rt.adapter.http.api.exception.HttpResponseException: An internal server error occurred: Error occurred during execution of inbound integration. Integration: xxxxx, interface: xxxxxx, payload format: XML, mode: SKYVVA_BATCH. Error: java.lang.Exception: Error occurred during fetching all root nodes: No record found! Please check your data source and the mapping. Make sure it matches the structure. , root cause: java.lang.Exception: No record found! Please check your data source and the mapping. Make sure it matches the structure. The MPL ID for the failed message is:xxxxxxxxxxxxxxxxxxxxxxxx. This happened when processing data in SKYVVA_BATCH mode. The issue has now been fixed, and interfaces can run successfully in Skyvva Batch Mode with External Mapping. ## Fix: Record Posting Failure When Salesforce Governor Limits Are Reached An issue could occur when posting records and reaching the Salesforce governor limits, which caused the processing to stop with an error. This has now been fixed by optimizing the Auto Switch Mode. When records are processed using normal integration and a Salesforce governor limit error occurs, the SAP Receiver Adapter automatically retries the request with half the record size. The process continues by splitting the records until it reaches a single record. If the single record still fails, the system will return the corresponding error. ## Transfer ID and System External ID Not Generated in Batch and Bulk Mode  (SAP CPI Adapter) Previously, messages processed in Batch and Bulk Mode with the SAP CPI Adapter did not include the Transfer ID and System External ID. This issue has now been resolved. The MessageGuid from the Message Processing Log is used to populate the Transfer ID, while the runtime Exchange ID populates the System External ID of the Skyvva message. To customize the System External ID, set the SAP_SYSTEM_EXTERNAL_ID parameter in the header. ================================================================================ Book: SAP Release Notes Section: SAP Release Notes Subsection: Main Release Note 1.2.0 Title: 2. Warning Slug: sap-integration-suite-cpi-1-2-0-main-release-2-warning URL: https://help.skyvva.com/#article/sap-integration-suite-cpi-1-2-0-main-release-2-warning ================================================================================ # 2. Warning ## Upgrade Version Compatibility Warning and Version 1.1.4 Deprecation > **Warning:** Adapter version **1.1.4** is no longer recommended for use. - If your existing iFlow was previously upgraded to adapter version **1.1.4**, you **must reconfigure the adapter** after upgrading to version **1.2.0** or later. - If your current adapter version is **not 1.1.4** and you upgrade directly to version **1.2.0** or later, the existing iFlow can **continue working with the old UI behavior** after redeploy. - If you want to use the new Adapter UI introduced in version **1.2.0** or later, you **must also reconfigure the adapter** using the new UI features. ### Summary | Upgrade Path | Existing iFlow Behavior | Reconfiguration Required | |---|---|---| | `x.x.x / 1.1.3` → `1.1.4` → `1.2.0 or later` | Existing iFlow uses backward compatibility behavior from `1.1.4` | Yes | | `x.x.x / 1.1.3` → `1.2.0 or later` | Existing iFlow can continue using old UI behavior after redeploy | No | | `x.x.x / 1.1.3` → `1.2.0 or later` and user wants new Adapter UI features | Existing iFlow must be updated to use new UI features | Yes | ### Recommendation Before upgrading production iFlows, we recommend testing the upgrade in a non-production environment first. --- ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.47 Title: 1. Features Slug: 1-features URL: https://help.skyvva.com/#article/1-features ================================================================================ # 1. Features #### Add function LAST_INTEGRATION_DATE() with both direction In the previous version, the “**LAST_INTEGRATION_DATE**” function is created to be specific for **SKYVVA** inbound direction. Additionally, the outbound direction is required to add in order to complete the lack of functionality. This function allows the user to retrieve or query the new records which have been modified after the last run date with Agent. You can export data from Salesforce to SQL Server with the syntax: **$LAST_INTERFACE_DATETIME()**. #### Proxy Configuration Since the proxy configuration manual experience isn’t handy enough, we have come up with the concept of creating a configuration screen for the proxy. An agent will update the batch file automatically after the “**Save**” button is clicked. #### All checkboxes on AgentUI need to click directly This feature is mentioned in how the radio buttons are immediately checked when the mouse pointer is being clicked near them. To be prevented this, all checkbox is clicked directly. #### Make flag Use Auto Switch highest priority with Agent **There are four ways to integrate data from Agent to Salesforce which are :** - Use Auto-Switch Mode - BULK Mode - Batch Mode - And Normal Mode #### An agent log file will log by each integration Every processed integration will log separately in the log file. Each integration file included a **.log** at the end. e.g. **Test.integration.log**. #### New or reschedule entries on AgentUI without restarting the Agent service #### Manual Processing does like Schedule Processing Agent manual processing is still lacking and needs usability improvement as scheduling processing. Since manual processing is worked with adapter properties name (Delete File After Processing) only, we have come up with more ways to enhance the process with other adapter properties name. The new logic is redesigned. #### Lock -Processing -Unlock background processing The big file is taking too long to run when a process with the first scheduler, then the next schedule starts to run and fetch the same file (the file was not locked by the first process). To be prevented this, the logic is applied for other parallel running processes. The adapter types “File” and “FTP” are used to integrate with properties name “File Type” (CSV, XML, Excel…). Thus the lock file (.lock) isn’t depending on the adapter properties name “Lock Files After Processing” anymore when the process is running. As long as it concern, “Keep Files After Processing” is created to import data from Agent into Salesforce. If this ratio button is checked the files will lock temporarily when data are processed from an agent by the scheduler or manually. #### Create Button "Test Integrate" Near Button "Process" The “Test Integration” button is now reappearing in Integration Detail among other buttons. This button is supportive of both inbound and outbound interfaces, its maximum is 50 records for testing. The functionality of this button is as effective as before.  #### Flag "Automatic data processing" Don't use any more The “Automatic data processing” flag is removed from AgentUI’s message setup in Integration detail.  The “Schedule Mode” flag is included in the Scheduling detail page to deliver two types of schedule processes which are “Processing” and “Reprocessing”. These two schedule modes are variants for usability, and more user-friendly, which means the user can change dynamically.  Processing is a mode that runs both inbound and outbound data (Raw data) while Reprocessing is a scheduler that reprocesses for outbound fail messages only. This scheduler is set to run with a flag “Run at” and “Run every”. #### Change the checkbox to the Radio button in the adapter property (inbound) All checkbox flags are changed to a radio button in the adapter property. These radio buttons are allowed to check once. Users can’t check two or three radio buttons at the same time. #### Fractioned. XML files Generally, a user always exports data files as CSV, XML & Excel from Salesforce via Skyvva Agent Integration We have two options for data exporting. - Export file from batches base means that 1 Batch = 1 File - Collecting data from batches for 1 file means that the user export data from Salesforce all data has merged into a file. #### Importing Content Documents and Attachments with XML As customer demand is our concern, Content Documents and Attachment with XML are now being developed. The logic is the same as the CSV file to import those contents. This enhancement support files using Content Version. #### An agent with its own folder for java To get rid of some problems which the customer has faced, Agent offers a new solution. AgentUI comes out with its own folder for java. The latest version of java has a whole package which independent. It won’t rely on JRE/JDK. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.47 Title: 2. Bug Fixed Slug: 2-bug-fixed-36 URL: https://help.skyvva.com/#article/2-bug-fixed-36 ================================================================================ # 2. Bug Fixed #### Last Data cannot display a number of file attachment #### The screen of the interface Agent UI is not so good #### Stabilize Agent Scheduling - Problem when more than one process at the same time #### Agent - XML file creation uses the Salesforce subject Name instead of taking the target field "SecondLevelXML" #### An agent does not yet support schedule UI every hour from X hour to X hour #### Scheduling AgentUI read data from crontab file with different Instance has Integration and Interfaces the same name #### Select integration box one time 2 integrations or more than #### Lock File immediately before reading it #### The “Stop” Button Integrate not working #### Error schedule outbound interface when the query does not select field Id #### No Cron Expression was found in the Cron file #### Integration Setup Wizard-Interface Test Integrate filter is not pop up anymore #### An agent doesn't refresh the cache file and thus reads old content #### Related To link on the message board has a problem #### Error test query with SFTP adapter #### JCRONTEST>EXECUTE>ERROR: Null #### Streaming API doesn’t work anymore ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.48 Title: 2. Bug Fixed Slug: bugfixed URL: https://help.skyvva.com/#article/bugfixed ================================================================================ # 2. Bug Fixed #### Notification For Operation: Delete doesn't work - **When the user chooses Notification for Operation:** Delete doesn’t send data out. For events deleted with **Streaming API** users have two options. - **Soft deleted:** The user can delete **sObject** from the salesforce database but **Agent** has not deleted the record from a local database. - **Hard deleted: The user** can delete **sObject** from the salesforce database, correspondingly **Agent** will delete the record from the local database too. This delete behaviors **Agent** can be processed along with only adapter type - **JDBC**. Our method search can get data from **recycle bin** just put **ALL ROWS** as like as the select statement below: Select field,… from Account where field... **ALL ROWS**. Remarkably **Agent** can get data from **recycle bin** and find an external id data field to delete records from the local database. #### After Processing: The backup File does not work with Adapter Type FTP in Agent When the user chooses on after processing: Backup File with Adapter type: **FTP** after processing the file not the backup folder. After processing file is locked. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.49 Title: 1. Features Slug: features-2 URL: https://help.skyvva.com/#article/features-2 ================================================================================ # 1. Features #### Button ‘New Property’ for creating new properties file is Agent - When the user goes to **Agent UI** and then clicks on Integration Properties Setup it carries a button to create a new Property file. - This button is capable to create a new ‘Property File’ during the user wants to use another org. #### The file name with Merge file. For an Outbound interface, **Agent UI** should carry the field File Name as like an inbound interface. If the user wants to put the file name, the user must check on the merge file for an outbound interface on **Agent UI.** #### Property File Cannot be Duplicated When the user creates a property file that carries the same credentials/username, password, and security token it cannot create. When the user clicks on the save button it will be alerted that the message “**Username**” has already existed. #### Web Service call through Agent - **ENHANCED CONNECTIVITY ** Support for flat files with any delimiter Connect to any ODBC or JDBC database complete web services support, including the Bulk API - **ADVANCED FUNCTIONALITY** - Excel-like functions allow users to transform their data, including concatenations, substrings, and trims parallel processing provides unmatched performance, including support for Bulk loads - **EASY AUTOMATION & MANAGEMENT ** Set operations on a schedule to automate data loads Management console provides full logging and operation history. #### The initial mode does not work with the auto-switch mode - Currently, the initial mode is working with Batch and Bulk modes. For auto-switch mode is not working. - **Integrate Max Size:** Maximum number of records that the **SKYVVA** Integration Agent can integrate is bigger than this value; the **Agent** will switch data to Batch automatically. - **Integrate Batch Max Size:** Maximum number of records that **SKYVVA** Integration using method integrates Batch. If the number of records to be integrated is bigger than these values, the **Agent** will switch to using the Bulk **API** method automatically. #### Retrieve more than 50K records from Salesforce with Agent Outbound Processing **POWERFUL DATA OPERATIONS** - Wizard-based point & click configuration Support for Insert, Update, Upsert, Query, Delete, and Bulk operations Save, edit, and reprocess operations, connections, and data mappings. - Users need to retrieve more than **50,000** records with Agent Outbound Processing. If the user needs to retrieve more records, we recommend you work with a Salesforce.com partner. Users need to retrieve an object that is not yet supported by web-based importing. #### New properties name "Replace Header" in adapter type File with file type CSV There are basically two types of header files, standard header files, and user-defined header files. **Standard header** files consist of header files for strings, numeric, mathematical functions, language support, and algorithms. Despite the **user-defined** header files being created by users. For two Objects (**Account contact**) in the CSV file use dot”**.”** to specify between the object and field name. The question here dot is not allowed in the header CSV file and Agent with replace it with to underscore **“_”**. Regarding backward ability with the old customer we need to add new properties file name “**Replace Header**” with a default value is old functionality. #### Update the Next Run Date after the schedule setting is changed in the Agent UI - We are using these functions in conjunction, be aware that the time zone returned is the one configured on the machine running the agent. All Cloud **Agents** are in **UTC**. Private **Agents** will vary based on the specific machine each agent is running on. If the user is using a conversion function take this into account if your project is designed to run both in the cloud and on a Local Agent. - We update **Salesforce** with the new calculated Run date which we read from the crone file of the local Agent. So what we need to do is to write the new time definition whenever the user changes the schedule setting in Agent. After he has saved the setting we need to push the data to Salesforce immediately. It doesn't matter if the user restarts the service or not. - The user could just save the scheduled setting without restarting the service. In this case, we also need to see the new time definition in **Salesforce**. Therefore the rule is updated to Salesforce when the **scheduled** time is changed. #### Scheduler-based condition - **SKYVVA** Agent, operations can be executed in a number of ways, such as manually, or automatically via a scheduler. The scheduler covers setting up a schedule to run user operations automatically. The scheduler contains information about when an operation will automatically be activated. - **SKYVVA** lets users define virtually any type of schedule user need, such as every Monday at 5 pm, the last Monday of each quarter, or every hour for one day. - The everyday user gets 4 files which come around 1:00 pm, 2:00 pm, or 3:00 pm. It comes only once a day. The next day 4 new files are expected again at the around same time. So to be sure user schedule a time window e.g. runs every hour at 12:00, 13:00,14:00,15:00, and 16:00. So the user defines a time window and add additional time slot at 12:00 and 16:00 to have some more security. - So, the **Scheduler** runs 6 times a day to make sure that the files get processed. It would be better if we don’t waste time running**.** - In this case, if for example at 13:00 we have run and we finished at 13:30 then we don’t need to run again at 14:00, 15:00, and 16:00 because we run already and because for today there are no more files than we expected. - In this case, it would be better to schedule the other run based on the result of the first run. So the next run should run based on a **condition** and not based on a time. The condition needs to be defined by the user. In this case, the **condition** is the result of the first run. So if the first run has processed all 4 files then it can set some condition value so that the next run can evaluate it. #### Read file extension with ignore case - Read a file extension in the format specified by a format file extension with ignore case. (**.csv|.CSV|.xml|.XML|.xls|.XLS|.xlsx|.XLSX**). The format specification is the same as used in the format file extension. It is similar to the standard file extension formats. - This file extension can be used to set the input/output format for a target. It is useful when **SKYVVA’s **default output format for a file extension (such as XML, or CSV) is not as desired. The expected Format file extension function must be the call in a mapping formula to have it as the mapped value. #### XML IChained with Hierarchical difference way - When users create hierarchy relationships, each reference to a component is expanded under its parent element. The **XML** Wizard selects the default root and uses default settings to create an **XML** body. It can be a row in a database table or an **XML** element that might have a value or attributes or sub-elements. When the mapping of a target instance depends on possibly more than one instance of source, we call it "Instance Mapping". The mapping of a source is represented by line items specifying batch, and bulk mapped to a target field. - Another example is the mapping of a source that contains multiple instances of name-value pairs to a target field that represents a username. "Instance Mapping" allows the user to define a mapping to reduce multi-instance sources to a single target instance. It essentially allows the user to move row-oriented data into column-oriented data, with the number of records generated dictated by the level of the data being mapped. This can be demonstrated by **Hierarchical to Flat Structures** mappings, where the user needs to resolve some information from one or more previous or “higher level” records. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.49 Title: 2. Bug Fixed Slug: bugfixed-2 URL: https://help.skyvva.com/#article/bugfixed-2 ================================================================================ # 2. Bug Fixed #### MySQL Server: Time zone value unrecognized The **server time zone value** '**EDT' is unrecognized** or represents more than the one**time zone**. The user must configure either the **server** or JDBC driver (via the **server timezone** configuration property) to use a more specific **time zone value** if the user wants to utilize **time zone** support. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]server time zone is based on MySQL installed on the user server.[/su_box] #### Package Size on the interface when we filled in Agent UI doesn't update on SF When user try to filled** package size** in **Agent UI** it doesn’t update on **SF**. **Expectation:** The package size when we filled in **Agent UI** must be update on **SF. ** **Steps : ** - Navigate to Agent application - Enter to Integration Wizard - Select Property File - Interface Source Definition - Filled on package size - Save **Result:** The package size on the interface doesn’t update on **SF**. **Case 1:** Filled Package size on **Agent UI ** **Expectation:** When we filled the package size in **Agent UI** the **package size** will be updated on** SF** in Interface Detail. - Create integration and interface - Navigate to **Agent UI ** - Integration Wizard - Select Property File - Choose Integration - Double-click on the interface(**PackageSize**) - Filled on **Package Size ** **Case 2:** Filled package size on **SF** **Expectation:** When we filled the **package size** on Interface Detail the** package size** will be updated on **Agent UI**** ** **Go to SF -**Interface Detail then filled in the package size #### The agent cannot process attachments when attachment doesn't have in the folder When the attachment was missing from the folder Agent cannot process it. **Expectation:** If the attachment doesn’t have it in the folder, the **Agent** must be continuing the processing, and create the Failed message: “System cannot find file specified id=……” #### Hard Deleted doesn't work with the database - To delete data all the user need is a record that contains the IDs of the objects the user wants to delete in one of the columns. Once you have this, proceed with the instructions below. - In **SKYVVA** Agent, before actually deleting the data you must first create an interface outbound. When the user creates a Mapping check on the flag Use Streaming API and also click on Subscribe button. - The beauty of doing things this way is that On Notification For Operation Deleted and then Operation Deleted is Hard Deleted. #### Login wrong Server Environment If logins are getting locked, log in** to the wrong Server Environment** which indicates the password is incorrect. Either the server has the incorrect password recorded for the login, or the client is presenting the wrong password. - Since this is a mirroring environment. - We'd bet the client is using the same password for both instances. - Meaning the password for the login on the mirror is not the same as the password for the login on the master. - Recreate the login on the mirror server with the known-good password, i.e. not the hashed version. Ensure you get the **SID** correct (use copy-and-paste) from this query, ran against the principal server because it is **case sensitive**.  #### The scheduler is working when it Stopped When the scheduler run one time and then the user stops the schedule **Result**: The schedule is still working. Expected Result: When the user stops the schedule it must stop working. ================================================================================ Book: Agent Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 2. Bug Fixed Slug: 2-bug-fixed-2 URL: https://help.skyvva.com/#article/2-bug-fixed-2 ================================================================================ # 2. Bug Fixed #### Fixed on $LAST_INTERFACE_DATETIME() function which is not working on the scheduler **$LAST_INTERFACE_DATETIME().** It is a function that users use in a query. When the user puts it in the query it will be replaced with the last run time of the interface Example: **SELECT Id, Body, Name, ParentId From Attachment Where ParentId In $QUERY_FILTER_SOBJECT() And CreatedDate >= $LAST_INTERFACE_DATETIME()** The idea of this function is to get only new records from salesforce. for the record that has been exported, it will not export again. #### Fixed JDBC Parent Lookup #### Fixed Message Tree fail cannot re-process when pushing from the Agent with InboundV3 #### Fixed on exporting hierarchical data from Salesforce using MessageType Mapping #### Fixed on saving the adapter issue which allows file type and file chosen extension to be different #### Fixed importing XML hierarchical using Integration InboundV3 #### Fixed an issue that the agent cannot delete the property in which the username and password are blank #### Fixed an issue in which the agent does not delete the schedules made by an org after deleting its property #### Fixed an issue on saving property ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.50 Title: 1. Features Slug: 1-features-2 URL: https://help.skyvva.com/#article/1-features-2 ================================================================================ # 1. Features #### Handle Response Interface after Executing a Stored-Procedure with data returned in SQLServer The agent can handle the response Interface after Executing a stored procedure with **SQLServer**. For inbound we use stored procedure to read data from the database and push it to **SKYVVA** and for outbound, we read data from salesforce and pass it to the stored procedure so the stored procedure can do business logic with that data. - **Inbound scenario**: We use stored procedures to read data from the database and push it to **SKYVVA**. - **Outbound scenario**: We read data from Salesforce and pass it to the stored procedure. The stored procedure can do business logic with that data. - **SQLServer** procedure inbound/outbound with Agent Inbound we use stored procedure to read data from the SQLServer database and do the integration. Outbound we read data from salesforce and pass it to SQLServer stored procedure so the stored procedure can do business logic with that data. #### Handle Response Inbound Interface for file adapter **As per the feature, the user experienced updating a sObject after exporting data from SF. ** This feature experiences to handle a response interface to update the **SObject**. But for the file adapter, we don’t know what data should return back unlike the **JDBC** adapter which we return data via a stored procedure. So the idea is just to return back only the ID of SObject and another field we will use the formula in the mapping tool to set its value. #### Sort file based on CreateDate/filename with ASC/DES An agent can process an order by file name ascending with an old version. And now we have a new feature it can support **CreateDate** or **FileName** with ascending or descending. The agent uses adapter properties to store configuration with an adapter-type File. #### Support Integration InboundV3 with bulk mode - The** agent** can send **Hierarchical XML** data to salesforce in real-time the data into the Salesforce database immediately after the agent sends it. - Now we support function processing with **Agent** to send Hierarchical XML data to store in **Bulk** Control board, with** InboundV3** Integration. - All data will be stored in the Bulk control board after agents send data with** InboundV3** Integration. #### Restart Agent Service from Agent Control Board #### Support integrate per InterfaceGroup #### Support outbound using MessageType for the JDBC adapter #### Enhance InboundV3 to support File, FTP, and JDBC adapter #### Change SObject for Updating LastNext_RunDate to avoid the issue that unable to lock row while updating interface at the same time (supports Skyvva v2.45) #### Pushing log file to Salesforce via using Agent Control board #### Creating CA-Signed certificate for Agent Service (https) ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. BUG FIXED Slug: 1-bug-fixed URL: https://help.skyvva.com/#article/1-bug-fixed ================================================================================ # 1. BUG FIXED #### Error ping Salesforce connection on the Agent control Fixed issue ping connection on agent control board. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: — Info — Slug: info-2 URL: https://help.skyvva.com/#article/info-2 ================================================================================ # — Info — #### Agent Control Board To create a better and powerful experience **SKYVVA** introduce a new Agent Control Board in which now customers can experience **Camel/Apache** technology and  Screen Configuration on **Kaban Tab** - Connection, now fully say by to java swing Agent. Now customers can Experience **SKYVVA** Agent by just creating a connection between **Agent→Salesforce **&** Salesforce→Agent **by following simple steps. #### Introduced a new Tab - Configuration - Interface - Interface Group - Adapter - Scheduler - Log Configuration - Logs - Import Metadata - Cache Monitor - Agent Cache - System Information ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.52 Title: 1. New Feature Slug: 1-new-feature-3 URL: https://help.skyvva.com/#article/1-new-feature-3 ================================================================================ # 1. New Feature #### Multiple Databases to Salesforce #### Agent outbound parent/child xml file type "attribute" repeat parent When user export date from salesforce with parent/child xml file type "**attribute**" user always get element syntax hierarchical after processed. ================================================================================ Book: Agent Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 2. Bug Fixed Slug: 2-bug-fixed-3 URL: https://help.skyvva.com/#article/2-bug-fixed-3 ================================================================================ # 2. Bug Fixed #### Fixed process interface from the Agent control board #### Upload files attachment and keep only error files #### Fixed CPU may run 100% when clicking on the Subscribe button from the Agent control board Now CPU run 100% when user click on The Subscribe Button on Agent Control Board #### Fixed an issue in which XML attribute on node can't be read for InboundV3 processing #### Fixed an issue which can't push XML that it's node contains "." e.g. (Account.Name) ================================================================================ Book: Agent Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 2. Bug Fixed Slug: 2-bug-fixed-4 URL: https://help.skyvva.com/#article/2-bug-fixed-4 ================================================================================ # 2. Bug Fixed #### Problem on Schedule Process with SqlServer Adapter After checking on it, It is not a bug. Actually, while running schedule processing on Service, it required some configurations. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-4 URL: https://help.skyvva.com/#article/1-new-feature-4 ================================================================================ # 1. New Feature - Added integration with Kafka - Added integration with Apache Pulsar - Added integration with Relational Databases - Added integration with Rest & SOAP APIs - Added integration with File/FTP/SFTP/FTPS based on Event Driven Consumer & Scheduled Producer ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-2 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-2 ================================================================================ # 1. Bug Fixed #### Fixed an issue that Agent cannot read file excel which the extension is "xlsx" #### Fixed an issue on loading file whose name contains regular expression(regex) on the FTP adapter ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-3 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-3 ================================================================================ # 1. Bug Fixed #### Fixed an issue with updating last/next run date #### Fixed an issue on the processing scheduler per integration which an interface may run at the same time ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-4 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-4 ================================================================================ # 1. Bug Fixed #### Fixed an issue on the processing scheduler per integration which the cache running interface is not deleted after processing ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 2. Bug Fixed Slug: 2-bug-fixed-1-51-5 URL: https://help.skyvva.com/#article/2-bug-fixed-1-51-5 ================================================================================ # 2. Bug Fixed #### Handle run time error when reading a file that is deleted or moved by other processing #### fixed an issue in which the package size doesn't work properly ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. New Features Slug: 1-new-features-1-51-5 URL: https://help.skyvva.com/#article/1-new-features-1-51-5 ================================================================================ # 1. New Features #### Prevent overlap schedule per integration #### Add "Raw Content" value for File Upload Mode property of file adapter ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-6 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-6 ================================================================================ # 1. Bug Fixed #### Fixed an issue in which OutBound processing cannot connect to SqlServer ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-7 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-7 ================================================================================ # 1. Bug Fixed #### Fixed an issue in which OutBound JDBC could not update failed Message when occurring runtime errors. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-8 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-8 ================================================================================ # 1. Bug Fixed #### Fixed an issue connecting to the SQL Server with the password containing special characters. #### Warning: SQLServer's credential(username & password) should not contain double quotes character ("). It may cause problems at runtime. #### Updated log4j-core to version: '2.15.0' ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-9 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-9 ================================================================================ # 1. Bug Fixed #### Updated log4j-core to version: '2.16.0' ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-10 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-10 ================================================================================ # 1. Bug Fixed #### Fixed the Sort files feature may cause an issue when the user upgrades from the old version (below 1.47.1.3) ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-11 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-11 ================================================================================ # 1. Bug Fixed #### Updated log4j-core to version: '2.17.0' #### ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-12 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-12 ================================================================================ # 1. Bug Fixed #### Remove log4j 1.2.17 library which is still included in another dependency #### ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-13 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-13 ================================================================================ # 1. Bug Fixed #### Fix update last/next run date #### Update unsupported dependency #### ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V1.51 Title: 1. Bug Fixed Slug: 1-bug-fixed-1-51-14 URL: https://help.skyvva.com/#article/1-bug-fixed-1-51-14 ================================================================================ # 1. Bug Fixed #### Fix unsupported Unicode #### Fix bulk v2 and create contentversion rather than attachment #### Fix login restriction by adding one more text field for the server URL ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-5 URL: https://help.skyvva.com/#article/1-new-feature-5 ================================================================================ # 1. New Feature - Added integration with Rabbit MQ - Added integration with Active MQ - Added integration with Generic JMS Queuing Systems - Added functionality to consume files based on Scheduler - Added functionality to consume files based on demand i.e. Manual Invocation ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-6 URL: https://help.skyvva.com/#article/1-new-feature-6 ================================================================================ # 1. New Feature - Added more granular application logging ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-7 URL: https://help.skyvva.com/#article/1-new-feature-7 ================================================================================ # 1. New Feature - Added support for JDK 15 - Added ODBC support - Added functionality to integrate with SAP Business One ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-8 URL: https://help.skyvva.com/#article/1-new-feature-8 ================================================================================ # 1. New Feature - Updated functionality with SAP ERP Caching ================================================================================ Book: Agent Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Bug Fixed Slug: 2-bug-fixed-5 URL: https://help.skyvva.com/#article/2-bug-fixed-5 ================================================================================ # 2. Bug Fixed - Issue fix due to ODBC dynamic library loading ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-9 URL: https://help.skyvva.com/#article/1-new-feature-9 ================================================================================ # 1. New Feature - Updated functionality to support the rebuild of cache in SAP ERP and Agent - Implemented the ping to SAP ERP and reverse ping to Agent from SAP ERP Logic - Implementation of the SAP ERP login details cache in a common central location ================================================================================ Book: Agent Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Bug Fixed Slug: 2-bug-fixed-6 URL: https://help.skyvva.com/#article/2-bug-fixed-6 ================================================================================ # 2. Bug Fixed - Resolved the bug in bulk cache refresh of SAP ERP due to the Salesforce Token refresh issue. - Resolved the error due to encoding of the data while loading to Salesforce through Rest V4 API ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Bug Fixed Slug: 1-bug-fixed-2 URL: https://help.skyvva.com/#article/1-bug-fixed-2 ================================================================================ # 1. Bug Fixed - Resolved the issue of startup of Agent due to DB initialization error ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-10 URL: https://help.skyvva.com/#article/1-new-feature-10 ================================================================================ # 1. New Feature - Added a new attribute to V4 rest API to track transfer id - Added functionality to generate the transfer id for Rest V4 API to post data to Salesforce using - V3 Integrate with iMessage API - Added a new field to track correlation id on an interface level ================================================================================ Book: Agent Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Bug Fixed Slug: 2-bug-fixed-8 URL: https://help.skyvva.com/#article/2-bug-fixed-8 ================================================================================ # 2. Bug Fixed - Resolved the issue of caching the IChained Interface Table for SAP ERP - Resolved the issues in the handling of error response of SAP > Agent Ping API - Resolved the issue of handling the Salesforce Session Expiry issues. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-11 URL: https://help.skyvva.com/#article/1-new-feature-11 ================================================================================ # 1. New Feature - Added Dataloader functionality - Updated logic to handle Tagert Instance based on Agent Settings ================================================================================ Book: Agent Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Bug Fixed Slug: 2-bug-fixed-7 URL: https://help.skyvva.com/#article/2-bug-fixed-7 ================================================================================ # 2. Bug Fixed - Resolved bug for SAP ERP Integration Adapter - Fixed the issue of clearing tables based on the Interface - Fixed issues with File Adapter, Manual Job Processing, and V3 SOAP API ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-12 URL: https://help.skyvva.com/#article/1-new-feature-12 ================================================================================ # 1. New Feature - SNS & SQS integration - XSLT Processing ================================================================================ Book: Agent Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Bug Fixed Slug: 2-bug-fixed-9 URL: https://help.skyvva.com/#article/2-bug-fixed-9 ================================================================================ # 2. Bug Fixed - Resolved bug for SAP ERP Integration Adapter - Updated the length for the Filter - Fixed issue with the Memory consumption ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Bug Fixed Slug: 1-bug-fixed-3 URL: https://help.skyvva.com/#article/1-bug-fixed-3 ================================================================================ # 1. Bug Fixed - Resolved the issue of startup of Agent due to ODBC Library Loading - Add new Feature today ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-13 URL: https://help.skyvva.com/#article/1-new-feature-13 ================================================================================ # 1. New Feature - Added the retry logic for SAP ERP Adapters - Amazon SQS & SNS adapters added ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Bug Fixed Slug: 1-bug-fixed-4 URL: https://help.skyvva.com/#article/1-bug-fixed-4 ================================================================================ # 1. Bug Fixed - Fix for multiple file headers in the CSV file - Fix for extra columns in the CSV file output ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-14 URL: https://help.skyvva.com/#article/1-new-feature-14 ================================================================================ # 1. New Feature - Support for Fixed Length CSV files - APIs to support Bulk Operations on Agent for Outbound flow ================================================================================ Book: Agent Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 2. Bug Fixed Slug: 2-bug-fixed-10 URL: https://help.skyvva.com/#article/2-bug-fixed-10 ================================================================================ # 2. Bug Fixed - Issue with Cache Monitor filter - Issue in the Caching to update Blank or Null values - Issue in Adapter Monitor to show correct files for File Adapter - Issue in Outbound Message Status update - Issue with Excel Append mode ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-15 URL: https://help.skyvva.com/#article/1-new-feature-15 ================================================================================ # 1. New Feature - Export Content Version based Binary files through Outbound mode ================================================================================ Book: Agent Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 2. Bug Fixed Slug: 2-bug-fixed-11 URL: https://help.skyvva.com/#article/2-bug-fixed-11 ================================================================================ # 2. Bug Fixed - Issue fixes for SFDC Bulk V1 & Bulk V2 - Issue fixes for Streaming API ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-16 URL: https://help.skyvva.com/#article/1-new-feature-16 ================================================================================ # 1. New Feature - SAP ERP Bulk V2 Integration for Inbound Processing - Agent DB migration from H2 to Postgres ================================================================================ Book: Agent Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Bug Fixed Slug: 2-bug-fixed-13 URL: https://help.skyvva.com/#article/2-bug-fixed-13 ================================================================================ # 2. Bug Fixed - Issue fixes for Hierarchical Message status update - Issue fixes for Streaming API ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. New Feature Slug: 1-new-feature-17 URL: https://help.skyvva.com/#article/1-new-feature-17 ================================================================================ # 1. New Feature **MS Access integration added to Agent** To integrate Ms Access with **SKYVVA** Agent, you can follow these general steps: - Install and set up **SKYVVA** Agent: Obtain the necessary installation files for **SKYVVA** Agent and follow the installation instructions provided by the vendor. Set up the required configurations, such as connection details and authentication. - Configure Ms Access as a data source: In **SKYVVA** Agent, configure Ms Access as a data source by providing the necessary connection details, such as the file path of the Ms Access database, login credentials (if applicable), and any other relevant settings. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-05-07-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-05-07-patch-1-download-link ================================================================================ # 1. Download Link #### Here is the Download Link for the New Agent Patch Version 3.05.07 - Download Link: [https://drive.google.com/file/d/1JMItQTi5Ko0JZvGbfhPnK2BsZstegVoP/view?usp=sharing](https://drive.google.com/file/d/1JMItQTi5Ko0JZvGbfhPnK2BsZstegVoP/view?usp=sharing) Release Date: 20-May-2024 ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Enhancement Slug: new-agent-3-05-07-patch-2-enhancement URL: https://help.skyvva.com/#article/new-agent-3-05-07-patch-2-enhancement ================================================================================ # 2. Enhancement ### Enhanced Agent Configuration Store Password as Encrypted In the previous version, we stored the configuration in the properties file of the New Agent as plain text passwords. To enhance security, we have implemented password encryption. ### Notification when the Agent Scheduler Does Not Run for a Certain Time Salesforce has a feature on the scheduler that does not run for a certain time. As a result, we have enhanced our Agent Scheduler to support this feature as well. The enhanced functionality includes alerting users when the Agent scheduler unexpectedly stops running. This feature is beneficial as it provides users with alerts or notifications, informing them that the scheduler has not been run since a specific time (xxx). This ensures that users are promptly notified of any disruptions in the scheduler's operation. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 3. Bug Fixed Slug: new-agent-3-05-07-patch-3-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-05-07-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed ### Fixed Flat Interface of Bulk Processing When utilizing Skyvva Bulk Processing, an issue arises with a flat interface if the Bulk Package Size is not set. This can lead to the creation of a bulk basket containing a single record. Dealing with a large number of records may lead to multiple bulk baskets being created, which can result in resource waste. However, this issue has been resolved by a dedicated bulk basket capable of storing up to 1000 records, when the Bulk Package Size does not set. ### Resolving the Issue of the New Agent being Unable to Cache Batch Mode Field Value When utilizing Skyvva Bulk Processing, an issue arises with a flat interface if the Bulk Package Size is not set. This can lead to the creation of a bulk basket containing a single record. Dealing with many records may lead to multiple bulk baskets being created, which can result in resource waste. However, this issue has been resolved by a dedicated bulk basket capable of storing up to 1000 records, when the Bulk Package Size does not set. ### Fixed Alert Message Error “Manual Processing is complete with errors” while successful push Basket There was an issue when integrating using batch, bulk, and auto switch modes, where the baskets were successfully created, but an error message would appear stating, "Manual Processing is Complete with errors." I'm pleased to inform you that this issue has been resolved by eliminating this error alert message. ### Resolving Persistent Ping Connection Failure Despite Correct Agent Credentials There was an issue when attempting to establish a ping connection from Salesforce to the Agent, even after inputting the correct Agent credentials. This problem occurred due to the firewall blocking the port. However, we are pleased to inform you that this issue has been resolved, and you should now be able to establish a successful ping connection. ### Resolving Null Pointer Issue in IService.Login during V2 Bulk Processing You may encounter a problem with V2 Bulk Processing, which can lead to an issue where IService.Login becomes a null pointer due to the login not being assigned to SFService. I'm pleased to inform you that this issue has been resolved. ### Fixed Missing Some Fields Streaming API to Agent Database We have an issue with streaming API while we have to do outbound processing Salesforce to Database it will miss some fields that we have mapped on the mapping. This issue has been fixed. ### Database Did Not Delete Records While the Salesforce Already Delete Using Streaming API We encountered an issue with the Streaming API and SQL database adapter when configuring the 'Notification For Operation = Deleted' and 'Operation Deleted = Hard Deleted' settings. The problem arose when records were deleted from Salesforce but remained undeleted in the associated database. However, This issue has been resolved. Now, regardless of whether you set Hard Deleted or Soft Deleted, when records are deleted in Salesforce, both Salesforce and the associated database will perform synchronized deletions. ### Fixed Null Pointer V3 Setting on Interface API Version Without Message Type The New Agent encountered an issue when integrating with the V3 setting on the Interface API Version without specifying the Message Type, which resulted in a Null Pointer error. I am delighted to inform you that this issue has been fixed. ### Fixed Not able to Cache on Bulk Package Size Field We encountered an issue while caching the Bulk Package Size field because the request body and the Salesforce cache table had different values. We are pleased to inform you that this issue has been resolved by changing BATCH_SIZE to 'Batch_Package_Size' and BULK_SIZE to 'Bulk_Package_Size'. ### Fixed Error That Is Not Able To Process Binary File In SFTP and FTP Protocol There was an issue encountered during the processing of Binary Files using the SFTP and FTP protocols. An error message, 'Error in ProcessBinary,' would appear in the log due to the absence of conditions for sending files to Salesforce via FTP and SFTP. I'm pleased to inform you that this issue has been resolved. ### CSV Payload Contains Special Source Encoding The error occurred due to a special source encoding in the CSV payload. Importing the payload from the New Agent into Salesforce may result in an error. However, this issue has been resolved by supporting the CSV source encoding. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-05-08-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-05-08-patch-1-download-link ================================================================================ # 1. Download Link #### Here is the Download Link for the New Agent Patch Version 3.05.08 JDBC - Download Link: [https://drive.google.com/file/d/1ulk6zyNeYFipUaON_vcticA-GUQhhCoq/view?usp=sharing](https://drive.google.com/file/d/1ulk6zyNeYFipUaON_vcticA-GUQhhCoq/view?usp=sharing) ODBC - Download Link: [https://drive.google.com/file/d/1_v04-UXrDntNuL8bLLGXz_ActtaWAizh/view?usp=sharing](https://drive.google.com/file/d/1_v04-UXrDntNuL8bLLGXz_ActtaWAizh/view?usp=sharing) Release Date: 09-July-2024 ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Bug Fixed Slug: new-agent-3-05-08-patch-2-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-05-08-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed ### Fixed Error When Updating Completed Message After File Export with Content Format Equal Custom There is an issue when exporting files using the custom payload in the Custom Processing Class property of the outbound Agent File adapter. After the file export is completed, it attempts to update the message to 'completed' but encounters a null pointer exception in the child message. ### Fixed Issue with Null Values Passed to DateTime Target Type There is an issue when the source contains a null value, and that null value is passed to a target field with a DateTime data type during outbound processing with an Agent Database adapter with the SQL Server. This would raise the error 'Error while processing DB record: Unparseable data.' This issue has been fixed in version 3.05.08 of the ODBC component. ### ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-05-09-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-05-09-patch-1-download-link ================================================================================ # 1. Download Link #### Here is the Download Link for the New Agent Patch Version 3.05.09 JDBC - Download Link: [https://drive.google.com/file/d/1XRGeEXArPws5UADwTd7p9Q9JSbVV-VN2/view?usp=sharing](https://drive.google.com/file/d/1XRGeEXArPws5UADwTd7p9Q9JSbVV-VN2/view?usp=sharing) Release Date: 26-July-2024 ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Bug Fixed Slug: new-agent-3-05-09-patch-2-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-05-09-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed ### Missing CSV Files When Exporting Multiple Files from New Agent Concurrently When exporting multiple files from the Agent simultaneously, some files would be missing. This issue has been resolved by appending a unique UUID to the file name, ensuring each exported file has a distinct filename. ### Fixed Duplicate Agent Log File Issue There is an issue where after clicking the "Reread Active File" button, you would get a duplicate Agent Log file with a different Last Modified date. This issue has been fixed by checking if the file already exists. If the file exists, it will update the file; otherwise, it will create a new file. ### Inconsistency Between Salesforce on the New Agent Control Board and Agent Schedulers We previously had an issue where the Salesforce display scheduler and the Agent scheduler were not in sync. For example, the Salesforce scheduler might be running, but the Agent scheduler was not. This caused problems when the next scheduled run was triggered. This inconsistency between the Salesforce and Agent schedulers has been resolved. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-05-10-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-05-10-patch-1-download-link ================================================================================ # 1. Download Link #### Here is the Download Link for the New Agent Patch Version 3.05.10 JDBC - Download Link: [https://drive.google.com/file/d/1yE6NvJrJUnr2geUUWQmd_w7A3TI8tyrD/view?usp=drive_link](https://drive.google.com/file/d/1yE6NvJrJUnr2geUUWQmd_w7A3TI8tyrD/view?usp=drive_link) Release Date: 01-August-2024 ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-05-11-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-05-11-patch-1-download-link ================================================================================ # 1. Download Link #### Here is the Download Link for the New Agent Patch Version 3.05.11 JDBC - Download Link: [https://drive.google.com/file/d/1Qf6zer7Q5QSxrQ0prsdS15hayRZgKhFO/view?usp=sharing](https://drive.google.com/file/d/1Qf6zer7Q5QSxrQ0prsdS15hayRZgKhFO/view?usp=sharing) Release Date: 04-August-2024 ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Bug Fixed Slug: new-agent-3-05-10-patch-2-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-05-10-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed ### Missing CSV Files When Exporting Multiple Files from New Agent Concurrently When exporting multiple files from the Agent simultaneously, some files would be missing. This issue has been resolved by appending a unique UUID to the file name with SFTP, FTP, and FTPs protocols, ensuring each exported file has a distinct filename. ### ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Bug Fixed Slug: new-agent-3-05-11-patch-2-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-05-11-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed ### Handling Incorrect Message Status and Comments in Agent File Processing There was an issue where messages were not being handled correctly due to incorrect message status and comments while processing Agent files using the Local, FTP, FTPs, and SFTP protocols. This issue has been resolved. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-05-12-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-05-12-patch-1-download-link ================================================================================ # 1. Download Link #### Here is the Download Link for the New Agent Patch Version 3.05.12 JDBC - Download Link: [https://drive.google.com/file/d/1Ds_WC6AKbQEw5bcejCQdsq8z7MNRftVD/view?usp=sharing](https://drive.google.com/file/d/1Ds_WC6AKbQEw5bcejCQdsq8z7MNRftVD/view?usp=sharing) ODBC - Download Link: [https://drive.google.com/file/d/1GucWFSMyynFFTpnBg1VZT-GvwSH4GrGZ/view?usp=sharing](https://drive.google.com/file/d/1GucWFSMyynFFTpnBg1VZT-GvwSH4GrGZ/view?usp=sharing) Release Date: 14-August-2024 ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Bug Fixed Slug: new-agent-3-05-12-patch-2-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-05-12-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed ### ODBC Agent Service Automatically Stopped Due to Incorrect Quartz Driver We encountered an issue while starting the Agent Service on the ODBC Installation Version. It cannot start service due to an error in the Quartz Scheduler Setting. The error message displayed in the Agent Log was: "Couldn't retrieve trigger: Bad value for type long: \x". This issue has been resolved by changing the quartz.properties file. The quartz.jobStore.driverDelegateClass setting was updated from “org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate” to “org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate”in the Quartz persistent jobStore configuration section. ### Continuously Fixing Incorrect Message Handling in Agent File Processing In the previous version, we addressed the incorrect message handling. Now, we are continuing to fix the remaining messages that were not properly handled due to incorrect message status and comments while processing Agent files using the Local, FTP, FTPs, and SFTP protocols. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-05-13-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-05-13-patch-1-download-link ================================================================================ # 1. Download Link #### Here is the Download Link for the New Agent Patch Version 3.05.13 JDBC 64 Bit- Download Link: [https://drive.google.com/file/d/1wEPT6XZXv7L0zzvnDzqUeArUDp2ZCDzn/view?usp=sharing](https://drive.google.com/file/d/1wEPT6XZXv7L0zzvnDzqUeArUDp2ZCDzn/view?usp=sharing) ODBC 32 Bit- Download Link: [https://drive.google.com/file/d/1w8Lc6yfCRIFwc2wR-rC10vA0ex--rqu2/view?usp=sharing](https://drive.google.com/file/d/1w8Lc6yfCRIFwc2wR-rC10vA0ex--rqu2/view?usp=sharing) Release Date: 22-November-2024 ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Info Slug: new-agent-3-05-13-patch-2-info URL: https://help.skyvva.com/#article/new-agent-3-05-13-patch-2-info ================================================================================ # 2. Info #### Change Ping Connection Method In the previous version, when establishing a ping connection, we needed all usernames, passwords, and Domain URLs. Now, the ping connection has been changed only to check if the Domain URLs are available. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 3. Enhancement Slug: new-agent-3-05-13-patch-3-enhancement URL: https://help.skyvva.com/#article/new-agent-3-05-13-patch-3-enhancement ================================================================================ # 3. Enhancement #### Added “Browse Logs File” to the Agent Log We have added a new 'Browse Log File' feature. You can browse the Agent Log File Folder and select the file you want to push. This allows you to easily access and review specific log files, streamlining the process of identifying the issues. With this addition, users can quickly find the log files they need, facilitating faster and more accurate diagnostics. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 4. Bug Fixed Slug: new-agent-3-05-13-patch-4-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-05-13-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Fixed Various Issues on CDC Steaming API - There was an issue when the file was opened and the Salesforce CDC raised an event. A new message was created, but the record was not inserted. This issue has been resolved by enabling data to be written to the file during the file opening and updating the message status to 'completed' after finishing the record insertion. - The previous version's event message did not provide data for monitoring. We have now fixed this by adding data to the event message. - When you update a field on a record that is not mapped, many messages are created. This issue has been fixed by no longer creating and sending these empty records to the file. #### Fixed Store Procedure Postgres Does Not Support the Parameter The problem is Postgres doesn't support the parameter of the store procedure, so we need to set it as a column index. The most important thing is we need to tell the connection that we will store procedure NOT function like this "escapeSyntaxCallMode=call". Example: "jdbc:postgresql://localhost:5432/postgres?currentSchema=sobject&escapeSyntaxCallMode=call". #### Fixed Error while using Reference Field on Agent File Adapter with SFTP Protocol We encountered an error when using the **Reference Field** on the **Agent File** Adapter with the **SFTP protocol**. The error log indicates that 'the specified system path could not be found. Now this issue has been resolved by working on the Reference Field. #### Message Status Not Updated After Exporting the Binary File This error occurred while you were exporting the binary file. You received the file, but the message status remained 'New Status.' We have now fixed the issue, and the status will be marked as 'Completed' once the file is exported. #### Fixed Missing Agent Password on Cache There was an issue with the password cache missing in the salesforce_authentication table in Postgres. We have now fixed it by installing the required field to prevent any missing values. #### Fixed Response Scheduler Error to Scheduler Screen on Agent Control Board In the previous version, we did not properly identify scheduler errors. We have fixed this by providing an error message to report the error from the agent side. #### Fixed Scheduler When Service is Stopped So Making The Next Run Invalid We encountered an issue where the scheduler's current DateTime was less than the Next Scheduled Run, causing the Trigger States to be in error. This issue has been fixed to prevent it from happening again. #### Logging not Able to Understand while No Data to Do Integrate This issue occurred when the query did not return any records to be integrated, as there were no records in the database that matched the query criteria. The log message 'dataIbean is loaded. Size of dataIBean: 0' was unclear. We have now resolved this by logging the message as 'No Data Available in [Interface Name]'." #### Bulk Basket Did not Create With V2 Interface Design The bulk basket is not created when using Skyvva Bulk with Interface V2 Interface Design because the New Agent creates an attachment instead of a content version. This issue has been resolved by creating the bulk basket with the ContentVersion. #### Fixed Cache Issue Fixed some issues with synchronizing between Salesforce and the agent cache. #### Fixed Inserting Hierarchical Records into Postgres Database We encountered a problem while inserting hierarchical records with a parent root map where the primary key is an auto-increment number. The issue is that we did not exclude the primary key from being mapped to the database. For example, the id field is the primary key in the database and is mapped to the Salesforce ID in Salesforce. This field is intended to be used as a foreign key in the child table only. However, we don't need to insert it into the database because it is auto-incremented. Therefore, when the child table is inserted into the database, it will reference this ID field as a foreign key. Now this issue has been resolved. #### Fixed Issue Not Able to Update the Message on Agent File Adapter - There was an issue with outbound processing using the Agent File. You received the file, but the message status did not update and remained as 'new'. The problem was that the local file adapter did not cache messages that were requested to be updated. This issue has been resolved by updating the status to 'completed' once the Agent receives the file. - When exporting the file attachment, we initially received a new message and did not get any file attachments. We corrected it and reprocessed the messages, but the message status remained 'new' and did not update. However, the file was received. This issue has been fixed by correctly updating the message status. #### Fixed Support sObject Message Type with Agent File Adapter In the previous version, the new agent did not support the V3 sObject Structure. Now, we have fixed it to support the V3 sObject Structure for both inbound and outbound Agent File Adapters, making it easier for users as they have the same structure as Salesforce. #### Issue: Running Parallels Manual and Scheduler Simultaneously There is an issue when performing manual processing while the scheduler is also running to execute the same interface. This results in the interface being executed twice simultaneously. The processing type does not update correctly and remains Manual Processing. This issue has been fixed by checking if the first sequence of the interface is done by manual processing, and the scheduler will then check the second sequence of the interface to be executed. #### Fixed Issue Backup File While Processing Failed We encountered an issue with an incorrect CSV file that we used to import via the Agent File adapter. The file could not be imported due to an error message: 'Exception Caught {} fboundsException: Index 4 out of bounds for length 4,' which was caused by missing commas in the file. Despite this, the file was still backed up. This issue has been resolved by ensuring that files are not backed up when file processing fails, and by improving the error logging for better understanding. #### Inbound V3 With Agent File Adapter Support a Source to Many Target Mapping In the previous version, the inbound V3 Agent File adapter did not support a source node map with multiple target nodes, causing the child target node map to miss inserting child records. This issue has been resolved by supporting multiple target nodes to insert hierarchical records. #### Fixed Consumer File Inside the Adapter In the previous version, we stopped the consumer on the adapter, but the file was still being imported. This issue has been resolved by changing the status check from 'Status' to 'Consumer Status' to verify the consumer's status. #### Fixed Getting Two Responses to Update While Having a Request Insert Record into Database There was an issue when sending a request to insert a record into the database via the Agent Database Adapter, resulting in two responses to update the record in Salesforce. This issue has now been fixed, and you will receive only one response per request. #### Fixed ODBC with Datatime Format In ODBC, we encountered an issue where inserting a null value into a DateTime field column in the database resulted in the value '1900-01-01 00:00:00.000' being inserted instead. This issue has now been fixed, and inserting a null value will no longer result in this default value. #### Stored Procedure Issue Regarding Requests Without Responses Fixed the outbound interface with the Agent Database adapter using a stored procedure. Now, the request interface no longer requires a response interface, making it optional. If there is no response interface, we will process only the IN parameter. Additionally, we have switched from using parameter names to using indexes instead. #### Added All Tables to View Agent Cache while needing to View We cannot check some agent caches on the Agent Control Board. For example, we cannot see the qrtz_triggers table to determine why the scheduler is not running. We have now added all agent cache tables to ensure we can view all necessary tables. #### Fixed Issue Allowing Interface That is Development Status In this case, although the interface was not deployed, the agent still executed it, which led to unexpected behavior. This issue has been fixed by not allowing the execution of interfaces that are still in development status and by verifying the deploy status of interfaces before execution to avoid such errors. #### Fixed Different Job Status Between Manual Processing And Scheduler Processing of New Agent There was an issue where the same interface was executed via New Agent, but the Job Status differed between Manual Processing and Scheduler Processing. We have now fixed this issue so that the Job Status is consistent in both cases. #### Fixed Different Job Status Between Manual Processing And Scheduler Processing of New Agent When you set the New Agent Inbound Scheduler, the Outbound Interfaces were executed. This issue has been resolved by preventing the New Agent Scheduler from executing Outbound Interfaces. #### Fixed Include timestamp into file name for SFTP and FTP File Using backup File In the previous version of the Inbound Agent File Adapter, when you backed up the file after processing, it did not include the 'processed' tag and timestamp. We have now fixed this by concatenating the original file name with 'processed' and a timestamp (ZonedDateTime.now(ZoneId.of('UTC')).normalized().toString()). ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: 3-06-main-release-1-download-link URL: https://help.skyvva.com/#article/3-06-main-release-1-download-link ================================================================================ # 1. Download Link ## Here is the Download Link for the New Agent Version 3.06 #### For Window: * JDBC 64 Bit- Download Link: [https://drive.google.com/file/d/1SvqMHxq6rBLJHbMEBfBI1Z_8wHxkr19W/view?usp=sharing](https://drive.google.com/file/d/1SvqMHxq6rBLJHbMEBfBI1Z_8wHxkr19W/view?usp=sharing) * ODBC 32 Bit- Download Link: [https://drive.google.com/file/d/1Ry3DF9YvdcIcsK4D5eLDhYFcbymMGOtS/view?usp=sharing](https://drive.google.com/file/d/1Ry3DF9YvdcIcsK4D5eLDhYFcbymMGOtS/view?usp=sharing)
Release Date: 14-January-2025
================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-05-14-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-05-14-patch-1-download-link ================================================================================ # 1. Download Link #### Here is the Download Link for the New Agent Patch Version 3.05.14 JDBC 64 Bit- Download Link: [https://drive.google.com/file/d/1r7tn7ou_srSzd-gWl2LSsHbNLFsDn9D6/view?usp=sharing](https://drive.google.com/file/d/1r7tn7ou_srSzd-gWl2LSsHbNLFsDn9D6/view?usp=sharing) ODBC 32 Bit- Download Link: [https://drive.google.com/file/d/12mjwzrXrnfXcPXB63NU6krt-XmMmLUpZ/view?usp=drive_link](https://drive.google.com/file/d/12mjwzrXrnfXcPXB63NU6krt-XmMmLUpZ/view?usp=drive_link) Release Date: 14-January-2025 ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 3. New Feature Slug: 3-06-main-release-3-new-feature URL: https://help.skyvva.com/#article/3-06-main-release-3-new-feature ================================================================================ # 3. New Feature ## New Agent Version 3.06 Support With Non-Open Firewall Mode The agent now supports a new processing mode where you don't need to open the firewall. In the past, we support only one mode, e.g., the opening firewall mode, where you must open the firewall to connect Salesforce with the Agent. With the new version beginning from 3.06, you can operate the agent without opening the firewall. This reduces the work and cost and simplifies the setup and configuration of the agent because you do not need to open the firewall anymore.  Note that this mode doesn't support real-time user interaction applications. This is due to the technology behind what we are using, e.g., the Salesforce Pub/Sub API. With this technique, only asynchronous processing based on event-driven architecture is supported, and thus a real-time user interaction-based requirement is not supported.  When you require to have a real-time user-based interaction you must open the firewall and use the agent in the so-called 'opening-firewall mode'. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Enhancement Slug: new-agent-3-05-14-patch-2-enhancement URL: https://help.skyvva.com/#article/new-agent-3-05-14-patch-2-enhancement ================================================================================ # 2. Enhancement #### Enhanced System Information on Agent Control Board to Display JDBC 64-Bit or ODBC 32-Bit Currently, the system information of the Agent Control Board does not display whether it is using JDBC 64-bit or ODBC 32-bit. This information would help us determine the Agent version design, whether it is JDBC 64-bit or ODBC 32-bit. Now, it has been enhanced to include the Connect Driver and Java Architecture in the Java Runtime. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 3. Bug Fixed Slug: new-agent-3-05-14-patch-3-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-05-14-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Fix Did Not Get Value Using Streaming API Using Salesforce CDC Event An error occurred while you were using the Salesforce CDC event streaming API, causing the fields in the records to change. The file did not receive the updated field values. This issue has been resolved by retrieving the values after the field changes in Salesforce. #### Fixed Manual Processing is complete with error while Create Batch/Bulk Basket Correctly There is an issue when processing batch and bulk mode with a manual process. It will raise an error message stating 'Manual processing is complete with errors' with the Agent Database adapter, even though the Batch Basket and Bulk Basket are created correctly. This issue has been fixed by checking the job results correctly. #### Fixed Ping Connection for Agent SOAP Adapter We have fixed the issue that occurred when pinging the connection with a POST operation of the SOAP adapter, which required a request body. However, we no longer ping the connection in that manner. Now, we only check if the domain name is available. #### Improved Log Understanding and Response to Update Message Failure During Adapter Processing Error There is an issue with your adapter's incorrect ConnectURI, Username, and Password after integration. The log currently raises an error: 'ERROR: No messages to be updated,' and the message gets pending. This issue has been resolved by correcting the issue and responding to update the message inside Salesforce. #### Fixed Message Completed But Did not Get Any Binary File The New Agent BinaryDataKey path does not match the salesforce path. This will raise an issue: 'java.lang.NullPointerException: Cannot invoke "com.google.gson.JsonElement.getAsString()" because the return value of "com.google.gson.JsonObject.get(String)" is null.' It receives the completed message without any file. This issue will be resolved by checking only the mapping field for the ContentVersion. #### Fixed Various Issues While Consuming SF CDC Streaming API - We have an issue where stopping the consumption of the Salesforce CDC Streaming API on the adapter does not work; it continues to consume and send records. - We encountered a problem: 'Failed to insert the records - ERROR: syntax error at or near “)” position: 13' while inserting records into the database using the Salesforce Streaming API. - Fixed the issue where getValue2__c() is null, resulting in the error: "Cannot invoke Cannot.skyvva.camel.beans.tables.AdapterProperty.getValue2__c() because the return value of java.util.Map.get(sObject) is null." This issue occurred while consuming the Salesforce CDC Streaming API on XML, JSON, and Excel files. - Fixed the issue where the Salesforce CDC Streaming API could not be consumed with a multi-adapter. - Fixed the Salesforce CDC Streaming API consumer support with client_credentials authentication. - Fixed the issue of getting the value but not the file header. #### Fixed Issue Regarding Duplicate Adapter Properties on Agent Cache There is an issue when you have Duplicate Adapter Properties on the Agent Cache. After performing manual processing, it will raise an error: 'Manual Processing is completed with error.' Upon reviewing the log, the issue is identified as: 'query did not return a unique result: 2; nested exception is javax.persistence.NonUniqueResultException: query did not return a unique result: 2.' #### Fixed Salesforce Bulk Processing via New Agent Does Not Support OAuth2 Client-Credential Authentication Type Currently, the New Agent supports only SFDC Bulk API 2.0 with OAuth2 Username-Password Authentication Type. We have now updated it to support both OAuth2 Username-Password and Client-Credential Authentication types. #### Fixed Issue with Record Insertion into Database Using 'External Key Management' Insert Operation Mode in Agent Database Adapter There is an issue when using the New Agent to insert records into the database with the 'External Key Management' Insert Operation Mode in Interface V2 design. It raises an error: 'Failed to insert the record - ERROR: syntax error at or near ")". Position: 13.' This issue has been fixed, and the record insertion is now completed successfully. #### Fixed Batch Processing Package Size - We have updated the Interface V2 design to support only the 'Transfer Package Size' field. By default, if the 'Transfer Package Size' field is not set, the package size per batch will be 50 records. - We have updated the Interface V3 design to support the 'Batch Package Size' field. If not set, it defaults to the 'Transfer Package Size' with 50 records per batch. - Both V2 and V3 interface designs support Interface Group and Interface settings. The Interface settings have higher priority than the Interface Group. #### Fixed Convert null value as string ‘null’ In the previous version, we had an error converted to 'null' (as a string) instead of a true null value for both file and database adapters of the new agent. This issue has been resolved. #### Missing Header Quote for CSV File In the Agent File adapter, you chose the CSV file type and enabled the 'Has Quotes' option. After exporting the file, the CSV file header did not include the quotes. This issue has been fixed by ensuring the quotes are included in the CSV file header. #### Fixed Not Able to Connect Ms Access Using Username and Password You received a System.HttpResponse [Status=Internal Server Error, StatusCode=500], even though the correct username and password were set in the adapter properties of the Agent Database Adapter to connect to MS Access. This issue has been fixed, and you are now able to connect to MS Access using your username and password. #### Fixed Override Option on File Handling Mode of Agent File Adapter We encountered an issue when exporting files with the Override option in the File Handling Mode of the Agent File adapter. The system would export, append, and duplicate records in the existing file. For XML files, it would duplicate the root element, and for CSV files, it would duplicate the header. This issue has been resolved by properly overriding the old file. As a result, the header for CSV files and the root element for XML files will no longer be duplicated. #### Fixed Message Status Not Updating Correctly There is an issue when you execute the interface in asynchronous mode. The Message Status does not update correctly when processing with the Agent Database Adapter for different operations such as Query, Delete, Update, Upsert, and Insert in both Interface V2 and V3 designs. This issue has been resolved by correctly updating the message status. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-06-01-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-06-01-patch-1-download-link ================================================================================ # 1. Download Link ## Here is the Download Link for the New Agent Patch Version 3.06.01 ## For Window: * JDBC 64 Bit- Download Link: [https://drive.google.com/file/d/1XXlDYBrrn9GF_EydcbFmxBiZjqnI-mOk/view?usp=sharing](https://drive.google.com/file/d/1XXlDYBrrn9GF_EydcbFmxBiZjqnI-mOk/view?usp=sharing) * ODBC 32 Bit- Download Link: [https://drive.google.com/file/d/1GRPkf2xNyhaN4yknPofjGaXb6dzi9CYx/view?usp=sharing](https://drive.google.com/file/d/1GRPkf2xNyhaN4yknPofjGaXb6dzi9CYx/view?usp=sharing) Release Date: 28-April-2025 ##### Note: The upgrade mode will only support the New Agent when using the Postgres Database. Please ensure that your current New Agent is already running with Postgres before activating the upgrade mode. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. New Feature Slug: new-agent-3-06-01-patch-2-new-feature URL: https://help.skyvva.com/#article/new-agent-3-06-01-patch-2-new-feature ================================================================================ # 2. New Feature ## Added New Agent Local Web We have added a new feature called New Agent Local Web to this administration application. You can perform the following tasks directly on the agent server: - The Skyvva Tool is used to encrypt and decrypt passwords, whether you need it for the New Agent or any other purpose. - Register a new Salesforce Org. You register a new Org when you want to connect an additional Org with the agent. - View a list of connections and take some action, such as subscribe, unsubscribe, or resubscribe - View system information such as agent version, database, and OS information Note: You can access it as an example using the URL with the specified port: [http://localhost:9055/](http://localhost:9055/) ## Added New /api/query API on New Agent We have introduced a new '/api/query' API in the New Agent for querying the database directly from the Agent Database Adapter. For instance, you can use 'https://hostname:port/api/query' to retrieve data from the Agent Database. The query should be structured as follows: ``` {   "adapterId": "xxxxxxxxxxxxxxx",   "sql": "select id, clo1 from table" } ``` ## Added Multiple Authentication Types for New Agent In the previous version, the New Agent only supported Basic Authentication. Now, we have added JWT and OAuth2, which include two grant types: Password Credentials and Client Credentials, along with API Key and Certificate-based authentication. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 3. Enhancement Slug: new-agent-3-06-01-patch-3-enhancement URL: https://help.skyvva.com/#article/new-agent-3-06-01-patch-3-enhancement ================================================================================ # 3. Enhancement ## Enhanced Agent Database Adapter Support with Binary Data Previously, users encountered limitations when handling binary data through the Agent Database Adapter. With the recent upgrade, the enhanced functionality now facilitates seamless export and import operations for binary files within the database. The absence of binary file support in earlier versions of the Agent Database Adapter posed challenges for data management. The recent improvements have effectively addressed this issue, enabling efficient handling of binary files during database interactions. ## Enhanced Database Message Type Generation Using 'Import Database Metadata' with Non-Open Firewall Connection Previously, the challenge of generating a Database Message Type Template with a database adapter using a non-open firewall connection has been resolved through recent enhancements on the agent side, enabling seamless database message type template generation. ## Enhancements for Inbound Binary File Transfer from New Agent to Salesforce In the previous version, upserting Binary file support only required IStructure or Message Type Field Entry: FILE_BODY, FILE_TYPE, FILE_NAME, FILE_EXTENSION, FILE_LENGTH. We have enhanced the Inbound Binary file to also support hybrid mapping, sObject IStructure, and External Mapping. ## Enhancements in New Agent Support for 'Don’t Export Null Value' in Outbound Processing Before, the "Don’t Export Null Value" option interface did not function correctly with the agent file outbound adapter of the New Agent. It would still send all fields and any values, including null field values. However, we have now improved the feature to exclude fields with null values. ## Added Timeout to All Agent xxx Adapters We have enhanced the Timeout property of Agent xxx Adapter to allow the user to set the timeout, regulating the maximum time that a new Agent can dedicate to a task before it is paused or interrupted. ## Enhancements to Package Size for Batch Mode Processing In the previous version, we had a feature to specify the package size per batch basket. Currently, this feature only supports settings at the Interface level for the New Agent. We have enhanced support at three levels: Interface, Interface Group, and Integration, to determine the batch basket sizes as outlined below for both V2 and V3: - If the Transfer Package Size (skyvvasolutions__Package_Size__c) is blank, it will default to the Batch Package Size (skyvvasolutions__Batch_Package_Size__c) set at the Interface level. - If both the Transfer Package Size and the Batch Package Size are blank on the interface level setting, the system will look at the Interface Group level on Basket Record Collection Size (skyvvasolutions__PackageSize__c). Field. - If both the Interface and Interface Group are blank and do not have any settings as mentioned above, the system will default to the Integration setting specified in the Transfer Package Size (skyvvasolutions__Packet__c) field. ## Enhanced to support Installation with Upgrade Mode In the past, there was no upgrade mode available for installing the new Agent. Moving forward, you can utilize the upgrade mode for the new Agent version. This mode will update the JAR file for that version, run Flyway, and create a new shortcut for the Skyvva Integration and Agent EncryptAndDecrypt. ## Enhanced Installation with New Installation Mode In the previous version, you had to select the Operation Mode. In this version, we have eliminated this choice and set the firewall to non-opening by default. With this mode, you can now utilize both opening and non-opening firewalls based on your selection in the Agent Control Board. Additionally, during installation, you will receive a default Connection Destination that is automatically registered and subscribed for non non-open firewall to this connection. Additionally, we have included support for Proxy during installation. ## Enhanced Support Database CDC Event of New Agent Database Adapter We have enhanced our New Agent Database Adapter to utilize change data capture (CDC) in SQL Server. In the realm of databases, the New Agent can now capture and stream real-time changes taking place within the database. This functionality encompasses capturing inserts, updates, and deletes executed on tables. After capturing the data, you can conduct inbound processing using the Agent Database Adapter, empowering you to execute various desired operations by configuring them through our interface. ## Enhance New Agent Integration Processing to apply to the Proxy In this release, we support using a proxy (forward proxy) with the agent. You now have the option to connect to Salesforce with or without a proxy. ## Enhanced Stored Procedure to Support Outbound Requests and Inbound Responses in Asynchronous Processing Mode In the previous version, when utilizing the outbound interface with responses in Asynchronous Processing Mode and Store Procedure operation, there was no inbound response. We have now enhanced the New Agent to support Stored Procedures with outbound requests and inbound responses in Asynchronous Processing Mode.  ## Enhanced to support Ext Id for Outbound Interface V3 Design In the previous version, within the V3 Interface Outbound Processing for Database Template, users had the flexibility to employ the WHERE clause and WHERE expression to update, query (select), and delete records according to their specified criteria. Alternatively, users could also define the 'ext id' in the mapping tool for delete, query (selecting records in the database), and update operations, mirroring the design in the V2 interface. This enhancement simplifies the process for users who prefer not to use complex WHERE clauses. ## Unsubscribe/Subscribe immediately after saving the connection destination when switching authentication types between OAuth2 Username-Password and OAuth2 Client-Credential for Non-Open Firewall We unsubscribe and subscribe immediately when switching the authentication type between OAuth2 Username-Password and OAuth2 Client-Credential for Non-Open Firewall configurations after saving the connection destination. For instance, if you initially registered with OAuth2 Username-Password and wish to switch to OAuth2 Client-Credential, the system will automatically subscribe with OAuth2 Client-Credential and unsubscribe from OAuth2 Username-Password. ## Retry Subscribe Connection with Non-Open Firewall Automatically when you Lose Connection In our new agent, losing connection means that you will be unable to connect to Salesforce, requiring a manual subscription. Now, we need to attempt subscription retries for a new agent with a non-open firewall. The default settings for subscription retries are 5 attempts, with a 30-second interval by default. The first retry interval is 30 seconds, and the subsequent retry intervals double the previous one. Alternatively, you can customize the retry limit and interval by modifying the values of 'pubsub.maxRetry' and 'pubsub.retryInterval' in the 'skyvva_application.properties' file. ## Enhanced Store Procedure support with Salesforce CDC Event, PushTopic Event, and Platform Event In the previous version, Salesforce CDC Events, PushTopic Events, and Platform Events did not support stored procedure processing. We have now enhanced the support. ## Enhanced Request Message and Response Message Link Together with Asynchronous Processing Mode Via Agent Database In the previous version, request and response messages were not linked together in the Asynchronous Processing Mode. We have improved this version by linking them together via the Agent Database. ## Clean Up Code for Session Management and Refactor Code in the Same Class and Method - Clean-up session management for calling the Salesforce API entails logging in to Salesforce to obtain the session ID. In older versions (v1, v2), the Agent always logged in to Salesforce to acquire an access token before making API calls for integration (sending payloads). An enhancement involves checking if the session ID exists in the agent property; if the execution fails, indicating that the current session has expired or is invalid, the system should log in again to obtain a new session and retry the integration. - Refactor the code within the same class and method to address duplicate code related to processing interfaces for API versions v1 (blank) and v2. Since these are older integrations with identical processing steps, the approach involves removing duplicates and consolidating any differences. ## Import and Export Binary Data into Database Via Agent Database We have implemented the functionality to import binary data from the database into Salesforce ContentVersion and to export binary data from Salesforce ContentVersion back to the database. ## Enhanced New Agent Reprocess Event Message In the previous version, the event message did not support reprocessing. However, we have enhanced the new agent to include support for the reprocessing feature. ## Encrypt the password for the certificate PFX File We have improved the security of 'server.ssl.key-store-password' by using an encrypted password. For instance, 'server.ssl.key-store-password=w30yijMWE0c='. When employing an encrypted password, configurations should be set as follows: - Set **server.ssl.enabled=false** when using a decrypted password via a custom SSL configuration class. - Set **server.ssl.enabled=true** when using a raw password with Spring Boot's automatic SSL configuration. ## Added New API In this version, we have added additional APIs for the New Agent. - /v3/rest/salesforceCacheTable/getTableColumns - /v3/rest/salesforceCacheTable/getAll - /v3/rest/salesforceCacheTable/fileList/{data} - /v3/rest/salesforceCacheTable/getByClause - /v3/rest/camelSkyvvaAgent/connection/ping - /v3/rest/scheduler/start - /v3/rest/scheduler/nextScheduler - /v3/rest/scheduler/stop - /v3/rest/scheduler/delete - /v3/rest/updateDbConfiguration ## Enhanced Retry on Bulk Mode Processing In the previous version, Bulk Mode processing did not support the retry function. We have now enhanced it to support settings based on the Interface, Interface Group, and Integration. The priority order for resolution is Interface first, followed by Interface Group, and then Integration ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 4. Bug Fixed Slug: new-agent-3-06-01-patch-4-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-06-01-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed ## Cache Adapter Properties Issue in Non-Open Firewall Mode There was an issue when changing the XML Root Tag to a blank value using a non-open firewall mode connection. The cache did not update the blank value for the xmlRootTag column in the adapter_properties cache table. This could lead to issues when retrieving the XML Root Tag with existing input for the XML file export. However, this problem has been resolved by synchronizing the cache's blank value for the XML Root Tag from the Salesforce adapter property to the xmlRootTag in the adapter_properties cache table. ## Outbound Database Operator Interface Upsert With Special Character There is an issue when data containing special characters is sent to the database via the Agent Database. For example, 'D'Cruz' will result in an error during SQL operations. We have resolved this by handling values with special characters. ## Clean up skyvva_application.properties In Agent Version 3.06.01, we no longer require certain properties in the skyvva_application.properties file. We have cleaned it up to display only the essential information needed. ## Do not update the Message Status while using Request and Response for Agent Rest Adapter An issue occurred while performing Request and Response for the Agent Rest Adapter behind a non-open firewall. While data retrieval was successful, the message request and response were not updated. This issue has been resolved, and now they have been updated. ## Resolved Insert/Upsert Error: Invalid Column name on Child Record, Including Table Name in Agent Database Adapter An issue was encountered while setting up the V3 interface design for upserting/inserting records in a hierarchy. Specifically, an error occurred when attempting to insert a child record with an invalid column name. The problem stemmed from including the table name in the column during insertion. This issue has been resolved by omitting the table name from the column. ## Resolved Issue: Stored Procedure Fails to Update Message Status in V3 Interface Design When Using Asynchronous Processing Mode When utilizing a stored procedure within the V3 interface design in Asynchronous Processing Mode, an issue arises where the message fails to update upon completion of processing. This problem occurs due to a lack of response from the Agent to update the message in Salesforce, consequently keeping it in the 'New Message' state. This issue has been resolved by ensuring the Agent responds to update messages. ## Resolved Issue Related to Retrieving All Records in Database When Getting Null Values in the 'where' Clause for Outbound Query Operations When querying records using the request outbound interface with the 'where' clause of Agent Database, an issue arises when the clause receives a null value, resulting in all records being queried from the database. This problem has been resolved by selecting records where the column in the clause is null. ## Fixed: Cannot run Flyway While Having a Postgres Password with Special characters during Installation There is an issue if you have a special character in the PostgreSQL password, which can cause problems when running Flyway during the installation of a New Agent. This issue has been resolved by ensuring that Flyway can handle passwords with special characters by using double quotes around the PostgreSQL password in the Running Flyway script. ## Fixed Issue: Did Not Get Response Interface with External Key Management in Asynchronous Processing Mode We observed that in Synchronous Processing Mode, the outbound requests and responses support Internal Key and External Key Management. However, in Asynchronous Processing Mode, only Internal Key management is supported for requests and inbound responses. We have enhanced our New Agent to support both internal key management and external key management for requests and responses in Asynchronous Mode, aligning it with the capabilities of Synchronous Mode. ## Fixed Get All Response Completed Message While Outbound Request Message Failed There was an issue encountered when calling an API with multiple records, where some were processed successfully while others failed, leading to all responses being marked as completed. We have resolved this problem by ensuring that only the response message corresponds to the request's completion message status. For instance, if a business message request consists of ten records, with seven successfully processed and 3 failing messages, the inbound response will now include only the 7 completed messages. ## New Agent Did Not Create Business Log While Doing Inbound Integration Processing with Database Adapter In the previous version, the New Agent did not generate the business log during inbound processing with the Database Adapter. This issue has been addressed by reinstating the creation of the business log. ## Clean Up Code for Session Management and Refactor Code in the Same Class and Method - Clean-up session management for calling the Salesforce API entails logging in to Salesforce to obtain the session ID. In older versions (v1, v2), the Agent always logged in to Salesforce to acquire an access token before making API calls for integration (sending payloads). An enhancement involves checking if the session ID exists in the agent property; if the execution fails, indicating that the current session has expired or is invalid, the system should log in again to obtain a new session and retry the integration. - Refactor the code within the same class and method to address duplicate code related to processing interfaces for API versions v1 (blank) and v2. Since these are older integrations with identical processing steps, the approach involves removing duplicates and consolidating any differences. ## Fixed Various Issues with File Adapter - Get a duplicate header with a CSV File Adapter in Append File Handling Mode while doing outbound processing to create the CSV file. This issue has been resolved. - Fixed issue regarding “No such file” with SFTP protocol with Append and Override File Handling with support /folder and \folder. ## Fixed Various Issues with Platform Event With New Agent - Fixed issue regarding no sObject related to the message while processing with streaming with the Platform event, and raised an issue with "java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because the return value of "com.skyvva.camel.beans.OutBoundRecords.getRecordId()" is null”. This issue has been resolved. - Resolved the issue with 'Java.lang.StackOverflowError: null' that occurred when the event message lacked the Agent Message to encompass the event message with business data. ## Fixed Retry Normal Integration There was an issue with retrying the normal integration, as it was not functioning as expected. This problem has been resolved based on the Interface, Interface Group, and Integration. The priority order for resolution is Interface first, followed by Interface Group, and then Integration. ## Fixed Various issues with Update Message, Generate Message, and Agent Database Adapter - We have resolved the issue where messages were not updating correctly when the upsert child fails during outbound interface processing with the Agent Database Adapter for the upsert operation. - Fixed delete operation does not update the child message - An issue occurred during the request and response process with the Agent Database Adapter, leading to the generation of a duplicate root message response. This issue has been resolved. - The issue of generating incorrect SQL in the child table for the update operation in the outbound process from the Agent Database has been fixed. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Warning Slug: 3-06-main-release-2-warning URL: https://help.skyvva.com/#article/3-06-main-release-2-warning ================================================================================ # 2. Warning ## Enable SSL For New Agent We would like to inform you that when using the New Agent with SSL, it is necessary to set `security.require-ssl=true` in the application.properties. If this setting is not configured to true, SSL will not function properly with our New Agent. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-06-02-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-06-02-patch-1-download-link ================================================================================ # 1. Download Link ## Here is the Download Link for the New Agent Patch Version 3.06.02 ## For Window: * JDBC 64 Bit- Download Link: [https://drive.google.com/file/d/1AibbcTsN9ULry66UnztDZwLZg8vAeKd8/view?usp=sharing](https://drive.google.com/file/d/1AibbcTsN9ULry66UnztDZwLZg8vAeKd8/view?usp=sharing) * ODBC 32 Bit- Download Link: [https://drive.google.com/file/d/1i66XUlTKHYVabruss84TmdY302KylnN9/view?usp=sharing](https://drive.google.com/file/d/1i66XUlTKHYVabruss84TmdY302KylnN9/view?usp=sharing)
Release Date: 09-May-2025
#### Note: The upgrade mode will only support the New Agent when using the Postgres Database. Please ensure that your current New Agent is already running with Postgres before activating the upgrade mode. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Info Slug: new-agent-3-06-02-patch-2-info URL: https://help.skyvva.com/#article/new-agent-3-06-02-patch-2-info ================================================================================ # 2. Info ## Changed Some Path New Rest API from /v3/rest/xxx to /agent/v3/xxx  We have changed some path New Agent API from /v3/rest/xxx to /agent/v3/xxx: - **/v3/rest/salesforceCacheTable/update** to **/agent/v3/cache/update** - **/v3/rest/salesforceCacheTable/delete** to **/agent/v3/cache/delete** - **/v3/rest/salesforceCacheTable/getTableColumns** to **/agent/v3/cache/getTableColumns** - **/v3/rest/salesforceCacheTable/getAll** to **/agent/v3/cache/getAll** - **/v3/rest/salesforceCacheTable/fileList/{data}** to **/agent/v3/cache/fileList/{data}** - **/v3/rest/salesforceCacheTable/getByClause** to **/agent/v3/cache/getByClause** - **/v3/rest/camelSkyvvaAgent/connection/ping** to  **/agent/v3/connection/ping** - **/v3/rest/scheduler/start** to **/agent/v3/schedule/start** - **/v3/rest/scheduler/nextScheduler** to **/agent/v3/schedule/nextScheduler** - **/v3/rest/scheduler/stop** to **/agent/v3/schedule/stop** - **/v3/rest/scheduler/delete** to **/agent/v3/schedule/delete** - **/v3/rest/updateDbConfiguration** to **/agent/v3/updateDbConfiguration** ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 3. Warning Slug: new-agent-3-06-02-patch-3-warning URL: https://help.skyvva.com/#article/new-agent-3-06-02-patch-3-warning ================================================================================ # 3. Warning ## Required to input Current Agent Version on Connection Destination We would like to alert you that when upgrading the New Agent, you might encounter an error message due to changes in the New Agent's APIs for the updated version. For instance, the process of pinging 'Salesforce -> Agent' Step has shifted from /v3/rest/camelSkyvvaAgent/connection/ping to /agent/v3/connection/ping. If your current version is 3.06.02, but you mistakenly input the Agent Version as 3.06.01 in the Connection Destination, you will receive an error message like 'Ping Connection: System.HttpResponse[Status=Not Found, StatusCode=404' because Salesforce calls the old Agent API. It is crucial to input the correct version during the installation of your New Agent Version. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 4. Enhancement Slug: new-agent-3-06-02-patch-4-enhancement URL: https://help.skyvva.com/#article/new-agent-3-06-02-patch-4-enhancement ================================================================================ # 4. Enhancement ## Wildcard Support without Dot(.) Before Star(*) in File Adapter In the previous version, New Agent supported wildcards only for the ‘Prefix Filename.*.extension’. However, we have now made a change so that it supports the format 'Prefix Filename*.extension', without the dot (.) before the wildcard (*). ## Remove Register and Create Default Connection Destination for Non-Opening Firewall for New Agent Installer In the previous version, during the installation of the New Agent, you were required to register and create a Default Connection Destination for a Non-Opening Firewall. We have now removed this step, allowing you to register and create a connection destination directly from our Agent Local Web instead. ## Support Browse Logs File for Non-Opening Firewall Mode The Browse Logs File previously supported only Open Firewalls. We have now enhanced support for the Browse Logs File to include Non-Open Firewall Mode. ## Added Some New API for the New Agent Previously, users created an agent user during the agent installation process. Now, we aim to empower users with the ability to manage their agent users post-installation. To facilitate this, we will offer a REST API for creating, updating, and deleting agent users as API below  - agent/v3/createUsers - agent/v3/updateUsers - agent/v3/deleteUsers ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 5. Bug Fixed Slug: new-agent-3-06-02-patch-5-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-06-02-patch-5-bug-fixed ================================================================================ # 5. Bug Fixed ## Fixed Not Update Root API Request Message An issue arises when performing a request(Query Operation)/response in Asynchronous mode using the V3 interface design of Agent Database Adapter, where the Root API Request Message fails to update and stays in a new status. This problem has been resolved by updating the status through the New Agent to Salesforce. ## Managing Error Messages with Stored Procedures Using ODBC An issue occurs when an incorrect stored procedure parameter is present in the mapping and no stored procedure exists in the database with the ConnectionURI provided in the Agent Database Adapter. This situation triggers an error message: 'SP execute failed: Cannot invoke "com.skyvva.camel.commons.utils.DatabaseUtil$StoreProcedureMeta.isOutputParam()" because "sPmetaData" is null.' The problem has been resolved by updating the message comment for better understanding. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-06-03-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-06-03-patch-1-download-link ================================================================================ # 1. Download Link ## Here is the Download Link for the New Agent Patch Version 3.06.03 ## For Window: * JDBC 64 Bit- Download Link: [https://drive.google.com/file/d/1uubsp-Ex0pMLINTJp66vgY-9qdhUk35n/view?usp=sharing](https://drive.google.com/file/d/1uubsp-Ex0pMLINTJp66vgY-9qdhUk35n/view?usp=sharing) * ODBC 32 Bit- Download Link: [https://drive.google.com/file/d/1A5ODF3buJO2MCSCZ2QrDWLXRyDkSJcFP/view?usp=sharing](https://drive.google.com/file/d/1A5ODF3buJO2MCSCZ2QrDWLXRyDkSJcFP/view?usp=sharing) Release Date: 26-June-2025 #### Note: The upgrade mode will only support the New Agent when using the Postgres Database. Please ensure that your current New Agent is already running with Postgres before activating the upgrade mode. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Warning Slug: new-agent-3-06-03-patch-2-warning URL: https://help.skyvva.com/#article/new-agent-3-06-03-patch-2-warning ================================================================================ # 2. Warning ## Ensure Halting of All Outbound Schedulers Before Upgrading to New Agent Version 3.06.03 and Skyvva Version 2.51.8 for Non-Open Firewall Mode In light of our enhancements in outbound processing on the Agent side aimed at minimizing event usage, it is crucial to halt all outbound schedulers before upgrading Skyvva (from version 2.51.7 or earlier to 2.51.8 or later) and the Agent Version (from 3.05.7 or earlier to 3.06.03 or later) in non-open firewall mode exclusively. Following the upgrade, it is essential to reset the Outbound Scheduler settings and restart them.
Note
Skyvva Version 2.51.8 or earlier must be used with Agent Version 3.06.03 or later in non-open firewall mode with outbound processing. For Open Firewall Mode, no action is required; simply upgrade it.
================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 3. Feature Slug: new-agent-3-06-03-patch-3-feature URL: https://help.skyvva.com/#article/new-agent-3-06-03-patch-3-feature ================================================================================ # 3. Feature ## Added a New Agent API for Credential Verification We have developed the Agent API 'agent/v3/verifyCredentials' to verify the user's old username and password before enabling them to update their password or status. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 4. Enhancement Slug: new-agent-3-06-03-patch-4-enhancement URL: https://help.skyvva.com/#article/new-agent-3-06-03-patch-4-enhancement ================================================================================ # 4. Enhancement ## Wildcard Support Both with and without a Dot (.) Before the Star (*) in the File Adapter In the previous version, the New Agent only supported wildcards in the format 'Filename*.extension', without the dot (.) before the wildcard (*). However, we have now made a change to support both formats: 'Prefix-Filename*.extension' without the dot (.) before the wildcard (*) and 'Prefix-Filename.*.extension' with a dot (.) before the wildcard (*). ## Enhanced Manual and Scheduler Outbound Processing on Agent Side with Non-Open Firewall Because outbound processing consumes a large number of events for Non-Open Firewall, we enhance the transition outbound processing by Manual and Scheduler on the Agent side to reduce event usage on the Salesforce side. This will minimize the number of events published by Salesforce. ## Enhanced Export Hierarchy Data on CSV File with Agent File Adapter In the previous version, the export CSV file only supported flat data and not hierarchical data. We have now enhanced it to support exporting CSV files with hierarchical data. ## Enhanced Import of JSON Files with Flat Data Using the Agent File Adapter In the previous version, we did not support importing flat JSON data for the Agent File adapter. However, we have now enhanced this feature, allowing you to import both flat and hierarchical data. ## Removing Retry Functionality from the Agent Web App In the previous version, we implemented retry mechanisms for subscribe, re-subscribe, and registering the Salesforce Org. However, in scenarios requiring immediate real-time responses, retries were necessary. We have now eliminated retries from this function. ## Enhancement Connection Function on Agent Web App We have enhanced Connection within the Agent Connection, including the following features:  - Ping Connection - Edit Connection - Delete Connection - Merge Button: a feature that combines the unsubscribe and subscribe actions into one button. The button's bell icon changes color to blue when unsubscribed and red when subscribed. ## Improved Agent Properties Setting for Customizing the Salesforce API Version In the previous version, the Agent Call Salesforce API version was hard-coded to a specific version. In this scenario, when the Salesforce API version is upgraded to a higher version, the Agent's version also needs to be updated in the code to match the Salesforce API Version. However, we have enhanced the user experience by enabling customization of the Salesforce API Version through the addition of 'salesforce.api.version=xx.0'. If you have not set this property, the default value will be 62.0. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 5. Bug Fixed Slug: new-agent-3-06-03-patch-5-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-06-03-patch-5-bug-fixed ================================================================================ # 5. Bug Fixed ## Fixed to Handle the Correct Message while the Wrong Operation Type When an incorrect Operation type is selected on the outbound Interface to process the Outbound Agent Database adapter, an error message appears: 'Response code: 200, Response Payload: {"response": {}}'. This message comment is unclear. To address this issue, we have added a comment to the message: 'Response code 500, Response Payload: {"statusCode": "Failed:", "Message": "ERROR Unsupported Operation:xxxxxx, "success": false, "messageStatus": "Failed"}' to get better understanding. ## Retry to the Data Source while No Connection Before and After Processing with the Agent Database When unable to connect to the Data Source, issues may arise if the agent is installed on Server A and the database is on Server B, leading to connectivity challenges. To resolve this, the system will attempt to reconnect to the Data Source based on the configured Max Number Of API Retry and Retry Time Interval fields within the Interface, interface group, and integration settings. By default, the retry count is set to five if not specified in these three sObjects. ## Resolved Issue of Null Value in 'Max Number of API Retry' Field for File Protocols FTP, SFTP, and FTPs There was an issue with your interface, interface group, and integration settings where the 'Max Number of API Retry' value was not defined for processing with the agent for file protocols SFTP, FTP, and FTPs. Consequently, the processing would fail, resulting in the error message: 'Cannot invoke "java.lang.Long.intValue()" because the return value of "com.skyvva.camel.beans.interface.getMax_number_of_api_retry()" is null.' This issue has since been resolved. ## Omitting the External ID Field from the 'Set' Clause When It's Inside the 'Where' Clause We encountered an issue while performing an outbound interface with the operation type set to 'update.' This operation involved including the external ID in the 'set' clause for updating it. For example, generating a database query like: 'update tablename set extidfield = ‘id1’, field1 = ‘Acc001’ Where extidfield = ‘id1’. This problem could potentially lead to business issues as the 'extidfield' is typically a non-editable and unique field in the database. To resolve this, we have removed the 'extidfield' from the 'set' clause. Since this field is already specified within the WHERE condition clause, setting it again is unnecessary. ## Resolved Issue: Agent Cache Incorrectly Updating 'created_date' and 'last_modified_date ' Field There was an issue with updating and creating the Agent Cache in the PostgreSQL database, where the 'created_date' and 'last_modified_date' fields were being created incorrectly. This problem has been resolved to ensure that these fields are updated correctly. ## Resolving Missing Records Issue in Inbound Processing with Excel Files Using Interface V2 of Agent File Adapter There was an issue when importing data from an Excel file using the Agent File adapter for inbound processing. Some records were being missed during inbound processing with the interface v2 design. This issue has been resolved. The Excel file now imports correctly, and there are no more missing records. ## Various Issues with Agent Adapter with XML File Type - There was an issue with Inbound processing using External or Hybrid Mapping with an XML file type in the Agent File Adapter. The inbound processing was not functioning correctly. This problem has been resolved by extending support for all types of mappings, including normal, External, and Hybrid mappings. - Resolved the issue with importing an XML file containing the root of data and processing it with sObject mapping in the v3 interface design of the Agent File Adapter. This issue has now been fixed. ## Linking Request and Response Messages in the Root Agent Message Using Agent Rest and Agent Soap Adapters We were processing requests and responses via the Agent Rest and Agent Soap adapters. However, the request and response messages were not linked within the Agent Message. This issue has been resolved by linking the request and response together into the Root Agent Message. ## Resolved Issue with Request and Response Processing Using Message Type Rest and Soap Template Structure We encountered an issue when users utilized the Message type Rest and Soap template structure via the Agent Rest and Soap adapter. An error message appeared: 'Response code: 500 Problem processing the request: Cannot invoke “org.json.JSONArray.iterator()” because “msgOutbound” is null.' This issue has now been resolved. ## Fixed Issues on Inbound SQL Query Editor for Agent Database Adapter - Resolved an issue with complex queries involving functions like TOP, GETDATE(), and table joins. - Rectified response errors from the database. ## Resolved Issue with Requesting and Responding in Sync Mode of Agent Rest Adapter with Request Format set to 'application/xml' When requesting and responding to sync mode with the Agent Rest Adapter, an issue arises when the request format is set to ‘application/xml’. After processing, this triggers an error message in the agent log java.util.HashMap.get(Object)" because "this.property" is nullCannot invoke "java.util.HashMap.get(Object)" because "this.property" is null'. This issue has been resolved. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 1. Download Link Slug: new-agent-3-06-04-patch-1-download-link URL: https://help.skyvva.com/#article/new-agent-3-06-04-patch-1-download-link ================================================================================ # 1. Download Link ## Here is the Download Link for the New Agent Patch Version 3.06.04 ## For Window: * JDBC 64 Bit- Download Link: [https://drive.google.com/file/d/1RkyV3xizyS4-KY6-aObHoiC0MlADpjtp/view?usp=sharing](https://drive.google.com/file/d/1RkyV3xizyS4-KY6-aObHoiC0MlADpjtp/view?usp=sharing) * ODBC 32 Bit- Download Link: [https://drive.google.com/file/d/1BnJoeMzrSBY_j5ioabi4J0005dCz86k9/view?usp=sharing](https://drive.google.com/file/d/1BnJoeMzrSBY_j5ioabi4J0005dCz86k9/view?usp=sharing) Release Date: 05-March-2026 ##### Note: The upgrade mode will only support the New Agent when using the Postgres Database. Please ensure that your current New Agent is already running with Postgres before activating the upgrade mode. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Enhancement Slug: new-agent-3-06-04-patch-2-enhancement URL: https://help.skyvva.com/#article/new-agent-3-06-04-patch-2-enhancement ================================================================================ # 2. Enhancement ## Enhancing Security: Encryption of Agent Password, Adapter Properties Password, Connection Salesforce Password, and Connection Client Secret In the previous version, we stored the Agent Password, Agent Adapter Property, Connection Salesforce Password, and Connection Client Secret as plain text. We have now enhanced security by encrypting this information. ## Outbound Scheduler On Integration/Interface Group Using Java Quartz Scheduler For Non-Open-Firewall In the previous version, we enhanced AgentProcessPerInterface using Java Quartz Scheduler with Non-Open Firewall Mode. Now we have enhanced AgentProcessPerIntegration and AgentProcessPerInterfaceGroup, too. ## Added New Agent AI ChatPDF Adapter The Agent AI ChatPDF adapter is employed to extract data from a PDF file using the ChatPDF AI. To enable the ChatPDF AI to read data from the PDF and convert it into JSON format, you must manually input the command prompt to specify in the Query field on the interface to receive a response from this AI. Our Agent API ChatPDF proceeds to send the JSON data to Salesforce. This functionality is compatible with Agent Version 3.06.04 and Skyvva Version 2.51.8. ## Added cache_record_id Column Across All Cache Tables Except agent_setting and agent_properties We have added the cache_record_id column to all cache tables except for agent_setting and agent_properties to track the cache related to the cache status in Salesforce. ## Enhanced Agent Scheduler Behavior - The AgentProcessPerIntegration and Interface Group will execute the interfaces by default in sequence. - Interfaces may be skipped if executed by a different Agent Scheduler Level. This rule applies to AgentProcessPerIntegration, AgentProcessPerInterfaceGroup, and AgentProcessPerInterface. For example, when running all scheduler levels, the interface will be skipped at the integration scheduler and Interface Group scheduler levels, and will only execute at the interface scheduler level to prevent double execution of the same interface runs. ## Enhanced Agent Rest Adapter We have significantly enhanced our Agent Rest Adapter to now include support for two additional authentication methods: JSON Web Token (JWT) and Certificate-based authentication. This enhancement provides users with more flexible and secure options for authenticating requests through the adapter. ## Enhanced Handle process_type for New Agent Processing We have different processing methods via manual actions and a scheduler for various types. Therefore, we have enhanced our handling of the job processing types. We have added new  - The manual has three Processing Types: MANUAL_BY_INTERFACE, MANUAL_BY_GROUP, and MANUAL_BY_INTEGRATION - The scheduler now has three Processing Types: SCHEDULED_BY_INTERFACE, SCHEDULED_BY_GROUPS, and SCHEDULED_BY_INTEGRATION. ## Added new PARTIALLY_COMPLETED Job Status for New Agent For groups and integrations, there are multiple interface job statuses. Interfaces within integrations and interface groups can have various statuses, such as FAILED and COMPLETED. Therefore, we have introduced a new status, PARTIALLY_COMPLETED, to represent a mixed status for integrations and interface groups. ## Enhancing agent_property_id Caching to Store Salesforce ID for Both Open and Non-Open Firewall In the previous version, the agent cache stored the agent_properties where the 'agent_property_id' field holds the UUID. We have now improved the caching of the 'agent_property_id' field to store the Salesforce ID in both open and non-open firewall modes. ## Improving Agent Functionality for PostgreSQL Connection Management In the prior version, the agent would establish 10 idle connections within the PostgreSQL database. We have upgraded the Agent to dynamically generate connections based on demand, allowing for customization of quantities greater or fewer than the default. This setting can be adjusted in the 'skyvva_application.properties' file under the '# Hikari will use the above plus the following to set up connection pooling' section. The default setting now creates five connections, as shown in the properties below: ``` # Hikari will use the above plus the following, to set up connection pooling spring.datasource.hikari.maximum-pool-size=5 spring.datasource.hikari.minimum-idle=2 spring.datasource.hikari.idle-timeout=30000 spring.datasource.hikari.max-lifetime=1800000 spring.datasource.hikari.connection-timeout=30000 spring.datasource.hikari.registerMbeans=true ``` ## Enhanced New Agent for Creating Messages for Inbound Processing, Compatible with Skyvva Version 2.52 In the New Agent, the current process involves parsing the request payload to construct the message tree in JSON format. Subsequently, the JSON message tree is utilized as the payload for the Vx/integrateWithIMessage API call. This API operation results in the creation of a basket in Salesforce (when the mode is 'Batch') or the generation of the message tree in the imessage__c table. However, executing these tasks within Salesforce may lead to encountering various governor limits. To address this challenge, we have empowered the New Agent to craft the message instead of relying on Salesforce, particularly when handling large payloads, by implementing the following setting. This feature is only supported in Skyvva Version 2.52. The Agent will evaluate the ‘skyvvasolutions__InboundPostingBehavior__c' field of skyvvasolutions__Interfaces__c sObject. Here are the rules for determining the message status based on the selected value in the 'Inbound Processing Behavior' picklist field: - Here is the rule for setting the to agent handle to create message based on the chosen picklist of the field 'skyvvasolutions__InboundPostingBehavior__c': When the Inbound Processing Behavior is set to 'Message Only', the message will be created, and the status is 'New'. In this scenario, the agent does not trigger the new REST API V3/ReprocessMessage to commence message processing. - When the Inbound Processing Behavior is 'None', the message status is 'In Progress'. In this case, the agent initiates message processing immediately by invoking the new REST API V3/ReprocessMessage ## Improved Agent Capability: Accepting Salesforce Push Cache as a List of sObjects with Non-Open Firewall Mode Previously, a single sObject cache was sent due to caching, resulting in substantial consumption. With recent enhancements, Skyvva will transmit the event cache as a list of sObjects to decrease event consumption. In cases of large event data, it will be split into new events. The agent will now accept this request cache as a list of sObjects. ## Enhanced New Agent to Support Queue Processing in Asynchronous Processing We have improved the processing of our New Agent by implementing a queue to handle data processing that facilitates outbound asynchronous processing, ensuring compatibility with both open and non-open firewalls. ## Enhancing the Local Agent Web App to View Connections in the Agent Connection List We have added a new eye icon button in the action column of the Agent Connection list within the local Agent Web App. This button allows you to view the details of each Agent Connection. ## Added New Path API for New Agent We have added a new path for the New Agent as follows:  - /agent/v3/salesforce/login is used for logging in from the Agent to Salesforce. - /agent/v3/systemInfo/getSystemInfo is used to retrieve New Agent information. - /agent/v3/loggerInfo/getAllLoggingProperties used to retrieve all logging properties. - /agent/v3/loggerInfo/activateLogProfile used to activate the logging profile - /agent/v3/loggerInfo/deleteLoggingProperties used to save log configuration. - /agent/v3/loggerInfo/saveLoggingProperties is used to save the log configuration. - /agent/v3/update-instance-data/update is used to update instance data. ## Enhance the Agent Instance ID In the previous version, the Agent Instance ID was stored inside agent_properties. We have enhanced it to store the skyvva_application.properties, which provides powerful control over the Agent's calling and processing capabilities. You may have multiple New Agents for processing. For a non-open firewall, we need to filter the events to determine who should receive the events for processing. ## Enhancement: Support for Hierarchical Record Import in Agent Database Adapter In the previous version, the Agent Database Adapter in the New Agent supported importing records only in flat table format and did not support hierarchical table format. This has now been enhanced to support both flat and hierarchical table formats. ## Enhancement: Importing Hierarchical Records for CSV Files Without Headers In the previous version, the Agent File Adapter in the New Agent supported CSV files without headers, containing flat records only. It did not support hierarchical CSV files without headers, which could cause issues when importing child records. This has now been enhanced to support both flat and hierarchical CSV files without headers. ## Enhanced Automatic Addition of ‘All Rows’ for PushTopic Event ‘Delete’ of ‘Notification For Operation’ in the New Agent, along with Agent Record Retrieval from the Recycle Bin There is an issue when using ‘Delete’ for the ‘Notification For Operation’ of the PushTopic Event, as it only retrieves the ID from Salesforce. To address this, we have enhanced our Agent to fetch all fields of records within the recycle bin. This has now been fixed by adding ‘All Rows,’ allowing the Agent to query all records, including those in the recycle bin (deleted) and archived tasks/events. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 3. Bug Fixed Slug: new-agent-3-06-04-patch-3-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-06-04-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed ## Fixed Retrieve Duplicate Database IStructure with Primary Key Data Types There is an issue when generating the IStructure from the MySQL database. A duplicate column IStructure with primary key type is being generated from the New Agent, leading to the transfer of the duplicate generated IStructure to Salesforce via the Agent Database Adapter. ## Fixed Not Unchecked Initial Mode After do Outbound Processing with the New Agent An issue was encountered during outbound processing in the initial mode with the new agent. Upon completion of the outbound processing, the Initial Mode flag persists. This problem has been resolved by unchecking the Initial Mode flag after processing is complete. ## Agent File Continues Processing While Incorrectly Setting the Path Backup Folder of the Agent File Adapter This issue occurred when using a processing file with the Agent File Adapter of the New Agent and incorrectly setting the property adapter for the Backup Folder. In this scenario, the agent would not process properly and enter a loop, repeatedly attempting the task. We resolved this by automatically creating a backup of the folder specified in the Backup Folder input. In case of processing failure, the file will be moved to the error Folder created by the New Agent. ## Fixed: Cannot Delete Child Records from Database with Hierarchical V3 Outbound Interface Design There is an issue when performing hierarchical V3 outbound processing of the Agent Database Adapter with a delete operation to remove records from the database. The second sub-interface level processes incorrectly, as it derives the table name from the parent interface, resulting in erroneous deletion of child records. This problem has been resolved by accurately specifying the table name to formulate the delete query. ## Fixed Exporting the XML File Containing the Interface Hierarchy Designed with Interface v2 in the old Style The issue arises when conducting outbound processing to export an XML file with Agent File Adapter containing the interface hierarchy designed with interface v2 in the old style. The XML file generated an incorrect hierarchical data payload. This issue has now been resolved. ## Fixed Job Status 'FAILED' Issue When Importing CSV Files in Skyvva Bulk Mode There is an issue when processing in Bulk Mode with the new Agent with CSV File Type. Although the Basket has already been created, the Job Status shows 'FAILED' with the Job Comment stating 'Process is Failed' for both manual and scheduler processing. This problem has been resolved by updating the correct Job status and Job Comment to 'Process is Completed' upon completion. ## Resolved Bug: Agent Connection Status with Case Sensitivity Ignored An issue arises when a user creates an Agent Connection with a non-open firewall on the Salesforce side, resulting in an inactive status with a lowercase. When pinging the connection and attempting to resubscribe the Agent Connection with the "Non-open Firewall" button enabled in the "Register Agent Connection" section of the Agent Web App, an unexpected error may occur. To address this, we will resolve the issue by ignoring the case sensitivity. ## Encountering Duplicate Root Messages When Using the Custom Processing Class Payload in the Agent File Adapter There is an issue when customizing the payload within the Agent File Adapter of the Custom Class Payload. Upon processing, you will receive two root messages: one being a custom root message and the other being the Agent Message. ## Resolved Issue with a Request and Getting Two Response Records The issue stemmed from making a record request that returned two records with the same request. Nevertheless, the child records failed to generate a correct tree structure for each parent record. This problem has been resolved to ensure that all child records are processed correctly with their respective parent records.  ## Resolved issue with Agent Database Adapter Processing using Transactional Handling An issue occurred during the processing of the Delete Operation using the Agent Database Adapter with Transactional Handling Mode in Interface V3 Design. Despite this, the record was not deleted, resulting in a failed message with the error exception 'Read timeout, Line: 2314, Trace: C...' in synchronous mode, and a pending message in asynchronous mode processing. This issue has been resolved, now allowing successful deletion and updating of messages upon record deletion. ## Fixed Issue with Custom Format with Agent File Adapter with Non-Open Firewall There was an issue during outbound processing with the Agent File Adapter (Content Format = Custom and Custom Processing Class) in non-open firewall mode. It faced difficulties creating a custom message without a business message and an agent message. This problem has been resolved to prevent the duplication of root messages and ensure the creation of only a Custom Message to cover the business message. ## Fixed Agent Rest Adapter Generate incorrect Payload There are a few issues regarding generating the payload through the Agent Rest Adapter as follows: - Encounter an issue while mapping an sObject to the request body of the REST message template using the Agent Rest Adapter. After the Agent processing, an error message is logged in the agent log: 'java.lang.Exception: Root message is not allowed to map with the "Body" node. We need to map the business field or node below the "Body" node.’. This problem has been rectified to allow direct mapping with the request body for processing purposes, enabling the generation of the payload as usual. - The issue encountered during mapping the business node under the request body of the REST message template has been resolved. After Agent processing with the Agent Rest Adapter, a duplicate business node was found in the JSON payload. This problem has been rectified by ensuring the generation of only one business node, as specified in the defined mapping. ## Fixed Agent Handling of Skyvva App Version Values During Processing We have improved the New Agent to manage the Skyvva App Version when the correct version is entered without a dot. This issue could occur during processing and lead to the error 'For input string: 251.9' in the post-processing log. The problem has been resolved as outlined below: - When the input is "251.9", the conversion result is "2519", enabling the Agent to recognize this as Skyvva Version 2.51.9. - With the input "2.51.9" yielding "2519", the Agent identifies it as Skyvva Version 2.51.9. - In the case of an incorrect input such as "abc.12", the log will throw a NumberFormatException with the message "Invalid version format: abc.12". ## Resolved Issue: Updated Job Comment for No Data Availability in Inbound Processing via Agent Database Adapter During inbound processing using the Agent Database adapter, if the database contains no records for integration, the job comment displays the message: 'Failed to process message: No input JSON objects to process.' This issue has been resolved by updating the job comment to read 'No data available to process.' ## Resolved: Incorrect Record Count Records in Bulk Basket Size Processing with New Agent There is an issue when processing a Skyvva bulk basket using a New Agent with a specified Bulk Package Size. For example, if you set the Bulk Package Size to 1 record per Bulk Basket, the Bulk Basket is still created with a size of two. This issue has been resolved to ensure that the bulk basket size is correctly created from the Agent side. ## Fixed the Handling of Database Tables and Columns with Hyphens There was an issue when the table or field name contained a hyphen, and **Quoted Identifiers** were not added to handle queries or insert records into this database table. This would result in the error message: 'Incorrect syntax near '-'." This issue has been resolved by ensuring that the New Agent automatically adds **Quoted Identifiers** when table or column names contain hyphens. ## Fixed a Few Issues with Agent Cache Postgres Database There are a few issues with the Agent Cache Postgres database, as follows: - We identified that the scheduler failed to start due to the error: 'Problem in Starting Scheduler, Error: Couldn’t store trigger ‘DEFAULT_TRG_STNG_xxxxxxxxxxxxxxx’ for ‘DEFAULT_TRG_STNG_xxxxxxxxxxxxxxx’ job:Error: value too long for type character varying(120).' This occurs because the cron_expression column in the Agent Cache Postgres database supports only 120 characters, while our scheduler generates a longer cron expression. To resolve this, we increased the field length from 120 to 3000 characters. - Another issue arises when the scheduler cannot start. This problem occurs only when a qrtz_triggers entry exists without a corresponding qrtz_cron_triggers. In such cases, the agent scheduler cannot create a new cron trigger and fails. To address this scenario, we implemented a check: if a qrtz_triggers exists without the corresponding qrtz_cron_triggers, we automatically remove the orphan qrtz_triggers and restart the scheduler when the user clicks 'Start’ Scheduler. This ensures that the scheduler starts cleanly without errors. ## Fixed: Disable the Save Button on Scheduler Settings While the Agent Scheduler is Running When the Agent Scheduler is running, you may attempt to save new settings. However, you could encounter an unexpected error after doing so while the Agent Scheduler is active. This issue has been resolved by disabling the 'Save' button when the Agent Scheduler is running. ## Fixed ReferenceField Not Working with Inbound Agent File Adapter When importing files such as CSV, XML, and JSON with a reference field for a binary file, the Inbound Agent File Adapter will not work with the reference binary file. It only functions with business records. This issue has been resolved by ensuring that both business and reference files can be imported. ## The flat table does not support child mapping when processed hierarchically with the Agent Database Adapter There is an issue when you have a flat table that stores two sObjects, for example, Account as the parent and Content Version as the child. In this case, you want to perform an inbound processing via the Agent Database Adapter. Your mapping uses a flat structure in the source field to map to a hierarchical sObject as the target. Previously, you would only receive the parent record. We have now resolved this issue, enabling child record mapping as well, so that you will receive both sObjects: Account as the parent and Content Version as the child in Salesforce. ## Fixed Issue with Interface Execution for User Linked to Agent Connection of Agent xxxx Adapter We encountered a problem while executing the interface specified by the user. This issue arose because the Agent used the Instance ID to obtain an access token for execution as the user, which resulted in incorrect user execution of the interface within the Agent Connection linked to the adapter. To resolve this, we changed the method of obtaining the access token to use the Connection ID. Now, the new agent correctly executes the interface that links Agent xxx Adapter of Agent connection user the user with the connection link in the adapter. ## Fixed Issue: New Agent ODBC Cannot Retrieve Records When the Varchar Column is Null in Records There is an issue with the Agent Database Adapter: the Agent ODBC 32-bit cannot retrieve records for processing when the varchar column has a null value, even though there are records available in the database. It will raise an issue in the log as: ‘java.sql.SQLException: No data found java.lang.RuntimeException: java.sql.SQLException: No data found. The issue arises from retrieving the column with the varchar as an object in ODBC. This issue has now been resolved by converting the value to a string instead of an object. ## Fixed Agent Database did not get value from WHERE-Expression This issue has been addressed by Upsert record into the database with the V3 interface design, with passing dynamic value to WHERE-Clause; however, the  WHERE-Expression set to build the query with where condition, and the get field is null, and the value is null that why an error is raised, invalidating the SQL statement. ## Fixed Issue with Agent Database Not Retrieving Value and Field from WHERE Expression This issue has been addressed by implementing an upsert of records into the database using the V3 interface design, which allows dynamic values to be passed to the WHERE clause. However, when the WHERE expression is set to construct the query to search for records before upserting them into the database, if both the field and the value are null, an error is raised, resulting in an invalid SQL statement. ## Fixed the issue with Internal Key Management on Insert Operation Mode While Inserting Records The problem arose when an upsert operation was attempted using the V3 interface design. If a record was not found in the database table, the system would attempt to insert the record. However, when the primary key was configured as an auto-number, and the user had set Internal Key Management in the Insert Operation Mode Properties of the Agent Database, the system did not ignore the primary key as specified in the Skyvva Mapping tool. This resulted in the error message: “Cannot insert explicit value for identity column in table 'tablename' when IDENTITY_INSERT is set to OFF.” This issue has been resolved by ensuring that the primary key field is ignored during the record insertion process. Users can now successfully insert records without encountering the identity column error. ## Resolved Stuck Job Issue in Agent File Adapter An issue occurred when processing files with the Agent File Adapter, where the job could become stuck during the deletion of the processing route after execution. This has now been optimized to properly handle this scenario and prevent jobs from getting stuck. ## Fix: Updated JVM Memory Configuration to Prevent New Agent Crash An issue occurred where the New Agent could crash during execution. To address this, we have updated the JVM configuration in the Skyvva-Agent-Service.xml file for the New Agent Service to better control memory usage. The previous setting used 70% of system RAM, which has now been changed to fixed values: -Xms512m and -Xmx700m. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Patch Release Note 3.06.05 Title: 1. Download Link Slug: new-agent-3-06-05-patch-1-Download-Link URL: https://help.skyvva.com/#article/new-agent-3-06-05-patch-1-Download-Link ================================================================================ # 1. Download Link ## Here is the Download Link for the New Agent Patch Version 3.06.05 ## For Window: * JDBC 64 Bit- Download Link: [https://drive.google.com/file/d/17AU5Y5rYVV5YJno3j2X0RhIvN94O5aph/view?usp=sharing](https://drive.google.com/file/d/17AU5Y5rYVV5YJno3j2X0RhIvN94O5aph/view?usp=sharing) * ODBC 32 Bit- Download Link: [https://drive.google.com/file/d/1Nj-2W39xR9rN9RO-o3FSU9kNMXHYfTgA/view?usp=sharing](https://drive.google.com/file/d/1Nj-2W39xR9rN9RO-o3FSU9kNMXHYfTgA/view?usp=sharing)
Release Date: 18-March-2026
##### Note: The upgrade mode will only support the New Agent when using the Postgres Database. Please ensure that your current New Agent is already running with Postgres before activating the upgrade mode. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Agent V3.0.0 Title: 2. Bug Fixed Slug: new-agent-3-06-05-patch-2-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-06-05-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed ## Upgrade Log4j Version for Security Upgraded Log4j from version 2.17.2 to 2.25.3 in the New Agent to address known security vulnerabilities and improve system security. ## Fix: Encrypt Agent Password for ODBC  Fixed an issue where the Agent password was not encrypted for ODBC (32-bit). The password is now securely encrypted for ODBC connections. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Patch Release Note 3.06.06 Title: 1. Download Link Slug: new-agent-3-06-06-patch-1-Download-Link URL: https://help.skyvva.com/#article/new-agent-3-06-06-patch-1-Download-Link ================================================================================ # 1. Download Link ## Here is the Download Link for the New Agent Patch Version 3.06.06 ## For Window: * JDBC 64 Bit- Download Link: [https://drive.google.com/file/d/1o1Z6QpQ8uyUZfHDq5HSSt_mhiZY3ek4w/view](https://drive.google.com/file/d/1o1Z6QpQ8uyUZfHDq5HSSt_mhiZY3ek4w/view) * ODBC 32 Bit- Download Link: [https://drive.google.com/file/d/1rVpb_a8-Jb6iQRhc4K_Gv0igl6zizbZn/view ](https://drive.google.com/file/d/1rVpb_a8-Jb6iQRhc4K_Gv0igl6zizbZn/view)
Release Date: 08-May-2026
##### Note: The upgrade mode will only support the New Agent when using the Postgres Database. Please ensure that your current New Agent is already running with Postgres before activating the upgrade mode. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Patch Release Note 3.06.06 Title: 2. Enhancement Slug: new-agent-3-06-06-patch-2-enhancement URL: https://help.skyvva.com/#article/new-agent-3-06-06-patch-2-enhancement ================================================================================ # 2. Enhancement ## Enhancement: Added Log Configuration to the Agent Local Web App We have added a new Log Configuration menu to the SKYVVA Agent local web application. Previously, the Agent local web app did not provide a Log Configuration screen. When users could not access the Agent Control Board or needed deeper troubleshooting, it was difficult to adjust the Agent log settings directly from the local Agent UI. With this enhancement, users can now configure Agent logging directly from the local web app. This allows administrators and support teams to enable the required log level and collect detailed logs for debugging Agent issues. This enhancement helps troubleshoot issues such as: - Unable to access the Agent Control Board - Agent login failure - Agent startup or runtime issues - Connection and configuration problems - Cases where deeper Agent logs are required for support investigation The new Log Configuration screen allows users to manage settings such as log level, log file location, backup file location, maximum file size, rolling strategy, and log retention directly from the Agent local web application. ## Improved Installation Speed for the New Agent Installer We have optimized the installation speed of the **New Agent Installer**. Previously, the installer used JAR files during the installation process, which could make the installation slower. With this improvement, the installer now uses only the required Agent files during installation. These files are temporarily created in the system temp folder and are automatically removed after the installation is completed. After this enhancement: - The New Agent installation process is faster. - The installer no longer relies on the previous JAR-based installation process. - Required temporary files are created only during installation. - Temporary files are cleaned up automatically after the installer finishes. - The installation process is more efficient and improved compared to the previous approach. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Patch Release Note 3.06.06 Title: 3. Bug Fixed Slug: new-agent-3-06-06-patch-3-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-06-06-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed ## Outbound Interface Execution Failure with Agent Database Adapter ODBC 32-bit in Non-Open Firewall Mode Fixed a runtime exception that occurred when executing an outbound interface with manual processing enabled using the "Manually select the sObject using the Query Builder" option. Passing a business record ID through the Agent Database Adapter ODBC 32-bit in non-open firewall mode caused a CamelExecutionException during exchange execution (org.apache.camel.CamelExecutionException: Exception occurred during execution on the exchange: Exchange[9AF37B6BBD26BDF-000000000000011F]), resulting in interface failure. This issue has been resolved. ## Improved Error Handling for Outbound Interface Execution with Agent Database Adapter ODBC 32-bit in Non-Open Firewall Mode We have fixed an issue that occurred when executing an outbound interface using the **Agent Database Adapter** with **ODBC 32-bit** in **Non-Open Firewall Mode**. Previously, when the outbound interface executed a stored procedure to insert records and passed a `null` value to a database field that does not allow null values, the SKYVVA message showed an unclear error: “Cannot invoke 'java.util.List.iterator()' because 'response' is null”. This error message did not clearly explain the real root cause of the stored procedure failure. With this fix, SKYVVA now returns a more specific and meaningful error message from the stored procedure execution. For example: SP execution failed: [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot insert the value NULL into column 'accnumber', table 'dbbusiness.dbo.tbaccountauto'; column does not allow nulls. INSERT fails. ## Fixed Agent Instance ID Not Updated When Creating a New Connection We have fixed an issue that occurred when creating a new **Agent Connection** with **Open Firewall** mode. Previously, when users created a new Open Firewall Agent Connection, the connection could display an **unknown Agent Instance ID** after saving. With this fix, the system now correctly updates the new Open Firewall Agent Connection with the correct **Agent Instance ID** after the connection is saved. **After this fix, users will see the following improvements:** - The Agent Instance ID is now updated correctly for new Open Firewall connections. - The connection no longer shows an unknown Agent Instance ID after saving. - Open Firewall Agent Connection creation is now more reliable. ## Fixed “Operation not yet supported” Error When Using NVARCHAR Columns with ODBC in Non-Open Firewall Mode We have fixed an issue that occurred during **Manual Inbound Processing** when using the option **“Manually select the external database record using the Query Editor?”** to retrieve records from an external database through **ODBC in Non-Open Firewall Mode**.Previously, when the selected database records contained columns with the **NVARCHAR** data type, the system could display the following error message: Operation not yet supported. After this fix, SKYVVA can now retrieve database records that contain NVARCHAR columns without triggering the “Operation not yet supported” error. ## Fixed Stuck Loading Popup When PostgreSQL Database Password Is Incorrect During Upgrade We have fixed an issue that occurred during Upgrade Mode when the Agent had an incorrect PostgreSQL database password stored in the configuration. The setup pop-up could remain stuck on the loading screen with the following message: “Please wait while Setup is loading… Get Config From Folder Install”. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Patch Release Note 3.06.07 Title: 1. Download Link Slug: new-agent-3-06-07-patch-1-Download-Link URL: https://help.skyvva.com/#article/new-agent-3-06-07-patch-1-Download-Link ================================================================================ # 1. Download Link ## Here is the Download Link for the New Agent Patch Version 3.06.07 ## For Window: * JDBC 64 Bit- Download Link: [https://drive.google.com/file/d/18EwXhQY8TlIPJTeJXZ8JdQVAbedPg1VW/view?usp=sharing](https://drive.google.com/file/d/18EwXhQY8TlIPJTeJXZ8JdQVAbedPg1VW/view?usp=sharing) * ODBC 32 Bit- Download Link: [https://drive.google.com/file/d/1XUH6ayv3ZyGaOfkSbqFrzSoGo3GCfTRa/view?usp=sharing](https://drive.google.com/file/d/1XUH6ayv3ZyGaOfkSbqFrzSoGo3GCfTRa/view?usp=sharing)
Release Date: 28-May-2026
##### Note: The upgrade mode will only support the New Agent when using the Postgres Database. Please ensure that your current New Agent is already running with Postgres before activating the upgrade mode. ================================================================================ Book: Agent Release Notes Section: Agent Release Notes Subsection: Patch Release Note 3.06.07 Title: 2. Bug Fixed Slug: new-agent-3-06-07-patch-2-bug-fixed URL: https://help.skyvva.com/#article/new-agent-3-06-07-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed ## Upgrade Log4j Version for Security Upgraded Log4j from version 2.25.3 to 2.26.0 in the New Agent to address known security vulnerabilities and improve system security. ## Fixed Camel Route Not Stopping When Agent File Adapter Fails Due to Missing Folder Path  We have fixed an issue that occurred during inbound file processing with the Agent File Adapter using the SFTP protocol. Previously, when the configured SFTP input folder path was missing or incorrectly configured, the file processing job failed. However, the Camel route was not stopped correctly and could continue running in the background. Because the old route was still active, when the user tried to process the same interface again manually, the system could show an error such as: No valid queue or interfaces found with interface ids: [a0g9X00000IwjqPQAR] This issue has been resolved by passing the **route_Id** to the stop route process when the route throws an error and needs to stop. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 3. New Feature Slug: 2-42-main-release-note-3-new-feature URL: https://help.skyvva.com/#article/2-42-main-release-note-3-new-feature ================================================================================ # 3. New Feature ### SKYVVA 2.42 **SKYVVA** conformity **Spring 19** is here! We’ve introduced new **features and enhancements** over the past several conformity releases thanks to feedback from our customers. A few big announcements for this release include support for JavaScript, a new Conditions entity for branching operations with a script and support. We also introduced the ability to run external operations that is, operations from other projects and the ability to handle **SOAP**  fault codes received from applications. Users can create **APIs** in any format, including **REST, SOAP, JSON** then run and analyze **APIs** through an intuitive interface. By having the ability to easily generate APIs based on existing data and apps, companies can reuse existing applications and business logic. Internal and external **API** developers can now use the new Developer discover and consume **APIs.** They can not only rapidly expose any application or data as an **API,** but also optimize these APIs to deliver maximum performance and using **OpenAPI (Swagger 2.0).** With rich security controls and user authentication, customers have access to advanced **API** analytics to monitor **API** performance and consumption trends, as well as comprehensive monitoring and alerting of **API** processes through enhanced **API** logging. #### Put URL parameter to the SFDC2SAPPI adapter New **URL** parameter is created to pass the **URL** as string and append to the endpoint string in the adapter. User can put dynamic parameter value. #### Message Layer Refactoring The message layer is redesign to be better performance. It is consuming less data storing. All fields in **IMessage** has changed to **‘JSON’** format, the field of **IMessage** are not store with **IData** anymore. #### Different response pattern for inbound call This feature is created to support different response pattern for an inbound call as inbound **Asynchronou**s message. We need to do a **Synchronous** call where the response is coming back in the same request context. The response is coming immediately to the sender while the caller process is blocked and wait for the response. #### Real-time CDC using Process Builder This is a new feature, which is implementing to create change pointer record for CDT scheduler processing and send with process builder in real-time. The Real-time with process builder allow you to execute callout. #### View chain definition in an interface as tree Previously, if user look to the root chain interface user will not see, its into one view as the tree structure even user open the section. As of now, we enhance this feature to be able to view it as a tree structure. On the tree, user can click and navigate to the corresponding interfaces. #### Mapping of Imported WSDL request/response/fault Mapping is implementing for complex-type with in the **WSDL**, when it imported and message-types are generated. This implementation has to provide the run-time-logic based on **MessageType** / **Ichain** / **Interface** / Mapping to enable this possible relations between source and target-structures within hierarchies. #### Add new operation type : Apex Class, Flow/Process This is the feature to provide the post-processing logic using **Salesforce Flow & Process Builder.** Therefore, we pass to the **Flow/Process** the sObject Id that has been created, updated or deleted by the interface operation. Note that currently, we support different interface operation for the inbound interface like following : **Upsert, Update, Insert, Delete, Apex Class, Platform Event, Flow/Process** #### Select field from parent sObject in Mapping editor should be possible like in the Query Editor This is an enhanced feature in which we redesigned the mapping tool using Lightning. We want to select field from parent **sObject** in mapping editor as we do in Query Editor. #### WSDL generation based on message type Previously, the **WSDL** generation is based on sObject fields. However, in this version we change the generation logic to use base on the message type. #### Mapping editor shown fields based on the field access level of the user who login Previously, mapping editor show only fields, which have sufficient **field level accessibility**. Some user have problem viewing since each have different access **field level permission**. #### Process Interface manually Now user can process Interface manually since new column action **‘Process’** button is added to the interface tab in the **Agent Control Board.** The button is the same as Process button in **Agent UI.** User can execute each interfaces here. #### Message reprocessing per interface group Previously, all message are reprocess at the same time using one global reprocessing scheduler. However, now user experience a new **scheduler,** which is flexible to run different interface group at different time. #### Message reprocessing per integration **Scheduler** per integration is now enhanced to message reprocessing. It can schedule each integration at different time. User can also experience priority base frequency time interval, Interface is higher priority so it counts less time interval. #### For outbound Call the response structure need to be the same like the request structure This is a new feature, which allows user to create Change Pointer using **Query Editor**. User can enter the **SOQL** statement for finding the **business Id** & further process the **business Id’s** respectively. User can detect either change based on  own **SOQL** statement. #### For Real synchronous call no need to create message This is an enhanced feature, which create to speed up the migration of data for **Synchronous.** Its only save the pending message while **Fail/Completed** will be deleted. #### Add new value and rename existing value for flag “Inbound Behavior” Some of existing picklist value like **Synchronous & Asynchronous** will be rename to Immediate and Future Apex. In the same way, a new value as like as **‘Batch Apex’** also added to flag **‘Inbound Behavior’.** #### Enhance CDC Monitor with more fields As long as **CDC** monitor shows the **CDC** records look like the attach screen, we have decide to enhance this feature as allow user to see more detail data such as **sObject** and the Name of **sObject.** #### New message monitor based on json payload Since the field of **IMessage** is not store with **IData** anymore then all fields in **IMessage** has changed to **json** format. This feature is created to display new message monitor based on **json** payload. The **Data2** section is like a board to read the value from **IMessage.** #### Redesign Log file To prevent **lock error** while writing into **log file** we should separate **log file** based on the different processing. #### Enable using bulk 2.0 relationship in mapping tool **SKYVVA** is now support direct **sObject** processing using bulk **API** through which user can load data using relationship name. To be able to support this, we need to be able to open the polymorphic relationship with our mapping tool. Our query tool support this, but not our mapping tool. #### Validation check on Interface when Bulk Mode is used This feature is implementing to check validation on Interface when **‘Bulk Mode’** is used. When user checks the flag **‘Bulk Mode’** then the flag ‘**Don’t Persist Message’** will check box automatically. #### Generate WSDL, Swagger 2.0 & openAPI for metadata exchange between SKYVVA and other platform We are implementing this functionality to generate different file format from our interface such as **WSDL, Swagger 2.0 & openAPI.** We use this for metadata file, which generate through **sObject** type. We may get to Generation request and response structure in case of **Synchronous** interface. #### Workflow transaction Our **workflow** engine is not able to support **Transactionality**. When an interface fails user do not **rollback** the whole execution path although committed what become successful. User cannot **rollback** to a save point. This task is to enhance our **workflow** engine to support **Transactionality**. #### Rename CDC scheduler in CDC control board This feature is to do-able but user need to start the **scheduler** with new name in order to copy the setup info. from old **scheduler** setting. Furthermore, the user needs to manually delete the schedule with old name. #### Create one single WSDL which contain request and response for a synchronous interface from SF -> SAP Users do not have to generate separate **WSDL** one for request (outbound interface) & another one for response (inbound interface) anymore. We have created a **WSDL** with both request and response in one file for **Synchronous** processing. #### Handle request and response as a transaction for synchronous call This feature is create to show, how to reprocess a **Synchronous** interface because of, it contains two types of messages e.g. request (outbound) & response (inbound). - If user is the executor of the **Synchronous** call. In this case, the reprocessing and message monitor is not needed because of the user will resend it again. - If batch process is executor of the **Synchronous** call. In this case, message monitor and the reprocessing job are needed to do the resend of the failed callout. #### Create an hint to show that the data of this field in the message monitor is very long When the data of **IData** field is very long, we create an attachment and store the data there. This is a good solution to store big data into the **IData** field. If message is longer than 35 character they will cut out the rest and display string. #### Pass raw payload to the custom class Our integrate **API** get data and create from the data e.g. **json or xml** payload our messages. We can create **flat & tree** messages as with **Integrate3**. However, user can pass now the raw data and do not need to follow any format. #### Enhance search filter to include transaction id and transfer id With the **API Integrate3x** we introduce two new fields: - **Transaction Id –** This is to define a unique **transaction id** for all messages belonging to a logical object like for example a sales order. - **Transfer Id –** This is a **unique id** like a **DHL, Amazon** tracking number to identify the transfer package. #### Button on interface to export metadata We have the functionality for exporting **metadata** where we can find in the message type. We are providing Export **Metadata** Button on interface **Detail page** for easy access to user. #### Show the operation type of the target interface after choosing the target interface in workflow When we define the **workflow** we have to choose first source interface. Then the target interface and further field Operation Type, we can set the operation type of an interface. But most of the time we use the same. **e.g.** we put again same operation. Therefore we should display the value from the target interface and the user can keep change it to a new one. #### Add new filter to tab Scheduler to search by functional group We have different **Scheduler** for different function. To carry an easy overview we need to provide the user option, to search by the functional group. e.g. show me all **Scheduler** related to message reprocessing. We need to change to the picklist value to be able to select a combination of category. #### Remove schedulers are deprecated from the List Some **Schedulers** have been change their name, they will be deprecated (stop working), So they must be removed from the list to avoid confusion. Eg. **AttachmentProcess**, **AttachmentReprocess** and **MessageReprocess** are deprecated in this new version. #### CDC Scheduler for interface Group and Interface **CDC** have two **Schedulers** which is **CDD & CDT** **Schedulers**. We added **Scheduler** per interface and interface group. When we run three **Scheduler** (Integration, interface, interface group) at the particular then **Scheduler** per interface group is run always on priority #### Make the standard scheduler behavior **Scheduler** is a feature of **SKYVVA** for setting time to other object run by their own time. There are many **Scheduler** based in  **SKYVVA** object, like on Integration detail, Batch Control Board or CDC Control Board ,etc. We can setup Scheduler work in the standard way. - Scheduler  is a global **Scheduler** for Interface or Interface Group , if it runs, it will be check if which Scheduler has run their own setting time it will be skip, it’s mean that it doesn’t work on that Interface but it will be work on which Interface that which is not running their time. - Among the **Scheduler** for Interface and Interface Group. If **Scheduler** for Interface Group starts, all **Scheduler** for Interface that stay on Interface Group will be stop immediately. And also it cannot start, if **Scheduler** for Interface Group are running. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 1. Installation Link Slug: patch-v2-41-1-1-installation-link URL: https://help.skyvva.com/#article/patch-v2-41-1-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for the installation of the official release patch version 2.41.1. - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000000tEij](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000000tEij) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000000tEij](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000000tEij) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 1. Installation Link Slug: patch-v2-41-2-1-installation-link URL: https://help.skyvva.com/#article/patch-v2-41-2-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for installation SKYVVA Official Patch Version2.41.2: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000001hlDB](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000001hlDB) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000001hlDB](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000001hlDB) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 1. Installation Link Slug: pacth-v2-41-3-1-installation-link URL: https://help.skyvva.com/#article/pacth-v2-41-3-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for installation SKYVVA Official Patch Version2.41.3: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000000nkhL](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000000nkhL) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000000nkhL](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000000nkhL) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 2. New Features Slug: 2-new-features URL: https://help.skyvva.com/#article/2-new-features ================================================================================ # 2. New Features **Change field Last Run Date to Create Statistical Data on Interface Overview Page using Lightning component** This is just a feature that converted from classic. As we change field Last Run Date to “Create Statistical Data on Interface overview Page using Lightning component. **Tool to create the relationship between MessageType and IStructure in a different repository** This is a new feature created to be use link IStructure and MessageType between different Repositories. The user will be allowed to choose IStructure when input both a Metadata Provider and IStructure Repository. After saving, the component will save a relation (Create MsgTypeFiledEntry) between the MessageType the user came from and the selected IStrucutre. **Improve the Relate List component** This feature is created to improve the Global Dynamic Related List Page to support Number of record display, Show a message if no record, Show some of the records in a table, Navigate to the record when clicking on a record in the table, and Support inline edit and delete. **Parse soap response base on the Message type** This is a feature, which creates to parse the soap response base on Message type with an inbound and outbound interface. **Update SC_Mapping to support with new relationship of MessageType** Due to the MessageType has changed the data model structure, so we need to implement our mapping tool to support the new changing. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 3. Bug Fixed Slug: 3-bug-fixed URL: https://help.skyvva.com/#article/3-bug-fixed ================================================================================ # 3. Bug Fixed **The issue in generating WSDL with the old way in ManageMiddlewareWSDL** The new field, “As old way”, is created on the interface. When the flag of this new field is checked then it will generate WSDL in an old format. **Wrong date and time on Creation and Modified Date** There is an error in time zone on Creation date and Modified date when my time zone is GMT +7 the messages that I have pushed show time & date correctly but when I change it to another time zone, it is not showing correctly. **Manual load get **an error** when we upload the format of **the XML** file is incorrect** There is an error when doing a manual load when upload format of XML file incorrectly. **Wrong Time and Date after change Time Zone in Batch Control Board** The Date and time did not display correctly in the Batch Control Board when the time zone has changed. This error is fixed in patch version 2.41.1. **Add warning to Batch alert for Storage limit exceeded** Previously in Batch Control Board, when the Organization storage is full we cannot create the Alert and it does not show any warning either but we could save it. **Filter Interface and Interface Group is not working correctly in Inbound Processing and Queue Tab at Batch Control Board** The filter on interface and interface group don’t display correctly and will fix in patch version 2.41.1. **Always get message error after deleted Message Type** The Message error after deleted Message Type always popup. It is fixed in patch version 2.41.1. **Error on Pagination and No Content at Manual Load** There is an error on pagination and no content at manual load. The pagination does not display anymore. The error is fixed in patch version 2.41.1. **Adapter SFDC2SAPPI always send the hard-coded test message to SAP-PI** When click “Test” button to make a call to the endpoint with the text message, it’s generated using the account structure and it works fine with account sObject but not with other structure. It always sends the hard-coded text message to SAP-PI. **Select All button get crash with too much records** It’s always get stuck when many change pointer records are selected to create into CDC Control Board. The issue is fixing by limiting the number of records returned by an SOQL query. If the query returns, more than 5000 records then the user will get a message stating that he/she needs to redefine the filter criteria. **Process logs attachments doesn't show correctly in Lightning** The Process logs attachments show different attachments compare to Classic; it shows many attachments that are not related to ILogs. **Change the color of status Logs** The icon in the detail view of logs are changed to pure red and yellow.  The color of red is for status Error and yellow is for status Warning. **Create New IStructure Sequence and Length mustn't be mandatory** The Sequence and Length when create new IStructure can be empty but here create an error (validation error). **Cut the view of the long string** Since the string is long, the view is going outside the border. The view of the long string will cut out and do like message monitor with comment field. **Can't view Last Data record on Bulk control board in Lightning** In classic mode, we can view Last Data record but in Lightning, we can't do it. This error is fixed in patch version 2.41.1. **Bulk Data Inbox section show only 5 paginations** In Bulk Data Inbox section only show the wrong pagination. **Storage usage display classic page with the message 'Request Timeout'** When the internet slow, the data storage information is show request time not the storage usage info in classic style. **Display CSV or XML file in the folder only when select Data Type for file type** We cannot allow other files type show in the folder when we choose csv or xml file from Data Type combobox. **Filter field on Query section in Interface details page doesn't show any value** While creating a new outbound interface without query any sObject, the filter field on Query section doesn’t show any value less it get to refresh the page. **Got some errors on Queue on Admin tab** There some error occur on Queue, Admin tab as: - When we check all item on Action column then click the Refresh button on Batch Queues section or click the Search button on Filters section, the checkbox all still checked. - Click Start or Stop on Action column did not get popup message to display start or stop successfully after processing. This problem only happen on the first row. - However, the second row when we click Stop, we got popup message after process success "Successfully stopped queue." but when we click Start, we did not have anything after processing complete. **Found some errors on Bulk Control Board** There some error occur on Bulk Control Board as: - On Bulk Data Monitor, show incorrect value after click Delete or Delete All button. - )n Bulk Data Processing: when we select all record then click Delete button, Bulk Data Processing show incorrect value unless we refresh the page. - When we reprocess Attachment manually by clicking Re-Initialload button on Bulk Data Processing section, it should be make refresh page after reprocessing complete. To prevent User delete it accidentally. **View long iData field which we store in Attachment not possible in Lightning but possible in Classic** Lighting version is not support the view long IData field that use to store an attachment. **Last Run Time in Last Data not displayed correctly** Lighting version is not support the view long IData field that use to store an attachment. **IStructure Repository did not respond istructure from the csv file** We have upload data from the csv file into IStructure Repository for istructure to use with the message type. **Many duplicate records show up in IStructure Repository when upload the XML file.** There is an issue occurring as many duplicate records show up in IStructure Repository when upload the XML file. **Sequence number cannot be change to null when saving in edit Message type.** When changes a Sequence and Length in existed IStructure, it shows Success pop-up but the value will not change it still stay the same. **IChainInterface duplicate in some situation** In some case when we create an IChainInterface in the interface related list in lightning after choosing with a parent interface and child interface. We then go into child we still can a duplicate IChain by choosing the child interface as the parent and the child as the parent **Date Time display incorrectly on Interface Data Runtimes section** The Date Time display incorrectly on Interface Data Runtimes section as: - We change the time zone to other e.g. Change to (GMT+01:00) Central European Time (Europe/Paris). - Column Last Data Total Message does not show any value. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 2. New Feature Slug: 2-new-feature URL: https://help.skyvva.com/#article/2-new-feature ================================================================================ # 2. New Feature #### Subscribe and Unsubscribe button on the interface screen Agent Control Board Previously, we need two buttons on the interface screen for using streaming API with an adapter like Agent, sap-pi. User uses the button ‘Subscribe’ and ‘Unsubscribe’ on the Agent UI. However, Agent is now moving to Salesforce then it also requires these buttons too. These buttons are added to interface screen in Agent Control Board. You will need these buttons to send so-called subscribe and unsubscribe message out. They also available on interface level. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 3. Bug Fixed Slug: 3-bug-fixed-2 URL: https://help.skyvva.com/#article/3-bug-fixed-2 ================================================================================ # 3. Bug Fixed ### Response message of a synchronous outbound call is in status Pending We do asynchronous outbound call and get a response back for a request. So the request and response pair is a logical unit and thus independent of another request-response unit of the earlier call. However, when we do again async call with the same SF id we get a response back but the response is pending because the response of the earlier request gets an error. ### The old queue name format is over the maximum string name length of SObject This error occurs because we generate the queue name based on the integrate Id, interface group Id, interface Id + EOIO or EI and the name of the interface group. When the interface group name is long, we get this error. The error is fixed in patch version 2.41.2. ### Notification for Fields: Where not work If you create a new topic and select Notification for Fields: Where but Query statement do not put the "Where" so we will get the error. It is fixed in patch version 2.41.2. ### Issue using the Process Builder with SKYVVA The issue is that the interface runs with the user that created or updated the record, requiring assigning a SKYVVA license for every user in the organization. However, the problem is fixed by passkey validation invokeCallout3, which is called, from processed builder. ### Change checkbox color of haschild in repository and message type The Checkbox color of haschild in repository and message type is changed. ### Get strange message description on Message Monitoring tab There is a strange message description on Message Monitoring tab when Delete, Delete All, Cancel, and Cancel All buttons are clicked. ### Error pagination on CDC Control Board This is a pagination error, which is in CDC Control Board. It has happened when we create CP record manually by click CP Query Editor Button. ### Export data on integration as XML and CSV not correct file When trying to export file CSV and XML on integration there are seem to extract the wrong format. CSV file displays the wrong header while XML file is incorrect. ### Get strange behavior on the Scheduler tab in Batch Control Board Using existing inbound Default Interface Group while creating a new interface with batch mode cause some strange behavior on the Scheduler tab in Batch Control Board. The problem is the interface group Schedulers section display with no record and after the button get a refresh this section disappears. ### Manual Load page get crashing when we upload many records The problem happens when the user imports many records by the manual load. Since manual load cannot import big data the page gets crash. The problem course by the user clicks much time on the push button, it overloads on the script running that crush the browser immediately. The solution was applied to prevent this mistake, to prevent push any record when other records are under push processing. ### The numbering of sequence for Massage Type show not correct The message type and the MsgType Field entry fields inside the message type need to be shown based on their sequence number, order by the sequence number. However, it shows not correct and fixes in patch version 2.41.2. ### The issue on Creation Date with Time Zone The error shows Creation Date in field date as it is showing Creation Date in local not base on Time Zone. ### SOAP and REST Adapter still uses the field Value2__c from the Property__c The problem is when the endpoint is longer than 255 we get an exception and cannot save the URL. We have changed all adapter, which uses the property endpoint to use a new field, ValueLong__c, which is 32768 characters long. If the property value is longer than 255 then we save in the new field ValueLong__c otherwise we save to the field Value2__c. ### Fixed Error in Lightning version when enable debug mode Due to we got some error when we enable debug mode on the lightning component such as Integration so we need to fix this problem in patch version 2.41.2. ### Error some button in Manage Middleware WSDLs There is an error when clicking Manage Middleware WSDLs, click button Create XSD, Create WSDL, Create JSON Schema and Create Swagger,  Error with Edit button. This issue has occurred after the user enables Debug Mode. ### Error with CDC component There is some error with CDC component on CDC Query Editor Button, CDC Query Editor Page, and on Query Editor on Interface detail when clicking. ### The issue on Created Date and Last Modified Date with Time Zone in CDC Control Board The Created Date and Last Modified Date show incorrect Time Zone when changing the time zone to other while creating the record in CDC Control Board. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 2. Bug Fixed Slug: 2-bug-fixed URL: https://help.skyvva.com/#article/2-bug-fixed ================================================================================ # 2. Bug Fixed ## Always get message error after deleted Message Type We always get the popup message error after deleted Message Type. The error needs to be deleted from the screen. ## The problem on delete message in Message Monitoring There is a problem on delete message in Message Monitoring. When the Delete or Delete All button is the click, it got successful but the records did not delete. ## SearchService API response JSON is grammatically not correct The error is that our SearchService API returns an invalid JSON format response. The keyword supposed to be put into the double quote however, there is no double quote. ## The license key cannot full copy for other users The license key cannot be copied as fully from a user for another user since it shows incompletely. ## Message Board on manual load must link in one interface The problem is the Message Board on manual load is not displayed the correct interface name. It supposes to display a specific interface when selected however, “All Interface always display. ## Show incorrect date time on Last Run Time in Queues tab on CDC Control Board The error is on the Last Run Time column in Queues tab on CDC Control Board show incorrect date time. I have use Scheduler to process CP record to the external system. After that, when looking at on Queues tab, for Last Run Time it shows incorrect date time. ## XML payload generation for adapter SFDC2SAPPI does not follow the WSDL structure The error occurs as the XML payload was generated and it doesn’t follow the WSDL structure and thus SAP-PI rejects the message saying that the XML payload is syntactically not well-formed. To solve the problem we have to generate the WSDL, which is well-formed based on the WSDL. ## Wrong order in Workflow Since the workflow is wrong in order by being sorted by creation Date/Time, it fixed now, as it will sort by interface Source first then sort by Sequence. ## Edit button of adapter property not working The value of property adapter did not change after edited and saved. ## Some error with Export Data on Integration Details page There is some error occur with Export Data on Integration Details page as: - Even the interface isn't deployed it still can export the data - The interface has no adapter but still can export data - It still can export the data even there is no license key input and display the unspecific message. ## Name of SuppressNullVaule property not correct The name of SuppressNullVaulue property is incorrect and it has to be changed. ## Visualforce URL format change for Organization with MyDomain deployed It only shows the endpoint in visualforce page Manage Middleware WSDLs but this endpoint is not used anywhere. Now we just correct with view endpoint. ## Error in Query Editor This error occurred when we click the Query Editor to write more statement e.g: Where Name = 'Test' plus with sobject existing before. ## Add the help text for the fields We have many fields without Help Text in interface detail so we need Help Text for all fields to help for user to understand each field. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 1. Installation Link Slug: 2-41-main-release-note-1-installation-link URL: https://help.skyvva.com/#article/2-41-main-release-note-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Link for installation of SKYVVA release official Lightning Version.2.41. - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t900000005IUA](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t900000005IUA) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t900000005IUA](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t900000005IUA) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 2. Warning Slug: 2-41-main-release-note-2-warning URL: https://help.skyvva.com/#article/2-41-main-release-note-2-warning ================================================================================ # 2. Warning #### The endpoint of lightning does not support for REST API If you want to use REST API to integrate into Salesforce, you have to input the URL (endpoint) of Salesforce.com, which is the classic version, not lightning.force.com. However, the Lightning version is still supported for REST API. You can also switch back and forth to Lightning and Classic. #### Enable My Domain setup to use Lightning Components To be able to use Lightning components you have to enable My Domain. In addition, if you do not have My Domain enabled for your organization, your Lightning tabs, components, and pages will be disabled when your organization is upgraded. #### Interface execution- Scheduler only available for Asynchronous outbound interface Previously interface execution-Scheduler available for both Synchronous and Asynchronous outbound interface. However, we have removed this Scheduler from a Synchronous outbound interface. However, if you do not set the processing mode to Asynchronous the Scheduler will not display in the Scheduler section. #### The global scheduler for message reprocessing is deprecated We want to inform you that the old scheduler for message reprocessing which you are using at the moment is deprecated and the new one per integration has to be used instead for the latest version. When you upgrade the new version you will get two Schedulers for message reprocessing, MessageReprocess (old one) and MessageReprocessPerIntegration (the new one), it is the same but just different name. After upgrade please stop the old one and start the new Scheduler. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 3. New Feature Slug: 2-41-main-release-note-3-new-feature URL: https://help.skyvva.com/#article/2-41-main-release-note-3-new-feature ================================================================================ # 3. New Feature #### Enhance message monitor to show the hierarchical message This is a new feature, which is created to enhance the message monitor to show the hierarchical message. This feature can process the hierarchical messages in a transactional way through a new web service integrate3. #### Creating Alert Scheduler for EOIO-Queue in Batch Control Board We introduce new functionality that is alerting based on a message was failed while processing. This Scheduler is created to check the status of all EOIO-Queues. If the status of the queue is turned to hold then it will send an alerting. To run the Scheduler you have to set up an alert in, “Alert” tab from Batch Control Board. #### Creating Alert when the CDC table is full This is the same Alert Scheduler, which used in Batch processing. It shares the same purpose to notify the users by sending an email. However, this Scheduler checks the number of change pointer records if it exceeded the value you have set in the threshold. #### Create message type based on the different format like WSDL and Swagger This is a new feature, which is made to handle all the import function from the file. This import function is automatically generated Message Type, IStructure, MsgTypeFieldEntry, and MsgTypeRel accordingly depending on the file type selected. The file type that are supported are Swagger2.0, (.json) JSON Schema,WSDL,XSD,CSV, hierarchical XML. #### Tree view for repository and message type For the latest version 2.41, SKYVVA has created a feature, which is a tree view for IStructure Repository. This repository can be organized in a tree and has the same structure as a message type. #### Use Query Editor in both modes for new and change You are now can use the Edit mode of Query Editor. This feature allows you to change the existing SOQL statement. It also available in the Lightning version only. #### Create a new CP record using Query Editor This is a new feature, which allows you to create Change Pointer using Query Editor. You can enter the SOQL statement for finding the business id, process the business id immediately. You either can detect the change based on your own SOQL statement. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 4. Lightning Features Slug: 2-41-main-release-note-4-lightning-features URL: https://help.skyvva.com/#article/2-41-main-release-note-4-lightning-features ================================================================================ # 4. Lightning Features **Add New Tab(Log) on Admin Tab** Log tab is a new tab, which is added on the Admin tab in Lightning. With a new tab, you can easily search all the error logs and error text that you wish to delete. **Create Batch Control Board in a Lightning version** SKYVVA is designed a Batch Control Board in a Lightning version by following the logic in Classic Version. **Export SKYVVA Objects to Other org in lightning mode** Our lightning version will be released soon and we have added Export SKYVVA Objects to other organization. This component supports Integration, Interface, IWorkFlows, IMapping, IAdapter, IForeignkey. **Create tab Scheduler in Integration Detail** SKYVVA lightning version will have the same functionality as the classic version as we create a new tab of Scheduler in Integration Detail. This tab can be able to display all Scheduler such as per Integration, per Interface, and Per Interface Group. It also can filter each of the options. ** IWorkflow Functions** IWorkflow function is creating in Lightning version. Some button such as New IWorkflow, ReOrder, Edit, Delete, Export to Other Org is added. **Message Monitoring Detail Page** This feature is to create Message Monitoring Detail Page with function buttons. **Integration Detail page buttons** Such buttons like Import Integration, Export Integration, Manual Load, and Mass Manual Load are converted to the lightning version in Integration Detail page. **Interface Tab Buttons** Two of Interface tab’s button are converted to lightning in Interface Tab. These buttons are Import Interface and ReOrder. **Convert manual load from classic to lightning** Manual Load is converted from classic to lightning version. **Create Manage Middleware WSDLs using Lightning component** Manage Middleware WSDLs is a link in Integration Detail is now converted to lightning version. **Create New Interface and query editor component in Lightning mode** Two new components, Interface, and Query Editor are created in the lightning mode to handle logic and processing like a classic. **Button Clone in Integration detail** Clone button in Integration Detail is now converted from classic to the lightning component. **Create Message Report in Lightning mode** Message Report is converted to lightning component. **Create new lightning component for import Integration/Interfaces script file.** In our classic mode, we use ImportDeploymentScript and ImportDeploymentScriptInterface for import file script. These functions will be converted to lightning version. **Create Adapter View Detail in lightning version** Adapter View Detail will be converted into the lightning version. These components can handle both adapters for Salesforce and Agent. **Create new lightning component for view attachment detail** Since Salesforce does not support with object Attachment in lightning mode, we need to create a component for view attachment detail in lightning version. **Create lightning component for Export Data** We need to create a lightning component for export data from Salesforce like classic mode. **Create a lightning component for support all list schedulers** Since the Schedulers are in any place, a lightning component is created to support all list schedulers. **Create Lightning Component for View InterfaceGroup Detail and Assignment Interface into Group** Due to the classic mode using vf page for view InterfaceGroup, So we need to create a new lightning component for view in lightning too. **Queue Monitoring in Lightning mode** Queue Monitoring is converted to Lightning mode. This tab uses to search queue by the filter. **Create Lightning Component for Assignment Integration into **integration group Add Integration button is converted to lightning mode. This button used to add or remove integration from InterfaceGroup. **Create lightning component for display Storage Usage** Display Storage Usage is created in the lightning version as the classic version. **Create component for re-ordering workflows in Lightning** In the lightning mode, we create table/list to display multiple fields of IWorkfow and reorder them. **Create CDC Control Board in a Lightning version** CDC Control Board is created as lightning component and has five tabs for development. **Move VF page name MessageNameEditorPage To Lightning component** Message Name Editor Page is converted to lightning component. This page is used for changing the format message name by the interface. **Create Lightning Component for Save and Edit Adapter** A new lightning component is created for Save and edit adapter of Salesforce and Agent. This component will show the properties depend on the adapter type. **Change field Last Run Date to Create Statistical Data on Interface Overview Page using Lightning component** The field Last Run Date changed to field Create Statistical Data on Interface Overview Page using Lightning component. **Convert bulk control board from classic to lightning** Bulk Control Board is now converted from classic to lightning version. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 5. Bug Fixed Slug: 2-41-main-release-note-5-bug-fixed URL: https://help.skyvva.com/#article/2-41-main-release-note-5-bug-fixed ================================================================================ # 5. Bug Fixed #### Agent Control Board scheduler buttons cannot be clicked Start/Stop Scheduler and Set Time buttons cannot be clicked in Agent Control Board scheduler tab #### First error: Attempt to de-reference a null object The attachment got stuck on Bulk Data Processing and bulk Monitor got one attachment that has an error like "First error: Attempt to de-reference a null object. #### Lightning: the issue with creating a new outbound interface The error occurs when the inbound change to outbound type, the Source Name field has been blank. Actually, the sObject or custom object needs to keep in the Source Name after changed the type of interface. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 2-42-main-release-note-1-installation-link URL: https://help.skyvva.com/#article/2-42-main-release-note-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for installation of SKYVVA official Version 2.42: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fYP3](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fYP3) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fYP3](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fYP3) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 1-patch-v2-42-1-1-installtion-link URL: https://help.skyvva.com/#article/1-patch-v2-42-1-1-installtion-link ================================================================================ # 1. Installation Link #### Here is link to install SKYVVA Patch version 2.42.1: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnEC](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnEC) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnEC](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnEC) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 1. Installation Link Slug: 4-patch-v2-41-5-1-installation-link URL: https://help.skyvva.com/#article/4-patch-v2-41-5-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Link to Installation SKYVVA Patch Version 2.41.5: - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o0000030YRv](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o0000030YRv) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o0000030YRv](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o0000030YRv) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 2. Feature Slug: 2-feature URL: https://help.skyvva.com/#article/2-feature ================================================================================ # 2. Feature ### SKYVVA system fields for error handling Previously, we have field MESSAGE (old version) and currently, we have the field SKYVVA_MESSAGE. With our current implementation, we cannot set an application text in case of a successful case. Because when we pass the field 'MESSAGE' or 'SKYVVA__MESSAGE' then we use this as a flag to set the message to status 'Failed'. So anyway independent of the content of this field the message is always set to the status 'Failed'. We want to set the comment field with the successful application text. We have enhanced this feature. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 3. Bug Fixed Slug: 3-bug-fixed-3 URL: https://help.skyvva.com/#article/3-bug-fixed-3 ================================================================================ # 3. Bug Fixed ### Batch Alert and CDC Alert do not work with Email SFDC User anymore Actually, Batch Alert and CDC Alert have to work with Email SFDC User since it will alert the user through the email. The user always notified to email when the number of basket more than a value in threshold or status of Queue is Hold. Whereas CDC Data in Table has reached the threshold which has set. However, these two schedulers are not working with Email SFDC User anymore. ### Message Report is not working In Message Report, the button "Download Current Display Result" and "Download All Result" are not working. The report file is blank after downloaded. There are no data in it. The status of messages supposed to show according to what user set. However, it seems that the email only sends some statuses. Another error is the interfaces are not available in the Message Report when choose to specify integration. ### Outbound interface not show in Add Interface with Lightning We need an outbound interface to filter and search message for the only outbound in lightning too. However, we found that only the inbound interface show in Add Interface with Lightning. ### InterfaceExecution scheduler create not correctly The InterfaceExecution seem to work with Integration rather create the scheduler with Asynchronous outbound interface. This is not correct since InterfaceExecution only works with Asynchronous outbound interface. It is not using with Integration and InterfaceGroup scheduler. ### Change the name in the field is not working in v 2.41.3 The error occurs as the XML payload was generated and it doesn’t follow the WSDL structure and thus SAP-PI rejects the message saying that the XML payload is syntactically not well-formed. To solve the problem we have to generate the WSDL, which is well-formed based on the WSDL. ### Got error when renewing License When we try to renew the license key, we got an error, as there is error pop up. ### Re-make up message monitoring in a lightning like classic message motoring The lightning Message Morning needs to be redesigned the column and row as classic. We change the header as a capitalized letter and show full value in row. There are three places to redesign in lightning: Message Monitoring, Message Tab in Integration, and Message Board. The space between the column will have less space but it long enough for the user to see. If the message too long we make them, overlay-scroll-able so the user can scroll left and right. ### Error on Manage Middleware WSDLs An integration is open twice at the same time. You will get an error after you click the Manage Middleware. This happens when you deleted the integration in one tap and go to another integration tab. ### Delete function not working with many attachments and reorganize some when no record on Bulk Control Board The Deletes function, which located in Bulk control Board, is not working correctly as the attachment reaches 100 or above it will not be able to delete. Some of the buttons will be disabled when there is no record on Bulk processing. ### Error on Agent Control Board when Integration deleted When the integration open at the same time in two tabs, you will get an error when one the tab is deleted. The error is occurring while you click on Agent Control Board link. ### Unexpected token: LIMIT in both Query Editor and Query with Creating New Interface When you enter Query Editor or create a new interface an error “unexpected token: Limit” will appear. Actually, it supposed to show “Success! Query executed successfully!”. ### Bulk Scheduler kill itself and it does not restart again while no Attachment Bulk scheduler stops by itself and it doesn’t restart while there is no attachment in Bulk Data Inbox. This scheduler must always start unless it will be stopped by the user. ### Error status not set properly and error code displaying in message There are 200 error codes should be success status, but showing an error. The error code is also showing in the comment field. The error is fixed in the patch note. ### Search all Integration doesn't work properly on Message Monitoring The search for all integration is not clear the old value. It does not work properly on Message Monitoring. Actually, it supposed to list all the record when you search. ### Wrong display CDC Queue located on Batch Control Board We have found a wrong display of CDC Queue located on Batch Control Board. There is no flag has been checked on Batch mode. ### Not allow show Sub-Interface in message monitoring The Sub-Interface has generated automatically by hierarchical Message Type that mapped with sObject. We need to close Sub-Interface in Message Monitoring and Message Board because of it is unuseful to search all messages. all messages are filtered and search base​​​ on parent interface only. ### Problem on Export Data on Integration detail The error has happened on Export Data on Integration detail page. You will get both message error and success message when export on Microsoft Edge. ### Date format display differently on Queue in CDC The column Last Run Time and Last Modified Date with Submitted Date and Completion Date display different format. We want to make the date format the same. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 1. Installation Link Slug: patch-v2-41-6-1-installation-link URL: https://help.skyvva.com/#article/patch-v2-41-6-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for SKYVVA patch version 2.41.6: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bO9g](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bO9g) - Sandox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bO9g](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bO9g) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 1. Installation Link Slug: 6-patch-v2-41-7-1-installation-link URL: https://help.skyvva.com/#article/6-patch-v2-41-7-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for installation of SKYVVA patch Version 2.41.7 -Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bObc](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bObc) -Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bObc](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bObc) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 1. Installation Link Slug: 4-patch-v2-41-4-1-installation-link URL: https://help.skyvva.com/#article/4-patch-v2-41-4-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for installation SKYVVA Patch V2.41.4: - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o0000030YBF](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o0000030YBF) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o0000030YBF](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o0000030YBF) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 1. Installation Link Slug: 8-patch-v2-41-8-1-installation-link URL: https://help.skyvva.com/#article/8-patch-v2-41-8-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for the installation of the official release patch version 2.41.8. - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bObh](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bObh) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bObh](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bObh) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Feature Slug: 2-feature-2 URL: https://help.skyvva.com/#article/2-feature-2 ================================================================================ # 2. Feature #### Dependent Workflow processing The current workflow processing is independent which means that we always pass all messages e.g. the complete block of for example 50 messages to the step independent if the first step has filtered out 15 messages. The dependent processing works like we have joined the condition of step 1 with AND-operation with condition 2 of the second step. Such a use case we could have where we do not pass all the 50 messages to the next step but only those messages which have been passed e.g. evaluated to 'true' by the first step. We have to remove the messages which do not match the condition from the map. #### Re-enable the Import function of WSDL to create MessageType Due to the new logic that was implemented on the IStructure and MessageType, the old way of generating MesssageType from WSDL may encounter a problem and need to fix. We re-enable this feature. #### SearchService API did not support with interface parent-child We need to respond to JSON data as parent and child on SAP after called request data from SAP by use Searchservice Rest API. This is an enhancement feature which is offering in the latest version of our patch release. #### How to use VLOOKUP and Foreign Key base on Salesforce External ID and External Mapping This is an old feature which hasn’t use often. We feature this in our patch in order to remind the user that you can use VLOOKUP and Foreign Key base on Salesforce External ID and External Mapping. You can define the VLOOKUP formula on SoapUI request to call Salesforce now. #### Create Combobox on each Istruture has contained Edit and Delete button We Create Combobox that contained the Edit and Delete button on Istructure in IStructure section which is easy for changing some fields of Istructure. There is no need to click istructure to edit on-page. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 3. Bug Fixed Slug: 3-bug-fixed-4 URL: https://help.skyvva.com/#article/3-bug-fixed-4 ================================================================================ # 3. Bug Fixed #### Show the error in the comment of the message when the interface is not activated The problem is occurring when the inbound message is pending without the reason. To see the reason for the pending message you have to go into the log. This error happens, when the interface is not activated (deployed). However, it is easy if the error will show in the comment field of the message. #### Duplicate comment in Comment and Comment Long field The message has two fields which saving the comment, saving error in field one (Comment field/255) is not enough and missing some information to monitoring, then you could see in field 2 (Comment Long). You could see full comment will be displayed in message monitoring. The long text comment is not allowed to show in the Comment and Comment Long field in message detail: - If long text comment it is displaying in Comment Long field - If short text comments​​ it is displaying Comment field (the comment switch automatically) #### Streaming API Limit the maximum allowed number of push topic The problem has happened when the flag “Use Streaming API” is checked then the interface cannot be saved and render “Limit exceeded, exceeded the maximum allowed a number of pushes topic”. As you know when the interface deleted the push topic, have to delete along as well. #### Fix double scrollbar on CP Query Editor Currently, Change Pointer‘s Query Editor on CDC Control Board shows double scrollbars. We want to show only one scrollbar the same as Query Editor in the interface. For the latest version of the patch version, this problem will be fixed. #### Spinner doesn't disappear after putting the wrong license key When the license key is accidentally put in a wrong organization then the spinner does not disappear when you click to renew it. #### Got error on Edit link in Message Monitoring An integration open in two tabs at the same time and some fail messages have been deleted along with one tab of integration. When you navigate to another tab of integration and enter the Message Monitoring page you will get an error on Edit link after the record has been deleted on another page. There is no data for edit when the user deleted the IData Message. #### All child messages are missing Transfer ID Currently, we use hierarchical JSON data, which contain parent-child relationship e.g. Account is the parent of Contact. We can call data from other systems such as PostMan or Soap UI to Salesforce. To send data from another system users always create Transfer Id. Transfer Id will be created in message detail and TRANSFER ID column on Message Monitoring after called the data. However, the transfer id of the child message is missing from the TRANSFER ID column. It needs to show like the parent message transfer id too. #### Problem Scheduler on CDC Control Board When the Scheduler CDD_PerInterfaceGroup start, the Scheduler CDD_PerInterface appears after we click the Refresh button. It’s happened due to this scheduler lookup to Interfaces Group. If one of the scheduler stop, both of them will stop too. #### Value in the ExternalID column is missing The value in the EXternalID column is always missing after the data sent from the PostMant application. #### Error Limit condition on Query editor When a condition 'Limit' is added to Query Editor, it always generates another 'Limit' after we click on 'Execute SOQL'. It queries the data we want but it also added another 'Limit' condition into the Query editor section. #### Lost Description on IntegrateBulk_Process and IntegrateBulk_Reprocess Two schedulers on bulk, IntegrateBulk_Process, and IntegrateBulk_Reprocess, are not display the description in any of the scheduler tabs. #### Add scrollbar into Message comment detail We have a problem with the message that has a long paragraph as it’s hard to view those long comment messages. To enhance the view detail for the comment message we decided to add the scrollbar. #### Date format display differently on Queue in CDC The column Last Run Time and Last Modified Date with Submitted Date and Completion Date display different format. To fix this problem we make the date format the same. #### Manual load - Fields contain blank or a . are replaced by '_' We need to prefix the field name to become unique in chain interface and we use the sObject along with the sign '.' like Account. Name. When we upload with the manual load it converts to Account_Name and also creates messages with these names. Now we get an error that the name is not known or mapping is missing. Actually every special character except '.' (dot)  will automatically convert to '_' (underscore). However, when the header field contains '.' it replaces by '_'. This is not what in our rule so we going to take it out. #### Mapping in the outbound interface should not be mandatory anymore There is no require mapping for the outbound interface when the payload has been passed through invokeCallout2's parameter. Interface outbound can execute callout without mapping, the payload will be generated from passing data. #### External ID field on IStructure did not change the value after change Integration or Interface name If the IStructure look up to Interface, the value of external Id equals (IntegrationName+InterfaceName+Name+Type). If we change the Integration or Interface name, external id value has to change too. However, the external id value didn’t change at all when the integration or interface are changed. #### Delete function doesn't work properly with hierarchy message Some XML hierarchy records are being pushed into salesforce and the parent records are failed. Since we got the failed message on the message monitoring we decided to use Delete All button to delete all those fail message but it only ends up delete the parent message. All child message still exists in the Message Monitoring. #### When clicking the Refresh button of any scheduler it always jumps to All scheduler There is seems to be an issue regarding the Refresh button as it always jumps to All Scheduler after the refresh. If you select any scheduler in the category of Scheduler picklist it supposes to keep that scheduler after you click the refresh button. #### Run Every on Agent Schedule in Agent Control Board When I Edit the schedule it doesn't show the old scheduler Run Every schedule in Agent Control Board is not working properly at the moment since it doesn’t show the old scheduler which has set. This problem is fixed in our latest patch. #### Change value Null in EXTERNAL ID to Blank when Message get failed When the message gets faile it there is no external Id we should display for the user as blank no Null to avoid confusion with real value. It is an issue with integration V3. #### Add more lines in Data2 tab Since there are only two lines display in the Data2 tab, we decided to add more line, which limits to 10 lines. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 2-patch-v2-42-2-1-installation-link URL: https://help.skyvva.com/#article/2-patch-v2-42-2-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation link for SKYVVA Patch Version 2.42.2. - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnSH](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnSH) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnSH](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnSH) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Feature Slug: 2-feature-3 URL: https://help.skyvva.com/#article/2-feature-3 ================================================================================ # 2. Feature #### Show the comment where a message is waiting on another message as a hypertext link to jump to that message For an inbound message, we often see that a message is waiting on the other message because it failed. In the comment, we clearly tell the user that this message waits for the other message and we show the link in the comment field box. It will be good for the user to have a hyperlink here and jump to that message. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 3. Bug Fixed Slug: 3-bug-fixed-5 URL: https://help.skyvva.com/#article/3-bug-fixed-5 ================================================================================ # 3. Bug Fixed #### Delete function doesn't work properly with hierarchy message Some records had pushed as XML hierarchy (Account, Contact, and Case) and make the parent record to fail. We got the failed message on the Message monitoring. After click Delete All button child message still exist, only parent message has been deleted. #### Enhance CDC processing We need some defining CDD processing manually. Delete or Update old Change Pointer record Id from Application IDs box automatically when we created a new Change Pointer record. #### When clicking the Refresh button of any scheduler it always jumps to All scheduler When we click the Refresh button of any scheduler in Category of Scheduler picklist it always jumps to All scheduler after the refresh it is an issue. #### Replace MetaData Provider Name to Interface Name in mapping Currently, we can use message type instead of sObject to do mapping on the interface processing the Metadata Provider always shows in mapping when we use the Message Type concept with inbound interface and outbound interface. We need to change MetaData Provider Name to Interface Name both Outbound and Inbound interface. #### Change value Null in EXTERNAL ID to Blank when Message get failed When the message gets failed, there is no external Id.  It shouldn’t display for the user as Null to avoid confusion with real value. We fixed to change the value to blank when the message gets fail.  This issue happens with integration V3. #### Error on Define Scheduler in Message Report The problem is occurring on Define Scheduler in Message Report as the scheduler not send the report to the email. We fixed this bug on the Message report scheduler. #### Close Sub_interface from everywhere scheduler tab We need to close Sub-Interface in all scheduler tabs; the Sub-Interface makes no sense here because of all processing of interface based on parent interface. #### A pending message without comment Some records using external mapping are pushed to salesforce and put a value on the Salesforce External ID field with different fields from Salesforce sObject. We get the fail message. However, after reprocessing the fail message using the scheduler or do manually we got the pending message without comment. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 3-patch-v2-42-3-1-installation-link URL: https://help.skyvva.com/#article/3-patch-v2-42-3-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for install skyvva patch version 2.42.3: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Yndq](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Yndq) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Yndq](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Yndq) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Feature Slug: 2-feature-4 URL: https://help.skyvva.com/#article/2-feature-4 ================================================================================ # 2. Feature #### Create a JSON Schema Upload File to Create Message Type and IStructure Previously, our tool can only create JSON Payload File to create Message Type and IStructure. However, now we are able to handle the JSON Schema file. You are now can create a JSON Schema upload file to generate Message Type and IStructure. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 3. Bug Fixed Slug: 3-bug-fixed-6 URL: https://help.skyvva.com/#article/3-bug-fixed-6 ================================================================================ # 3. Bug Fixed #### SFDC2SAPPI-Setting fault message in the comment When we request a call to sever, there is an unexpected error of response with the SFDC2SAPI adapter. The response message is not specific and it always returns a fault message in the comment. To fix this error, we #### Delete function doesn't work properly with hierarchy message After records had pushed as XML hierarchy (Account, Contact, and Case) to Salesforce we make the parent record to fail. On the Message monitoring, we got the failed message. However, after click Delete All button the child message still exists, only parent message has been deleted. #### Child message does not delete with Parent message Parent message needs to be deleted including child messages when the status of a child message is possible to delete. However, the child interface has not deleted with the parent interface now. #### Re-enable the Import function of Open API 2.0 to create MessageType and support the new logic For patch release of version 2.42.3, we aim to re-enable the import function for Open API 2.0 specification (swagger). It supports the new logic from MsgType IStructure MsgFieldEntry and MsgRel. It also stops to create redundant data and will use a reference instead. #### Field empty value not created into the message The issue is occurring as the empty field value is not created into a message when the same data was push again into salesforce in order to update some fields. Despite update the field value to blank, it went missing. #### Error reprocess message in V3 The record was pushed to Salesforce by PostMan or SOAPUI. The data contain the wrong configuration so we get a failed message. After correcting the data and reprocess by scheduler it still doesn’t work. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 4-patch-v2-42-4-1-installation-link URL: https://help.skyvva.com/#article/4-patch-v2-42-4-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link of SKYVVA patch version 2.42.4: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Ynj1](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Ynj1) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Ynj1](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Ynj1) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 3. Bug Fixed Slug: 3-bug-fixed-7 URL: https://help.skyvva.com/#article/3-bug-fixed-7 ================================================================================ # 3. Bug Fixed #### Delete previous messages with the same external Id when processing the current message This function is created to clean up the pending and failed messages which are in the database when we process the new message again which has the same external Id. It's fixed in patch version 2.42.4. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 5-patch-v2-42-5-1-installation-link URL: https://help.skyvva.com/#article/5-patch-v2-42-5-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link of SKYVVA patch version 2.42.5: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Ynkn](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Ynkn) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Ynkn](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Ynkn) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 6-patch-v2-42-6-1-installation-link URL: https://help.skyvva.com/#article/6-patch-v2-42-6-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link of SKYVVA patch version 2.42.6: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnyI](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnyI) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnyI](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YnyI) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 7-patch-v2-42-7-1-installation-link URL: https://help.skyvva.com/#article/7-patch-v2-42-7-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link of SKYVVA patch version 2.42.7: - Production: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoAL](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoAL) - Sandbox: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoAL](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoAL) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 2-43-main-release-note-1-installation-link URL: https://help.skyvva.com/#article/2-43-main-release-note-1-installation-link ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA official Version 2.43:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoU9](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoU9) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoU9](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoU9) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Warning Slug: 2-43-main-release-note-2-warning URL: https://help.skyvva.com/#article/2-43-main-release-note-2-warning ================================================================================ # 2. Warning #### The mapping tool is removed from the Interface detail page The mapping editor is removed from the interface screen to have it as an own screen. Some button like Save and Cancel has to be taken out from the data mapping section and put in the global section of the new screen. This button will save and refresh the mapping screen, it will save and redirect back to the interface screen. The user can still change the mapping. Only after he closes the screen it will return to the interface screen. #### Adding new picklist manually when upgrading the new release of SKYVVA To prevent some error, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. #### Message Name Format link is missing in Lightning Version The custom link will not be overwritten when you upgrade to the latest version. You have to edit the custom link manually. #### Query editor does not support with subselect Please remember that our Query editor doesn't support with subselect. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 3. New Feature Slug: 2-43-main-release-note-3-new-feature URL: https://help.skyvva.com/#article/2-43-main-release-note-3-new-feature ================================================================================ # 3. New Feature #### 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 *SKYVVA__ERROR_MESSAGE. #### 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: - Active - Inactive 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 “” 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 Integration -for Interface -for Message Status** 2 components are: **-Message Monitoring -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: 1- Integration 2- Interface Enhanced views and save integration, interface into salesforce from integration and interface tab in Agent Control Board. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 4. Bug Fixed Slug: 2-43-main-release-note-4-bug-fixed URL: https://help.skyvva.com/#article/2-43-main-release-note-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Handling soap fault messages The monitoring feature is extended to control the SOAP fault code in Salesforce. Case 2 In the monitor we should distinguish this 2 error maybe with A symbol like PI does. PI show system fault error with a read circle symbol and application fault error with a rectangle and a flash sign. This text: Error occured. is fetched Case 1 this text to show: com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.engine.interfaces.messaging.api.exception.MessagingException: XIProxy:PARSE_APPLICATION_DATA: #### Message type which is constructed using Salesforce sObject is not shown correctly in the mapping editor Correction is made so that Message type which is constructed using Salesforce sObject is displayed correctly in the mapping editor. #### IStructure Repository and MessageType's child table should only show Child only This task is to disable parent of IStructure Repository and parent of MessageType in their child tables. #### Add additional property to the JSON schema and open API 2.0 parser to support the array and required node There is a new field on MessageType and MsgFieldEntry name Properties. It is a multi picklist and the value can be isArray and isRequired. The new property is added to the JSON schema and open API 2.0 parser to support if the describe node. #### Got error on Apply Filters scheduler on Admin tab Create Integration and outbound Interface for CDC, after that go to Scheduler on Admin tab and click Apply Filters, the error is fixed. #### Fix bug on the XSD and JSON Schema parser where it should create Istructure instead of MessageType The issue was in the XSD and JSON Schema parser where it should create IStructure but instead, it creates MessageType. Now the parser is improved to support these cases to use the field for mapping. On JSON if the type keyword doesn't exist OR the type indicates an "object" type then it will be considered as MsgType. If the keyword exists and shows a primitive type then it is an IStructure. On XSD if the node has child name restriction it will then take the type of that node and apply it to its parent. #### Long Comment sent from SOAP UI doesn't work On Delete Child Anyway init operation in IChained when the data is sent from SOAP UI, the long comment is received but it didn't show in Long Comment section on Message Detail. With the fix we now full comment for the failed message is seen. #### Named Metadata Provider file like its name in produce The issue is fixed on Export and Import MetaData Provider, IStructure Repository and Message Type. #### Unable to create SFDC2SAPPI adapter with full URL Currently when entering the endpoint URL while creating SFDC2SAPPI adapter, getting an error. ("Error: Upsert failed. First exception on row 0; first error: STRING_TOO_LONG, Value: data value too large. The issue is fixed now. #### SKYVVA__PARENTID generate incorrect in Target Path SKYVVA__PARENTID field always generates automatically based on tree mapping by message type. the SKYVVA__PARENTID is created automatically in parent interface to do relationship with child interface when process callout. The message type is used as object the Target Path should generate **Message Type dot SKYVVA__PARENTID** it is correct so earlier SKYVVA__PARENTID has generated not correct in Target Path when we use **Message Type** object it always generates **Sobject dot KYVVA__PARENTID** it was not correct and that was an issue, fixed now. #### Not allow show subinterface in Interface Name picklist The subinterface is generated automatically after tree mapping is done so all subinterfaces are worked follow main interface processing. It was not allowed to show subinterface in Interface Name picklist SKYVVA Trigger because of it is not in use. Now the Trigger callout successfully with 'Before delete' however get a response message is New it is not correct. it should get message is completed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 8-patch-v2-42-8-1-installation-link URL: https://help.skyvva.com/#article/8-patch-v2-42-8-1-installation-link ================================================================================ # 1. Installation Link #### Here is a link to install SKYVVA Patch version 2.42.8: Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoHS](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoHS) Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoHS](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoHS) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 9. Patch V2.42.9 Slug: 9-patch-v2-42-9 URL: https://help.skyvva.com/#article/9-patch-v2-42-9 ================================================================================ # 9. Patch V2.42.9 Here is the link for install SKYVVA Patch Version 2.42.9 - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoM4](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoM4) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoM4](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YoM4) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Feature Slug: 1-feature URL: https://help.skyvva.com/#article/1-feature ================================================================================ # 1. Feature #### Auto Create Query based on do mapping This feature is created to auto-create Query base on do the mapping. You don’t have to select the fields by doing the query in SOQL anymore. Just drag and drop the fields then it will be auto-generating the query for you. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 1-patch-v2-43-1-installation-link URL: https://help.skyvva.com/#article/1-patch-v2-43-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.43.1.** - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNCx](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNCx) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNCx](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNCx) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Warning Slug: 2-warning URL: https://help.skyvva.com/#article/2-warning ================================================================================ # 2. Warning #### Adding new picklist manually when upgrading the new release of SKYVVA To prevent some error, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. #### Adding the picklists value In general, each type of picklist requires to set up in Fields & Relationships of the interface. It’s a custom field. **- Added "Integrate3x_API_Parameter" picklist value of record Type field in Interface control runtime object.** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “Interface control Runtime” object or you can search it in the "Quick Find" box, then click it. - On the left side of the page, you will the panel select “Field & Relationship” field. - You can search the “Record Type” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2019/10/e7ccd91c730490be22512f6e7d4bf4e4b87738020ea5259af91b13145360571b-copy.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing picklist values 'Integrate3x_API_Parameter'. To avoid the problem please kindly add this value by check the box of the picklist value for a particular Record Type too.[/su_box] **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 3. Feature Slug: 3-feature URL: https://help.skyvva.com/#article/3-feature ================================================================================ # 3. Feature #### Function GETRECORDTYPEID This is a request feature in which the user wants us to create a new function to get record type id by the record type name. Previously, we have two functions already which are: DEFAULTRECORDTYPEID and DEFAULTRECORDTYPENAME. SKYVVA has added a new function into patch 2.43.1. #### Add new picklist Query All, REST query and REST query All into Operation Type In patch release version 2.43.1 SKYVVA has added a few new picklist values into Operation type.  These values mean you can select also the data from the recycle bin eg. Deleted record. Those new operation types are: - Query All - REST query - REST query All #### The ILog does not  store in Recycle Bin of salesforce anymore after delete Actually SKYVVA provides two options for the user to delete ilog. These options are; - Delete manually - Delete by DoMaintenance Scheduler All ilogs have deleted by DoMaintenance Scheduler will not store in Recycle Bin of salesforce anymore. We have changed the logic from normal deletion to hard delete. However, if you want to delete ilogs manually it will store in Recycle Bin of the salesforce. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 4. Bug Fixed Slug: 4-bug-fixed URL: https://help.skyvva.com/#article/4-bug-fixed ================================================================================ # 4. Bug Fixed #### Delete Failed message not working with v3(System.NullPointerException: Attempt to de-reference a null object ) There is an error occur when the JSON data request from SOAP UI. The picklist value “Delete Failed Message” on “What to do with the failed message” field is not working with V3. #### Having Two Select in SOQL Query to select sObject data for Outbound Interface This error occurs because our old logic can handle only keyword "SELECT " but when query from agent side our agent converts this keyword into small characters "select " so make the code think these two are different. Users can also input query manually like "select or Select or SELECT or SeLecT...." etc. #### Re-fix some functionalities in the mapping tool For patch version 2.43.1, some functionalities in mapping tool need to be fixed as: - When contexted one node all the child node is displayed or incorrect level number. - When showing an incorrect alert error when mapping with Salesforce first level it is should be allowed to map - Validate No Foreign Key on salesforce first level is incorrect; it should be no validation for this level. - Remove spinner when saving with No-records. - Cannot mapping fields when the Parent or node was created auto or with AutoMapping. (Now we able to map normally). #### Error with Stop button scheduler in Bulk Control Board An inbound processing tab and Schedulers tab of the Bulk Control Board contain the same interface to process the scheduler. However when we click stop any scheduler in the Inbound processing tab then go to Schedulers tab this scheduler has to show action stop as well in order to avoid user click stop again and get an error. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 1. Installation Link Slug: 9-patch-v2-41-9-1-installation-link URL: https://help.skyvva.com/#article/9-patch-v2-41-9-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for the installation of SKYVVA Patch Version 2.41.9: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bOij](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bOij) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bOij](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bOij) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 1. Installation Link Slug: 10-patch-v2-41-10-1-installation-link URL: https://help.skyvva.com/#article/10-patch-v2-41-10-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Link for the Installation of the patch version 2.41.10 Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bPRj](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bPRj) Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bPRj](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bPRj) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 2-patch-v2-43-2-1-installation-link URL: https://help.skyvva.com/#article/2-patch-v2-43-2-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.2. - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNJQ](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNJQ) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNJQ](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNJQ) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 4. Bug Fixed Slug: 4-bug-fixed-2 URL: https://help.skyvva.com/#article/4-bug-fixed-2 ================================================================================ # 4. Bug Fixed #### Upsert Auto External ID on Child Interface The issue occurs when two interfaces have chained Parent and Child e.g Account interface is a parent of Contact interface, an operation type of both interfaces is Update Auto External ID, and field name of Account sObject mix with contact e.g. NumberOfContacts__c then we call data for account data only no contact data. #### The double value created after upload file on Repository Get double Message Type Field Entry on each Message Type when upload XML file to create message type two times. #### InvokeCallout2 not working with Interface Id It is working with interface Name Because of invokecallout and invokecallout2 Need different Parameter so: - We still need InterfaceId for invokecallout 1 - We use InterfaceName for invokecallout 2 #### Unable to create Chain Interface (SKYVVA version 2.43.1) Unable to create a chain interface in the SKYVVA32 demo system (SKYVVA version 2.43.1 installed). As soon as the "NEW" button is clicking to create a new child interface it gives an error. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Warning Slug: 2-warning-2 URL: https://help.skyvva.com/#article/2-warning-2 ================================================================================ # 2. Warning #### The redesigned Workflow Overview screen Interfaces that are set as “Sub-Interface” type, through its “Interface Type” field, and do not have a “Main-Interface” or empty type interface as its parent, as set through IChained Interfaces, will not appear in the “Source Interfaces” column in the Workflow Tab, under Integration details. To have “Sub-interfaces” type interfaces be displayed in the Workflows tab, please assign a “Main-Interface” type interface as its parent through IChained Interfaces. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 3. Feature Slug: 3-feature-2 URL: https://help.skyvva.com/#article/3-feature-2 ================================================================================ # 3. Feature #### Don't add an element which is blank (for particular condition) - Salesforce Outbound Interface Rename the API value of adapter property from to . This adapter property is only available for  SFDC2SAPPI and SAP/R3 adapter. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 3-patch-v2-43-3-1-installation-link URL: https://help.skyvva.com/#article/3-patch-v2-43-3-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.3. - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNMK](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNMK) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNMK](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNMK) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Feature Slug: 2-feature-5 URL: https://help.skyvva.com/#article/2-feature-5 ================================================================================ # 2. Feature #### OutBound Attachment SF to Agent (FTP) This is a new feature, which is created to export attachment files from salesforce to FTP Server through Agent. In the previous version, we can only export and import the Attachment file between SF and local PC storage. Now we can export and import the Attachment file between SF and FTP Server using Agent. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Bug Fixed Slug: 2-bug-fixed-12 URL: https://help.skyvva.com/#article/2-bug-fixed-12 ================================================================================ # 2. Bug Fixed #### The child interface Operation Type is changing by mapping change There is an issue that occurs while you have changed the mapping of the parent interface. Therefore it will change the operation type of the child interface. This issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 4-patch-v2-43-4-1-installation-link URL: https://help.skyvva.com/#article/4-patch-v2-43-4-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install Skyvva Patch Version 2.43.4: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNPY](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNPY) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNPY](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNPY) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 5-patch-v2-43-5-installation-link URL: https://help.skyvva.com/#article/5-patch-v2-43-5-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.5 - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNQW](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNQW) -Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNQW](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNQW) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Feature Slug: 2-feature-6 URL: https://help.skyvva.com/#article/2-feature-6 ================================================================================ # 2. Feature #### OutBound Attachment SF to Agent (FTP) This is a new feature, which is created to export attachment files from salesforce to FTP Server through Agent. In the previous version, we can only export and import the Attachment file between SF and local PC storage. Now we can export and import the Attachment file between SF and FTP Server using Agent. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 3. Bug Fixed Slug: 3-bug-fixed-8 URL: https://help.skyvva.com/#article/3-bug-fixed-8 ================================================================================ # 3. Bug Fixed #### Upsert Auto External ID on Child Interface For sure, the contact_id__c is not included in the payload, because the message is not intended for the contact interface. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 6-patch-v2-43-6-1-installation-link URL: https://help.skyvva.com/#article/6-patch-v2-43-6-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.6: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNWp](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNWp) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNWp](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNWp) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Feature Slug: 2-feature-7 URL: https://help.skyvva.com/#article/2-feature-7 ================================================================================ # 2. Feature #### Create Message Monitoring tab in CDC Control Board This feature is using existing of Message Monitoring feature but we add a few conditions to it: - We only display interfaces which using CDC SKYVVA Outbound Scheduler - If there is no interface that using CDC SKYVVA Outbound Scheduler we change place holder from "All Interfaces" to "--None--" - In case there are interfaces available for this tab we and user select "All Interfaces" this meaning that select all interfaces which check or using SKYVVA Outbound Scheduler ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 3. Bug Fixed Slug: 3-bug-fixed-9 URL: https://help.skyvva.com/#article/3-bug-fixed-9 ================================================================================ # 3. Bug Fixed #### Delete And Refresh Button Get Error While Delete and uncheck Bulk Mode on Interface There is an error that occurs while delete and uncheck Bulk on Mode on Interface. This error happens because in the past we expected to refresh only the existing Interface (Checked Bulk Mode or Not-Deleted) this problem has been fixed but I found another bug while testing this the Tab Scheduler is not refreshed when there: - Remove or uncheck while the user is viewing this tab. (not refresh record) - Not yet checked any interface when the user is viewing this tab but check the mode later while viewing this. #### The outbound interface does not response data after called request from inbound. While testing the response of the inbound synchronous interface to have a custom-defined message type in 32 Demo Sandbox it is showing an error. It is not working when we upgrade version e.g v2.42 to v2.43.4 nor you reinstall the last version of 2.43.4. #### CDT not working correctly The error is CDT is not working correctly anymore as it is only able to send 600 messages out of 4000. Furthermore, when trying to send the message manually it only sends 100 messages although all messages are selected. #### Date-time is showing in AGENT SCHEDULER/CDD LAST RUN is Incorrect The view in the CDC Control Board is wrong as it shows the last run date from the interface which don’t use anymore for CDC. We now use the record from the interface control runtime. #### Upload All sObject tab is missing when select repository type= Salesforce sObject The Upload All sObject tab is not showing anymore after we created a new repository and choose the type with Salesforce sObject. The issues occurred when we upgrade SKYVVA's old version to the last version (found this issue in 32Demo Org). #### Can't Create IChain in Version 2.43.5 When trying to create IChain, there is an error message pop up as "Uncaught Action failed: skyvvasolutions:NewIChainedInterface$controller$modalBtnHandler [Cannot read property 'get' of undefined]". #### Keep spacing all column headers in the interface tab for CDC control board We need to Keep spacing all column headers in the interface tab for the CDC control board after zoom in and zoom out. Currently, all column headers always mess up when we zoom in and zoom out the browser page. #### Trigger after delete record callout not working Currently, SKYVVA can callout data to other systems with new features about Change Data Capture event or Change Event of Salesforce. When a change to a Salesforce record occurs as part of create, update, delete, or undelete operation. The notification includes all new and changed fields and header fields that contain information about the change. The trigger callout is working fine after Create, Update and Undelete record. However, delete operation is not working after deleting the record. The solution for trigger after delete it is working when query selection with keyword ALL ROWS. #### Workflow not working with SKYVVA Bulk Processing When the workflow is using with SKYVVA Bulk processing, it does not filter the message with the condition. #### Get error when saving mapping use with message type There is an error after saving the mapping as the issue occurs when the old Validation Rules field is not overwritten by the new Validation Rules field with an outbound adapter. It gets the error when using upgrade SKYVVA old version to the latest version e.g. update to version 2.2 to v2.43. #### Get error when clicking the search button in Message Monitoring If you click on the Search button in Message Monitoring, you will get an error as "Error JS Controller name[offsetChangedHelper]: TypeError:S(…).twbsPagination is not a function”. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 7-patch-v2-43-7-1-installation-link URL: https://help.skyvva.com/#article/7-patch-v2-43-7-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.7 -Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNd3](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNd3) -Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNd3](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNd3) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 3. Bug Fixed Slug: 3-bug-fixed-10 URL: https://help.skyvva.com/#article/3-bug-fixed-10 ================================================================================ # 3. Bug Fixed #### The issue with Delete Message of workflow not met conditions 'Delete Message' option is not working properly when this field is checked. All the messages that are not met the condition did not delete at all. We get the error the message not meet the condition did not delete. #### Update SKYVVA-Data field is empty After the update in an SKYVA message, the data field is empty as there is no data in the related list “Data” in lightning. The data store in Data2 instead of Data. As your information, when you upgrade the last version to 2.43 those messages will show idata in Data and Data2. But if the message just creates with the last version, the idata will display in Data2 only. #### Get error when creating a child repository There is an error that occurred while creating the child repository in the Firefox browser. #### Get error when clicking Reset Button on Message Monitoring and Message Board If you click Reset Button on Message Monitoring and Message Board, the error will pop up as "Uncaught Action failed: skyvvasolutions:IMessageColumnTree$controller$doReSet [helper.doResetHelper is not a function]". #### Get error when clicking on Scheduler tab on Batch Control Board and Enter Page Bulk Control Board If you click Scheduler tab on Batch Control Board and Bulk Control Board, you will get an error as "Uncaught Error inSA.getCallback()[Cannot read property ‘status’of null] Callback failed: apex://skyvvasolutions.ClsBulkcontrolboard/ACTIONSgetInboundInterface”. #### Integration Message Report and All CDC Overview are not working anymore The Integration Message Report and All CDC Overview are not working anymore. The issue occurs when upgrading the old version to a new version e.g. v2.38 upgrade to v2.43.6. This issue is caused by the salesforce does not update the sObject permission to enable reports. To fix this issue, you need to enable reports in the sObject. #### Only the selected interface should display in the Message Monitoring board while you filter the messages. When you select the specific interface in the Message Board by doing a manual load, only the selected one should display. However, all the active interfaces, which contain in the integration, are all display. To fix this, you can still change interfaces after they navigated to Message Board, meaning we only make a pre-selection from them at the Message Board page. #### Delete Completed but keep another Message box always tick automatically when the interface is imported to other Org The issue is Delete Completed but keeps other Message is checked its flag automatically after importing interface completed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Warning Slug: 2-42-main-release-1-installation-link-2-warning URL: https://help.skyvva.com/#article/2-42-main-release-1-installation-link-2-warning ================================================================================ # 2. Warning #### Remove Scheduler that is deprecated from the List Some Schedulers such as AttachmentProcess, AttachmentReprocess, and MessageReprocess have been changed their name. They will be deprecated (stop working), so they must be removed from the list to avoid confusion. In the latest release, these Schedulers will display as BatchProcess, BatchREprocess, and MessageReprocessPerIntegration, MessageReprocessPerInterfaceGroup, MessageReprocessPerInterface. #### Adding several new picklist values when upgrading the new release of SKYVVA To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists included in the package. To be able to use those picklists you need to manually add them. **– Added picklist of Init Operation field in IChained Interface Object** Follow the following instruction to create picklist value to the "Init Operation" field in the "IChained Interface" object. In general, each type of picklist requires to set up an object’s Fields & Relationships page. It’s a custom field. - You can click the setting icon on the top right side page, then select “Setup”. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “IChained Interface” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select “Field & Relationship” field. - You can search the “Init Operation” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find value is already there, so to add the new picklist just click the “New” button. ![](../images/2019/12/InitPicklistValue.png) - Fill Init Operation value's API name “Delete Specific Child” in the box and click save button ![](../images/2019/12/apiname.png) Finally, you will get this picklist value in the Values section of the Init Operation field. ![](../images/2019/12/DeleteSpecificChild-1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Init Operation. To avoid the problem please kindly add this value by check the box of the picklist value for a particular Init Operation.[/su_box] **– Added several picklists of UsageType in IMapping Object** **There are many value picklists to create manually in the UsageType field such as:** HTTP_Header HTTP_Body HTTP_URL_Path_Parameter HTTP_URL_Query_Parameter HTTP_Body_Parameter Message_Type SOAP_Header SOAP_Body Follow the following instruction to create picklist values for the UsageType field in the IMapping object. In general, each type of picklist requires to set up in Fields & Relationships of the interface. It’s a custom field. - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “IMapping” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will select the panel select “Field & Relationship” field. - You can search the “UsageType” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2019/12/ClickNewButtonToCreatetheMessageType.png) - Fill UsageType API names in the box and click save button ![](../images/2019/12/FillPicklistValue.png) - Finally, you will get the type picklist values as the screenshot below. ![](../images/2019/12/AfterClickSavePicklist.png) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 8-patch-v2-43-8-1-installation-link URL: https://help.skyvva.com/#article/8-patch-v2-43-8-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.8 -Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNor](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNor) -Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNor](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jNor) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 3. Bug Fixed Slug: 3-bug-fixed-11 URL: https://help.skyvva.com/#article/3-bug-fixed-11 ================================================================================ # 3. Bug Fixed #### Fix some style error on Integration and Related list on Interface details The section name display on the center should be displayed at the beginning of section header: - On Integration detail: Custom Links section - On Related list details: IStructure, IMapping, IChainedInterface, IWorkFlow, ForeignKeys, InterfaceControlRuntimes, InterfaceDataRuntimes, and BatchQueues section. #### The Response Interface field always missing interface Id when we export from one to another Org The integration and interface are generated new ID automatically so the Response Interface field must blank. #### Won't Display Last Data on Click event and Header Name not Responding on Interface Tab in CDC Control Board There is an error as the Last Data won't display on the Interface tab in CDC Control Board. Even the Column Header length is not response with text Header name as well. #### Generate SKYVVA trigger of Quick Action get error After clicking Generate button we always loading spinner and not working anymore ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Feature Slug: 2-feature-8 URL: https://help.skyvva.com/#article/2-feature-8 ================================================================================ # 2. Feature #### Create new button for interface group that stay in Batch Control Board A new button, Interface Group, is added in Batch Control Board. You will be able to create a new interface group in the interface group tab. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 9-patch-v2-43-9-1-installtion-link URL: https://help.skyvva.com/#article/9-patch-v2-43-9-1-installtion-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.9 -Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jO0P](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jO0P) -Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jO0P](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jO0P) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 10-patch-v2-42-12-1-installation-link URL: https://help.skyvva.com/#article/10-patch-v2-42-12-1-installation-link ================================================================================ # 1. Installation Link #### Here is link to install SKYVVA Patch version 2.42.12: – Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uLpt](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uLpt) – Sandbox: [ttps://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uLpt](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uLpt) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Bug Fixed Slug: 2-bug-fixed-14 URL: https://help.skyvva.com/#article/2-bug-fixed-14 ================================================================================ # 2. Bug Fixed #### Not able to Display JSON Data in Salesforce Classic The error occurred while storing JSON in Data_c, so it cannot display the message's data in Message Details in Salesforce Classic. This issue has been fixed both classic and lightning. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Info Slug: 2-info URL: https://help.skyvva.com/#article/2-info ================================================================================ # 2. Info #### Change Label Name Manage Middleware WSDLs to Generate MetaData Renamed "Manage Middleware WSDLs" in Integration detail page to "Generate MetaData". ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 3. Feature Slug: 3-feature-3 URL: https://help.skyvva.com/#article/3-feature-3 ================================================================================ # 3. Feature #### Create New Button for Interface Group in Batch Control Board The interface group button is directly added to the CDC­ Control Board to separate the processing of the outbound interface group and integration Scheduler. #### Message Content (Data) Support with IData and Data Message search filter based on Message Data Content(Data) will be available with both IData and Data2. #### Added Refresh Button on Integration Logs Page Added new refresh button in order to get updated records such as ILogs and Process Logs (Attachments). ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 4. Bug Fixed Slug: 4-bug-fixed-3 URL: https://help.skyvva.com/#article/4-bug-fixed-3 ================================================================================ # 4. Bug Fixed #### Errors in Generated WSDL in Lightning Fixed various issues in WSDL generation in lighting were in Generate Meta Link on Integration Details Page, for both WSDL 1.1 and 2.0 - SObject name undefined in generated WSDL. - IStructure fields override SObject field when created from file. - Manually created/queried IStructure fields included along with SObject fields when generating. - When IStructure and SObject field has the same name, SObject field takes priority, no duplicate fields. - Fields sorted by alphabetical order. #### The Time Interval Changes after Being Edited on Scheduler Message Report Page To send Message Report to external email or to use email to get messages status such as New, Failed, Cancelled, and Pending, the scheduler needs to be defined. Fixed the error occurring after time interval is edited where it automatically changes from 10 to 90 min. #### Missing Status Field When Cloning, Importing and Exporting Adapter Fixed status fields value such as Active, Inactive and None missing when cloning, importing and exporting Adapter. #### No Message Created When Sending Data Between Two Orgs. Fixed issue where data is sent from sender org to receiver org, but receiver org does not create messages. #### Delete and Refresh in Bulk Control Board has Error When Interface Deleted or Uncheck Bulk Mode This error has been partially fixed in patch 2.43.6, however, it was still present in Inbound Processing Tab in Bulk Control Board when attempting to another refresh an Interface that was deleted or had Bulk Mode unchecked. #### Auto Generate Some Value for Repository Fields (hasChild, seqeuceNumber, level) Fixed auto-generating values in some fields hasChild, seqeuceNumber, and Level of Repository. #### Unable to Customize Message Details Layout Message details page layout has been modified to allow users to edit the layout in order to display only required fields and related records. #### Workflow Target Operation Type Hidden By Model Footer When defining operation type for a workflow target, the operation type options may be obscured by the model footer. Fixed this issue by displaying operation type options on top of model UI elements. #### Unable to Upload Duplicate and Blank CSV Fixed issue was unable to create IStructure during uploading duplicate CSV fields and generating the wrong IStructure while uploading blank content CSV. #### Export is Missing Sub-Interface and Missing Save INTERFACE WORKFLOW SETTING Fixed Export Interface where Interface Tab on Integration Details Page is missing some fields such as skyvvasolutions__WorkFlow_Processing_Mode__c, skyvvasolutions__WF_Runtime_Behavior__c, skyvvasolutions__WorkflowStatusHandling__c and generated the wrong root of the sub-interface name. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: main-release-note-installation-link URL: https://help.skyvva.com/#article/main-release-note-installation-link ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA official Version 2.44:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YpPa](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YpPa) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YpPa](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003YpPa) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Info Slug: main-release-note-2-info URL: https://help.skyvva.com/#article/main-release-note-2-info ================================================================================ # 2. Info #### Change Label Name Messages to Monitor Renamed "Messages" Tab in Integration Page to "Monitor" Tab. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 3. Warning Slug: main-release-note-3-warning URL: https://help.skyvva.com/#article/main-release-note-3-warning ================================================================================ # 3. Warning #### Installation or deployment issued During installing or deploying is able to meet some test class failed such as unable to lock the row, so the users need to workaround. Please follow the steps below: - You can click “**Setup**” on the top of the **interface page**. - In the “**Quick Search Find**” box type the word “**Apex Test Execute**” - On the left side of the page, you will the **panel** select **Apex Test Execute** - Look at the top of the **page**, click the **Option** button - You will able to see the **popup** **form** of **Apex Execution Option** - Checked “**Disable Parallel Apex Testing**” and Click **Ok.** ![](../images/2020/03/Apex-Test-Execute-Options.png) #### Adding several new picklist values when upgrading the new release of SKYVVA To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists included in the package. To be able to use those picklists you need to manually add them. **– Added several picklists of UsageType in IMapping Object** Please follow the link for adding those picklist values [#article/1-warning](#article/1-warning) is in the second list of the second title section. **- Added "Integrate3x_API_Parameter" picklist value of record Type field in Interface control runtime object.  ** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 4. New Feature Slug: main-release-note-4-new-feature URL: https://help.skyvva.com/#article/main-release-note-4-new-feature ================================================================================ # 4. New Feature #### New version V3 of inbound and outbound processing At the moment, SKYVVA can push records with a flat message payload. The new enhancement has been added to handle hierarchical message payload for the inbound and outbound processing. This is called the new version v3 of inbound and outbound processing. #### Enhanced mapping tool to support hierarchical mapping With the current mapping tool, the only flat and simple payload can be mapped. If it comes to hierarchical and complex data structure you have to split the interface in separate mapping and join them as parent-child interface. This is too complex and not handy enough. Therefore new functions have been added as the following: - Enhanced Formula Function (adding new node called “Function”: a shortcut to do Formulation or Functions by drag and drop the “Function” node then the Formula and Expression Menu will pop-up) - Enhanced Mapping to support Soap and Rest with the new version of outbound processing - Enhanced Validation (To alert and avoid mapping incorrect ways) - Enhanced 'Set Context Level' that allows users to be able to mapping from a low level to a higher level for Inbound. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The new inbound and outbound processing which uses the new mapping functionality is called v3 of mapping or inbound and outbound processing. For further writing in this release note, the term v3 is linked to the new feature of the hierarchical and complex mapping used with the new inbound and outbound processing.[/su_box] #### Support Salesforce REST and Bulk Query to retrieve large volume data New operations are now available which provides REST and Bulk Query using the Salesforce REST and BULK API 2.0 to fetch large data from salesforce. - REST Query: queries records using the REST API and leverage the feature of fetching the result set page by page. - REST Query All: same as the REST Query but in this case also deleted records can be selected from the recycle bin. - Bulk Query: queries records using the Salesforce BULK API v2.0 - Bulk Query All: same as the Bulk Query but in this case also deleted records can be selected from the recycle bin. #### Enhance Message Monitoring to support Event- and API Monitoring Currently, Message Monitoring can be used to monitor only messages for data synchronization. Since there is a move to the integration application system based on event and API there is a need to have a monitor to show the event and API communication. With the new monitor, we add a filter to allow to chose the following mode: - All: selects all types of monitoring entries. - API Monitoring: retrieves messages which have API call using SOAP/REST adapter. - Event Monitoring selects messages which create platform events based on the inbound message. - Message Monitoring: selects messages which have been created by normal integration. #### Data Loader support hierarchical XML The SKYVVA data loader can use hierarchical XML based on a new mapping tool that supports complies and hierarchical mapping in one shut. #### SKYVVA Bulk and Batch Mode support the new version V3 of Inbound Processing Currently, bulk mode and Batch are old inbound processing, which supports flat message to fetch large data. New enhanced bulk mode and batch mode processing now supports V3 Inbound processing to handle hierarchical message payload. #### Workflow Support New Version V3 of Outbound Processing Previously, invokeCallout2() method was used in order to pass data from the screen with the flat message. The new version adds the invokeCalloutV3() method to handle the hierarchical message, workflows in new version outbound processing. #### New Formula Functions There are a few new formula functions, which allows users can be used: - GETMESSAGEID() formula function on mapping for getting SKYVVA__MessageId from outbound interface. - GetCorrelationID() formula function on mapping for getting correlation id value. #### Re-Order by Sequence Number for Repository and MessageType Currently, MessageType and Repository are reordered by manually changing sequence numbers, therefore added the Re-Order button on Repository and MessageType section in order to generate auto-reorder MessageType and Repository. #### New Version of the SOAP and REST Adapter Currently, the SOAP and REST adapter works with the flat request message and flat response message. With the new enhanced version, it is able to generate hierarchical XML (SOAP adapter), JSON (REST adapter) requests, and process the hierarchical XML (SOAP adapter), JSON (REST adapter) responses. #### Acknowledgment Handling - Created new Message Status (blue-black color) to handle correlation error when response message (inbound) cannot find the request message (outbound) and response message (outbound) cannot find the request message(Inbound). - Correlation outbound has implemented an asynchronous response message for correlation between request message (Outbound) and response message (Inbound) base on SKYVVA__MessageId with new version outbound processing format. - Correlation Inbound is implemented as an asynchronous response message for correlation between request message(Inbound) and response message(Outbound) with new version outbound processing format base on three fields: - RequestId(Default) - TransactionId - TransferId ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 10-patch-v2-43-10-1-nstallation-link URL: https://help.skyvva.com/#article/10-patch-v2-43-10-1-nstallation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.10 -Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOKN](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOKN) -Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOKN](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOKN) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Bug Fixed Slug: 2-bug-fixed-15 URL: https://help.skyvva.com/#article/2-bug-fixed-15 ================================================================================ # 2. Bug Fixed #### Generate double dot field related object on Query Editor Query Editor is a place that can retrieve query by selecting sObject field or manually add query, however, this error occurred is selected field related object after getting double dot like “CreatedBy..AdapterUrl” because of none accessible and none usable on Object in second level relationship query. #### Errors in generated WSDL and XSD Format in Lightning Fixed various issues in WSDL and XSD generation in Interface Details Page Lightning, for WSDL 1.1 and 2.0 and XSD: - SObject name undefined in generated WSDL in Generate Meta Link in Integration Details Page - IStructure fields override SObject fields when created from the file in Generate Meta button in Interface Details Page - Manually created/queried IStructure fields included along with SObject fields when generating in Generate Meta button in Interface Details Page. - When IStructure and SObject field has same name, SObject field takes priority, no duplicate fields​​ in Generate Meta Button in Interface Details Page. - Fields sorted by alphabetical order in Generate Meta Button in Interface Details Page. - Remove type in element and remove name of compleType type with old ways of XSD and WSDL in Generate Meta Link in Integration Details Page. - Added Integration and Interface name attributes for WSDL generated from outbound interface in Generate Meta Button in Interface Details Page. #### Unable to display Working Baskets Records There is an error that occurred while baskets more than ten thousand records. The baskets are not able to display on the working baskets screen. The issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 1-patch-v2-44-1-installation-link URL: https://help.skyvva.com/#article/1-patch-v2-44-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.44.1.** - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMZt](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMZt) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMZt](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMZt) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Bug Fixed Slug: 2-bug-fixed-16 URL: https://help.skyvva.com/#article/2-bug-fixed-16 ================================================================================ # 2. Bug Fixed #### Partial Complete Message Not Working Properly An error occurred which handle to message hierarchical status. The partial complete message always jumps to complete status while reprocessing one of child messages is completed, though others are still failed, pending, new, and canceled messages. The issue has been fixed. #### Error in Edit and Create New IStructure Fixed various IStructure issues were in Interface Related Page and MessageType Related page. - To edit existing IStructure while the user is able to save & new button, but the IStructure has still modified the old existing one. It does not create the new IStructure. - To create new IStructure while the user is able to save & new button, but IStructure has only saved. #### Saving Input Parameter in Massage with Callout V3 Fixed issue that message reprocessing is not able to have parameter by passing from API call of V3 outbound processing. #### Link API Message and Request Message of V3 Outbound by MessageRel for SAOP And Rest Adapter Message outbound of v3 is able to forward different target interfaces by using workflow conditions. This issue got from the first API message has lost request message for monitoring when the outbound has been passed to the second interface in the second workflow. This issue has been fixed by linking API and request messages to the junction table (skyvvasolutions__MessageRel__c) on Soap and Rest Adapter. #### Error on Pushing JSON Data Payload of v3 Inbound Processing There is an error that occurred while you push record using JSON data payload because of generating the wrong of v3 inbound processing. #### The Refresh Button on Transport Route page is not Working Correctly To send interface into other org. Therefore, the users need to choose Integration first before the users can transport interface. Fixed issue in which the refresh button is not refreshed Integration was in Transport Route page. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 2-patch-v2-44-2-1-installation-link URL: https://help.skyvva.com/#article/2-patch-v2-44-2-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.44.2.** – Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMaS](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMaS) – Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMaS](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMaS) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Feature Slug: 2-feature-9 URL: https://help.skyvva.com/#article/2-feature-9 ================================================================================ # 2. Feature #### Added API Key authentication to Rest Adapter Currently, the Rest adapter uses authentication with Basic, Certificate, and Oauth2.0 property. Due to some Rest API using API-Key for authentication, therefore SKYVVA has been added a new feature to the REST Adapter to be able to use with API-Key property. #### Enhance Message Monitoring to Display Request Message of API Message Add new Enhanced to monitor the Request Message of API message on Message Monitoring, wherein Outbound processing using Rest and Soap Adapter. #### Added New Button for Creation Adapter on Agent Control Board(old) Currently, SKYVVA agent application is being able to create an adapter. Therefore, added a new feature to create an adapter on Agent Control Board(old) Instead​​​​ of creating in SKYVVA Agent application. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 3. Bug Fixed Slug: 3-bug-fixed-12 URL: https://help.skyvva.com/#article/3-bug-fixed-12 ================================================================================ # 3. Bug Fixed #### Cannot Import MetaData Provider while IStructure reference to IStructure of Another repository There is an error that occurred while the user links IStructure to IStructure of another repository from other MetaData Provider. If the user exports MetaData Provider, it will be lost a relationship. When the user imports it, it will get an error "First error: Attempt to de-reference a null object". This issue has been fixed. #### Added Missing Field into Import and Export Function Added missing fields are in Integration, Interface, InterfaceGroup, Imapping, MessageType and IStructure. - Import and export were in Integration in order to get Retry Time Interval, Max Number of Retry, and API Retry field. - Import and export were in Interface to get Retry Time Interval field. - Import and export in Interface Group to retrieve Retry Time Interval, Max Number of Retry, and Max Number of API Retry field. - Export and import were in IMapping to get Copy From, and Formula Path field. - Export and import in Message Type in order to get Category, CustomMessageType and Version field. - Export and import in IStructure are able to get Manually Added and Source Name field. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 3-patch-v2-44-3-1-installation-link URL: https://help.skyvva.com/#article/3-patch-v2-44-3-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.44.3.** – Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMbf](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMbf) – Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMbf ](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMbf) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Feature Slug: 2-feature-10 URL: https://help.skyvva.com/#article/2-feature-10 ================================================================================ # 2. Feature #### Handle attribute of  XML in the mapping tool At the moment, SKYVVA can push records by the only element with XML hierarchical. The new feature has been added to handle attribute hierarchical payload for the inbound processing. Note: The two fields added into MsgTypeFieldEntry__c such as Category and Parent**:** Category field is defined MsgTypFieldEntry__c was attribute or element. Parent filed is defined MsgTypeFieldEntry__c looks up to element of attribute. #### Updating SKYVVA Message with Rest API Using External ID Currently, we update the message using SkyvvaMessageId. Therefore, external id has been added for update message with Rest API using Synchronous mode. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 3. Bug Fixed Slug: 3-bug-fixed-13 URL: https://help.skyvva.com/#article/3-bug-fixed-13 ================================================================================ # 3. Bug Fixed #### Not Able to Reprocessing Message Manually with Soap Adapter To reprocessing the message which messages are failed, pending, and new status. There is an error that occurred while reprocessing the message with the SOAP adapter. Therefore, the message is not working to reprocessing messages in message monitoring. #### Added Missing Field into Import and Export Function Added missing field to Export and import were in IMapping to retrieve "Full Target Path", "Full Source Path", "Reference Field Parent And Above", and "Reference Field Uncle" field. #### Not able to Reprocessing Message which has a few child’s failed message in Partial Completed There is an error that occurred while partial completed has a few child’s failed messages. Therefore, the child messages are not able to reprocess messages manually wherein Message Details. #### Missing Input Parameters in Failed Massage with Callout V3 Fixed issue that failed message is not able to save parameters for reprocessing by passing from API call of V3 outbound processing with mode SYNC. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 4-patch-v2-44-4-1-installation-link URL: https://help.skyvva.com/#article/4-patch-v2-44-4-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.44.4.** – Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMcn](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMcn) – Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMcn](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMcn) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Warning Slug: 2-warning-3 URL: https://help.skyvva.com/#article/2-warning-3 ================================================================================ # 2. Warning #### Inactive on Validation Rules for the Interface object To prevent the error while upgrade you have to deactivate the validation rule for the outbound interfaces. The validation check that the adapter is mandatory for the outbound interface. This validation is not used anymore and thus you have to deactivate it. Follow the following instruction to deactivate the validation rules. - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “Interface” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select “Validation Rules” field. - Select the field, look at the right side of the page, click the “Edit” button menu. - Uncheck in box Active field and click save button ![](../images/2020/04/n29.png) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 3. Feature Slug: 3-feature-4 URL: https://help.skyvva.com/#article/3-feature-4 ================================================================================ # 3. Feature #### Enhance a few screens to display with some fields There are a few screens to display some fields such as - Added Created Date and Last Modified Date fields into Integration screen - Added Category and Parent fields into Message Type Filed Entry section screen wherein Message Type Related Page - Added Category and IStructure fields into IStrucuture section screen were in Repository Related Page. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 4. Bug Fixed Slug: 4-bug-fixed-4 URL: https://help.skyvva.com/#article/4-bug-fixed-4 ================================================================================ # 4. Bug Fixed #### Cannot process batch basket with EOIO type by the scheduler Fixed issue wherein the scheduler is not able to execute the apex class for processing batch basket with EOIO type at a specified time. The scheduler is still running; however, the batch basket still keeps in working baskets. #### Export, Export to other org and Import Are Missing Attribute in Message Type Field Entry Missing attribute field in Message Type Field Entry while export, export to other org and import. This is error has been fixed. #### Not able to get response message with Soap Adapter There is an error that occurred while request callout V3 outbound with SOAP adapter, the response message will not respond after request message has been completed. This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 5-patch-v2-44-5-1-installation-link URL: https://help.skyvva.com/#article/5-patch-v2-44-5-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.44.5.** – Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMdg](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMdg) – Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMdg](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMdg) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Feature Slug: 2-feature-11 URL: https://help.skyvva.com/#article/2-feature-11 ================================================================================ # 2. Feature #### Enhance the SAP-PO connector to generate bulk data format to support hierarchical data with v2 A new enhancement has been added to SKYVVA Bulk to handle hierarchical data using SKYVVA inbound integrated v2 for the SAP-PO connector. #### Add Monitor Tab into Agent Control Board old The Monitor tab is a place that users can check the message after integrated. The Monitor Tab has been added into Agent Control Board Old. Therefore, users can check the message without jump up to Integration Cloud Tab. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 3. Bug Fixed Slug: 3-bug-fixed-14 URL: https://help.skyvva.com/#article/3-bug-fixed-14 ================================================================================ # 3. Bug Fixed #### Screen crash in Lightning component while the governor limit exception is raised Fixed issue that an error occurred was in storage out of limit. Therefore, the user clicks some cloud tab will be crash or get an error. #### Export get an issue with the same repository name which is different MetaData Provider There is an error that occurred while the user export repository, therefore the repository names are the same with different MetaData providers. The export will be confused to export all repository which in the same this name. This issue has been fixed. #### Re-Generate Level and sequenceNumber of the MessageType after Changing the Parent The MessageType is able to hierarchy and none hierarchy by the business structure of the user. There is an error that occurred while the user change parent of messageType, therefore level, and sequenceNumber not re-generate of those fields. This issue has been fixed. #### Can not sort manually mapping in the mapping tool Fixed issue which users map IStructure source field to IStructure to target field with the outbound interface. Therefore, the mapping will be sort by the ascending source field automatically. Now users can sort manually mapping or ascending, descending order in the target field. #### Not Able to Clear Id the Previous Selected There are a few fixed errors with selected previous id such as - There is an error that occurred while the user-selected MetaData Provider, after the user enters and selects Integration, and clicks the export, therefore it cannot export because the id is not the value of Integration object. - Fixed issue while the user checked MedaData Provider after entering to the integration tab and check Integration and then clicking delete button so the MetaData Provider and Integration have been deleted. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 11-patch-v2-43-13-1-installation-link URL: https://help.skyvva.com/#article/11-patch-v2-43-13-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.44.13. - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOZJ](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOZJ) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOZJ](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOZJ) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Bug Fixed Slug: 2-bug-fixed-17 URL: https://help.skyvva.com/#article/2-bug-fixed-17 ================================================================================ # 2. Bug Fixed #### Always Delete Child Records while processing the same batch apex execution Skyvva has Delete First mode in Init Operation on IChained Interface Inbound for deleting child records. There is an error while the user is processing integration with batch mode. The baskets contain many records; therefore, batch apex will split messages into small packet sizes per batch execution. The records repeat the parent, so the last execute will be deleted the child records of the first execute. This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 6-patch-v2-44-6-1-installation-link URL: https://help.skyvva.com/#article/6-patch-v2-44-6-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.44.6.** - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMy4](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMy4) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMy4](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qMy4) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Feature Slug: 2-feature-12 URL: https://help.skyvva.com/#article/2-feature-12 ================================================================================ # 2. Feature #### Add Default Properties field for SFDC Rest Adapter At the moment, the SFDC Rest adapter type doesn’t have the default properties field while the user creates new this adapter type. The new enhancement is added to display default Properties field for SFDC Rest adapter type such as username, password, sfEnvironment, sfConsumerkey, sfConsumerSecret, token, targetIntegrationId, targetInterfaceName. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 3. Bug Fixed Slug: 3-bug-fixed-15 URL: https://help.skyvva.com/#article/3-bug-fixed-15 ================================================================================ # 3. Bug Fixed #### Always display Sub-Interface with a few lookups fields There is an error that occurred while a few fields have been lookup with Sub-Interface such as Parent Interface, Invoke Outbound/Inbound Interface, and Request Interface field in Inbound/Outbound Setup section wherein Interface Details Page. Therefore, the sub-interface should not have displayed and selected on the screen. This issue has been fixed. #### Get an error while manually processing the same baskets many times This issue was in processing manually the same baskets many times. It gets an error with the null value cause the baskets already processing. This issue has been fixed. #### Always Delete Child Records while processing the same batch apex execution Skyvva has Delete First mode in Init Operation on IChained Interface Inbound for deleting child records. There is an error that occurred while the user is processing integration with batch mode. The baskets contain many records; therefore, batch apex will split messages into small packet sizes per batch execution. The records repeat the parent, so the last execute will be deleted the child records of the first execute. This issue has been fixed. #### Not able to Pushing Attachment into reference Sobject To associate two records in a relationship, therefore Skyvva has a vlookup formula in the mapping tool. Vlookup formula is not able to lookup the source field while pushing attachments with Sobject. The error has been fixed. #### Not able to read CSV encoding UTF-8 file with Manual Load of Lightning component To upload records with SKYVVA manual load, and manual load is able to support CSV, XML, and XML hierarchy. The user has a CSV file that is not encoding UTF-8 after the user converts the file to encoding UTF-8. However, the lightning component is not able to get records from the file. The error occurred has been fixed. #### Not able to alert error Storage Limit Exceeded with various lightning component Fixed various issue related storage limitation - When using manual load to push the records, the status batch apex job shows as completed. However, the records didn’t push. This issue happens when the storage is full. Instead of the success message, the error message will be appearing in the batch apex job. - To create filter message conditions were on the workflow page. The workflow has been created by the user while the storage was limit. The alert message was showing successfully, however, the workflow didn’t create. Instead of the alert-success message, the alert error message will be appearing on the screen. - When using the Import MetaData Provider button to import MetaData Provider, the status batch apex job shows as completed. However, the MetaData Provider didn’t import. This issue happens when the storage is full. Instead of the success message, the error message will be appearing in the batch apex job. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 12-patch-v2-43-14-1-installation-link URL: https://help.skyvva.com/#article/12-patch-v2-43-14-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.44.14. - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOpi](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOpi) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOpi](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOpi) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Feature Slug: 2-feature-13 URL: https://help.skyvva.com/#article/2-feature-13 ================================================================================ # 2. Feature #### Enhanced ISEMAIL() formula function ISEMAIL(text) formula function is checking whether the specified text is email or not. Enhanced ISEMAIL() formula for checking with the domain name that contains only two or a character. i.e test@a2.com. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 7-patch-v2-44-7-1-installation-link URL: https://help.skyvva.com/#article/7-patch-v2-44-7-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.44.7.** – Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qNCD](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qNCD) – Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qNCD](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qNCD) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Info Slug: 2-info-2 URL: https://help.skyvva.com/#article/2-info-2 ================================================================================ # 2. Info #### Rename several label name To prevent user that was confused with the rename label name, therefore SKYVVA would like to inform that the several label name has been renamed as follows: - Rename from “Number of Records Per Batch/Upload” to “Processing Package Sizeold” in Running Configuration – General in Interface Details Page - Change label name from “Package Size” to “Transfer Package Size” in Information section in Interface Details Page - Rename from “Package Size” to “Processing Package Size” was in Interface Group Details Page. - Change label name from “Packet” to “Transfer Package Size” was in the Agent section at Integration Details Page. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 3. Warning Slug: 3-warning URL: https://help.skyvva.com/#article/3-warning ================================================================================ # 3. Warning #### Apex CPU time limit while exporting data with hierarchy XML To prevent the error on export while user the exporting data using hierarchy XML with new V3 outbound processing; therefore, SKYVVA wants to want you that every export data need to check the batch flag and set Processing Package Sizeold. It is using for limitation the scope of records processing per batch. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 4. Feature Slug: 4-feature URL: https://help.skyvva.com/#article/4-feature ================================================================================ # 4. Feature #### Import Attachment Base64 Embedded file using New Inbound v3 processing The pushing attachment Base64 file supported with New Version V3 that is able to handle hierarchical message payload for the inbound processing. #### Enhance formula mapping to work with source field that is the same function name In the previous version, the source field name that is the same function name was not allowed to do formula mapping. Otherwise, the error will occur while mapping processing can be an error or getting incorrect formula. The formula enhanced to work with the source field that is the same function. The format is required as {!Source Field}. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 5. Bug Fixed Slug: 5-bug-fixed URL: https://help.skyvva.com/#article/5-bug-fixed ================================================================================ # 5. Bug Fixed #### Missing a few fields while Exporting and Importing Fixed various issued in exporting and importing - While the Integration/interface has been imported and exported, the direction field is missing in the adapter. The issue has been fixed. - Fixed missing a few fields in interface object after export and import such as Bulk Version, Bulk Processing Mode, and Bulk Integrate Time Interface. #### Not able to update API message inbound processing API Message is a group of messages after processing with request and response Rest/Soap in v3 processing. It will be get partial completed status while the child message has mixed-status such as completed and failed. The user is able to processing failed message with reprocess button in Message Monitoring after the child has been completed all, but the API message will not update the status from partial completed to completed status. This is issue has been fixed. #### Disable to display interface using SFDC Bulk API 1.0 and SFDC Bulk API 2.0 in Bulk Control Board There is an error that occurred while the users choose the bulk version as SFDC Bulk API 1.0 and SFDC Bulk API 2.0 with checked bulk flag. Therefore, the interface will be displayed in the bulk control board. The SFDC Bulk mode is processing directly to salesforce; therefore, we don’t need it in Bulk Control Board.  The issue has been fixed by display only SKYVVA Bulk 1.0 and none choosing. #### Some error while the governor limit exception is raised Fixed various issues in governor limit exception are raised: - Alert message successful while the workflow is not able to save into salesforce due to storage limitations. Fixed issued by alert error “Upsert failed. First exception on row 0, first error: STORAGE_LIMIT_EXCEEDED, storage limit exceeded: []” - Not create message while pushing records using manual load during the storage limit exceeded. Fixed issue by alert status details in apex job “First error: STORAGE_LIMIT_EXCEEDED, storage limit exceeded” - Send an email that import script is successful, however, the MetaData Provider is not able to import into Salesforce due to storage exceeded. Fixed issue with sending email for alert failed to import “The import script failed! Please go to apex job to see the error detail.” - Alert message error as “Error Insert IStructure” and Error Insert Message Type” while importing the MessageType and IStructure was in upload file in the repository because of storage limit exceeded. The alert error will change to “Upsert failed. First exception on row 0, first error: STORAGE_LIMIT_EXCEEDED, storage limit exceeded: []”. - Not create the scheduler was in the Integration page, therefore the storage has been exceeded. Fixed issue by alert error message “error:Upsert failed. First exception on row 0; first error:STORAGE_LIMIT_EXCEEDED, storage limit exceeded: []” when the user click the scheduler tab and refresh button. - Not create scheduler was in the CDC Control Board page, therefore the storage has been exceeded. Fixed issue by alert error message “error:Upsert failed. First exception on row; first error:STORAGE__LIMIT_EXCEEDED, storage limit exceeded: [] ” when the user clicks the scheduler tab and refresh button. - Change alert message error from “Error changing default log file name” to “error:Upsert failed. First exception on row; first error:STORAGE__LIMIT_EXCEEDED, storage limit exceeded: []” while the user changes log file name was in Process Logs (Attachment) section of Integration page due to storage limit. - Not able to export metadata provider while the storage limit. Fixed issue by change alert from “Some error occurred while processing” to “Insert failed. First exception on row 0; first error: STORAGE_LIMIT_EXCEEDED, storage limit exceeded: []”. #### Missing Source Field on IWorkflow The user is able to choose the source field to build filter conditions on workflow; however, the source field has been lost in the parent interface. This issue has been fixed. #### Getting Error while uploading XML HIERARCHY with the wrong format of Mapping There is an error that occurred while uploading the XML hierarchy was in Manual load that is not the same format of Mapping in the Mapping tool. Therefore, it will get error “TypeError: Error in $A.getCallback() [data is undefined] Callback failed:apex://skyvvasolutions.ClsFiletegrationController/ACTION$getInterfaceStructure**”. **This issue fixed by adding an alert message “The file that upload is the different file in Mapping!”. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 8-patch-v2-44-8-1-installtion-link URL: https://help.skyvva.com/#article/8-patch-v2-44-8-1-installtion-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.44.8.** – Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uMht](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uMht) – Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uMht](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uMht) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Bug Fixed Slug: 2-bug-fixed-18 URL: https://help.skyvva.com/#article/2-bug-fixed-18 ================================================================================ # 2. Bug Fixed #### Bypass Message Layer not working with Manual Load of XML hierarchy format, CDC and Batch Mode Bypass Message Layer is using for none creation message after pushing the records into salesforce. Fixed issue getting messages while the interface is using the Bypass Message Layer flag with XML hierarchy format (Manual Load), CDC, and Batch Mode. #### Messages cannot be processed due to waiting for each other There is an error that occurred while the failed messages have the same external id, and they are waiting for each other to reprocessing like the cycle. This issue has fixed, and the earliest one can be reprocessed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 15-patch-v2-43-15-1-installation-link URL: https://help.skyvva.com/#article/15-patch-v2-43-15-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.15. - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOqC](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOqC) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOqC](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOqC) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Bug Fixed Slug: 2-bug-fixed-19 URL: https://help.skyvva.com/#article/2-bug-fixed-19 ================================================================================ # 2. Bug Fixed #### Not Increase message counter for interface with custom class Users are able to use custom processing with their code; therefore, their custom code overrides SKYVVA functionality that affects the retry counter message. Fixed issue which increases retry counter message that does not work properly for Interface with custom class while using scheduler to reprocess the messages. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 1-installation-link URL: https://help.skyvva.com/#article/1-installation-link ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA official Version 2.45:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qNQz](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qNQz) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qNQz](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002qNQz) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Info Slug: 2-info-3 URL: https://help.skyvva.com/#article/2-info-3 ================================================================================ # 2. Info #### Rename some label names and Add a new field To have a better understanding some label names and field have been renamed and added as follows: - Renamed label name from “Data Source Type” to “Application” in ILog Detail Page. This field shows the Application which Integrates the data. For example SFDC, Agent…etc. - Renamed label name from “Interface” to “Component” in ILog Detail Page, this field shows which component e.g. the SKYVVA application function is executed during interface processing. - Added the field ‘Interface’ in ILog Detail Page. This field shows which interface raises the error. - Change button name from “Open SAP” to “Import SAP Metadata” in Repository Details Page - Renamed button name from “Upload File” to “Import Metadata” in Repository Details Page - Change button name form “Open DataBase” to “Import Database Metadata” in the Repository Details Page. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 3. Warning Slug: 3-warning-2 URL: https://help.skyvva.com/#article/3-warning-2 ================================================================================ # 3. Warning #### Alert message error while creating the 4th level of messageType Salesforce mistakenly gives an error while creating manually a message type on level 4 and below. You can ignore this error. The message type is still created. #### Adding several new picklist values when upgrading the new release of SKYVVA To prevent some error while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding this picklist: [#article/2-warning](#article/2-warning) is in the second title section. **- Added "Integrate3x_API_Parameter" picklist value of record Type field in Interface control runtime object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 4. New Feature Slug: 4-new-feature URL: https://help.skyvva.com/#article/4-new-feature ================================================================================ # 4. New Feature #### Created MessageType from SAP with IDOC Tables/View and BAPI/RFCs This function allows you to import SAP Idoc, BAPI, Table, and View to create message type. #### Created MesasageType for Database with Table, View and stored procedure This function allows you to import database metadata such as table, view, and stored procedure to create message type. #### Custom layout for interface Details Page Currently, the interface detail page is using Salesforce standard layout. Therefore the interface name is not showing the real name but the automatic generated one, which is hard to understand. The custom layout has been integrated into the interface page including Header Page and Inbound/Outbound Setup sections. Now the real interface name will be shown on the screen. #### Added Messages Board Button in Interface Header Page Added Messages Board Button on the interface Header to allow direct use of the message monitor without going through the roundabout way over the integration. #### New Version V3 of CDC Outbound Processing Currently, Skyvva CDC uses ‘integrate v2 processing’. New version outbound v3 has been also added to handle hierarchical message payload with SOAP and REST Adapter. #### Added Select All and Deselect All button in Mapping Tool The Select All and Deselect All button has been added to select and deselect mapping records in Data Mapping Section. #### New Agent with Camel technologies A so-called “AgentControl Board” has been added for the new agent which is based on the apache camel technology. Camel is a very powerful integration software library; therefore, a new agent can connect with a new connector such as Rest, Soap, and Kafka. New agents can be run on multiple OS platforms like  Linux, Windows, and OS X. #### Enhanced and added the new adapter - to SAP CPI adapter for connecting between salesforce to SAP CPI cloud application. This adapter uses for sending records to SAP CPI and uses the new v3 outbound processing. - SAP PI/PO adapter is our existing connectors being used by you for many years. We are modernizing and enhancing the sap PI/PO connector to use our new version 3 outbound processing. This means that we don't need to break up the nested and hierarchical structures into different interfaces and create child interfaces manually anymore. All of that work is now done in the background for you with the new version 3 of the outbound processing. #### Enhancement of the old agent control board SKYVVA has been enhanced old agent control board as following: - Users can start and stop service status which is in the System Information tab in the old agent control board. - Agent log files are the files that keep the processing while the user integrates the data with Agent. Currently, agent Log files can display a backup log file which is over three megabytes. - SKYVVA has added manual processing in interface Group in order to process interface. The interface group has two types as EO and EOIO: EO type allows the interfaces processing at the same time - EOIO type allows the interfaces processing by sequence number. If one of the interfaces is stuck, the second interface will not process. - Generate scheduler without set time anymore. - Added Process Per Integration button to process all interface manually inside Integration. #### Enhanced mapping tool to set filters condition of Context Level In the earlier release, we have introduced the function 'Set Context' to enable you to map the child node to the same level as you do for the parent. For example if you have an invoice where you want to map the items to the same target node sObject like the invoice header we just take the first one of the items. This is not always correct for your business because an invoice can have multiple items. Now with the filter function, you can add a condition to exactly fetch the item which you real need e.g. the item with the amount of 25 USD. The condition is used to filter the child records which is to be used to map to the target object along with its parent. #### Automatically assign MessageType of Service Name based on the interface type MessageType will be automatically assigned while using Service Name based on the interface type. There are two services Soap and Rest: - When the Inbound Interface chooses the messageType of Soap (WSDL Service Name), the WSDL Envelope will be assigned automatically into Source/Target Message Type. - While the outbound Interface chooses the messageType of Soap (WSDL Service Name), the WSDL Request will be assigned automatically into Source/Target Message Type. - When the inbound interface chooses the messageType of Rest (Rest Service Name), the REST Response will be assigned automatically into Source/Target Message Type. - While the outbound chooses messageType of Rest (Rest Service Name), the REST Request will be assigned automatically into Source/Target Message Type. #### Generate namespace for Soap Adapter Added the Namespace field for putting namespace value to generate namespace in the payload of the Soap template before​ sending data out. #### Added Monitor Tab in Batch and Bulk Control Board The Monitor can check the message status after integrated processing; therefore, SKYYVA has been added Monitor in batch and bulk control board. It can check the message that processing based on batch/bulk mode depends on the control board. #### Added Scrollbar for viewing the hierarchical messages Added the scrollbar to view all hierarchical messages at the left side in the message detail page, making it easier to check all messages. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 5. Bug Fixed Slug: 5-bug-fixed-2 URL: https://help.skyvva.com/#article/5-bug-fixed-2 ================================================================================ # 5. Bug Fixed #### Fixed import MessageType with Different file format To import MessageType was in the Upload File button in the Repository Details page. The user is able to import messageType with the different file formats. There is some fixing in importing messageType: - Fixed Swagger 2.0/OpenAPI 2.0 in order to import Rest template into MessageType correctly as following Adding a new field is a "Full Name" for MessageType that has a long name more than 75 characters, therefore it will store in “Full Name” field and making a short name into "MessageType Name" field. - Remove Rest operation to import MessageType, and the Rest Operation types are “get, post, delete, patch…ect”. - Change “Type” of ReferenceObject MessageType from “Plain Structure” to “Reference Object” - Adding description and sample content to “MessageType Field Entry” like “IStructure” - Fixed XML messageType structure to import as follows: Fixed not import root message type. - Added attributes MessageType - Added namespace for root MessageType - Added new field for namespace long - Fixed sequence number issued - added types for elements and attributes in IStructure and Message Type Field Entry. - Fixed messageType is not generated correctly when the XML is not formatted. - Fixed XSD messageType structure to import as follows: Fixed XSD generate namespace. - Not import reference type into messageType anymore. - Fixed import IStructure as attribute and element. - Fixed WSDL 1.1 and WSDL 2.0 in order to import WSDL as the SOAP template MessageType correctly. - Fixed JSON to import messageType as following: - added “Enter a name if JSON doesn't have root tag name” textbox for giving messageType root name. - Fixed generating IStructure and messageType field Entry type based on field Type. - Fixed JSON Schema to import messageType as following: - Fixed skipping tags, readOnly, and writeOnly field. Fixed generating IStructure and messageType field Entry type based on field Type. - Fixed generating description of IStructure and messageType Field Entry. - Change ReferenceObject of Root MessageType Name to get the title from file Instead. - Added “**Please choose** **the name for the root message type” **radio button in order to get Root messageType Name from the title or entering a name. #### The Attribute Lookup All Element MessageType Field Entry with other MessageType Currently, Skyvva has been supported attribute type of MessageType Filed Entry in order to get the attribute field to mapping. To create an attribute in the MessageType field Entry. Therefore, the user needs to select the parent attribute as an element. When the attribute lookup the element field, it will get all element messageType field entry from other messageType. This is issue fixed by filter lookup the only element belongs to MessageType Field Entry of MessageType. #### Fixed Export WSDL File Format Fixed various issued relate export WSDL from “Generate MetaData” was in Integration Detail Page and Interface details page: - Fixed issue WSDL to generate with the SOAP template correctly. - Fixed screen in generate MetaData Link and interface Details - Fixed issue WSDL to generate Sobject MessageType. #### Not alert error message while exporting data is not working There is an error that occurred while the user wants to export data using the export button in the Integration Detail Page. It doesn’t alert messages after exporting data is not working. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 11-patch-v2-43-11-1-installation-link URL: https://help.skyvva.com/#article/11-patch-v2-43-11-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.11 -Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOUn](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOUn) -Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOUn](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOUn) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Bug Fixed Slug: 2-bug-fixed-20 URL: https://help.skyvva.com/#article/2-bug-fixed-20 ================================================================================ # 2. Bug Fixed #### Cannot import outbound interface There is an error that occurred while import outbound interface, it will validate all interface mapping fields whether they have been selected query or have not. If one of the fields does not select in the query statement, it will be raising the error. This issue has fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 12-patch-v2-43-12-1-installation-link URL: https://help.skyvva.com/#article/12-patch-v2-43-12-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.44.12. - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOVR](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOVR) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOVR](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOVR) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Bug Fixed Slug: 2-bug-fixed-21 URL: https://help.skyvva.com/#article/2-bug-fixed-21 ================================================================================ # 2. Bug Fixed #### Cannot sort manually mapping in the mapping tool Fixed issue which users map IStructure source field to IStructure to target field with the outbound interface. Therefore, the mapping will be sort by the ascending source field automatically. Now users can sort manually mapping or ascending, descending order in the target field. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 1-patch-v2-45-1-installation-link URL: https://help.skyvva.com/#article/1-patch-v2-45-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for install SKYVVA Patch Version 2.45.1. - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOwt](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOwt) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOwt](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOwt) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Warning Slug: 2-warning-4 URL: https://help.skyvva.com/#article/2-warning-4 ================================================================================ # 2. Warning #### Adding several new picklist values when upgrading the new release of SKYVVA To prevent some error while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding this picklist: [#article/2-warning](#article/2-warning) is in the second title section. **- Added "Integrate3x_API_Parameter" picklist value of record Type field in Interface control runtime object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 3. New Feature Slug: 3-new-feature URL: https://help.skyvva.com/#article/3-new-feature ================================================================================ # 3. New Feature #### Adding a new button in Repository Added the “Export MetaData” button in the Repository to generate business message type to XSD and JSON schema file format. #### Added XSD generation for the response template of V3 inbound processing API We implement XSD exportation for the response template of v3 inbound processing (integrateSynchronous) API. It is located at two places such as generic place (custom links in integration) and the interface detail page. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 4. Bug Fixed Slug: 4-bug-fixed-5 URL: https://help.skyvva.com/#article/4-bug-fixed-5 ================================================================================ # 4. Bug Fixed #### Error in exported Metadata from the different file format Fixed various issues in metadata generation in lighting were in Generate Meta Link on Integration Details Page and Interface details page. - **Fixed exportation of JSON Schema** Get an error while export IChain Interface. - Not generate SKYVVA field. - Not generate IStructure from the file in IStructure of the interface. - Not generate manually IStructure of the interface. - **Fixed exportation of  WSDL File Format** Not generate IStructure into the file that does not Message Type. - Changed Skyvva__Message to SKYVVA__MessageId for all level request message type. - Generate SKYVVA Business Object type of message type to working correctly. - Generate message type link with other message types. - Merge message type that request, response, and Fault have the same message type. - Missing SKYVVA__MessageId in Sobject message type. - **Fixed exportation of XSD File Format** Missing description of message type field entry. - Missing message type field entry from message type rel. - Not merge message type field entry. #### Error regarding with imported Metadata from the different file format Fixed various issues in imported message type in lighting in the repository. - **Fixed importation of OpenAPI 3.x to generate message type** Generate the wrong type of IStructure. - Not retrieve description value into IStructure description field. - **Fixed Importation of XSD and XML to generate message type** Importing functionality for XML and XSD currently supports files that are well-formatted line breaks. If the file is not formatted some structures might be missing. - Different types of XSD files are supported which has different structures for complex types including WSDL. - Primitive and derived data types from XSD are supported. - References used in XSD files are skipped and its child elements are assigned to the parent of reference where it defines as "type" or "ref". - Attributes are created as Istructure with proper XSD data types supported. For duplicate names parent is assigned to attributes. - Elements from nodes "all" and "choice" are inserted. So users can choose elements from the choice node. - Elements referencing to the node which has Complex type and simple type as a child are created as fields. And elements referencing to the node which has complex type and sequence as the child are created as message types. - **Fixed Importation of JSON and JSON** **Schema**** to generate message type** The description of IStructure is showing undefined - Importing the JSON file that does not have a root tag name. #### IMapping has generated an incorrect path after changing the interface name There is an error that occurred while the user changed the interface name of inbound v3 processing, and then the user saves the mapping again. It will generate the wrong path on "Reference Field Parent And Above" and "Reference Field Uncle" in IMapping records. This issue has fixed. #### Output result returns wrong to ISEMAIL formula function in the mapping tool The mapping tool is able to use the formula function for adding or editing in mapping records. Fixed issue regarding output result returns wrong in the ISEMAIL formula. For example, the email does not have a domain “xxx.” like “xxx.skyvva.com”. When we write the mail like xxx@skyvva then it returns true, this is not correct. It should return 'false'; therefore, the domain extension '.com' is missing. #### Cannot edit Interface group in Integration Page Fixed issue while the user wants to edit the existing interface group in the integration page, it will be creating the new interface group. #### The scheduler does not update status and comment on the screen while the scheduler aborted There is an error that occurred while the user starts the scheduler in the Salesforce Classic interface, the scheduler has an aborted or unexpected error, and it will not update the status and comment correctly. This issue has been fixed. #### Cannot handle long text error message in a message comment Fixed missing failed message comments for monitoring while it has too long text. #### Missing message type field entry in the mapping tool Missing the message type field entry while the message type parent is SKYVVA Business Object type. This issue has fixed. #### Getting errors while saving the mapping There is an error occurred while the mapping is saving the Sobject and SKYVVA Business Object picklists value in UsageType of IMapping Object. This issue has fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 16-patch-v2-43-16-1-installation-link URL: https://help.skyvva.com/#article/16-patch-v2-43-16-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.16. - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOsX](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOsX) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOsX](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jOsX) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Bug Fixed Slug: 2-bug-fixed-22 URL: https://help.skyvva.com/#article/2-bug-fixed-22 ================================================================================ # 2. Bug Fixed #### The output result returns wrong to ISEMAIL formula function in the mapping tool The mapping tool is able to use the formula function for adding or editing in mapping records. Fixed issue regarding output result returns wrong in the ISEMAIL formula. For example, the email does not have a domain “xxx.” like “xxx.skyvva.com”. When we write the mail like xxx@skyvva then it returns true, this is not correct. It should return ‘false’; therefore, the domain extension ‘.com’ is missing. #### Cannot handle long text error message in a message comment Fixed missing failed message comments for monitoring while it has too long text. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 17-patch-v2-43-18-1-installation-link URL: https://help.skyvva.com/#article/17-patch-v2-43-18-1-installation-link ================================================================================ # 1. Installation Link Here is the link for install SKYVVA Patch Version 2.43.18. - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQQF](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQQF) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQQF](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQQF) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Bug Fixed Slug: 2-bug-fixed-23 URL: https://help.skyvva.com/#article/2-bug-fixed-23 ================================================================================ # 2. Bug Fixed #### Cannot reprocess messages filtered by the interface name There is an error that appears while you want to reprocess the messages in the Message Monitoring. If the messages are filtered by an interface name, they are not able to reprocess. This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 2-patch-v2-45-1-installation-link URL: https://help.skyvva.com/#article/2-patch-v2-45-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.45.2.** - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP0C](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP0C) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP0C](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP0C) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Warning Slug: 2-warning-5 URL: https://help.skyvva.com/#article/2-warning-5 ================================================================================ # 2. Warning #### Adding several new picklist values when upgrading the new release of SKYVVA To prevent some error while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding this picklist: [#article/2-warning](#article/2-warning) is in the second title section. **- Added "Integrate3x_API_Parameter" picklist value of record Type field in Interface control runtime object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 3. New Feature Slug: 3-new-feature-2 URL: https://help.skyvva.com/#article/3-new-feature-2 ================================================================================ # 3. New Feature #### Custom layout for SOQL Query for filter sObject section in interface Details Page Currently, the interface detail page is using some Salesforce standard layout. Therefore, the interface name is not showing the real name but the automatic generated one, which is hard to understand. The custom layout has been integrated to **SOQL Query for filter sObject** **section** in the **interface details page**. Now the real interface name will be shown on the screen. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 4. Bug Fixed Slug: 4-bug-fixed-6 URL: https://help.skyvva.com/#article/4-bug-fixed-6 ================================================================================ # 4. Bug Fixed #### Fixed bugs on the exportation of JSON schema file format in generic page and interface detail page - Fixed only exportation business structure with Rest template in generic page (Custom links of Integration page) and interface detail page. - Disable Combo box “Chose an API name” and “Chose an operation” while we choose JSON Schema. - Fixed exportation while using IChain Interface. #### Fixed bug in the mapping tool The mapping was generating the wrong full path while the message type is using the SObjectType. Therefore, integrate V3 cannot process. This issue has been fixed. #### Cannot reprocess messages manually filtered by the interface name There is an error that appears while you want to reprocess the messages manually in the Message Monitoring. If the messages are filtered by an interface name, they are not able to reprocess. This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 9-patch-v2-44-9-1-installation-link URL: https://help.skyvva.com/#article/9-patch-v2-44-9-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.44.9.** – Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP1j](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP1j) – Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP1j](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP1j) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Feature Slug: 2-feature-14 URL: https://help.skyvva.com/#article/2-feature-14 ================================================================================ # 2. Feature #### Added Scrollbar for viewing the hierarchical messages Added the scrollbar to view all hierarchical messages at the left side in the message detail page, making it easier to check all messages. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 3. Bug Fixed Slug: 3-bug-fixed-16 URL: https://help.skyvva.com/#article/3-bug-fixed-16 ================================================================================ # 3. Bug Fixed #### Cannot handle long text error message in a message comment Fixed missing failed message comments for monitoring while it has too long text. #### The scheduler does not update status and comment on the screen while the scheduler aborted There is an error that occurred while the user starts the scheduler in the Salesforce Classic interface, the scheduler has an aborted or unexpected error, and it will not update the status and comment correctly. This issue has been fixed. #### The output result returns wrong to ISEMAIL formula function in the mapping tool The mapping tool is able to use the formula function for adding or editing in mapping records. Fixed issue regarding output result returns wrong in the ISEMAIL formula. For example, the email does not have a domain “xxx.” like “xxx.skyvva.com”. When we write the mail like xxx@skyvva then it returns true, this is not correct. It should return 'false'; therefore, the domain extension '.com' is missing. #### Cannot reprocess messages manually filtered by the interface name There is an error that appears while you want to reprocess the messages manually in the Message Monitoring. If the messages are filtered by an interface name, they are not able to reprocess. This issue has been fixed. #### The DoMaintenance scheduler cannot delete the failed, pending, and new messages We have fixed the issue which DoMaintenance scheduler cannot delete the old failed, pending, and new messages. This issue occurs while reprocessing the message (MessageReprocessPerxxx), and the DoMaintenance scheduler are working at the same time. For example, the DoMaintenance set a day for the deletion. The scheduler will check the modification date for deletion. However, the message reprocessing (MessageReprocessPerxxx) scheduler tried to reprocess and updated the modification to the current date. Therefore, the deletion message function will be checked by the created date instead. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Warning Slug: 2-warning-6 URL: https://help.skyvva.com/#article/2-warning-6 ================================================================================ # 2. Warning #### Rename a label name in interface detail page To prevent user that was confused with the rename label name, therefore SKYVVA would like to inform that a label name has been renamed from “Don't Persist Message” to “Delete Completed but keep other Message”. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 3-patch-v2-45-3-1-installation-link URL: https://help.skyvva.com/#article/3-patch-v2-45-3-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.45.3.** - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP7h](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP7h) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP7h](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP7h) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Warning Slug: 2-warning-7 URL: https://help.skyvva.com/#article/2-warning-7 ================================================================================ # 2. Warning #### Adding several new picklist values when upgrading the new release of SKYVVA To prevent some error while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding this picklist: [#article/2-warning](#article/2-warning) is in the second title section. **- Added "Integrate3x_API_Parameter" picklist value of record Type field in Interface control runtime object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 3. New Feature Slug: 3-new-feature-3 URL: https://help.skyvva.com/#article/3-new-feature-3 ================================================================================ # 3. New Feature #### SKYVVA REST Adapter support with XML payload Currently, one feature of the SKYVVA REST Adapter has supported the JSON payload format. Therefore, we have enhanced it to supporting with XML payload format. #### Response interface support with the different fault message We have been added the “Interfaces (Fault Interface)” list to the interface related page. The feature has allowed getting an error response with the different fault messages after Request outbound failed, to be used with fault response we need to have the fault SOAP message type template. #### Added New “Export MetaData” Action Button in the Message type In the previous version, we have been added the “Export MetaData” button in the repository to be generating the business message type. Now we have removed it and added directly in the action button of the message type section on the repository page. We have enhanced to generating more file formats such as Swagger 2.0/OpenAPI 2.0, OpenAPI 3.0, and WSDL. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 4. Bug Fixed Slug: 4-bug-fixed-7 URL: https://help.skyvva.com/#article/4-bug-fixed-7 ================================================================================ # 4. Bug Fixed #### The DoMaintenance scheduler cannot delete the failed, pending, and new messages We have fixed the issue which DoMaintenance scheduler cannot delete the old failed, pending, and new messages. This issue occurs while reprocessing the message (MessageReprocessPerxxx), and the DoMaintenance schedulers are working at the same time. For example, the DoMaintenance set a day for the deletion. The scheduler will check the modification date for deletion. However, the message reprocessing (MessageReprocessPerxxx) scheduler tried to reprocess and updated the modification to the current date. Therefore, the deletion message function will be checked by the created date instead. #### Fixed various issue in the mapping tool There are various issues that have been fixed in the mapping tool as following: - Fixed generation incorrectly query of the outbound interface while you do only the formula mapping. Therefore, it will not generate the query anymore in this case. - Fixed generate relation of parent field formula mapping into the expression box by selected field in Sobject message Type. - Fixed issue to generate incorrect the uncle's value into the "Reference Field Uncle" field in flat mapping. Therefore, the integrated inbound v3 was not working. - Fixed issue to replace dot(.) of v3 inbound processing for “Reference Field Parent And Above” and “Reference Field Uncle” fields. - Fixed Auto Mapping when selected node. Therefore, you do not expand the note to auto map anymore and you just selected only the node target and source. - Fixed Auto Mapping when selected node. Therefore, you do not expand the node to auto-mapping anymore. You must select the target and source node. For inbound, you need to map the main node first. - Fixed “set context level” of the inbound mapping while the user sets the message type low level to the interface name. #### Cannot integrate V3 while using message type names that contain dot “.” There is an error that occurred while the message type names that contain dot “.”. Therefore, it cannot integrate v3 of inbound and outbound. This issue has fixed only V3 outbound processing. #### Fixed bugs on the exportation of Swagger 2.0/OpenAPI 2.0 and OpenAPI 3.0 file format in generic page and interface detail page Fixed exportation to get REST message type template from Swagger 2.0/OpenAPI 2.0 and OpenAPI 3.0 file in generic page (Custom links of Integration page) and interface detail page. #### Fixed issue which ISEMAIL(text) formula to support the domain name that contains only two or a character ISEMAIL(text) formula function is checking whether the specified text is email or not. Fixed ISEMAIL() formula for checking the domain name that contains only two or a character. i.e "test@a2.co". ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 10-patch-v2-44-10-1-installation-link URL: https://help.skyvva.com/#article/10-patch-v2-44-10-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.44.10** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP31](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP31) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP31](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP31) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Bug Fixed Slug: 2-bug-fixed-24 URL: https://help.skyvva.com/#article/2-bug-fixed-24 ================================================================================ # 2. Bug Fixed #### Bypassing apex heap size There is an error that occurred while integration writes the log in the attachment that increased heap-size in the apex. This issue has fixed by providing the option to set in the SKYVVA custom setting object . **IsSavingLogFile: false, **it will not write integration's log into the attachment. **To set SKYVVA custom setting objectcustom setting:** - From Setup, enter Custom Settings in the Quick Find box, then select Custom Settings. - You will see “Key” SKYVVA Custom Setting, please click manage on “Key” - Click New button - Fill IsSavingLogFile in the Name box, fill “false” in the key box, and click save. ![](../images/2020/10/IsSavingLogFile.png) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 11-patch-v2-44-11-1-installation-link URL: https://help.skyvva.com/#article/11-patch-v2-44-11-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.44.11** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP8p](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP8p) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP8p](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP8p) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Bug Fixed Slug: 2-bug-fixed-25 URL: https://help.skyvva.com/#article/2-bug-fixed-25 ================================================================================ # 2. Bug Fixed #### Apex heap size in message reprocessing There is an error that occurred while the message reprocessing has many failed messages that reach up to apex heap size. This is issued has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 4-patch-v2-45-4-1-installation-link URL: https://help.skyvva.com/#article/4-patch-v2-45-4-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.45.4.** - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9T](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9T) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9T](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9T) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Warning Slug: 2-warning-8 URL: https://help.skyvva.com/#article/2-warning-8 ================================================================================ # 2. Warning #### Adding several new picklist values when upgrading the new release of SKYVVA To prevent some error while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding this picklist: [#article/2-warning](#article/2-warning) is in the second title section. **- Added "Integrate3x_API_Parameter" picklist value of record Type field in Interface control runtime object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 3. New Feature Slug: 3-new-feature-4 URL: https://help.skyvva.com/#article/3-new-feature-4 ================================================================================ # 3. New Feature #### Pushing raw data in manual load There is a new feature of manual load processing. We have added the “Raw Upload” button in order to process raw data when you use complex mapping and custom processing of new inbound v3. It can be used with an XML payload only. #### Enhanced File and FTP of old agent adapter There is a new feature of manual load processing. We have added the “Raw Upload” button in order to process raw data when you use complex mapping and custom processing of new inbound v3. It can be used with an XML payload only. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 4. Bug Fixed Slug: 4-bug-fixed-8 URL: https://help.skyvva.com/#article/4-bug-fixed-8 ================================================================================ # 4. Bug Fixed #### Not able to integrate data while changing the interface name There is an error that occurred while you have changed the inbound interface. Therefore, it cannot integrate v3. This issue has fixed. #### Cannot integrate V3 Rest API while using message type name that contains dot “.” There is an error that occurred while the message type name contains dot “.”. Therefore, it cannot integrate v3 Rest API of inbound with JSON payload. This issue has fixed. #### Exportation of XSD, JSON Schema, Swagger 2.0/OpenAPI 2.0, and OpenAPI 3.0 file format in the Repository Fixed Various issues as following: - Fixed generate message type referenced and referenced back and forth. - Fixed fields and message type which is required. - Fixed message type in response while the message type of request is the same response. - Fixed generating undefined in some parts of the WSDL file format. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 5-patch-v2-45-5-1-installation-link URL: https://help.skyvva.com/#article/5-patch-v2-45-5-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.45.5.** - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9n](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9n) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9n](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9n) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Warning Slug: 2-warning-9 URL: https://help.skyvva.com/#article/2-warning-9 ================================================================================ # 2. Warning #### Adding several new picklist values when upgrading the new release of SKYVVA To prevent some error while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding this picklist: [#article/2-warning](#article/2-warning) is in the second title section. **- Added "Integrate3x_API_Parameter" picklist value of record Type field in Interface control runtime object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 3. Bug Fixed Slug: 3-bug-fixed-17 URL: https://help.skyvva.com/#article/3-bug-fixed-17 ================================================================================ # 3. Bug Fixed #### Property undefined while upload file with Raw Upload Having an error “Property undefined” while you upload the file with the raw upload button to be processing new enhancement of v3 in manual load. This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 6-patch-v2-45-6-1-installation-link URL: https://help.skyvva.com/#article/6-patch-v2-45-6-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.45.6.** - Dev Edition/Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jPL7](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jPL7) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jPL7](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jPL7) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Warning Slug: 2-warning-10 URL: https://help.skyvva.com/#article/2-warning-10 ================================================================================ # 2. Warning #### Adding several new picklist values when upgrading the new release of SKYVVA To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **- Added many picklist values of the "type" field in the "IStructure" object.** Here are the picklist values to be added manually: decimal NOTATION nonPositiveInteger float normalizedString negativeInteger duration token long time language int gYearMonth NMTOKEN short gYear NMTOKENS byte gMonthDay Name nonNegativeInteger gDay NCName unsignedLong gMonth ID unsignedInt hexBinary IDREF unsignedShort base64Binary IDREFS unsignedByte anyURI ENTITY positiveInteger QName ENTITIES There are many picklist values of the Type field in IStructure object. We pick one sample added manually on the “**decimal**” type. - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “IStructure” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the “Type” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2020/10/1-3.png) Fill value’s API name in the box and click the save button ![](../images/2020/10/FillAPINameValuePicklist.png) Finally, we will get the “**decimal**” type picklist value as the screenshot below. ![](../images/2020/10/GetDecimalPicklist.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Type field. To avoid the problem please kindly add those values by checking the box of the picklist value for a particular IStrcuture.[/su_box]. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding this picklist: [#article/2-warning](#article/2-warning) is in the second title section. **- Added "Integrate3x_API_Parameter" picklist value of record Type field in Interface control runtime object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 3. Feature Slug: 3-feature-5 URL: https://help.skyvva.com/#article/3-feature-5 ================================================================================ # 3. Feature #### Enhanced SKYVVA Trigger to generate invokeCallout2() and invokeCallout3() In the previous version, we enhanced the new outbound processing with invokeCallout2() and invokeCallout3(). Therefore, SKYVVA Trigger has also enhanced to generate invokeCallout2() and invokeCallout3() script inside **Apex Trigger**, **Change Event Trigger,** and **Quick Action**. #### Remove all validation mapping while using custom processing Our SKYVVA tool has allowed you to use custom processing that overrides SKYVVA standard processing. We have enhanced to remove all validation of mapping. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 4. Bug Fixed Slug: 4-bug-fixed-9 URL: https://help.skyvva.com/#article/4-bug-fixed-9 ================================================================================ # 4. Bug Fixed #### Manual load not working correctly in the XML hierarchy This error happened when clicking the upload button in the manual load that is missing the child fields of the XML hierarchy format. This is issue has been fixed. #### Cannot integrate V3 Rest API while using message type name that contains dot “.” There is an error that occurred while the message type name contains a dot “.”. Therefore, it cannot integrate v3 Rest API of inbound with JSON payload. This issue has fixed. #### Include attribute of the roof element in Export MetaData Fixed issue where the MetaData exportation has attributes of roof element; therefore, it cannot import to the SAP PO system. #### Fixed various issues in the import message type There are various issues in the import message type. We have fixed as follows: **-OpenAPI 3.0** - Missing message type fields entry in the request query parameter - Missing message type fields entry in PATH Parameter. - Not able to changed MetaData name - Cannot import message type from the “RequestBody” of file. **-Swagger/OpenAPI 2.0** - If the file has the header fields, it will not generate correctly. **-XML/XSD** - Generate the wrong type of message type field entry - Missing the description field of Message type field entry **-WSDL** - Missing message type in body response - Missing description of the message type ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 1-installation-link-2 URL: https://help.skyvva.com/#article/1-installation-link-2 ================================================================================ # 1. Installation Link **Here is the installation URL link patch version 2.43.21.** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXz](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXz) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXz](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXz) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Warning Slug: 2-warning-11 URL: https://help.skyvva.com/#article/2-warning-11 ================================================================================ # 2. Warning #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **Adding the picklists value** In general, each type of picklist requires to set up in the field & the Relationships of the interface. It’s a custom field. **-Add picklist values of the Type field in the Message Type object. ** Here are the picklist values to be added manually: SAP IDOC Request SAP IDOC Response SAP IDOC SAP IDOC Segment SAP BAPI SAP BAPI SAP BAPI Request SAP BAPI Response SAP BAPI Table SAP PI/PO SAP Table SAP View There are picklist values of the Type field in the Message Type object. We pick one sample added manually on the “**SAP IDOC Request**” type. - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “Message Type” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the “Type” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2020/11/IStructureObject.png) - Fill type value name in the box and click the save button ![](../images/2020/11/TypeValue.png) Finally, we will get the “**SAP IDOC Request**” type picklist value as the screenshot below. ![](../images/2020/11/AfterGenerateType.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Type field. To avoid the problem please kindly add this value by check the box of the picklist value for a particular Message Type.[/su_box]. **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the top listing title. **– Added several picklists of UsageType in IMapping Object** Please follow the link for adding those picklist values [#article/1-warning](#article/1-warning) is in the second list of the second title section. You need to add more picklist values of the type **UsageType **in the **IMapping **object on this release. Please added the picklist values below: - REST_Service - REST_Request - REST_Response_Body **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning ](#article/1-warning). You need to add more picklist values of the type **record Type **in the **Interface control runtime **object on this release. Please added the picklist values below: - Agent V3 Integration Scheduler - Agent V3 Interface Group Scheduler, - Agent V3 Interface Scheduler - Agent V3 LogEntry **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. New Feature Slug: 3-new-feature-5 URL: https://help.skyvva.com/#article/3-new-feature-5 ================================================================================ # 3. New Feature #### Added Ping Connection for Transport Route We have enhanced the transport functionality to let you check the connectivity first after you have created the transport route. Now a ping function is available for this purpose. #### Mapping Enhancement We have introduced a new function to support the requirement for outbound mapping when a node is needed a certain number of times. In this case, you don't need from the source side a sObject instance to create the occurrences of the target node. You can use the data inside the same sObject that occurs multiple times e.g. you have two types of addresses in the account like billing and shipping address and you need to create the target node only two times and not n-times as the occurrences of the sObject instance. In this case, we can use the so-called 'Copy Node' function to copy the target node two, three, or as many times as you need to have on the target side. #### Agent Cache and SAP Cache For the new Agent and SAP, a caching mechanism has been implemented. This is to speed up the processing when connecting to the new agent and sap using the local cache data. Thus, jumping while run-time over the internet to Salesforce to read the metadata is not required anymore. - **Rebuild Cache After Transport **is used to rebuild the cache when the user transports some objects from other organizations. - **Rebuild Cache After System Refresh** is used to rebuild after refresh system from production to sandbox. - **Synchronize Cache **is used to push the cache again after the synchronize. - **Restore Connection After System Refresh** is used to restore all connections after refresh system. For example, it stores all the endpoint that created in salesforce to connect SAP and new agent control board #### Added several new adapters Various adapters have been added: - **Agent Kafka adapter ** It is used with a new agent to connect to the event platform which is called Apache Kafka. - It provides a streaming event bus. - It creates a topic from the producer and pushes the message to the consumer. - It provides publish/subscribe functionality using the queue. - **Agent Database adapter ** It is used with a new agent to connect with database types such as Oracle, SQLServer, MySQL, PostgreSQL, MsAccess, HyperFileSQL, and Informix. - **Agent File adapter ** It is used with a new agent to connect the ftp, sFTP and FTPs server and local file. It will help in interacting with the file system to read and write data to file. - **Agent Pulsar adapter** it is used with a new agent to connect the event platform which is called Apache Pulsar. Pulsar is basically an Event-based communication. Event-based communication contains two main components: Publish (Producer) and Subscribe (Consumer). The work of a publisher is to publish messages into a queue or topic which is Pulsar and the middleware tool like Pulsar will maintain the message, they follow the principle of Publish and Subscribe. And they will deliver messages to the consumer. Then all the applications can subscribe. For example, Youtube plays the role of a publisher, and we play the role of the subscriber(Consumer). - **SAP S/4 HANA adapter** we are moving with you and have created the S/4 HANA connector to allow you to connect to S/4 HANA on-premise or on-cloud. We are supporting all kinds of communication protocols such as IDoc, BAPI, and ABAP Proxy. For the cloud deployment all kinds of S/4 HANA APIs either soap, rest, or OData can be consumed. All API formats are supported e.g. swagger 2.0, OpenAPI 3.0, and WSDL can be easily imported to SKYVVA, create a message type, and build the request and response by using our graphical mapping. No line of code is needed to invoke and connect through any S/4 HANA API. - **SAP ERP adapter ** Integration to SAP is our strength and we provide integration to all kinds of the SAP application landscape. Now the SAP ERP connector has been enhanced to support hierarchical data to be built in one mapping. In the previous version, the hierarchical structure has to be broken up into flat structure and multiple interfaces using workflow were needed to process a nested complex object as for example an SAP Order. - **Agent SOAP adapter** It is used to connect the new agents to the on-premise application that enables you to invoke SOAP API. - **Agent REST adapter** It used to connect the new agent to the on-premise application that enables you to invoke REST API. #### Added Adapter Monitor in new Agent Control Board You need to know how many files are still pending in the processing folder to have an overview. For this purpose, we have added a new function to monitor the files inside the processing folder. Now at any time, you can see how many files are still to be processed if there is a stuck. You simply have now an overview and monitor of the files to be processed in the inbound direction e.g. from File, ftp, sftp, and ftps to Salesforce. #### Configuration logs of the new agent With this configuration setting, you can define your custom setting how to handle the log e.g. how granular you want to have the traces, how big a log file should be, etc. We provide you standard log profile and you can choose and set one to become active. You also can create a custom one that reflects the need for your individual logging requirement. #### Added Agent Manual Processing API The standard processing mode is to process the database record e.g. reading from database table and push to Salesforce by a scheduler e.g. job. This is the standard default processing mode out-of-the-box for the database adapter. But sometimes there is a need to trigger and push the data at anytime you want e.g. now. Then you don’t need to wait for the scheduling period. This way allows you flexible handling of processing the database record whenever you want e.g. on-demand at your convenience. #### Added the import meta in New Agent Control Board When you are using tables, views and stored procedures of a database you need their structure definition. It is quite a time consuming and a big effort to create such a structure definition manually as message type. Therefore with this function, you can import the table, view, and stored procedure to create the message type template for use in the mapping tool. #### Added various message types format - Added SAP Function/BAPI message type template to descript the type of the business message in the SAP BAPI system. - Created SAP Table message type template to define the type of the business message in the SAP RFC system. - Added SAP Idoc message type template to descript the type of business message in the SAP IDOC system. - Added Database message type template to define the type of the business message in the Database system. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 12-patch-v2-44-12-1-installation URL: https://help.skyvva.com/#article/12-patch-v2-44-12-1-installation ================================================================================ # 1. Installation Link **Here is the link for installation SKYVVA Patch Version 2.44.12** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9E](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9E) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9E](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jP9E) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Bug Fixed Slug: 2-bug-fixed-26 URL: https://help.skyvva.com/#article/2-bug-fixed-26 ================================================================================ # 2. Bug Fixed #### Missing minimum occurrence in generating MetaData There is an error that occurred while generating WSDL 1.1 and XSD metadata as the old way is missing minimum occurrence which is cause problem in SAP PI. We have an additional minOccurs="0" attribute on those elements () and (). This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 7-patch-v2-45-7-1-installation-link URL: https://help.skyvva.com/#article/7-patch-v2-45-7-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.45.7.** - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jPLg](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jPLg) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jPLg](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jPLg) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 3. Bug Fixed Slug: 3-bug-fixed-18 URL: https://help.skyvva.com/#article/3-bug-fixed-18 ================================================================================ # 3. Bug Fixed #### Import the XML Function There is an error that occurred while importing the message type is missing the attribute fields. #### No Data available for outbound processing In the sharing setting in salesforce, users can access only their records. Therefore, they cannot execute callout on other user's records because the record cannot visible to the current user. This issue has been fixed. The setting without sharing in apexes class breaks salesforce setting, now users can access the records that are not shared to them. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: patch-1-installation-link URL: https://help.skyvva.com/#article/patch-1-installation-link ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA official Version 2.46.1:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuxN](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuxN) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuxN](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuxN) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Warning Slug: patch-2-warning URL: https://help.skyvva.com/#article/patch-2-warning ================================================================================ # 2. Warning #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the top listing title. **– Added several picklists of UsageType in IMapping Object** Please follow the link for adding those picklist values [#article/1-warning](#article/1-warning) is in the second list of the second title section. You need to add more picklist values of the type **UsageType **in the **IMapping **object on this release. Please added the picklist values below: - REST_Service - REST_Request - REST_Response_Body **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning ](#article/1-warning). You need to add more picklist values of the type **record Type **in the **Interface control runtime **object on this release. Please added the picklist values below: - Agent V3 Integration Scheduler - Agent V3 Interface Group Scheduler, - Agent V3 Interface Scheduler - Agent V3 LogEntry **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. New Feature Slug: patch-3-new-feature URL: https://help.skyvva.com/#article/patch-3-new-feature ================================================================================ # 3. New Feature #### Added Agent SAP ERP adapters of new Agent We have been added the Agent SAP ERP adapter. It is a new feature like the existing SAP ERP adapter. However, It has more power than the SAP ERP adapter. It can invoke the local API, and it is responsible to make the connection inside your enterprise. If you want to invoke with internet zone, you will only open the firewall for the new Agent. Therefore, you will not open your business application to be accessible through the internet. It will keep your business application was safe and secure. #### Enhanced Agent Soap adapter In the previous release, the Soap is not processing with the copy note function. Therefore we have enhanced Agent Soap Adapter to supported copy note that you can use the data inside the same sObject that occurs multiple times. #### Allow GET and DELETE Operation to pass request body The customers have their own custom API that passes the request body with GET and DELETE API method. Therefore, we have enhanced to support all operations such as POST, GET, PUT, PATCH, and DELETE operation that allows passing the request body of JSON payload. #### Enhanced SAP BAPI adapter to support different client id In the previous version, the SAP BAPI adapter can be route only default. The endpoint structure is “[Host Url]:[Port]/[SAPID]/sap/bc/soap/rfc”. Therefore, we have enhanced it to “[Host Url]:[Port]/[SAPID]/sap/bc/soap/rfc?sap-client=[client]” in order to route to different default sap client. For example: http://195.201.104.232:16080/sapid7/sap/bc/soap/rfc?sap-client=820. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 4. Bug Fixed Slug: patch-4-bug-fixed URL: https://help.skyvva.com/#article/patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Fixed Agent Rest Adapter There are three options to set the URL Parameter of the Rest template such as Apex code, mapping, and adapter. However, we got the error while the URL Parameter is not able to retrieve the value from apex code and mapping. This issue has been fixed. #### Cannot create the new repository and message type - There is an error in the sequence number of the repository. You cannot create the new repository while the old one has the null value of the sequence number. This issue has been fixed. - Fixed issue not able to create the new message type while the old message type has the null value of level. #### Not support an array in the Request JSON payload of Rest Adapter There is an error that occurred while the JSON payload contains an array[]. For example: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] [ { "Id":"string", "Name":"string", "BillingCity":"string", "BillingCountry":"string", "BillingCountryCode":"string", "BillingPostalCode":"string", "BillingStreet":"string", "OrganizationId":"string", "OrganizationName":"string" } ] [/aux_code] We fixed it by adding “IsArray” inside the REST adapter. If the users select checkbox IsAarray, it will support the JSON Payload example above. #### Missing minimum occurrence in generating MetaData There is an error that occurred while generating WSDL 1.1 and XSD metadata as the old way is missing minimum occurrence which is cause problem in SAP PI. We have an additional minOccurs=”0″ attribute on those elements () and (). This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Warning Slug: 2-warning-12 URL: https://help.skyvva.com/#article/2-warning-12 ================================================================================ # 2. Warning **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding this picklist: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning ](#article/1-warning). After you added "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 2-48-2-patch-1-installation-link-2 URL: https://help.skyvva.com/#article/2-48-2-patch-1-installation-link-2 ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA official Version 2.46.2:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuyB](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuyB) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuyB](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuyB) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Warning Slug: 2-48-2-patch-2-warning URL: https://help.skyvva.com/#article/2-48-2-patch-2-warning ================================================================================ # 2. Warning #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **-Add picklist values of the Type field in the AgentSetting object.** Here are the picklist values to be added manually: Agent Microsoft Dynamics 365 xx Agent Microsoft Dynamics AX xx Agent Microsoft Dynamics NAV Agent SAP All-in-One Agent SAP Business One Agent SAP S/4 HANA Agent SAP ERP Agent Pulsar Agent Kafka Agent Soap Agent Rest Agent Database Agent File - To be able to add those picklist values. You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “**AgentSetting**” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the “**Type**” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2020/12/ClickToAddedPicklist.png) - Fill API name  in the box and click the save button ![](../images/2020/12/AddedThePicklist.png) - Finally, we will get the type picklist values as the screenshot below. ![](../images/2020/12/AfterCreatePicklist.png) **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **– Added several picklists of UsageType in IMapping Object** Please follow the link for adding those picklist values [#article/1-warning](#article/1-warning) is in the second list of the second title section. You need to add more picklist values of the type **UsageType **in the **IMapping **object on the release version 2.46. Please added the picklist values below: - REST_Service - REST_Request - REST_Response_Body **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning ](#article/1-warning). You need to add more picklist values of the type **record Type **in the **Interface control runtime **object on the release version 2.46. Please added the picklist values below: - Agent V3 Integration Scheduler - Agent V3 Interface Group Scheduler - Agent V3 Interface Scheduler - Agent V3 LogEntry **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. New Feature Slug: 3-new-feature-6 URL: https://help.skyvva.com/#article/3-new-feature-6 ================================================================================ # 3. New Feature #### Changed Rest template message type of Agent Rest adapter We have been enhanced the message type of the Agent rest adapter. Therefore the business response payload will be under the message type response of the rest template. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 4. Bug Fixed Slug: 4-bug-fixed-10 URL: https://help.skyvva.com/#article/4-bug-fixed-10 ================================================================================ # 4. Bug Fixed #### Fixed Fault Response of Agent SAP ERP adapter The Agent SAP ERP adapter is not working properly on the fault response. This issue has been fixed. Currently, the Agent SAP ERP adapter handled only a fault response. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 3-patch-v2-46-3-1-installation-link URL: https://help.skyvva.com/#article/3-patch-v2-46-3-1-installation-link ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA official Version 2.46.3:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuyV](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuyV) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuyV](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZuyV) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Warning Slug: 2-warning-13 URL: https://help.skyvva.com/#article/2-warning-13 ================================================================================ # 2. Warning #### Spinner does not stop after mapping tool page loading We would like to warn you that the spinner does not stop after mapping tool page loading because of the permission to access. To be able to use this mapping tool you have to manually assign all SKYVVA permission for the current user. Please follow the steps below: - You can click “**Setup**” on the top of the **interface page**. - In the “**Quick Search Find**” box type the word “**Permission Sets**” - On the left side of the page, you will the **panel** select **Permission Sets** - Click the SkyvvaAllPermissions of Permission Set Label - Click Manage Assignments and then Add Assignments. - Select the checkboxes next to the names of the users you want to be assigned to the permission set, click Assign, and click done. Finally, the user will be able to process all SKYVVA Integration Cloud apps. ![](../images/2021/01/AssignPermissionSet.png) #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Add picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning ](#article/1-warning). After you added "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. Bug Fixed Slug: 3-bug-fixed-19 URL: https://help.skyvva.com/#article/3-bug-fixed-19 ================================================================================ # 3. Bug Fixed #### The message without any comment This error happened when the SKYVVA process builder sends records while you edited or updated the records without the SKYVVA license key. Therefore, it will create a new message without any comment. This issue has been fixed. #### Fixed a few issue on the message monitoring - There is an error that occurred while the Delete all function did not delete on API messages, which deleted more than one thousand messages. This is issue has been fixed. - Fixed cancel function does not cancel the pending, failed, and new messages while the cancel function calls the batch apex processing. - Fixed filtering message has got an error while the filter on all interface stays the last section that mixed with the other interface. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 4-patch-v2-46-4-1-installation-link URL: https://help.skyvva.com/#article/4-patch-v2-46-4-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA official Version 2.46.4:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zuzd](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zuzd) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zuzd](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zuzd) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Warning Slug: 2-warning-14 URL: https://help.skyvva.com/#article/2-warning-14 ================================================================================ # 2. Warning #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Add picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. You need to add more picklist values of the type field in the message type object on this release. Please added the picklist values below: - SAP Function - SAP Function Request - SAP Function Response **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning ](#article/1-warning). After you added "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. Bug Fixed Slug: 3-bug-fixed-20 URL: https://help.skyvva.com/#article/3-bug-fixed-20 ================================================================================ # 3. Bug Fixed #### Cannot cancel API message Fixed the cancel all function did not cancel API messages while the messages have cancelled more than a thousand messages. #### Getting error while created the scheduler of New Agent This error happened when you want to create the scheduler for the new agent in order to use to integrate data of inbound and outbound processing. This error has fixed. #### SAP message type structure We have bug fixing on the SAP message type structure. #### SAP IDOC Configuration Fixed some issues on the IDOC configuration tab on the agent and sap control board. #### Not able to reprocess the message on the message details page Fixed message cannot reprocess in the message detail page, because the message reprocessing could not read the status property. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 2-46-5-1-patch-installation-link URL: https://help.skyvva.com/#article/2-46-5-1-patch-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA official Version 2.46.5:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv15](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv15) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv15](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv15) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Warning Slug: 2-warning-15 URL: https://help.skyvva.com/#article/2-warning-15 ================================================================================ # 2. Warning #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Add picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. You need to add more picklist values of the type field in the message type object on this release. Please added the picklist values below: - SAP Function - SAP Function Request - SAP Function Response **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning ](#article/1-warning). After you added "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 4. Bug Fixed Slug: 4-bug-fixed-11 URL: https://help.skyvva.com/#article/4-bug-fixed-11 ================================================================================ # 4. Bug Fixed #### Fixed various issues regarding Agent Rest Adapter - The fixing issue does not update the API message correctly. For example, the users have requested callout with the Agent Rest Adapter. The record has been sent already. However, the messages are still new on the API message. - Fixed handling inbound with rest template of async processing. **Fixed a few issues regarding Agent cache** - Fixed agent cache was not pushing cache through push-button while it connected Agent SAP ERP adapter. - There is an error that occurred while the agent cache has the interface using workflow. After you save the mapping, then the status cache of the workflow will be red. This error has been fixed. - Fixed cache pushing error while update interface group on the interface. **Fixed various issues on the mapping tool** - There are four relationships as Parent, Context, Ghost, and Uncle. We fixed to generate especially twice "Parent_Context" relationships.  It did not remove old relations when you are doing a formula that has these four relations. - When you do mapping, if you set "Filter condition" on that field, we will generate Source_path with "_TargetFieldName" at the end. It is not clear the "Filter condition" value while you remove mapping or set "Filter Condition" by accident. - Fixed another minor bug on mapping. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. New Feature Slug: 3-new-feature-7 URL: https://help.skyvva.com/#article/3-new-feature-7 ================================================================================ # 3. New Feature #### Enhanced mapping tool to set filters condition of Context Level We have enhanced the existing set filters condition of context level by changing from the node to the field level of the node. You can map and create the set filter function of the source to the multi-target fields. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 6-patch-v2-46-6-1-installation-link URL: https://help.skyvva.com/#article/6-patch-v2-46-6-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA official Version 2.46.6:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv2m](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv2m) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv2m](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv2m) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Warning Slug: 2-warning-16 URL: https://help.skyvva.com/#article/2-warning-16 ================================================================================ # 2. Warning #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **-Added a picklist value of the ****Additional Message Statuses to Delete**** field in Integration** In general, each type of picklist requires to set up in the field & the Relationships of the interface. It’s a custom field. Here is the picklist value to be added manually: Partial Complete Follow the following instruction to create a picklist value to the “Additional Message Statues to Detete field” field in the “Integration” object. - You can click the setting icon on the top right side page, then select “Setup”. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “Integration” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the “Additional Message Statuses to Delete” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find value is already there, so to add the new picklist just click the “New” button. ![](../images/2021/02/ClickNewButtonToCreatePartialCompleted.png) - Fill Init Operation value’s API name “Partial Completed” in the box and click save button. ![](../images/2021/02/SaveThePickListValue.png) - Finally, you will get this picklist value in the Values section of the “Additional Message Statuses to Delete” ![](../images/2021/02/AfterCreatePartialCompleted.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this “Additional Message Statuses to Delete”. To avoid the problem please kindly add this value by check the box of the picklist value for a particular “Additional Message Statuses to Delete”.[/su_box] **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](-Add%20picklist%20values%20of%20the%20Type%20field%20in%20the%20AgentSetting%20object.%20%20Please%20follow%20the%20link%20for%20adding%20these%20picklists:%20https:/apsara-consulting.com/docs/release-notes-skyvva-summer-20-v2-46/2-patch-v2-46-2/1-warning) is in the first title section. **-Added picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. You need to add more picklist values of the type field in the message type object on this release. Please added the picklist values below: - SAP Function - SAP Function Request - SAP Function Response **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning ](#article/1-warning). After you added "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. New Feature Slug: 3-new-feature-8 URL: https://help.skyvva.com/#article/3-new-feature-8 ================================================================================ # 3. New Feature #### Enhanced mapping tool to set filters condition of Context Level We have enhanced the existing set filters condition of context-level by changing from the node to the field level of the node. You can map and create the set filter function of the source to the multi-target fields. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 4. Bug Fixed Slug: 4-bug-fixed-12 URL: https://help.skyvva.com/#article/4-bug-fixed-12 ================================================================================ # 4. Bug Fixed #### Mapping is not generated correct sub-interface with outbound processing There is an error that occurred while we have mapped the source to the multiple-target node in the mapping tool of the outbound interface. Therefore, It will generate the wrong payload after we have a callout. This issue has been fixed. #### CDATE Formula is not working with a year ending from Number 01 to 09 This error happened when the CDATA(Field Name,'m/d/y’) formula has the year ending from number 01 to 09. For example, the Field Name contains 12/18/08; thus, it will get an error as "Invalid date [12/18/08] with format [m/d/y]". This error has been fixed. #### Fixed status business message under API Message of REST and SOAP adapter The business message statuses will display wrong while it has the API message to cover the business message. We have fixed this issue by changing the parent of the business message from Partial Completed to Completed. #### The message type field entries are missing after importing There is an error that occurred while importing the MetaData provider is missed the message type field entries. Therefore, The external field of IStrucutrue is generated wrong. This issue has been fixed. #### Delete, Canceled, Reprocess Message function Fixed various issues related to delete, cancel and reprocess message function as following: -Manual processing in Message Monitoring, Message Detail Page, and Scheduler processing - Fixed the reprocessing API Message on the Message Monitoring and Message Detail Page. - Fixed Delete child Messages that have “Partial Completed” status. The child message that allows deleting is Completed and Canceled. - Fixed cancel child messages that have parent message is “Partial Completed”. The child message that allows canceling is new, failed, pending. #### Fixed BAPI Message Type issue There was an issue BAPI message type. It was not created correctly and added "Item" message type for each message type with type "SAP Bapi Table" for direction Salesforce to SAP. #### Added invokeCalloutMode inside new SKYVVA agent JSON payload The new agent could not get value from the mode in the invokeCalloutV3 method; therefore, it will not work correctly. This issue was fixed by adding InvorkCalloutMode inside the new agent JSON payload for every new agent adapter. #### Fixed Agent cache issue We have fixed the cache when removing the adapter from an interface. Thus, it will delete caches for all outbound interfaces. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 7-patch-v2-46-7-1-installation-link URL: https://help.skyvva.com/#article/7-patch-v2-46-7-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA official Version 2.46.7:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv8b](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv8b) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv8b](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv8b) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. Warning Slug: 3-warning-3 URL: https://help.skyvva.com/#article/3-warning-3 ================================================================================ # 3. Warning #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **-Added a picklist value of the ****Additional Message Statuses to Delete**** field in Integration** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](-Add%20picklist%20values%20of%20the%20Type%20field%20in%20the%20AgentSetting%20object.%20%20Please%20follow%20the%20link%20for%20adding%20these%20picklists:%20https:/apsara-consulting.com/docs/release-notes-skyvva-summer-20-v2-46/2-patch-v2-46-2/1-warning) is in the first title section. **-Added picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. You need to add more picklist values of the type field in the message type object on this release. Please added the picklist values below: - SAP Function - SAP Function Request - SAP Function Response **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning). After you added the "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 4. Bug Fixed Slug: 4-bug-fixed-13 URL: https://help.skyvva.com/#article/4-bug-fixed-13 ================================================================================ # 4. Bug Fixed #### Change the Path URL Prefix to be an optional field in Agent SAP ERP Adapter and SAP Credential. Currently, the Path URL Prefix is a mandatory field on Agent SAP ERP Adapter and SAP Credential. Thus, sometimes it does not actually need it. Fixed changing this field to optional of Agent SAP ERP Adapter and SAP Credential. #### Not visible for some salesforce fields Our SKYVVA tool is not visible in some salesforce fields. Therefore, they are required a higher API to accessible. This issue fixed by upgrading the API to version 50. #### Fixed some issue for Agent Cache - Fixed All agent types cannot synchronous cache to h2 table that excluded Agent SAP ERP only. - Fixed display hierarchy interface related with parent interface in Cache Monitor - Fixed display adapter by Agent Destination in Cache Monitor. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Info Slug: 2-info-4 URL: https://help.skyvva.com/#article/2-info-4 ================================================================================ # 2. Info #### Change Label Name from SAPID to Path URL Prefix in Agent SAP ERP adapter and SAP Credential Configuration We have been changed the Label Name from "SAPID" to "Path URL Prefix" in Agent SAP ERP adapter and SAP Credential Configuration. #### ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 11-patch-v2-42-13-1-installation-link URL: https://help.skyvva.com/#article/11-patch-v2-42-13-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for installation SKYVVA official Version 2.42.13: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uLrk](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uLrk) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uLrk](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uLrk) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Bug Fixed Slug: 2-bug-fixed-27 URL: https://help.skyvva.com/#article/2-bug-fixed-27 ================================================================================ # 2. Bug Fixed #### Not visible for some salesforce fields Our SKYVVA tool is not visible in some salesforce fields. Therefore, they are required a higher API to accessible. This issue fixed by upgrading the API to version 50. #### CDATE Formula is not working with a year ending from Number 01 to 09 This error happened when the CDATA formula has the year ending from number 01 to 09. For example, the Field Name contains 12/18/08; thus, it will get an error as "Invalid date [12/18/08] with format [m/d/y]". This error has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 18-patch-v2-43-19-1-installation-link URL: https://help.skyvva.com/#article/18-patch-v2-43-19-1-installation-link ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA official Version 2.43.19:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQQK](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQQK) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQQK](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQQK) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Bug Fixed Slug: 2-bug-fixed-28 URL: https://help.skyvva.com/#article/2-bug-fixed-28 ================================================================================ # 2. Bug Fixed #### Not visible for some salesforce fields Our SKYVVA tool is not visible in some salesforce fields. Therefore, they are required a higher API to accessible. This issue fixed by upgrading the API to version 50. #### CDATE Formula is not working with a year ending from Number 01 to 09 This error happened when the CDATA formula has the year ending from number 01 to 09. For example, the Field Name contains 12/18/08; thus, it will get an error as "Invalid date [12/18/08] with format [m/d/y]". This error has been fixed. #### Fixed issue which ISEMAIL formula to support the domain name that contains only two or a character ISEMAIL formula function is checking whether the specified text is email or not. Fixed ISEMAIL formula for checking the domain name that contains only two or a character. i.e “[test@a2.co](mailto:test@a2.co)”. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 13-patch-v2-44-13-1-installation-link URL: https://help.skyvva.com/#article/13-patch-v2-44-13-1-installation-link ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA official Version 2.44.13:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JOda](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JOda) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JOda](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JOda) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Bug Fixed Slug: 2-bug-fixed-29 URL: https://help.skyvva.com/#article/2-bug-fixed-29 ================================================================================ # 2. Bug Fixed #### Not visible for some salesforce fields Our SKYVVA tool is not visible in some salesforce fields. Therefore, they are required a higher API to accessible. This issue fixed by upgrading the API to version 50. #### CDATE Formula is not working with a year ending from Number 01 to 09 This error happened when the CDATA formula has the year ending from number 01 to 09. For example, the Field Name contains 12/18/08; thus, it will get an error as "Invalid date [12/18/08] with format [m/d/y]". This error has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 8-patch-v2-45-8-installation-link URL: https://help.skyvva.com/#article/8-patch-v2-45-8-installation-link ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA official Version 2.45.8:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JOed](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JOed) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JOed](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JOed) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Bug Fixed Slug: 2-bug-fixed-30 URL: https://help.skyvva.com/#article/2-bug-fixed-30 ================================================================================ # 2. Bug Fixed #### Not visible for some salesforce fields Our SKYVVA tool is not visible in some salesforce fields. Therefore, they are required a higher API to accessible. This issue fixed by upgrading the API to version 50. #### CDATE Formula is not working with a year ending from Number 01 to 09 This error happened when the CDATA formula has the year ending from number 01 to 09. For example, the Field Name contains 12/18/08; thus, it will get an error as "Invalid date [12/18/08] with format [m/d/y]". This error has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 8-patch-v2-46-8-1-installation-link URL: https://help.skyvva.com/#article/8-patch-v2-46-8-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA official Version 2.46.8:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv9P](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv9P) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv9P](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv9P) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Warning Slug: 2-warning-17 URL: https://help.skyvva.com/#article/2-warning-17 ================================================================================ # 2. Warning #### Remove the set filter condition mapping records while upgrading the new release We want to warn you that you have to remove the set filter condition mapping records. Therefore, it will prevent the error on the mapping tool. The error will be effective from SKYVVA Version 2.46.5 to 2.46.7. You can remove the mapping records from the mapping tool or IMapping Section of the Interface related page. Follow the following instruction to remove mapping records in IMapping Section: - You can enter the interface page - On the interface page, you will able to see the two tab - You need to click the Related tab - You have to select the Set filter Condition mapping records of the IMapping Section - Please click the Delete button ![](../images/2021/03/DeleteIMapping.png) #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **-Added a picklist value of the ****Additional Message Statuses to Delete**** field in Integration** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](-Add%20picklist%20values%20of%20the%20Type%20field%20in%20the%20AgentSetting%20object.%20%20Please%20follow%20the%20link%20for%20adding%20these%20picklists:%20https:/apsara-consulting.com/docs/release-notes-skyvva-summer-20-v2-46/2-patch-v2-46-2/1-warning) is in the first title section. **-Added picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. You need to add more picklist values of the type field in the message type object on this release. Please added the picklist values below: - SAP Function - SAP Function Request - SAP Function Response **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning). After you added the "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. Bug Fixed Slug: 3-bug-fixed-21 URL: https://help.skyvva.com/#article/3-bug-fixed-21 ================================================================================ # 3. Bug Fixed #### Update the wrong status while reprocessing API Message by the scheduler Fixed display wrong status while the reprocessing API Message by the scheduler. For example, the parent business message is completed, after reprocessing message, it will change the status from completed to partial completed. #### Fixed a few issue for Agent Cache - Fixed the cache while saving the IChain Interface - Fixed the Refresh button on cache monitoring #### The child message is not processing while the parent message is completed Fixed the child message is not processing. This error happened when the child message has the external id as text area datatype. Therefore, It will not process and keep still new message status. #### Fixed display background screen issue We got some display background screen problems such as Batch, Bulk, and CDC Control Board. This issue fixed by changing from salesforce standard to custom screen. #### Message Monitoring get an error while users click the Search button The message monitoring gets an error while users click the Search button that has a huge outbound API Message. It could not filter large Outbound API Messages due to the query limit. This issue has been fixed. #### Not clear old values selected on screen for Import SAP MetaData This is an error that occurred while users switch to select from “Direct SAP Connection” to “SAP connection through the Agent” or from “SAP connection through the Agent” to “Direct SAP Connection” that it does not clear the old values selected on-screen of import SAP MetaData. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 9-patch-v2-46-9-1-installation-link URL: https://help.skyvva.com/#article/9-patch-v2-46-9-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA official Version 2.46.9:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv9o](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv9o) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv9o](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zv9o) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Warning Slug: 2-warning-18 URL: https://help.skyvva.com/#article/2-warning-18 ================================================================================ # 2. Warning #### Remove the set filter condition mapping records while upgrading the new release We want to warn you that you have to remove the set filter condition mapping records. Therefore, it will prevent the error on the mapping tool. The error will be effective from SKYVVA Version 2.46.5 to 2.46.7. You can remove the mapping records from the mapping tool or IMapping Section of the Interface related page. Follow the following instruction to remove mapping records in IMapping Section: - You can enter the interface page - On the interface page, you will able to see the two tab - You need to click the Related tab - You have to select the Set filter Condition mapping records of the IMapping Section - Please click the Delete button ![](../images/2021/03/DeleteIMapping.png) #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **-Added a picklist value of the ****Additional Message Statuses to Delete**** field in Integration** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](-Add%20picklist%20values%20of%20the%20Type%20field%20in%20the%20AgentSetting%20object.%20%20Please%20follow%20the%20link%20for%20adding%20these%20picklists:%20https:/apsara-consulting.com/docs/release-notes-skyvva-summer-20-v2-46/2-patch-v2-46-2/1-warning) is in the first title section. **-Added picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. You need to add more picklist values of the type field in the message type object on this release. Please added the picklist values below: - SAP Function - SAP Function Request - SAP Function Response **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning). After you added the "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. Bug Fixed Slug: 2-bug-fixed-31 URL: https://help.skyvva.com/#article/2-bug-fixed-31 ================================================================================ # 3. Bug Fixed #### Fixed some minor issues regarding generating metadata as the old way - Convert all type of IStructure to string in generating as the old way (WSDL 1.1 and XSD) - Reverse some parts of WSDL 1.1 lightning like the classic UI generating. #### Not allowed doing next step while the type field is not selected There is an error that occurred while saving the agent setting. The type field is required, but we can continue to do the next step while we do not select it. This issue has been fixed. #### Fixed a few bug on mapping - Fixed not generating value after applying the set filter. - Missing target field in filter path. - Generate the wrong path while applying set context level. #### Fixed a few Cache on mapping - Fixed not displaying correctly on Cache Monitor while the property blank in cache_status object. - Fixed error is not refreshing old value selected in rebuild cache transport after push. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 1-patch-v2-47-1 URL: https://help.skyvva.com/#article/1-patch-v2-47-1 ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA Patch Version 2.47.1:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQpm](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQpm) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQpm](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQpm) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Info Slug: 1-info URL: https://help.skyvva.com/#article/1-info ================================================================================ # 2. Info #### Rename property name of Agent File Adapter We have been changed property name from “file header” to  “file has no header” of Agent File Adapter. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 3. Warning Slug: 2-warning-19 URL: https://help.skyvva.com/#article/2-warning-19 ================================================================================ # 3. Warning #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Added a picklist value of the ****Additional Message Statuses to Delete**** field in Integration** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Added picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. You need to add more picklist values of the type field in the message type object on this release. Please added the picklist values below: - SAP Function - SAP Function Request - SAP Function Response **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning). After you added the "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Please ignore some part that you have done it already in the previous version.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 4. New Feature Slug: 3-new-feature-9 URL: https://help.skyvva.com/#article/3-new-feature-9 ================================================================================ # 4. New Feature #### Enhanced Agent File adapter to convert the text file’s content encoding We have enhanced the Agent File adapter to auto covert the source encoding UTF-8 before sending it to Salesforce. Therefore we do not need to change the source encoding file manually anymore. #### Allow the set filter function on the Uncle and Brother/Sister relationship We have been enhanced the set filter function to the Uncle and Brother/sister relationship. ** ** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 5. Bug Fixed Slug: 4-bug-fixed-14 URL: https://help.skyvva.com/#article/4-bug-fixed-14 ================================================================================ # 5. Bug Fixed #### The mapping generates the wrong query on the Database Query Fixed generating wrong query table name of Database Query field while the mapping has third level mapping. #### Not allowed doing next step while the type field is not selected There is an error that occurred while saving the agent setting. The type field is required, but we can continue to do the next step while we do not select it. This issue has been fixed. #### The messages are wrong while sending data is completed of SAP PI/PO adapter There is an error that occurred while we were callout V3 processing with SAP PI/PO adapter. The message generated failed when the records reached the target system. This issue fixed by generating a message completed while the status code from 200 to 299. #### Fixed set context level on mapping Fixed generate the wrong relationship on a set context level that equal to the parent level. For example, the mapping path will generate to Reference Field Uncle instead of Reference Field Parent And Above. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 10-patch-v2-46-10-1-installation-link URL: https://help.skyvva.com/#article/10-patch-v2-46-10-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA official Version 2.46.10:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvHA](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvHA) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvHA](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvHA) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Warning Slug: 2-warning-20 URL: https://help.skyvva.com/#article/2-warning-20 ================================================================================ # 2. Warning #### Remove the set filter condition mapping records while upgrading the new release We want to warn you that you have to remove the set filter condition mapping records. Therefore, it will prevent the error on the mapping tool. The error will be effective from SKYVVA Version 2.46.5 to 2.46.7. You can remove the mapping records from the mapping tool or IMapping Section of the Interface related page. Follow the following instruction to remove mapping records in IMapping Section: - You can enter the interface page - On the interface page, you will able to see the two tab - You need to click the Related tab - You have to select the Set filter Condition mapping records of the IMapping Section - Please click the Delete button ![](../images/2021/03/DeleteIMapping.png) #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **-Added a picklist value of the ****Additional Message Statuses to Delete**** field in Integration** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](-Add%20picklist%20values%20of%20the%20Type%20field%20in%20the%20AgentSetting%20object.%20%20Please%20follow%20the%20link%20for%20adding%20these%20picklists:%20https:/apsara-consulting.com/docs/release-notes-skyvva-summer-20-v2-46/2-patch-v2-46-2/1-warning) is in the first title section. **-Added picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. You need to add more picklist values of the type field in the message type object on this release. Please added the picklist values below: - SAP Function - SAP Function Request - SAP Function Response **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning). After you added the "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. New Feature Slug: 3-new-feature-10 URL: https://help.skyvva.com/#article/3-new-feature-10 ================================================================================ # 3. New Feature #### Allow the set filter function on the Uncle and Brother/Sister relationship We have been enhanced the set filter function to the Uncle and Brother/sister relationship. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 4. Bug Fixed Slug: 4-bug-fixed-15 URL: https://help.skyvva.com/#article/4-bug-fixed-15 ================================================================================ # 4. Bug Fixed #### Fixed a few bug on mapping - Fixed generating the wrong relationship on a set context level that equal to the parent level. For example, the mapping path will generate to Reference Field Uncle instead of Reference Field Parent And Above. - There is an error that occurred while the mapping has been generating the wrong source and target. Therefore the outbound processing is not working correctly. This issue has been fixed. #### Fixed several bugs on Agent Cache - Fixed changing flow for deleted, pushed, and synchronize cache. - Add alert message "The connection destination name from interface[interface id] is a difference." regarding the linking interface with different connection destinations issue by using Rebuild Cache After Transport. - Fixed InterfaceGroup records not able to update existing records while the user process Rebuild Cache after Transport. - Fixed cannot filter scheduler while choosing a name on scheduler type. - Fixed cannot delete interface cache record while the integration has deleted. - Fixed cannot update the old IMapping and IChain cache record while the existing interface has been imported. - Fixed cannot synchronize the workflow cache record while interface added the adapter. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 19-patch-v2-43-20-1-installation-link URL: https://help.skyvva.com/#article/19-patch-v2-43-20-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.43.20.** - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQp8](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQp8) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQp8](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FQp8) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Warning Slug: 2-warning-21 URL: https://help.skyvva.com/#article/2-warning-21 ================================================================================ # 2. Warning #### Adding a picklist value while upgrading the new release To prevent some errors while users use this picklist, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all this picklist include in the package. To be able to use that picklist you need to manually add them. In general, each type of picklist requires to set up in Fields & Relationships of the interface. It’s a custom field. **- Added "Delete + Upsert" picklist value of Init Operation field in IChained Interfaces object. ** - To be able to add these picklist values. You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “**IChained Interfaces**” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “**Field & Relationship**” field. - You can search the “**Init Operation**” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2021/04/ClickNewtoCreateNewPicklist.png) - Fill API name  in the box and click the save button ![](../images/2021/04/FillAPIName.png) - Finally, we will get the **Init Operation** picklist value as the screenshot below. ![](../images/2021/04/FinallyWeGetThePicklist.png) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 3. Feature Slug: 3-feature-6 URL: https://help.skyvva.com/#article/3-feature-6 ================================================================================ # 3. Feature #### Added new “Delete + Upsert” Init Operation of IChain We have added a new feature “Delete + Upsert” init Operation of **IChained Interfaces**. This feature will be allowed to delete, insert and update child records. - Delete non-incoming records. - Update existing incoming records. There are two ways to update the records. It updates child records in existing parents or updates another parent. For example, Account.A takes all children and inserts them into the current parent. Then insert Account.B that has the same child as a previous parent (Account.A), so it will update and move the child records to AccountB. - Insert incoming child records that do not have existing. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 2-patch-v2-47-2 URL: https://help.skyvva.com/#article/2-patch-v2-47-2 ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.47.2** - Dev Edition: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QS8Z](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QS8Z) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QS8Z](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QS8Z) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Warning Slug: 1-warning URL: https://help.skyvva.com/#article/1-warning ================================================================================ # 1. Warning #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **- Added "Delete + Upsert" picklist value of Init Operation field in IChained Interfaces object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first section of the second title. **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Added a picklist value of the ****Additional Message Statuses to Delete**** field in Integration** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Added picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. You need to add more picklist values of the type field in the message type object on this release. Please added the picklist values below: - SAP Function - SAP Function Request - SAP Function Response **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning). After you added the "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Please ignore some part that you have done it already in the previous version.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 3. New Feature Slug: 2-new-feature-2 URL: https://help.skyvva.com/#article/2-new-feature-2 ================================================================================ # 3. New Feature #### Added new “Delete + Upsert” Init Operation of IChain Interfaces We have added a new feature “Delete + Upsert” init Operation of **IChained Interfaces**. This feature will be allowed to delete, insert and update child records. - Delete non-incoming records. - Update existing incoming records. There are two ways to update the records. It updates child records in existing parents or updates another parent. For example, Account.A takes all children and inserts them into the current parent. Then insert Account.B that has the same child as a previous parent (Account.A), so it will update and move the child records to AccountB. - Insert incoming child records that do not have existing. #### Added Remove Connection after Refresh Button on Configuration Tab of New Agent Control Board We have added the “Remove Connection after Refresh” button on the Configuration Tab of the New Agent Control Board. This button will remove all connection and cache records on the salesforce side after system refresh. #### The New Data Loader will be able to export JSON data payload We have added JSON in Data Type format for exporting JSON data payload from New Data Loader. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 4. Bug Fixed Slug: 3-bug-fixed-22 URL: https://help.skyvva.com/#article/3-bug-fixed-22 ================================================================================ # 4. Bug Fixed #### Fixed several bugs on Agent Cache - Fixed changing flow for deleted, pushed, and synchronize cache. - Add alert message "The connection destination name from interface[interface id] is a difference." regarding the linking interface with different connection destinations issue by using Rebuild Cache After Transport. - Fixed InterfaceGroup records not able to update existing records while the user process Rebuild Cache after Transport. - Fixed cannot filter scheduler while choosing a name on scheduler type. - Fixed cannot delete interface cache record while the integration has deleted. - Fixed cannot update the old IMapping and IChain cache record while the existing interface has been imported. - Fixed cannot synchronize the workflow cache record while interface added the adapter. - Fixed and changed the new flow of the “Rebuild cache after system refresh” button to working smoothly. #### No Data available for custom outbound processing In the sharing setting in salesforce, users can access only their records. Therefore they cannot execute callout on other user’s records. There is an error that occurred while you uses custom processing in the outbound interface with sharing keywords of our class. This issue was fixed by changing from with sharing to without sharing of GisOdbgIntegration class. The setting without sharing in apex class breaks the salesforce setting, and now you can access the records that are not sharing with them. #### Not allow creating all adapter type while using different agent type of New agent There is an error that occurred while creating the adapter that is not the same agent type as the new agent. This issue has been fixed. #### Fixed various issues in Data Loader - Fixed not allow the XML file that is not a correct file format. It will alert the message error ”File Error: Please check the content of the file and below are the error details. It will alert message error “Parser Error: This page contains the following errors: error on line [] at column []: Opening and ending tag mismatch: Name line [] and AccountTest Below is a rendering of the page up to the first error.” - Fixed not allow the CSV file that is not the correct file format. It will alert message error "Unable to parse CSV: Not well-format: header number[] does not match record cells[]" - Fixed not allow to upload CSV with the wrong separator. It will alert the message error "Incorrect separator with the file please check." - Fixed not allow the user to upload the wrong file type in the data loader. It will alert the message error “Invalid File Type”. #### The messages are wrong while sending data is completed of SAP CPI adapter There is an error that occurred while we were callout V3 processing with the SAP CPI adapter. The message generated failed when the records reached the target system. This issue fixed by generating a message completed while the status code from 200 to 299. #### The message status is getting wrong while it has the external id as textarea data type There is an error that occurred while we have map external id field as textarea data type. The message status will display wrong when the records pushed. This error fixed by setting the status to failed. #### Fixed Automatically assigned Source/Target Message type of SAP Function Fixed MessageType is not automatically assigned while using **SAP Function** based on the interface type. There are two directions as inbound and outbound. - When the Inbound Interface chooses the messageType of SAP Function type, **the SAP Function ****Request **will be assigned automatically into **Source/Target** Message Type. - When the outbound Interface chooses the messageType of **SAP Function type**, the** SAP Function ****Response **will be assigned automatically into **Source/Target** Message Type. #### Fixed a few bug on mapping - Fixed generating the wrong relationship on a set context level that equal to the parent level. For example, the mapping path will generate to Reference Field Uncle instead of Reference Field Parent And Above. - There is an error that occurred while the mapping has been generating the interface name on the outbound interface to source and target. Therefore and outbound processing is not working correctly. This issue has been fixed. #### Fixed a few bugs on the Upload file of the Bulk Control Board - There is an error that occurred while the browse button did not select another file the second time. Therefore it gets the unexpected error. This issue has fixed by changing the old aura component(Browse) to the new aura component(Upload Files). - We have added the validation on uploading the file in Bulk processing of the Bulk control board. For example, the user uploads the v2/v3 processing file, so the interface must be v2/v3 processing. Otherwise, it will get an alert message error “This file is not support with this Interface”. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 11-patch-v2-46-11-1-installation-link URL: https://help.skyvva.com/#article/11-patch-v2-46-11-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA official Version 2.46.11:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvHF](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvHF) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvHF](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvHF) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Warning Slug: 2-warning-22 URL: https://help.skyvva.com/#article/2-warning-22 ================================================================================ # 2. Warning #### Remove the set filter condition mapping records while upgrading the new release We want to warn you that you have to remove the set filter condition mapping records. Therefore, it will prevent the error on the mapping tool. The error will be effective from SKYVVA Version 2.46.5 to 2.46.7. You can remove the mapping records from the mapping tool or IMapping Section of the Interface related page. Follow the following instruction to remove mapping records in IMapping Section: - You can enter the interface page - On the interface page, you will able to see the two tab - You need to click the Related tab - You have to select the Set filter Condition mapping records of the IMapping Section - Please click the Delete button ![](../images/2021/03/DeleteIMapping.png) #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **- Added "Delete + Upsert" picklist value of Init Operation field in IChained Interfaces object. ** - To be able to add these picklist values. You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “**IChained Interfaces**” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “**Field & Relationship**” field. - You can search the “**Init Operation**” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2021/04/ClickNewtoCreateNewPicklist.png) - Fill API name  in the box and click the save button ![](../images/2021/04/FillAPIName.png) - Finally, we will get the **Init Operation** picklist value as the screenshot below. ![](../images/2021/04/FinallyWeGetThePicklist.png) **- Added "Delete + Upsert" picklist value of Init Operation field in IChained Interfaces object. ** - To be able to add these picklist values. You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “**IChained Interfaces**” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “**Field & Relationship**” field. - You can search the “**Init Operation**” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2021/04/ClickNewtoCreateNewPicklist.png) - Fill API name  in the box and click the save button ![](../images/2021/04/FillAPIName.png) - Finally, we will get the **Init Operation** picklist value as the screenshot below. ![](../images/2021/04/FinallyWeGetThePicklist.png) **-Added a picklist value of the ****Additional Message Statuses to Delete**** field in Integration** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](-Add%20picklist%20values%20of%20the%20Type%20field%20in%20the%20AgentSetting%20object.%20%20Please%20follow%20the%20link%20for%20adding%20these%20picklists:%20https:/apsara-consulting.com/docs/release-notes-skyvva-summer-20-v2-46/2-patch-v2-46-2/1-warning) is in the first title section. **-Added picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. You need to add more picklist values of the type field in the message type object on this release. Please added the picklist values below: - SAP Function - SAP Function Request - SAP Function Response **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning). After you added the "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Please ignore some part that you have done it already in the previous version.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 3. New Feature Slug: 3-new-feature-11 URL: https://help.skyvva.com/#article/3-new-feature-11 ================================================================================ # 3. New Feature #### Added new “Delete + Upsert” Init Operation of IChain We have added a new feature “Delete + Upsert” init Operation of **IChained Interfaces**. This feature will be allowed to delete, insert and update child records. - Delete non-incoming records. - Update existing incoming records. There are two ways to update the records. It updates child records in existing parents or updates another parent. For example, Account.A takes all children and inserts them into the current parent. Then insert Account.B that has the same child as a previous parent (Account.A), so it will update and move the child records to AccountB. - Insert incoming child records that do not have existing. #### Added Remove Connection after Refresh Button on Configuration Tab of New Agent Control Board We have added the “Remove Connection after Refresh” button on the Configuration Tab of the New Agent Control Board. This button will remove all connection and cache records on the salesforce side after system refresh. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 4. Bug Fixed Slug: 4-bug-fixed-16 URL: https://help.skyvva.com/#article/4-bug-fixed-16 ================================================================================ # 4. Bug Fixed #### Fixed an issue for Agent Cache Fixed and changed the new flow of the “Rebuild cache after system refresh” button to working smoothly. #### Not allow creating all adapter type while using different agent type of New agent There is an error that occurred while creating the adapter that is not the same agent type as a new agent. This issue has been fixed. #### The messages are wrong while sending data is completed of SAP CPI adapter There is an error that occurred while we were callout V3 processing with the SAP CPI adapter. The message generated failed when the records reached the target system. This issue fixed by generating a message completed while the status code from 200 to 299. #### No Data available for custom outbound processing In the sharing setting in salesforce, users can access only their records. Therefore they cannot execute callout on other user’s records. There is an error that occurred while you uses custom processing in the outbound interface with sharing keywords of our class. This issue was fixed by changing from with sharing to without sharing of GisOdbgIntegration class. The setting without sharing in apex class breaks the salesforce setting, and now you can access the records that are not sharing with them. #### Fixed a few bugs on the Upload file of the Bulk Control Board - There is an error that occurred while the browse button did not select another file the second time. Therefore it gets the unexpected error. This issue has fixed by changing the old aura component(Browse) to the new aura component(Upload Files). - We have added the validation on uploading the file in Bulk processing of the Bulk control board. For example, the user uploads the v2/v3 processing file, so the interface must be v2/v3 processing. Otherwise, it will get an alert message error “This file is not support with this Interface”. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 3-patch-v2-47-3 URL: https://help.skyvva.com/#article/3-patch-v2-47-3 ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.47.3** - **Developer** Edition:  [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QS9I](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QS9I) - **Sandbox**:  [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QS9I](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QS9I) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. New Feature Slug: 1-new-feature URL: https://help.skyvva.com/#article/1-new-feature ================================================================================ # 2. New Feature #### Enhance the SKYYVA V4 API to support the request payload CSV file format. - Now our V4/integrate rest variant supports JSON and XML as well as CSV format therefore it is possible to pass the Rest envelope XML or JSON or csv to the body of the v4/integrate. This means that for invoking the skyvva API we use only the rest variant ../services/apexrest/skyvvasolutions/v4/Integrate with either XML or JSON  or CSV payload. - In the URL of V4 API, the query parameter is added in URL only. > ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 3. Bug Fixed Slug: 2-bug-fixed-32 URL: https://help.skyvva.com/#article/2-bug-fixed-32 ================================================================================ # 3. Bug Fixed #### Fixed following bugs in this patch: - Raw payload not created while the message is reprocessing - DEFECT: Not generate raw logging payload while callout is failed on Sync processing mode - DEFECT: Encoding csv is not working with V3 of New agent - New Agent source encoding in Linux instance not working on SFTP protocol - Fixed Mapping issue to generation path and runtime - The issue on inbound v3 processing through the new Agent - ExecuteInterface Scheduler missing - Enable ODBC on Agent - ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 4-patch-2-47-4 URL: https://help.skyvva.com/#article/4-patch-2-47-4 ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.47.4** **- Developer Edition Org**: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSAu **- Sandbox Org**: https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSAu The patch version. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bug Fixed Slug: bug-fixed URL: https://help.skyvva.com/#article/bug-fixed ================================================================================ # 2. Bug Fixed #### Fixed following bugs in this patch: - The formula only working in the REST Response array for 1 record. - The Basket did not move, when it contains a message which is not met the Workflow condition ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 5-patch-2-47-5 URL: https://help.skyvva.com/#article/5-patch-2-47-5 ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.47.5** - **Developer** Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSAz](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSAz) - **Sandbox** Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSAz](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSAz) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. New Feature Slug: 1-new-feature-2 URL: https://help.skyvva.com/#article/1-new-feature-2 ================================================================================ # 2. New Feature #### Title: Enhanced the sap cpi and sap pi/po adapter to support old and new screen **Description**: Currently, with the sap control board, we can connect to the different sap application systems. We are mainly using this control board to build and configure the integration to the following sap application system**.** In the previous version, we enhanced the SAP cpi and SAP PI/PO to support connection destinations. Therefore those adapters have enhanced the new screen that does not include the password and username. So while the user uses the old screen and upgrades it to the new version to support the connection destination, the user is not able to update their username and password property. This enhancement will support both the old and new screens of this adapter. The old screen will render while the user selects connection destination equal **"-none-"**. The new screen will render while the user selects connection destination not equal = **"-none-"** Create connection destination for sap control board as we have done for sap business one ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 3. Bug Fixed Slug: 2-bug-fixed-33 URL: https://help.skyvva.com/#article/2-bug-fixed-33 ================================================================================ # 3. Bug Fixed #### Fixed following bugs in this patch: - Created the wrong Message while pushing file that not match the file type in file adapter. - Remove properties application/XML request format and response format when we choose protocol rest in business one Adapter.. - API Message status with adapter sap business one is wrong. - Remove SAP IDOC Configuration on SAP Control board and add System Information as the same Agent control Board. - API Message status with adapter sap business one is wrong. - Remove properties username, password, and CompanyDB on SAP business one adapter. And we need to add properties Connection destination. - Remove SAP IDOC Configuration on SAP Control board and add System Information as the same Agent control Board. - Old Agent Control Board always OFFLINE when user edit and saved adapter ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 12-patch-2-46-12-1-installation-link URL: https://help.skyvva.com/#article/12-patch-2-46-12-1-installation-link ================================================================================ # 1. Installation Link Here is SKYVVA Patch Version 2.46.12. - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvMz](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvMz) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvMz](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvMz) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 9-patch-v2-45-9-1-installation-link URL: https://help.skyvva.com/#article/9-patch-v2-45-9-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA Patch Version 2.45.9** -Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNU6](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNU6) -Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNU6](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNU6) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Bug Fixed Slug: 2-bug-fixed-34 URL: https://help.skyvva.com/#article/2-bug-fixed-34 ================================================================================ # 2. Bug Fixed #### The connection status of the old Agent Control Board always OFFLINE while the user saved adapter There is an error that occurred while the user has saved the adapter in the old agent control board. Therefore the connection status of the Old Agent Control Board always reloads to OFFLINE. This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Bug Fixed Slug: 2-bug-fixed-35 URL: https://help.skyvva.com/#article/2-bug-fixed-35 ================================================================================ # 2. Bug Fixed **This patch is released to cover following bug:** - The Basket did not move, when it contains a message which is not met the Workflow condition ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 6-patch-v2-47-6 URL: https://help.skyvva.com/#article/6-patch-v2-47-6 ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA Patch Version 2.47.6:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSBJ](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSBJ) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSBJ](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSBJ) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 13-patch-2-46-13-1-installation-link URL: https://help.skyvva.com/#article/13-patch-2-46-13-1-installation-link ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.46.13 (patch): - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvRa](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvRa) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvRa](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvRa) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 8-patch-2-47-8 URL: https://help.skyvva.com/#article/8-patch-2-47-8 ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.47.8 (patch): **- Developer Org**: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSC2](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSC2) **- Sandbox Org:** [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSC2](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSC2) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. bug Slug: 1-bug URL: https://help.skyvva.com/#article/1-bug ================================================================================ # 2. bug **Bug fixed in this patch:** - Link the sap business one business partner Id with Salesforce Account in an external field. - SAP CPI Certificate Authentication Development And Testing. - Workflow Condition: select source fields bug ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 9-patch-2-47-9 URL: https://help.skyvva.com/#article/9-patch-2-47-9 ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.47.9 (patch): - ** Developer  Org:** [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSCg](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSCg) - **Sandbox Org:** [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSCg](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSCg) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. bugs Slug: 1-bugs URL: https://help.skyvva.com/#article/1-bugs ================================================================================ # 2. bugs **Bug fixed in this patch:** - Display all status object - Add Message Monitor button on the Data Loader - Get error when import integration to other org. - Data Loader skipping on Carriage return. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 10-patch-2-47-10 URL: https://help.skyvva.com/#article/10-patch-2-47-10 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.10 (patch):** - Developer Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSDU](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSDU) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSDU](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSDU) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. bugs Slug: 1-bugs-2 URL: https://help.skyvva.com/#article/1-bugs-2 ================================================================================ # 2. bugs List of bugs released in this patch: - Data Loader skipping on Carriage return - Provide No Authentication option in Rest And Soap Adapter - Can't import Adapter when the value of the Adapter's Property is Too Large ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Patch V2.47.11 Slug: 11-patch-v2-47-11 URL: https://help.skyvva.com/#article/11-patch-v2-47-11 ================================================================================ # 1. Patch V2.47.11 **Here is the SKYVVA Version 2.47.11 (patch):** **-** **Developer Org** : [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFG](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFG) **- Sandbox Org**: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFG](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFG) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 14-patch-2-46-14-installation-link URL: https://help.skyvva.com/#article/14-patch-2-46-14-installation-link ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.46.14 (patch):** **- Developer Edition Org**: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvSE](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvSE) - **Sandbox Org:** [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvSE](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002ZvSE) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Bugs Fixed Slug: 2-bugs-fixed URL: https://help.skyvva.com/#article/2-bugs-fixed ================================================================================ # 2. Bugs Fixed **Bug**: ### Problem in mapping tool when data mapping table select interface name for target object ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 15-patch-2-46-15-1-installation-link URL: https://help.skyvva.com/#article/15-patch-2-46-15-1-installation-link ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.46.15 (patch):** - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zva4](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zva4) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zva4](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002Zva4) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Bugs Fixed Slug: 1-bugs-3 URL: https://help.skyvva.com/#article/1-bugs-3 ================================================================================ # 2. Bugs Fixed ### Bugs: ### - Export Mapping Bug **-Skyvva error not visible in CPI** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 12-patch-2-47-12 URL: https://help.skyvva.com/#article/12-patch-2-47-12 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.12 (patch):** - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFL](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFL) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFL](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFL) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 13-patch-2-47-13 URL: https://help.skyvva.com/#article/13-patch-2-47-13 ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.47.13 (patch): - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFf](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFf) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFf](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSFf) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 14-patch-2-47-14 URL: https://help.skyvva.com/#article/14-patch-2-47-14 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.14 (patch):** - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003feui](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003feui) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003feui](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003feui) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 15-patch-2-47-15 URL: https://help.skyvva.com/#article/15-patch-2-47-15 ================================================================================ # 1. Installation Link - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fevb](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fevb) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fevb](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fevb) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 16-patch-2-47-16 URL: https://help.skyvva.com/#article/16-patch-2-47-16 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.16 (patch):** - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSUg](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSUg) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSUg](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSUg) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 17-patch-2-47-17 URL: https://help.skyvva.com/#article/17-patch-2-47-17 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.17 (patch):** **- Developer Edition Org**: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSVo](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSVo) **- Sandbox Org:** [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSVo](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSVo) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Info Slug: 2-48-1-patch-2-info URL: https://help.skyvva.com/#article/2-48-1-patch-2-info ================================================================================ # 2. Info **Replace attachment by file for batch and bulk processing:** ### Cleaning up first pending basket processing before upgrade to v 2.48 **Before you can use this version all the basket in the batch control board and all attachments in the bulk control board has to be processed with the old version. Because we change the processing format the new code is not able to process the old basket and attachment anymore.** There is a big changes regarding the batch and bulk processing. We have make some changes to the screen and also to the processing. For example for the bulk we now use the batch object to link to the contentVersion and we don’t process the contentVersion or Attachment object directly anymore. Instead we are processing the baskets which are linked to the contentVersion. Note that from this version 2.48 we don’t use the old attachment anymore. We use only the contentVersion sObject  to store the business data. The counting has been redesign due to a governor limit error in the old logic while trying to count the number of records in the basket. The new logic solve this issue.  ### ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Warning Slug: 2-48-1-patch-2-warning URL: https://help.skyvva.com/#article/2-48-1-patch-2-warning ================================================================================ # 3. Warning **For each release, we have a chapter 'Warning' to describe the special caution of this version. ** Replace attachment by file for batch and bulk processing:  Before you can use this version all the basket in the batch control board and all attachments in the bulk control board has to be processed with the old version. Because we change the processing format the new code is not able to process the old basket and attachment anymore. There is a big change regarding batch and bulk processing. We have made some changes to the screen and also to the processing. For example for the bulk, we now use the batch object to link to the content version and we don’t process the content version or Attachment object directly anymore. Instead, we are processing the baskets which are linked to the content version. Note that from this version 2.48 we don’t use the old attachment anymore. We use only the content version subject  to store the business data. Batch Processing Make sure that you don’t have any item in this screen section. All baskets has to be processed with the old version before upgrading to version 2.48! Bulk Processing Make sure that you don’t have any item in this screen section. All files has to be processed with the old version before upgrading to the version 2.48! New Picklist Value added: Two new picklist values on the interface have to be added. The users who want to use this function must add the new picklist manually to the relevant object as below:- add a new picklist for Operation Type on the object Interface, the name is " **Create Custom Message** "- add a new picklist for Message Type on the object Message, the name is " **Custom Message** "Support from V2.48 and later. But this type of Message is not ignored for reprocessing yet. We just create an Inbound Interface with the operation "Create Custom Message" then push data. We can use the Interface V2 or V3. ** ** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 18-patch-2-47-18 URL: https://help.skyvva.com/#article/18-patch-2-47-18 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.18 (patch):** **- Developer Edition Org:** [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXB](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXB) **- Sandbox Org**: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXB](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXB) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 19-patch-2-47-19 URL: https://help.skyvva.com/#article/19-patch-2-47-19 ================================================================================ # 1. Installation Link **Here is the SKYVVA patch Version 2.47.19 :** - **Developer Edition Org**: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXL](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXL) **- Sandbox Org:** [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXL](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXL) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]If you are installing into a sandbox organization you must replace the initial portion of the URL with http://test.salesforce.com[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bug Slug: 1-bug-2 URL: https://help.skyvva.com/#article/1-bug-2 ================================================================================ # 2. Bug **When Message Status is Failed or Pending Skyvva sends the Code 500 Server Error:** a new parameter is added called 'http_error_status' that you can use in the API query parameter to set the behavior of how you want to have the HTTP response code in your client. The possible values are 'Failed', 'Pending', 'Partial Completed'. You can set for example all 3 or only 1 or two. In this example &http_error_status =Failed, Pending, Partial Completed it means that want to get the HTTP status code 500 internal error when the message status is 'Failed', 'Pending', or 'Partial Completed'. When you set like this &http_error_status =Failed, Pending then it means that you want only to get the HTTP status code 500 when the message status is 'Pending', or 'Failed' but not 'Partial Completed'. In case the message has the status 'Partial Completed' you will get the HTTP 200 OK. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. New Feature Slug: 2-48-1-patch-3-new-feature URL: https://help.skyvva.com/#article/2-48-1-patch-3-new-feature ================================================================================ # 4. New Feature ### Adapter Microsoft Dynamics NAV The Microsoft Dynamic NAV adapter is defined in the Microsoft Control Board. This means that the on-cloud and on-premise variant that doesn’t use the agent as the middleware is defined in the Microsoft Control Board. When the Agent should be used as the middleware for the on-premise deployment for Dynamics 365 xx, NAV, and AX then we are using the Agent Control Board and the Agent Microsoft Dynamics 365xx, NAV, and AX adapter from there. Microsoft Dynamics NAV Server supports a range of different client types. - Direct connection from Salesforce to NAV - Indirect connection from skyvva to NAV through the Agent. ### Adapter SAP Business One In Skyvva, we have a new feature to send out data from Salesforce to SAP Business one client application by using SAP business one adapter. This adapter has worked with different SAP business modules such as Business Partner, Sale, Purchasing, and many modules in Sap Business One. This section will show how to use SAP Business One Adapter. To use this Adapter we need to have SAP Business one connection destination and we need to generate SAP Business One Message Type. This Adapter supports Dynamic URLs, PATH Parameter, QueryParamenter, and multiple operations such as POST, GET, PATCH, DELETE. SAP Business One Adapter is used for Request and Response processing by using SAP business one Message type. ### Transactional processing Transactional mode is a flag that we can set as true or false. “IsTransactional__c=true” Means that when a node has failed then it will roll back the whole tree. There are two modes: - Transactional Mode - ­­­­­­-Non-Transactional Mode Transactional Mode : When the Transactional Mode flag is ON, and a node failed then it will roll back the whole tree. Let’s take an example, We have three level messages account, contact, and asset Non-Transactional Mode: In case of non-transactional message failed whole tree message is not working Let’s take an example of Non-transactional,  we have three level messages account, contact, asset when asset failed account and Contact will saw pending. This will convert: - Handle complex objects as a logical unit - Post a complex object ‘All or Nothing‘ - Partial creation in Non-Transactional mode - Prevent multiple API calls for a complex object - Commit or Rollback ### Enhance the chain operation to a new value 'Delete + Upsert' The feature with our inti operation for the chained interface is to handle the deletion of a child from the sending system. There are different init-operation for the chained interface as per the condition. If we want to use this operation, we need to edit Init Operation in Ichain Interface ### Google Drive connector Google Drive is a cloud storage service that allows users to save files and access them from anywhere. From SKYVVA v2.48, we have the capability to allow the users to back up their data directly from Salesforce to keep on Google Drive. Besides sending data to google drive we can also read data from Google drive back to Salesforce. The user can transform their data to any file format such as CSV, XML, or JSON. They can save their data to Google Drive manually or automatically from our Control Board. ### Microsoft OneDrive connector This adapter will help to store and protect your files, share them with others, and get to them from anywhere on all your devices. This adapter will be used to create CSV, EXCEL, XML, and JSON files inside the Microsoft one drive folder. Here we need to create Microsoft account, Azure account and tanent. ### Dropbox connector Dropbox is a file hosting service, often referred to as a “cloud storage” service. Dropbox is one of the oldest and most popular cloud storage services in use today, though there are many alternatives, including Microsoft OneDrive, Box, Sync, and Google Drive. This adapter will be used to create CSV, EXCEL, XML, and JSON files inside the dropbox drive folder. ### Enhance v4/integrate API to support CSV Our V4/integrate rest variant supports JSON, XML, and CSV therefore it is possible to pass the Rest envelope XML or JSON or CSV to the body of the v4/integrate. This means that for invoking the skyvva API we use only the rest variant../services/apexrest/skyvvasolutions/v4/Integrate with either XML or JSON or CSV payload. In the URL of V4 API, the query parameter is added in URL only. We have two types of response: 1. standard response 2. response using the response (outbound) interface to do the mapping ### Enhance the interface execution scheduler to handle response handling and create a group scheduler : When the interface with mode = Synchronous to process the response in apex future, queueable and batch. This means that the outbound will link to an inbound interface and the interface mode = Synchronous. In this case, an outbound execution interface scheduler is created to also process asynchronous interface. We already have the scheduler created on the interface level e.g. for each outbound interface with the interface mode = Asynchronous a scheduler will be created. Now We have the same scheduler on the interface group level. The scheduler executes all interfaces one after the other based on the interface group sequence which the user defined while they add the interface into a group. ### Add a new operation 'Create New Message' for the inbound API We have to add a new picklist value ‘Create Custom Message’ as the Operation type.. The message can be any payload format like Text, CSV, XML, JSON, or binary. The user just wants to configure on the interface a new operation mode like 'Create New Message'. We get the raw message and we create the message with the status 'New'. Then we stop the processing. On the interface sObject add “Create Custom Message“ to the existing picklist for the field “Operation Type“. This new operation type allows the user to create a so-called custom message that will not be processed by the Sykvva processing engine. The data is just stored as a message in the Skyvva message layer and your custom apex code is to use to process the message. On the message sObject add a new picklist value “Custom Message“. This is the new category of the message that indicates our processing engine not to process it with our standard logic. The customer wants to have his own custom logic to process the message. ### Supporting for the Data Loader to support json additional to CSV and XML format. SKYVVA´s Dataloader is a native Salesforce App and is designed to integrate data supporting CSV/XML format via a manual file upload. It is simple, intuitive, and powerful to build integration in minutes. It is a Config&Click graphical mapping tool. Skyvva data loader is used to upsert, insert, update, delete, or export Salesforce records. Data Loader is running in Bulk mode. If we want to send data to email, we can check the flag batch mode. But to use this mode we need to make sure that we have library SKYVVA__Workspace. If not go to create it. ### New fields on the interface to define the field for the Transaction Id and System External Id. We need only to add two new parameters e.g. 'TransactionId' and 'SystemExternalId'. The transfer Id we hard assign with the SAP-PO message. In the parameter 'TransactionId' and 'SystemExternalId' the user needs to specify a field name from the XML payload that he wants to use as the transaction id. He has to specify the full path to the field so that we can fetch the value by using the full path. The responsibility is at the user side to use only fields that contain a unique value for the transaction or the system external Id. For example when the SAP-PO message contains an idoc then the idoc number can be used as the system external Id. Then the user has to specify the field + full path where to read the idoc number. Note in SAP-PO mapping we have mapped already the idoc-xml (source) to the Salesforce XML (target) and therefore our module will get the target field name. The user has to specify the target field name where he has mapped the idoc number and the full path. For the transaction Id, the user can set the field from the target payload (after the sap-pi mapping) as well if needed. But in most cases, we don't need to specify the transaction Id because it is generated inside Skyvva automatically. But if it is needed then he can specify the transaction If from a unique key value from the target payload. ### New picklist value on the REST adapter to choose if the Salesforce Id is to be put into the response or not. Add new field property on the Rest Adapter. The type of this field is picklist. This field property is optional. The default value is None: we always return the Salesforce Id back in the response the User needs the Response to create a new record on Salesforce, We can do operation Update or Delete base on Salesforce Id. Then it will create a new record from the response due to some cases, the response can be a list and then the User needs to create a new record. ### Enhance the and batch and bulk processing to limit the number of files that we select to process in a scheduler run. There are big changes regarding batch and bulk processing. We have made some changes to the screen and also to the processing. For example, for the bulk, we now use the batch object to link to the content version and we don’t process the content version or Attachment object directly anymore. Instead, we are processing the baskets which are linked to the content version. Note that from this version 2.48 we don’t use the old attachment anymore. We use only the content version sObject to store the business data. The counting has been redesigned due to a governor limit error in the old logic while trying to count the number of records in the basket. The new logic solves this issue. ### HTTP header field in the adapter become a multi-line In all adapters where you can set the http header fields, we have changed from a single line to a text area. Before you have to separate the different http header parameters by a semicolon. With the new version, you have to use a new line to separate each http header parameter. If you have used the old version with the single line option you have to replace the semicolon with a new line. If you don‘t make this change the http header parameter will not work with the associated adapter. ### Old field SKYVVA_EXTERNAL_ID__c change to new filed skyvvasolutions__system_external_id__c In the previous version, we have used the field ‘skyvvasolutions__SKYVVA_EXTERNAL_ID__c‘ to store the so-called system external id. A system external id is for example the sap idoc number or the SAP-PO message number. This Id can be transferred to Skyvva to use for search in the monitoring. Due to some conflict, we have changed this field not to use for this purpose anymore. We are using the new field ‘skyvvasolutions__system_external_id__c‘. Our own client as for example the Agent, SAP and SAP-PO Connector we have changed. But if you are using our API with this old field you have to change to use the new field ‘skyvvasolutions__system_external_id__c‘ instead of the old field ‘skyvvasolutions__SKYVVA_EXTERNAL_ID__c‘. If your client doesn‘t use our API then there is no impact on your side. ### Process Builder/Flow Invokes Apex To Create Change Pointer/Execute Outbound Interface Version 3 Flow executes SKYVVA apex to create change pointer. We provide the possibility to invoke **SKYVVA** Api to create changed pointer or process outbound interface from  Flow (record triggered flow). User must have an outbound interface and check flag *Use **SKYVVA Outbound Scheduler*** on that interface. Process Builder is used to create CP record and show in CDC Control Board using invoke callout3(). Like flow, we must have outbound interface and check flag “Use Skyvva Outbound Scheduler” on that interface ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 5. Bugs Slug: 2-48-1-patch-4-bugs URL: https://help.skyvva.com/#article/2-48-1-patch-4-bugs ================================================================================ # 5. Bugs #### Bugs - Cannot use Query Parameter Properties. - SOQL query is not deleted or changed by Deleting or changing in mapping - Can skyvva be used to salesforce backup to google drive - Problem with saving Agent Setting - DEFECT: Allow to upload CSV wrong data payload in Data Loader - DEFECT: Allow to upload wrong xml data payload in Data Loader - DEFECT: The message status is getting wrong - CPI Adapter XSD and Payload Issue - SAP CPI adapter (Message monitoring issue) - Status Code 202 - Delete all children and then insert again all the children that is in the payload - DEFECT: Raw payload not created while the message is reprocessing - DEFECT: Encoding csv is not working with V3 of New agent - New Agent source encoding in Linux instance not working on SFTP protocol - ExecuteInterface Scheduler missing - The formula only working in REST Response array for 1 record - Skyvva Invoke Callout not working with GET Interface and dynamic values - DEFECT: Created the wrong Message while pushing file that did not match the file type in file adapter - Remove properties application/XML request format and response format when we choose protocol rest in business one Adapter. - API Message status with adapter sap business one is wrong. - Remove SAP IDOC Configuration on SAP Control board and add System Information as the same Agent control Board. - Existing interface throwing error by saving the mapping - Export Metadata Provider to Other Org has problem heap size with many Metadata. - Manual Data Loader is Skipping Data. - Skyvva issue on import. - Update from 2.46.3 to 2.47.2: Error in JSON interface. ** ** ** ** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. bugs Slug: 1-bugs-4 URL: https://help.skyvva.com/#article/1-bugs-4 ================================================================================ # 2. bugs ### - ExecuteInterface Scheduler missing ### - Order item substructure missed in mapping ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. bug Slug: 1-bug-3 URL: https://help.skyvva.com/#article/1-bug-3 ================================================================================ # 2. bug ### Bug List: ### - New webservice integrate3X:X() ### - Issue in Mapping for Skyva Interface 'GULP_2_PDB_TO_SF' ### -Bug Fixing And Add New Feature in REST Adapter ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bugs Slug: 1-bugs-5 URL: https://help.skyvva.com/#article/1-bugs-5 ================================================================================ # 2. Bugs **Bug List:** - **New version V4 of API IntegrateWithIMessage** - **Issue to transfer Interfaces between Orgs** - **Fixed Issue in JSON generation class for REST Adapter** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bugs Slug: 1-bugs-6 URL: https://help.skyvva.com/#article/1-bugs-6 ================================================================================ # 2. Bugs **Bug List:** - **bulk control board - search or refresh throws error: heap size too large** - **Provide body data in form-data, x-www-form-urlencoded, raw format When auth2.0 access token is expired.** - **Make the validation of External Id and Required field on mapping tool** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bugs Slug: 1-bugs-7 URL: https://help.skyvva.com/#article/1-bugs-7 ================================================================================ # 2. Bugs **Bug List:** - **RE: iWorkflows Issue** - **Add new field property "Salesforce Id Handling" to Adapter** - **Issue on Basket deletion on Batch Control Board** - **Requirement changes on existing functionality** - **We need to click on integration to open integration detail in Message monitor for Data Loader** - **Missing mode NEW with XML and JSON file type on Agent File outbound direction** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bugs Slug: 1-bugs-8 URL: https://help.skyvva.com/#article/1-bugs-8 ================================================================================ # 2. Bugs **Bug List:** - **Response all Salesforce Id back to client-side in V3 response** - **XSD and WSDL generation issues in Skyvva official version 2.47.9** - **Batch mode respond nothing** - **Bug: HasChild__c=true flag is true for inbound sObject message but it is not contain child messages.** - **Bug: HasChild__c=true flag is true for inbound sObject message but it is not contain child messages.** - **Problem on root Message with V3 IMessage API** **Getting error when we specify the wrong path in Skyvva external Id and Transaction Id** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bugs Slug: 1-bugs-9 URL: https://help.skyvva.com/#article/1-bugs-9 ================================================================================ # 2. Bugs **Bug List** - **v3/integrate soap api through the Agent** - **Update from 2.46.3 to 2.47.2: Error in the interface using "Interface to change condition"** - **Bulk scheduler: Query of LOB fields caused heap usage to exceed the limit** - **Workflow condition has a problem when we select Source field** - **BatchProcess Scheduler can't process with to much basket** - **The problem in mapping tool when data mapping table select interface name for the target object** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 20-patch-2-47-20 URL: https://help.skyvva.com/#article/20-patch-2-47-20 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.20 (patch):** - **Developer Edition Org:** [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXf](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXf) - **Sandbox Org:** [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXf](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSXf) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bug Slug: 1-bug-4 URL: https://help.skyvva.com/#article/1-bug-4 ================================================================================ # 2. Bug ### Bug List: #### DML limit at IServiceBatchCallOut This error was rising at the last step of reprocessing. when the processing try to delete MessageQueue and clear emptyRecycleBin. ### Lease Migration This bug regards the header columns having double quotes that skyvva data loader has not supported.CSV header contain white space inside a double quote. ### Error while importing interfaces This is a bug that happens when creating an interface group manually that didn't generate external value to make it unique, so when we try to export and import will create one more interface group, but creating an interface group from import function is having external value. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 21-patch-2-47-21 URL: https://help.skyvva.com/#article/21-patch-2-47-21 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.21 (patch) official:** **- Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSa0](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSa0) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSa0](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSa0)** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bug Slug: 1-bug-5 URL: https://help.skyvva.com/#article/1-bug-5 ================================================================================ # 2. Bug #### Cannot use Query Parameter Properties - Query/PATH Parameters are different, this issue is about PATH Parameter that has been manage incorrect template. - The template must be correct case i.e. X.URL.PATH Parameter.paramx that is implemented for other adapters (REST template), not X.URL.Path Parameter.paramx. #### Completed messages created despite setting - By creating an interface with custom apex class (Custom processing) and checked flag **<** **Delete completed Message but Keep Other >**, the completed message were not deleted. It is a bug in apex module of handling interface with apex class #### Dynamic Header, Dynamic Query Parameter and Dynamic Path Parameter issue Here fix with **Old Way: (key and value both are replacing)** to **New Way: (replacing only value key is static when we are using dynamic query and header parameter).** - **Adapter Property****Header : **authorizationCodeValue is coming from the mapping. Replacing only value in apex side base on mapping - **REST URL Query Parameter:** Field Value is coming from the mapping. Replacing only value in apex side base on mapping #### SKYVVA Callout in batchable context - That is a bug while updating the message failed message. - Fixing issue of updating message record while doing integration. #### Issues with DataLoader - condition__c and condition2__c before we view on screen condition__c and now we view and condition2__c problem with **client** set new value to old field. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 16-patch-2-46-16-1-installation-link URL: https://help.skyvva.com/#article/16-patch-2-46-16-1-installation-link ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.46.16 (patch):** - Developer Edition Org:  [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSV0](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSV0) - Sandbox Org:  [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSV0](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSV0) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Bugs Fixed Slug: 2-bugs-fixed-2 URL: https://help.skyvva.com/#article/2-bugs-fixed-2 ================================================================================ # 2. Bugs Fixed - #### Export Mapping Bug - #### Export Import Failed ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 22-patch-2-47-22 URL: https://help.skyvva.com/#article/22-patch-2-47-22 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.22 (patch) official:** **-** **Developer Edition Org:** [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSaF](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSaF) **- Sandbox Org:** [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSaF](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSaF) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bugs Slug: 1-bugs-10 URL: https://help.skyvva.com/#article/1-bugs-10 ================================================================================ # 2. Bugs **Bugs** **1. **Create quick find field in interface tab **2. **Missing skyvvasolutions in APEX Trigger generation **3. **Technical issue with data loader ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Bugs Slug: 2-48-2-patch-2-bugs URL: https://help.skyvva.com/#article/2-48-2-patch-2-bugs ================================================================================ # 2. Bugs #### Bugs - Fix some issues on the redesign of Batch and Bulk processing - Add new picklist value to message type - Batch Basket did not move to History Basket after processed - The issue with field type Double ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 23-patch-2-47-23 URL: https://help.skyvva.com/#article/23-patch-2-47-23 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.23(patch) official:** **- Developer Edition Org:**  [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSg8](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSg8) **- Sandbox Org: ** [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSg8](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSg8) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bugs Slug: 1-bugs-11 URL: https://help.skyvva.com/#article/1-bugs-11 ================================================================================ # 2. Bugs ## Bugs #### 1. Handling the external and hybrid mapping without using a message type ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 24-patch-2-47-24 URL: https://help.skyvva.com/#article/24-patch-2-47-24 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.24 (patch):** **- Developer Edition Org:** [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgI](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgI) **- Sandbox Org: **[https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgI](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgI) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bugs Slug: 1-bugs-12 URL: https://help.skyvva.com/#article/1-bugs-12 ================================================================================ # 2. Bugs Bugs ### Not allow execute callout when statue of interface is Development Execute callout that interface is working while its status is development it is not correct with the behavior of our function. So we do not allow to execute callout data when the status of the interface is in development. The issue occurs on the V3 side with adapter **SAP CPI and SAP PI/PO** In the V2 we can understand the error when the interface development. ### Operation Type is changing by mapping change The operation type is changing in child interfaces when we change something on the mapping. ### Search by the Business External Id also in the outbound message. For new enhancement, the BUSINESS EXTERNAL ID on message monitoring will show the external id value when the user checks the flag external id in the mapping of the Outbound interface. ### Update the name of the metadata provider ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 17-patch-2-46-17-1-installation-link URL: https://help.skyvva.com/#article/17-patch-2-46-17-1-installation-link ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.46.17 (patch):** - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSzY](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSzY) - Sandbox Org:[ https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSzY](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QSzY) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Bugs Fixed Slug: 2-bugs URL: https://help.skyvva.com/#article/2-bugs ================================================================================ # 2. Bugs Fixed BUGS ### Errors when we try to open Skyvva messages Not able any more to display Skyvva messages. We get errors even if we have quite restrictive filter values. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 25-patch-2-47-25 URL: https://help.skyvva.com/#article/25-patch-2-47-25 ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.47.25 (patch): - Developer Edition Org:  [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgX](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgX) - Sandbox Org:  [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgX](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgX) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bugs Slug: 1-bugs-13 URL: https://help.skyvva.com/#article/1-bugs-13 ================================================================================ # 2. Bugs ### 1. ### Skyvva Dataloader replace user business data from white space to underscore We have a bug on Dataloader, when the business data contain with white space at the end then it replace to underscore. For our standard behavior did not change user business data. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: patch-v2-47-7 URL: https://help.skyvva.com/#article/patch-v2-47-7 ================================================================================ # 1. Installation Link ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-3-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-3-patch-1-installation-link ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.48.3: **- Developer Edition Org:** https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPTd **- Sandbox Org:** https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPTd The patch version. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3.Bugs Slug: 2-48-3-patch-3-bugs URL: https://help.skyvva.com/#article/2-48-3-patch-3-bugs ================================================================================ # 3.Bugs ### Bugs 1] Handling the external and hybrid mapping without using a message type. 2] Mapping is not delete child node after message type unlink from interface. 3] Not allow execute callout when statue of interface is Development. 4] Check Validation type of MessageType and don't generate outbound sub interface when we map same source SObject. 5] Formula ISEMAIL not working fully correct. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. New features Slug: 2-48-3-patch-4-new-features URL: https://help.skyvva.com/#article/2-48-3-patch-4-new-features ================================================================================ # 4. New features ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Warnings Slug: 2-48-3-patch-2-warnings URL: https://help.skyvva.com/#article/2-48-3-patch-2-warnings ================================================================================ # 2. Warnings ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-4-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-4-patch-1-installation-link ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.48.4:** **- Developer Edition Org:** https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPUW **- Sandbox Org:** https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPUW The patch version. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Bugs Slug: 2-48-4-patch-2-bugs URL: https://help.skyvva.com/#article/2-48-4-patch-2-bugs ================================================================================ # 2. Bugs **Bugs** **1]** SOQL statement not generate when Interface set custom processing. **2] **Build & test new SOAP interface. **3] **Json Structure and Handle SF Id issues. **4] **REST Adapter Screen Changes. **5]** Rest Adapter generate wrong payload and fixed body is containing header, path and url and query parameter keyword. **6]** Api v3/IntegrateWithIMessage to create imessages in skyvva. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: version-2-48-1-patch-1-installation-link URL: https://help.skyvva.com/#article/version-2-48-1-patch-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA official Version 2.48.1** - Developer Edition Org:** [https://login.salesforce.com/packaging/installPackage.apexp?0=04t0o000003JPQo ](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPQo)** - Sandbox Org:** [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPQo ](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPQo)** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: version-2-48-2-patch-1-installation-link URL: https://help.skyvva.com/#article/version-2-48-2-patch-1-installation-link ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.48.2 (patch):** - Developer Edition Org: **[https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPSL](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPSL)** - Sandbox Org:** [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPSL](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPSL)** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-5-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-5-patch-1-installation-link ================================================================================ # 1. Installation Link **Here is the URL installation link Skyvva patch version 2.48.5.** - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPVP](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPVP) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPVP](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPVP) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bugs Slug: 2-48-5-patch-3-bugs URL: https://help.skyvva.com/#article/2-48-5-patch-3-bugs ================================================================================ # 3. Bugs **1} Inbound custom processing class is not working for child interface.** **2} Outbound Adapter - Add Certificate to each outbound call to SAP** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. New Feature Slug: 2-48-5-patch-4-new-feature URL: https://help.skyvva.com/#article/2-48-5-patch-4-new-feature ================================================================================ # 4. New Feature ### Api v3/IntegrateWithIMessage to create imessages in skyvva - We need this api with the same function as the skyvva Salesforce API v3/IntegrateWithIMessage. This API creates messages with the skyvva json format. We need to use this API from SAP and other clients. The name of the API is ../v3/IntegrateWithIMessage and has the same parameter as the v4/integrate e.g. we have the integration, interface name, mode, instance URL in the query parameter. In the body, we have only the json payload which contains the skyvva json data. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Warnings Slug: 2-48-5-patch-2-warnings URL: https://help.skyvva.com/#article/2-48-5-patch-2-warnings ================================================================================ # 2. Warnings --- #### Adding two new picklist values when upgrading the new release of SKYVVA To prevent some errors while users use those picklist , SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklist include in the package. To be able to use those picklist you need to manually add them . Added picklist on **“Message Type”** field on **“Message” **object: -API Request Message -API Response Message - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “Message” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the “Message Type” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2022/10/2.47.261-1.png) Fill value’s API name in the box and click the save button. ![](../images/2022/10/2.47263.png) Finally, we will get the “**API Request Message and API Response Message**” type picklist value as the screenshot below. ![](../images/2022/10/2.47.26.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Message Type field. To avoid the problem please kindly add those values by checking the box of the picklist value for a particular Message Type.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-6-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-6-patch-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for install SKYVVA official Version 2.48.6** - Developer Edition Org - https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPVe - Sandbox Org -http://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPVe ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Bugs Slug: 2-48-6-patch-2-bugs URL: https://help.skyvva.com/#article/2-48-6-patch-2-bugs ================================================================================ # 2. Bugs ### 1} JSON data is not coming correctly -    Null value for json generation as the default behavior. Before it was e.g. empty "string "when the field has no data. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-7-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-7-patch-1-installation-link ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.48.7:** - Developer Edition Org:  https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPVj - Sandbox Org:  https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPVj The Official version. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bugs Slug: 2-48-7-patch-3-bugs URL: https://help.skyvva.com/#article/2-48-7-patch-3-bugs ================================================================================ # 3. Bugs ### 1} JSON data is not coming correctly There are two interfaces, both using the same "Metadata provider" and "repository" and "message type" but when I am trying to import data using a data loader, then the data is not coming correctly for one interface. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Warnings Slug: 2-48-7-patch-2-warning URL: https://help.skyvva.com/#article/2-48-7-patch-2-warning ================================================================================ # 2. Warnings 1}If picklist value is not available for Type__c field of Message object in old org then it will not work. Because we can not able to add value runtime if picklist value is not exist so we need to add picklist value API Message, API Request and API Response Message manually in old org like client org is not containing value inside Type__c field of Message object ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-8-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-8-patch-1-installation-link ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.48.8 (patch version): - Developer Edition Org: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPVy - Sandbox Org: https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPVy ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Bugs Slug: 2-48-8-patch-2-bugs URL: https://help.skyvva.com/#article/2-48-8-patch-2-bugs ================================================================================ # 2. Bugs 1}When customer upgrade version old version to v2.48.6 then it is facing below issue. System.UnexpectedException: MISSING_ARGUMENT: emptyRecycleBin called with a batch of 0 ids to delete; must specify at least 1 id > Deletetion message record and empty recyclebin, it has been fixed and merge the code into branch v2.48 for new patch version (2.48.8) skyvvasolutions.V3OutboundUtils.V3OutboundException: Invalid custom processing class for the interface [a0Z1p00000Yau10EAB. The class must be extended skyvvasolutions.V3OutboundStepProcessing > the interface created to execute callout old function with custom class, please execute invokeCallout, invokeCallout2 instead of invokeCalloutV3 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 26-patch-release-2-47-26 URL: https://help.skyvva.com/#article/26-patch-release-2-47-26 ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.47.26 (patch): - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgc](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgc) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgc](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSgc) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 3. Bugs Slug: 2-47-26-patch-3-bugs URL: https://help.skyvva.com/#article/2-47-26-patch-3-bugs ================================================================================ # 3. Bugs #### New QuoteJournal Interface , Multiyear errors- A new integration for quote Journals .As we had issues with cpu time as we can send arround 2000 Journals per order. So we create this to send Journals with Transfer Package Size 220. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 27-patch-release-2-47-27 URL: https://help.skyvva.com/#article/27-patch-release-2-47-27 ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.47.27 (patch): - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSl4](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSl4) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSl4](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSl4) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bugs Slug: 2-47-27-patch-2-bugs URL: https://help.skyvva.com/#article/2-47-27-patch-2-bugs ================================================================================ # 2. Bugs ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 2-47-28-patch-1-installation-link URL: https://help.skyvva.com/#article/2-47-28-patch-1-installation-link ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.47.28 (patch):** - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSqi](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSqi) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSqi](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSqi) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 4. Bugs Fixed Slug: 1-bugs-fixed URL: https://help.skyvva.com/#article/1-bugs-fixed ================================================================================ # 4. Bugs Fixed #### The messages status displays incorrectly while using InvokeCalloutV3 execute with Auto Mode In the previous version, the customer implements a batch apex and executes callout with mode AUTO in the batch context in method finish. In that batch context, some messages were processed and updated their status to Green or Red, but some remained Blue due to a bug in outbound execution. This issue has been fixed.   #### Generate the wrong payload while mapping has mapped and skipped the node on the mapping of outbound There is an issue while the user has been mapped and skipped the node on mapping of outbound. Therefore, the payload generates the wrong XML/SOAP payload. This issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Bugs Slug: 2-47-25-patch-2-bugs URL: https://help.skyvva.com/#article/2-47-25-patch-2-bugs ================================================================================ # 2. Bugs ### Skyvva appending underscores during import- ![](../images/2022/10/2.47.25.png) We have a bug on Dataloader, when the business data contain with white space at the end then it replace to underscore. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-9-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-9-patch-1-installation-link ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.48.9 (patch version):** - Developer Edition Org: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPWI - Sandbox Org: https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPWI ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bug Fixed Slug: 2-48-9-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-48-9-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Getting errors while importing Metadata on the Repository There is an error that occurred on the Import Metadata function of the Repository. For example, you want to import message type to any repository with any files. Therefore, It got the message error "Cannot convert undefined or null to Object". This issue has been fixed. **** #### Cannot clone Integration a second time Fixed an issue regarding the clone integration feature while trying to clone it at the second time. The reason for getting this error because the integration name is empty to create ExtId__c of  Imapping record. #### Generate wrong payload while mapping has map skip the node on the mapping There is an issue that while the user has been mapped and skipped the node on mapping. Therefore, the payload generates the wrong xml/soap payload. This issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Warnings Slug: 2-warnings URL: https://help.skyvva.com/#article/2-warnings ================================================================================ # 2. Warnings #### Change screen for SAP PI/PO and SAP CPI  adapter We have added the connection destination to connect the SAP PI/PO and SAP CPI. Therefore, we have removed some properties on the creation screen of these adapters such as username, password, Protocol, Authentication Type, and API Service EndPoint URL. We added a connection destination configuration instead.  #### The old setting of SAP PI/PO and SAP CPI adapters are still working We would like to inform you that the old settings of SAP PI/PO and SAP CPI adapters are still working. For example, if you do not add the connection destination on these adapters, it is still working fine. If you create the new one, so you have to use the new way because the old way is not possible anymore. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 3. Features Slug: 3-features URL: https://help.skyvva.com/#article/3-features ================================================================================ # 3. Features #### Enhanced SAP Control Board to support the connection destination for SAP PI/PO and SAP CPI adapter. The connection destination is the configuration between salesforce to another system. We have enhanced the SAP control Board to support SAP PI/PO and SAP CPI adapters with connection destinations, therefore we can do manual processing via these adapters. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 29-patch-release-2-47-29-1-installation-link URL: https://help.skyvva.com/#article/29-patch-release-2-47-29-1-installation-link ================================================================================ # 1. Installation Link **Here is Installation URL SKYVVA Version 2.47.29. (Patch version)** Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSrH](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSrH) Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSrH](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSrH) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Warnings Slug: 2-47-26-patch-2-warnings URL: https://help.skyvva.com/#article/2-47-26-patch-2-warnings ================================================================================ # 2. Warnings #### Adding two new picklist values when upgrading the new release of SKYVVA To prevent some errors while users use those picklist , SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklist include in the package. To be able to use those picklist you need to manually add them . Added picklist on **"Message Type"** field on **"Message" **object: -API Request Message -API Response Message - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “Message” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the “Message Type” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2022/10/2.47.261-1.png) Fill value’s API name in the box and click the save button. ![](../images/2022/10/2.47263.png) Finally, we will get the “**API Request Message and API Response Message**” type picklist value as the screenshot below. ![](../images/2022/10/2.47.26.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Message Type field. To avoid the problem please kindly add those values by checking the box of the picklist value for a particular Message Type.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Info Slug: 2-48-9-patch-2-info URL: https://help.skyvva.com/#article/2-48-9-patch-2-info ================================================================================ # 2. Info **We have renamed the browser Tab to Interface Name while we open the interface page** We have changed the browser tab name of Interface in order to make it more understandable, and readable. This implementation has been added to the interfaceButtonDetail Component. Therefore you need to add it to the Interface record page. If you remove it from the layout, it will display the old one. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-10-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-10-patch-1-installation-link ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.48.10 (patch version): - Developer Edition Org: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXL - Sandbox Org: https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXL ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. New Features Slug: 2-48-10-patch-3-new-features URL: https://help.skyvva.com/#article/2-48-10-patch-3-new-features ================================================================================ # 3. New Features **Enhanced Ping Connection of some adapter** In the previous version, the Ping Connection has a real callout to the system. Now the ping connection has been changed. It will only check the domain URL or endpoint is reachable. This implement has been added with some adapters such as REST, Google Cloud Pub/Sub, Microsoft Dynamics NAV, Microsoft OneDrive, Microsoft Dynamics 365 xx, Microsoft Azure ESB, Amazon SNS, and Amazon Event Bridge. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. Bugs Slug: 2-48-10-patch-4-bugs URL: https://help.skyvva.com/#article/2-48-10-patch-4-bugs ================================================================================ # 4. Bugs **Getting error while saving  mapping records ** There is an error occured while saving the mapping records (message error: Upsert Failed. First exception on row 1 with id aOu8OOOO4h26BooAAI;First Error :Duplication_ Value,duplicate value found:skyvvasolutions_ExtId__c duplication value on record with id:aO8OOOO4h26Bn:[])after upgrading from the oldest version .The new version must have the values on skyyvasolutions__Full_Source_Path__c and the Full_Target_Path__c fields because they are required in the background .The issue has been fixed by generating value from skyvvasolutions_Source_Path__c and skyvvasolutions_Target_Path__c to those fieldswhile its empty. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-11-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-11-patch-1-installation-link ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.48.11 (patch version):** - Developer Edition Org: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXQ - Sandbox Org: https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXQ ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Bugs Slug: 2-48-11-patch-2-bugs URL: https://help.skyvva.com/#article/2-48-11-patch-2-bugs ================================================================================ # 2. Bugs **Option to generate the CSV header  ** When we generate the csv header, we take the order from the message type field entries. Here we have the field sequence to put the field order inside the message type. We are sending the csv header with the order as the request body in the field "CSVHeader". Based on the name and sequence of the fields, we generate the sequence of the csv header. Now there are some different requirements and situations that we need to consider. Situation 1: The order based on the mapping tool. Situation 2: The order based on the sequence of the field inside the message type. The second situation is what we have as default at the moment. If the user wants option 1, we cannot provide it. But the Data Loader works oppositely, e.g., option 1 is the default.We want to provide both options to the user. All fields we use in the message type the istructure must have a length.This issue is fixed. **Skyvva scheduler not running as scheduled** It appears that although the scheduler is set to run daily there are times when it does not run at the specified time.We have to manually stop and re-start the scheduler, which does work for a time.We manually re-run the integration (which sometimes results in heapsize errors due to volume).This issue is fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-12-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-12-patch-1-installation-link ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.48.12 (patch version): - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXa](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXa) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXa](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXa) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Info Slug: 2-48-10-patch-2-info URL: https://help.skyvva.com/#article/2-48-10-patch-2-info ================================================================================ # 2. Info **Rename the old export/import button of the Skyvva object to Backup/Restore button** To prevent user that was confused with the rename button name, therefore SKYVVA would like to inform that a button name has been renamed from “Import” to “Restore" and "Export" to "backup". There are many places to rename such as: 1. Integration Tab 2. Integration Detail Page 3. Integration of Interface page 4. Interface Details Page 5. Adapter Tab 6.  Adapter Details Page 7. MetaData Provider Tab 8. MetaData Provider Details Page 9. Repository Tab 10. Repository Details Page 11. Message Type Details Page 12. Imapping of Related Interface Page 13. IStrcuture of Related Interface Page 14. Workflows Tab on Integration page 15. Adapter in Agent Control Board 16. Adapter in SAP Control Board 17. Adapter in Google Control Board 18. Adapter in Microsoft Control Board 19. Adapter in Oracle Control Board ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Warning Slug: 2-48-12-patch-2-warnings URL: https://help.skyvva.com/#article/2-48-12-patch-2-warnings ================================================================================ # 2. Warning #### We have renamed the browser Tab to Interface Name while we open the interface page We have changed the browser tab name of Interface in order to make it more understandable, and readable. This implementation has been added to the interfaceButtonDetail Component in patch 2.48.9 and InterfaceInboundOutboundStep component in this patch. If you remove these components from interface record page layout , it will display the old one. #### Remap hybrid,external, and internal mapping While using hybrid mapping, external mapping, and internal mapping the old existing mapping that has been mapped before will be deleted automatically. Please make sure before switching from mode to mode, because you need to redo your mapping after change. #### Adding one new picklist value when upgrading the new release of SKYVVA To prevent some errors while users use that picklist, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists included in the package. To be able to use that picklist you need to manually add them. #### Added picklist on the “Status” field on the “Message” object: -Application Error - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the “Message” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the “Status” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2022/11/12.1.png) Fill value’s API name in the box and click the save button. ![](../images/2022/11/w2.48.122.png) Finally, we will get the “**Application Error ”** type picklist value as the screenshot below.![](../images/2022/11/w2.48.123.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Message Type field. To avoid the problem please kindly add those values by checking the box of the picklist value for a particular Message Type.[/su_box] #### Added picklists list below on the “Record Type” field on the “Interface Control Runtime” object: -V3 Outbound Execution -RecordCreationDate -RecordModificationDate - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the “**Interface Control Runtime**” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the “**Record Type**” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2022/11/w1.png) Fill value’s API name in the box and click the save button. ![](../images/2022/11/Screenshot-2024-03-26-at-5.15.25-pm.png) Finally, we will get the “V3 Outbound Execution", "RecordCreationDate", and "RecordModificationDate**”** type picklist values as the screenshot below. ![](../images/2022/11/Screenshot-2024-03-26-at-5.18.30-pm.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this skyvvasolutions__RecordType__c field. To avoid the problem please kindly add those values by checking the box of the picklist value for a particular skyvvasolutions__RecordType__c.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bugs Slug: 2-48-12-patch-3-bugs URL: https://help.skyvva.com/#article/2-48-12-patch-3-bugs ================================================================================ # 3. Bugs #### Getting an error while backup IMapping on interface While backup of IMapping on interface it will get an error text="" EL Expression Unbalanced: ... #{ctx.skyvvasol]]>.This issue is fixed . #### Message Structure Changes in some Adapters We have changed message structure in some adapters that are as following below V3OutboundREST V3OutboundGoogleCloudPubSub V3OutboundMicrosoftDynamicsNAV V3OutboundMicrosoftOneDrive V3OutboundRESTTest V3OutboundGoogleCloudPubSubTest V3OutboundMicrosoftDynamicsNAVTest V3OutboundMicrosoftOneDriveTest When you have a request or a response, it will be create as two Level Messages. **-The Request Message Structure** *API Request Message* *   sObject Message(Business Message)* **-The Respose Message Structure** *API Respose Message* *   sObject Message(Business Message)* **When you have request and response together it will generate three****  Level Messages:** **-The Request and Response Message Structure together** *API Message* *   API Request Message* *      sObject Message(Business Message)* *  API Response Message* *     sObject Message(Business Message)* ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 3. Bugs Slug: 2-bugs-2 URL: https://help.skyvva.com/#article/2-bugs-2 ================================================================================ # 3. Bugs #### Title: The connection destination of SAP CPI and SAP PI/PO generates the wrong username and password. There is an issue that occurred while the user save the connection destination of SAP CPI and SAP PI/PO. The username and password will be generated wrong while saving. This issue has been fixed. #### Title: Getting error while the user ping and test connection of SAP PI/PO and SAP CPI Fixed error while the user ping and test connection on the adapter detail page of SAP PI/PO and SAP CPI. #### Title: The outbound message reprocessing is not working There is an issue that occurred while the user set the scheduler to reprocess the messages. Therefore, the outbound messages have not been taken to reprocessing. This issue has been fixed. #### Title: invokeCalloutV3 Async mode does not work with transfer package size We got an error when the transfer package size does not equal one. Therefore, invokeCalloutV3 Async mode will not be working. This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-13-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-13-patch-1-installation-link ================================================================================ # 1. Installation Link Here is the SKYVVA Version 2.48.13 (patch version): - Developer Edition Org: https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXp - Sandbox Org: https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXp ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Warnings Slug: 2-48-13-patch-2-warnings URL: https://help.skyvva.com/#article/2-48-13-patch-2-warnings ================================================================================ # 2. Warnings #### Adding several new picklist values when upgrading the new release of SKYVVA To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists included in the package. To be able to use those picklists you need to manually add them. #### Added picklist on “Message Type” field on “Message” object: - Custom Message - Composite Message - Basket Message - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the “Message” object or you can search it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the Message Type” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2022/12/13.1.png) Fill value’s API name in the box and click the save button. Custom Message Composite Message Basket Message ![](../images/2022/12/13.2.png) Finally, we will get the “Custom Message,Composite Message and Basket Message**”** type picklist value as the screenshot below. ![](../images/2022/12/13.3.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Message Type field. To avoid the problem please kindly add those values by checking the box of the picklist value for a particular Message Type.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bugs Slug: 2-48-13-patch-3-bugs URL: https://help.skyvva.com/#article/2-48-13-patch-3-bugs ================================================================================ # 3. Bugs **Fixed importing JSON Schema issue** It happens when the user uploads a JSON Schema file and gets the message error: [Cannot Convert undefined or null to object]. The problem is that the Import Metadata function cannot read the JSON schema file properly. ** Fixed Message Recreate issue while do message reprocessing** This issue happened while the user callout failed, so it will create the failed message covered by API Request Message and sObject Message. Users will be reprocessing those failed messages. Therefore it will not update the original message and it will create a new message after reprocessing. This issue will reach the storage limit. This problem has been fixed. **Getting error while restore the interface or integration** There is an issue while the restore interface or integration function does not query the request field: skyvvasolutions__Interfaces__c.skyvvasolutions__MessageType__c. This issue has been fixed.  **Not able to update Outbound Interface** The users are not able to update the outbound interface, because the user has mapped the copy node. Therefore, the query did not generate the request field skyvvasolutions__IMapping__c.skyvvasolutions__Copy_Idex__c. This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-14-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-14-patch-1-installation-link ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.48.14:** **- Developer Edition Org:[https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXu](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXu)** **- Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXu](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPXu)** ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. New Feature Slug: 2-48-14-patch-4-new-feature URL: https://help.skyvva.com/#article/2-48-14-patch-4-new-feature ================================================================================ # 4. New Feature #### Auto Set MetaData, Repository, and Message Type Currently, we create the interface from the message type and will not set the Metadata provider, Repository and MessageType into Interface. Now we will provide the feature to auto-set those fields into the interface. Therefore the user does not need to link Metadata, Repository, and MessageType into Interface manually anymore. #### Allow to display more than 10k batch baskets records In the previous version, the batch baskets limit to display on 10k records. Now it will able to display more than 10k records based on the CPU time limit. #### Added Basket Message to cover the Business Message We have added the Basket Message to cover business messages in order to make a better view, check, and monitor which messages belong to which basket. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 5. Bugs Slug: 2-48-14-patch-5-bugs URL: https://help.skyvva.com/#article/2-48-14-patch-5-bugs ================================================================================ # 5. Bugs #### Not able to delete more than 1000 message records There is an error occurred when to user deleted the message including filters such as Interface Name and Comment Content and the message records are more than 1000. After you click the "Delete All" button, you will get the message error "Error line:711:unexpeced token: And". This issue has been fixed. #### Fixed various bugs in Batch Processing - **Unable to look row while pushing records to the batch basket** - The user has pushed many records to the batch basket that will get an error UNABLE_TO_LOCK_ROW. The counting logic has counted the Total Number of Batch baskets at the same time. Therefore make this issue happened. This issue has been fixed. - **Not able to display the Queue records** - Fixed display Queue records on the Queue screen of the batch control board. This issue happens while the batch basket has more than 50k records. Therefore Queue records will not query on the screen. - **Allow displaying more than 10k batch baskets records** - In the previous version, the batch baskets limit to display on 10k records. Now it will able to display more than 10k records based on the CPU time limit. - **Limit Query 50001 error after pushing records to batch basket** There is an issue that occurred while the batch baskets have more than 50k records. The user could not able to push any batch basket records. Therefore it hit the limit of 50001 queries. This issue has been fixed. #### Not able to restore SKYVVA sObject Fixed issue related to backup function, when the users back up the interface/integration will get related records mapping, chain interface, workflow, adapter, etc… into the file. The error is caused by mapping records missing some value fields skyvvasolutions__Full_Source_Path__c and skyvvasolutions__Full_Target_Path__c. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Info Slug: 2-48-14-patch-2-info URL: https://help.skyvva.com/#article/2-48-14-patch-2-info ================================================================================ # 2. Info **Renamed column "RELATED TO" the message monitor** We have renamed the column from "RELATED TO" to "SOBJECT" in order to see the sObject linked to this message. For example, if you push the Account object record, it will show the Account under SOBJECT column of the message monitor. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Warning Slug: 2-48-14-patch-3-warnings URL: https://help.skyvva.com/#article/2-48-14-patch-3-warnings ================================================================================ # 3. Warning #### Adding a few new picklist values when upgrading the new release of SKYVVA To prevent some errors while users use a picklist, **SKYVVA** wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of **SKYVVA**. However, if you install our latest release, you will have all this picklist included in the package. To be able to use this picklist you need to manually add them. - ##### Added "Basket Message" picklist on “skyvvasolutions__Message_Type__c” field on “skyvvasolutions__IMessage__c” object: You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “Message” object or you can search for it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the “Message Type” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. Some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/01/image_2023_01_17T10_35_57_426Z.png) Fill in the value’s API name in the box and click the save button. ![](../images/2023/01/image_2023_01_13T13_24_40_357Z.png) Finally, we will get the “Basket Message” picklist value as the screenshot below. ![](../images/2023/01/image_2023_01_13T13_27_24_299Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this skyvvasolutions__Message_Type__c field. To avoid the problem please kindly add those values by checking the box of the picklist value for a particular skyvvasolutions__Message_Type__c[/su_box] - ##### Added picklist "Failed" on the “skyvvasolutions__WorkflowStatusHandling__c” field on “skyvvasolutions__Interfaces__c” object: You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “skyvvasolutions__Interfaces__c” object or you can search for it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the “skyvvasolutions__WorkflowStatusHandling__c” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/01/CreateNew.png) - Fill in the value’s API name in the box and click the save button. ![](../images/2023/01/ClickSavePicklistField.png) - Please update the Label name from "Failed" to Update Message status to 'Failed' to make it more understandable. ![](../images/2023/01/ChangeLabelName.png) Finally, we will get the Failed picklist value on skyvvasolutions__WorkflowStatusHandling__c of skyvvasolutions__Interfaces__c Object as the screenshot below. ![](../images/2023/01/UpdateDone.png) --- [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this skyvvasolutions__WorkflowStatusHandling__c  field. To avoid the problem please kindly add those values by checking the box of the picklist value for a particular skyvvasolutions__WorkflowStatusHandling__c.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 1-installation-link-2-48 URL: https://help.skyvva.com/#article/1-installation-link-2-48 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.48(The official version):** - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNrN](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNrN) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNrN](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNrN) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Info Slug: 2-info-v2-48 URL: https://help.skyvva.com/#article/2-info-v2-48 ================================================================================ # 2. Info #### Replace attachment by file for batch and bulk processing: Cleaning up first pending basket processing before upgrading to v 2.48. Before you can use this version all the basket in the batch control board and all attachments in the bulk control board has to be processed with the old version. Because we change the processing format the new code is not able to process the old basket and attachment anymore. There is a big change regarding batch and bulk processing. We have made some changes to the screen and also to the processing. For example, for the bulk, we now use the batch object to link to the contentVersion and we don’t process the contentVersion or Attachment object directly anymore. Instead, we are processing the baskets which are linked to the contentVersion. Note that from this version 2.48 we don’t use the old attachment anymore. We use only the contentVersion sObject to store the business data. The counting has been redesigned due to a governor limit error in the old logic while trying to count the number of records in the basket. The new logic solves this issue. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Warning Slug: 3-warning-v2-48 URL: https://help.skyvva.com/#article/3-warning-v2-48 ================================================================================ # 3. Warning ### For each release, we have a chapter ‘Warning’ to describe the special caution of this version. ##### Replace attachment by file for batch and bulk processing: Before you can use this version all the basket in the batch control board and all attachments in the bulk control board has to be processed with the old version. Because we change the processing format the new code is not able to process the old basket and attachment anymore. There is a big change regarding batch and bulk processing. We have made some changes to the screen and also to the processing. For example for the bulk, we now use the batch object to link to the contentVersion and we don’t process the contentVersion or Attachment object directly anymore. Instead, we are processing the baskets which are linked to the contentVersion. Note that from this version 2.48 we don’t use the old attachment anymore. We use only the contentVersion sObject  to store the business data. Make sure that you don’t have any items in this screen section. All baskets have to be processed with the old version before upgrading to version 2.48! **New Picklist Value added:** Two new picklist values on the interface have to be added. The users who want to use this function must add the new picklist manually to the relevant object as below:- add a new picklist for Operation Type on the object Interface, the name is ” **Create Custom Message** “- add a new picklist for Message Type on the object Message, the name is ” **Custom Message** “Support from V2.48 and later. But this type of Message is not ignored for reprocessing yet. We just create an Inbound Interface with the operation “Create Custom Message” and then push data. We can use Interface V2 or V3. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. New Feature Slug: 4-new-feature-v2-48 URL: https://help.skyvva.com/#article/4-new-feature-v2-48 ================================================================================ # 4. New Feature ### Adapter Microsoft Dynamics NAV The Microsoft Dynamic NAV adapter is defined in the Microsoft Control Board. This means that the on-cloud and on-premise variant that doesn’t use the agent as the middleware is defined in the Microsoft Control Board. When the Agent should be used as the middleware for the on-premise deployment for Dynamics 365 xx, NAV, and AX then we are using the Agent Control Board and the Agent Microsoft Dynamics 365xx, NAV, and AX adapter from there. Microsoft Dynamics NAV Server supports a range of different client types. - Direct connection from Salesforce to NAV - Indirect connection from skyvva to NAV through the Agent. ### Adapter SAP Business One In Skyvva, we have a new feature to send out data from Salesforce to SAP Business one client application by using SAP business one adapter. This adapter has worked with different SAP business modules such as Business Partner, Sale, Purchasing, and many modules in Sap Business One. This section will show how to use SAP Business One Adapter. To use this Adapter we need to have SAP Business one connection destination and we need to generate SAP Business One Message Type. This Adapter supports Dynamic URLs, PATH Parameter, QueryParamenter, and multiple operations such as POST, GET, PATCH, DELETE. SAP Business One Adapter is used for Request and Response processing by using SAP business one Message type. ### Transactional processing Transactional mode is a flag that we can set as true or false. “IsTransactional__c=true” Means that when a node has failed then it will roll back the whole tree. There are two modes: - Transactional Mode - ­­­­­­-Non-Transactional Mode Transactional Mode : When the Transactional Mode flag is ON, and a node failed then it will roll back the whole tree. Let’s take an example, We have three level messages account, contact, and asset Non-Transactional Mode: In case of non-transactional message failed whole tree message is not working Let’s take an example of Non-transactional,  we have three level messages account, contact, asset when asset failed account and Contact will saw pending. This will convert: - Handle complex objects as a logical unit - Post a complex object ‘All or Nothing‘ - Partial creation in Non-Transactional mode - Prevent multiple API calls for a complex object - Commit or Rollback ### Enhance the chain operation to a new value 'Delete + Upsert' The feature with our inti operation for the chained interface is to handle the deletion of a child from the sending system. There are different init-operation for the chained interface as per the condition. If we want to use this operation, we need to edit Init Operation in Ichain Interface ### Google Drive connector Google Drive is a cloud storage service that allows users to save files and access them from anywhere. From SKYVVA v2.48, we have the capability to allow the users to back up their data directly from Salesforce to keep on Google Drive. Besides sending data to google drive we can also read data from Google drive back to Salesforce. The user can transform their data to any file format such as CSV, XML, or JSON. They can save their data to Google Drive manually or automatically from our Control Board. ### Microsoft OneDrive connector This adapter will help to store and protect your files, share them with others, and get to them from anywhere on all your devices. This adapter will be used to create CSV, EXCEL, XML, and JSON files inside the Microsoft one drive folder. Here we need to create Microsoft account, Azure account and tanent. ### Dropbox connector Dropbox is a file hosting service, often referred to as a “cloud storage” service. Dropbox is one of the oldest and most popular cloud storage services in use today, though there are many alternatives, including Microsoft OneDrive, Box, Sync, and Google Drive. This adapter will be used to create CSV, EXCEL, XML, and JSON files inside the dropbox drive folder. ### Enhance v4/integrate API to support CSV Our V4/integrate rest variant supports JSON, XML, and CSV therefore it is possible to pass the Rest envelope XML or JSON or CSV to the body of the v4/integrate. This means that for invoking the skyvva API we use only the rest variant../services/apexrest/skyvvasolutions/v4/Integrate with either XML or JSON or CSV payload. In the URL of V4 API, the query parameter is added in the URL only. We have two types of responses: 1. standard response 2. response using the response (outbound) interface to do the mapping ### Enhance the interface execution scheduler to handle response handling and create a group scheduler When the interface with mode = Synchronous to process the response in apex future, queueable, and batch. This means that the outbound will link to an inbound interface and the interface mode = Synchronous. In this case, an outbound execution interface scheduler is created to also process asynchronous interface. We already have the scheduler created on the interface level e.g. for each outbound interface with the interface mode = Asynchronous a scheduler will be created. Now We have the same scheduler on the interface group level. The scheduler executes all interfaces one after the other based on the interface group sequence which the user defined while they add the interface into a group. ### Added a New Operation 'Create New Message' for the inbound API We have to add a new picklist value ‘Create Custom Message’ as the Operation type.. The message can be any payload format like Text, CSV, XML, JSON, or binary. The user just wants to configure on the interface a new operation mode like ‘Create New Message’. We get the raw message and we create the message with the status ‘New’. Then we stop the processing. On the interface sObject add “Create Custom Message“ to the existing picklist for the field “Operation Type“. This new operation type allows the user to create a so-called custom message that will not be processed by the Sykvva processing engine. The data is just stored as a message in the Skyvva message layer and your custom apex code is to use to process the message. On the message sObject add a new picklist value “Custom Message“. This is the new category of the message that indicates our processing engine not to process it with our standard logic. The customer wants to have his own custom logic to process the message. ### Supporting for the Data Loader to support JSON additional to CSV and XML format SKYVVA´s Dataloader is a native Salesforce App and is designed to integrate data supporting CSV/XML format via a manual file upload. It is simple, intuitive, and powerful to build integration in minutes. It is a Config&Click graphical mapping tool. Skyvva data loader is used to upsert, insert, update, delete, or export Salesforce records. Data Loader is running in Bulk mode. If we want to send data to email, we can check the flag batch mode. But to use this mode we need to make sure that we have library SKYVVA__Workspace. If not go to create it. ### New fields on the interface to define the filed for the Transaction ID and System External Id We need only to add two new parameters e.g. ‘TransactionId’ and ‘SystemExternalId’. The transfer Id we hard assign with the SAP-PO message. In the parameter ‘TransactionId’ and ‘SystemExternalId’ the user needs to specify a field name from the XML payload that he wants to use as the transaction id. He has to specify the full path to the field so that we can fetch the value by using the full path. The responsibility is at the user side to use only fields that contain a unique value for the transaction or the system external Id. For example when the SAP-PO message contains an idoc then the idoc number can be used as the system external Id. Then the user has to specify the field + full path where to read the idoc number. Note in SAP-PO mapping we have mapped already the idoc-xml (source) to the Salesforce XML (target) and therefore our module will get the target field name. The user has to specify the target field name where he has mapped the idoc number and the full path. For the transaction Id, the user can set the field from the target payload (after the sap-pi mapping) as well if needed. But in most cases, we don’t need to specify the transaction Id because it is generated inside Skyvva automatically. But if it is needed then he can specify the transaction If from a unique key value from the target payload. ### strong>New picklist value on the REST adapter to choose if the Salesforce Id is to be put into the response or not./h3> Add new field property on the Rest Adapter. The type of this field is picklist. This field property is optional. The default value is None: we always return the Salesforce Id back in the response the User needs the Response to create a new record on Salesforce, We can do operation Update or Delete base on Salesforce Id. Then it will create a new record from the response due to some cases, the response can be a list and then the User needs to create a new record. ### strong>Enhance the and batch and bulk processing to limit the number of files that we select to process in a scheduler run. There are big changes regarding batch and bulk processing. We have made some changes to the screen and also to the processing. For example, for the bulk, we now use the batch object to link to the content version and we don’t process the content version or Attachment object directly anymore. Instead, we are processing the baskets which are linked to the content version. Note that from this version 2.48 we don’t use the old attachment anymore. We use only the content version sObject to store the business data. The counting has been redesigned due to a governor limit error in the old logic while trying to count the number of records in the basket. The new logic solves this issue. ### HTTP header field in the adapter become a multi-line In all adapters where you can set the http header fields, we have changed from a single line to a text area. Before you have to separate the different http header parameters by a semicolon. With the new version, you have to use a new line to separate each http header parameter. If you have used the old version with the single line option you have to replace the semicolon with a new line. If you don‘t make this change the http header parameter will not work with the associated adapter. ### Old field SKYVVA_EXTERNAL_ID__c change to new filed skyvvasolutions__system_external_id__c In the previous version, we have used the field ‘skyvvasolutions__SKYVVA_EXTERNAL_ID__c‘ to store the so-called system external id. A system external id is for example the sap idoc number or the SAP-PO message number. This Id can be transferred to Skyvva to use for search in the monitoring. Due to some conflict, we have changed this field not to use for this purpose anymore. We are using the new field ‘skyvvasolutions__system_external_id__c‘. Our own client as for example the Agent, SAP and SAP-PO Connector we have changed. But if you are using our API with this old field you have to change to use the new field ‘skyvvasolutions__system_external_id__c‘ instead of the old field ‘skyvvasolutions__SKYVVA_EXTERNAL_ID__c‘. If your client doesn‘t use our API then there is no impact on your side. ### Builder/Flow Invokes Apex To Create Change Pointer/Execute Outbound Interface Version 3500 <__SKYVVA__Message>Error Info - JSON: .... "__SKYVVA__Response_Code" : "200", "__SKYVVA__Message": "Success Info" ... [/su_box] [su_box title="Note" box_color="#2a8af0" title_color="#000000"] These fields cannot be repeated in response (JSON/XML)[/su_box] #### Generate a new XSD format for handling the response of V4/integrate using SAP-PO We have enhanced Generate MetaData on XSD schema file format to handle the response of V4/integrate and it will generate based on the interface configuration. There are two responses such as standard and business. #### Handling Error for the synchronous API call with fault interface We have enhanced the Error Handling fault interface feature to support many adapters with synchronous API as follows: SAP CPI, SAP PI/PO, SAP ERP, SAP S/4HANA, SAP Business One, SAP Business ByDesign, REST, SOAP, OData, Microsoft Azure ESB, Google API Gateway, Amazon API Gateway, SAP BTP API Management, Agent Rest, Agent Soap, Agent SAP ERP, Agent SAP S/4HANA, Agent Microsoft Dynamics NAV, Agent Microsoft Dynamics 365 xx, Agent Microsoft Dynamics AX xx. #### Enhance the data selection when creating the message to pass to the target interface in a workflow The mapping will able to allow the user to add the parent field and SOQL Condition on the child node in order to read data from the parent message. The idea is to allow the user to select the parent data that should be used on the target interface workflow filter to be passed through to the target interface without having to do the trick with the mapping. #### Read HTTP Header and Query Parameter fields into the message We have enhanced our inbound APIs, V3/integrate and V4/integrate, to allow users to fetch data from the HTTP header and the Query Parameter into the message. This will help to eliminate naming conflicts and provide more flexibility in reading the data. #### Set conditions for nodes that we bring up to the higher level We have added the ability to define the conditioning path by path to go from one node to the next by using the node's value. This will help users to set the context for skipped nodes more easily. #### Enhance the copy node function to allow copying element fields We have enhanced our copy node function to allow the copying of element fields as well as structure nodes. This new feature will make it easier to repeat elements with attributes many times. #### Customize the SOAP template to support custom namespaces We have added the ability to edit custom namespaces manually on the message type, IStructure, and Message Type field Entry. This will give users more control over their SOAP templates. #### Array fields of inbound and outbound JSON payload map to the multi-picklist field Currently, we cannot support the array value of fields in JSON inbound and outbound payload. Therefore, we have enhanced it to get the array values in JSON payload into the multi-picklist fields, and it also gets value from multi-picklist to JSON payload. We also added the new formula "GETVALUEBYINDEX(text, index)" to retrieve the value by index. For example, Types have Customer - Direct and Customer - Channel, and the users have the formula GETVALUEBYINDEX(Types,1). So now the users will get Customer - Channel. #### Outbound (InterfaceExecution) scheduler support with parameter expression based on Last Run Date We have added two parameter expressions such as  {!_SKYVVA__RecordCreationDate} and {!_SKYVVA__RecordModificationDate}. The {!_SKYVVA__RecordCreationDate} is used for the latest records creation datetime. {!_SKYVVA__RecordModificationDate} is used for the latest records modification datetime. It will check the last records changed to be sent by InterfaceExecution scheduler. For example, SOQL as SELECT Id FROM Account WHERE LastModifiedDate > {! _SKYVVA__RecordModificationDate}. #### Send the response asynchronously for the asynchronous inbound call using the CDT job We have enhanced the working on request (Inbound processing) and response(Outbound Processing) with asynchronous mode. This allows users to respond back at a later point in time by linking the request and response interface to each other and then setting the adapter into a response (outbound interface) that is required. #### Send the response asynchronously for the asynchronous inbound using the platform event We have added platform events to support the request (Inbound processing) and response(Outbound Processing) with asynchronous mode. This allows users to create even messages for response (outbound processing) after requesting (inbound processing). ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-15-patch-1-installation-link-2 URL: https://help.skyvva.com/#article/2-48-15-patch-1-installation-link-2 ================================================================================ # 1. Installation Link ### Here is the SKYVVA Version 2.48.15 (Patch): - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPYJ](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPYJ) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPYJ](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPYJ) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Enhancements Slug: 2-48-15-patch-3-enhancements URL: https://help.skyvva.com/#article/2-48-15-patch-3-enhancements ================================================================================ # 3. Enhancements ### Update Bulk API to Version 50 on Skyvva App In the previous version, the Skyvva app use version 30 for the Bulk API calls. Salesforce will retire API usage till version 30 in Summer 23. Therefore we have updated it to version 50 by default. The user also set the version by executing this snippet code in the developer console. For example, skyvvasolutions.IServicesUtilConst.setKey('BULK_API_VERSION', '51');. It will work only on the deletion message that executes from the salesforce bulk API. ### Changed Functional Category multi-picklist fix screen to pop-up screen on the generic page of the scheduler In the previous version, the Functional Category multi-picklist on the generic scheduler page was the fixed screen. Therefore we enhanced the screen to the multi-picklist pop-up screen instead in order to make the clean space, look better view, and make user-friendly. ### Enhanced Rest Adapter to support fault Handling We have added fault handling for the Rest adapter to handle which response should happen. For example, if the outbound request failed, you will get the fault interface to execute otherwise the response interface will be executed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. Bug Fixed Slug: 2-48-15-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-48-15-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed ### Fixed Message Reprocess of SOAP Adapter There is an issue occurred while the users reprocess the outbound message of the SOAP adapter, and it will create a new API message and business message after the reprocessing. Fixed this issue by updating the existing one. ### Fixed several issues on Message - We fixed to added the checkbox for the first child business message - There is an issue when the user sets the mode Delete Completed but keeps another Message. All completed business messages (child's message) will be deleted, but it keeps only the basket message (parent message) due to the status partial completed is not updated after doing this mode. This issue has been fixed. - In the previous version, the user only filters on the parent/root message. Now we fixed to allow message filter both child message and parent/root message. - Fixed message reprocessing from the child business message failed to fail again, but the parent message (basket message) updated to partial completed. This issue has been fixed. ### Error ENTITY_IS_DELETED on Bulk Basket Got an error message "caused by: System.DmlException: Update failed. First exception on row 0 with id a8R67000000LB8DEAW; first error: ENTITY_IS_DELETED, entity is deleted: []" on baskets of bulk processing. The issue is the overlapping running of the processing and reprocessing job with the same basket. This issue has been fixed. ### Missing the message response In the previous version, the message responses responded only to the root message of v3 inbound processing. This issue has been fixed by implementing the logic response whole tree message for all statuses. ### Skyvva Data Loader faced an issue with Salesforce limit parsing Data There is an issue that occurred while the user imported the CSV file with a large amount of data. Therefore our Data Loader does not import the data and gets a non-stop spinner due to an issue with Salesforce limit parsing Data. This issue has been fixed by splitting data into small amounts in order to avoid this error happening. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 2-43-22-patch-1-installation-link URL: https://help.skyvva.com/#article/2-43-22-patch-1-installation-link ================================================================================ # 1. Installation Link ### Here is the SKYVVA Version 2.43.22 (patch): - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSY4](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSY4) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSY4](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSY4) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Enhancement Slug: 2-43-22-patch-2-enhancement URL: https://help.skyvva.com/#article/2-43-22-patch-2-enhancement ================================================================================ # 2. Enhancement ### Update API Version to 50 on the Skyvva package The Skyvva 2.43 versions are using a very old API version. Therefore our customers still use this version, we have updated the API Version to 50 for Apex class, Apex trigger, Aura, Lwc component, and Visalforce page into the latest patch 2.43.22 version. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 3. Bugs Fixed Slug: 2-43-22-patch-3-bugs-fixed URL: https://help.skyvva.com/#article/2-43-22-patch-3-bugs-fixed ================================================================================ # 3. Bugs Fixed ### Get more fields showing on the message type side than sObject Skyvva has provided an option to create message types that have sObject type, and these message types will describe all fields of sObject. There is an issue showing invisible fields of sObject Message Type in the Mapping tool screen. This issue has been fixed by removing these fields. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Bug Fixed Slug: 2-46-13-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-46-13-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed **Missing the source fields of mapping records in Workflow Condition  ** Fixed issue regarding workflow condition gets source fields of mapping records as the formula function on v3 inbound processing. For example, you do the formula function on mapping like CONCAT(AccountMT.ContactMT.FirstName,AccountMT.ContactMT.LastName). Therefore, it will show this formula to source fields workflow conditions. Now it will split this formula function to get the correct field from the source field to do workflow condition. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-16-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-16-patch-1-installation-link ================================================================================ # 1. Installation Link ### Here is the SKYVVA Version 2.48.16 (Patch): - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPdZ](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPdZ) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPdZ](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPdZ) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Enhancement Slug: 2-48-16-patch-2-enhancement URL: https://help.skyvva.com/#article/2-48-16-patch-2-enhancement ================================================================================ # 2. Enhancement ### V3/V4 supports mapping without message type like V2 We have enhanced V3/V4 to support mapping without message types like the V2 style. It will work in all modes, for example, external, internal, and Hybrid mapping. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 5. Bug Fixed Slug: 2-44-main-release-5-bug-fixed URL: https://help.skyvva.com/#article/2-44-main-release-5-bug-fixed ================================================================================ # 5. Bug Fixed ### Export MetaData Provider are Missing Fields There is an error that occurred while generating metadata provider are missing some fields such as External Name, Namespace, and SObjectType of MessageType. The issue has been fixed. ### Get Error on Edit and Delete Repository Users are able to edit and delete the repository in the repository section on MetaData Provider Details Page. Fixed issue while clicking edit or delete action repository after refresh page. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Bug Fixed Slug: 2-43-21-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-43-21-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed ### Not able to access SKYVVA App while the user profile is not the administrator There is an issue while the user profile is not the administrator. When you click on every tab, it will get the message error popup screen. Therefore, this user does not have permission to access the SKYYVA app even added SkyvvaAllPermissions permission already. This issue has been fixed by adding all SKYVVA apex classes to the SkyvvaAllPermissions permission set. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 4. Bug Fixed Slug: 2-42-main-release-4-bug-fixed URL: https://help.skyvva.com/#article/2-42-main-release-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Comment field in message is empty after processing The error is occurring in comment field in message after processing. The error is that the comment field is empty. This will be fixed in version 2.42. #### UNABLE_TO_LOCK_ROW with Future apex with integrate The error is unable to update the statistical data due to interface is setting Inbound Posting Behavior : **Asynchronous**, future apex could be processing in parallel in queue. In order to solve this problem, please set Inbound Posting Behavior : **Synchronous.** #### Date fields in inbound interface The problem is that our SKYVVA tool convert data time wrong in inbound interface, our function always cut off **+hh:mm** and convert data to **GMT**. Now the Skyvva support **“local time + offset”** with date/time format. #### Message monitor stuck because of soap fault message When user use a fault interface with the soap adapter, user get a red message because the fault message of a soap call return ***http*** 500 internal error. The special of this message is that we have in the comment long field an xml that show the trace error. The error is now fixed in the latest **version 2.42.** #### Processing baskets with Reprocess button on takeo org isn’t working correct Basket working not correctly while, user process by Reprocess button and the basket has 20 record but it got failed message 20 and pending -20 and the processing not working anymore and stays still in working baskets section. One more, the total records have only 20. #### Set message type for the generated sub-interface Currently, the sub-interface doesn’t have a message type link into it. For integrate3x we need to get for each interface e.g. main- or sub-interface message type otherwise we cannot create the message and link it to the interface. Based on the message type we can find out which interface is using with that message type in the chained definition. We need to link interface to the message. Every message has a lookup to interface. #### Related List, IChained doesn’t working correctly. Related list, IChained table, whenever we create an IChained it shows a success pop-up but it doesn’t show unless we refresh the page, as same as it happens when we tried to delete it respectively. #### Get success message but record doesn’t delete on Message Monitoring When we want to delete record on Message Monitoring, we have to click on Delete or Delete All button but records didn’t deleted. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Warning Slug: 2-42-4-patch-2-warning URL: https://help.skyvva.com/#article/2-42-4-patch-2-warning ================================================================================ # 2. Warning #### Adding new picklist manually when upgrading the new release of SKYVVA To prevent some error, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bug Fixed Slug: 2-48-16-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-48-16-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Rename integration gets an error There is an issue that occurred when the users want to change the integration name. Therefore you will get an error message "skyvvasolutions.trgBl_Integration: execution of AfterUpdate caused by: System.DMLException: Update failed. First Exception on a row with id xxxxxxxxxxxxxxx; first error: DUPLICATE_VALUE. duplicate value found: skyvvasolutions_ExtID__c duplicates value on record with id; xxxxxxxxxxxxxxx:[] (skyvvasolutions)". This issue was caused by regenerating ExtId__c of Mapping records. This issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.40 Title: 1. New Features Slug: 2-40-main-release-1-new-features URL: https://help.skyvva.com/#article/2-40-main-release-1-new-features ================================================================================ # 1. New Features New web service integrate3 Change posting behavior in case of the chain interface Pass data from a screen to invoke Callout Possibility of setting messages to cancelled if they do not match any workflows (instead of deleting) Outbound Interface: Pass WHERE condition dynamically to the child interface Send notification to current user when import script is completed ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.40 Title: 2. Bug Fixed Slug: 2-40-main-release-2-bug-fixed URL: https://help.skyvva.com/#article/2-40-main-release-2-bug-fixed ================================================================================ # 2. Bug Fixed - Response message of an synchronous outbound call is in status Pending - Comment long is not updated - Missing message’s comment - Move Queue of Outbound from Batch Control Board ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-17-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-17-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.17: - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPdj](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPdj) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPdj](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPdj) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Bugs Fixed Slug: 2-48-17-patch-2-bugs-fixed URL: https://help.skyvva.com/#article/2-48-17-patch-2-bugs-fixed ================================================================================ # 2. Bugs Fixed ### Getting error "ListExceptionRow with duplicate Id at index: XX" Getting an error "ListExecptionRow with duplicate Id at index:xx" while you do V3 inbound processing IntegrateWithIMessage that external id has a concat formula with parent field and itself. The external id's parent field value will get null. This issue has been fixed. ### Saving the password wrong after updating the password from Salesforce to SAP ERP Section There is an issue that occurred while you updated the password of SAP Credential of Salesforce -> SAP ERP section. The trigger will decrypt the password after you updated it. Therefore you get the problem ping connection failing even after inputting it correctly already. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-1-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-1-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.1 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tjpc](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tjpc) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tjpc](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tjpc) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Enhancement Slug: 2-50-1-patch-4-enhancement URL: https://help.skyvva.com/#article/2-50-1-patch-4-enhancement ================================================================================ # 4. Enhancement #### Enhanced Rest Adapter to support fault Handling We have added fault handling for the Rest adapter to handle which response should happen. For example, if the outbound request fails, you will get the fault interface to execute otherwise the response interface will be executed. #### Screen redesign for basket monitoring We have enhanced the basket screen to provide users with greater flexibility in filtering and searching for basket records. #### Changed Functional Category multi-picklist fix screen to pop-up screen on the generic page of the scheduler In the previous version, the Functional Category multi-picklist on the generic scheduler page was the fixed screen. Therefore we enhanced the screen to the multi-picklist pop-up screen instead in order to make the clean space, look better view, and make user-friendly. #### Added the Backup/Restore button for the mapping records We have added a Backup/Restore button for the mapping records, which can be found in the related tab of the Interface Details Lightning page. This new function allows you to conveniently backup and restore the mapping records. With the Backup/Restore button, you can create a backup of your mapping records, ensuring their safety and providing a restore point if needed. In case any changes or accidental deletions occur, you can easily restore the mapping records back to their previous state. This feature enhances data management capabilities, providing an added layer of security and peace of mind when working with mapping records. It simplifies the process of safeguarding and restoring your mappings, enabling efficient data recovery and minimizing the risk of losing important mapping configurations. #### Pass data at runtime from InvokeCalloutV3() to use in the WHERE clause expression We have an enhancement in our SOQL Query to Select sObject data to add where clause expression and the condition appends in runtime InvokeCalloutV3(). For example, you can fill "Select Id FROM Account WHERE Name = {!AccountName}" in SOQL Query to Select sObject data of interface setting, so you can pass and conditions parameters to fill in your query in outbound runtime. We have an enhancement in our SOQL Query to Select sObject data to add where clause expression and the condition appends in runtime InvokeCalloutV3(). For example, you can fill "Select Id FROM Account WHERE Name = {!AccountName}" in SOQL Query to Select sObject data of interface setting, so you can pass and conditions parameters to fill in your query in outbound runtime. Map p = new Map(); p.put('AccountName','University of Arizona'); skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.sqlWhereExpression = p; //parameter to replace query {!XXX} c.returnJSONComplete=true; //return JSON result in SYNC c.actionDoIntegrate=false; //skip execute response interface c.isCreateMessage=true; //create the message for each executes String[] ids = new String[]{}; for(Account a: [select id from account]) ids.add(a.Id); String integration = 'Minea_Intergration'; String interfac = 'InvokeCallOutV3'; String mode = 'SYNC'; List resp = skyvvasolutions.Iservices.invokeCalloutV3(integration,interfac,ids,mode,c); System.debug('>>resp:'+resp?.toString()); ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 5. Bugs Fixed Slug: 2-50-1-patch-5-bug-fixed URL: https://help.skyvva.com/#article/2-50-1-patch-5-bug-fixed ================================================================================ # 5. Bugs Fixed #### Getting error "ListExceptionRow with duplicate Id at index: XX" Getting an error "ListExecptionRow with duplicate Id at index:xx" while you do V3 inbound processing IntegrateWithIMessage that external id has a concat formula with parent field and itself. The external id's parent field value will get null. This issue has been fixed. #### Saving the password wrong after updating the password from Salesforce to SAP ERP Section There is an issue that occurred while you updated the password of SAP Credential of Salesforce -> SAP ERP section. The trigger will decrypt the password after you updated it. Therefore you get the problem ping connection failing even after inputting it correctly already. #### Fixed Generating URL for SAP ERP Fixing generated an incorrect endpoint if the URL Path has been set forward-slash ("/") or blank. #### Title: Rename integration gets an error There is an issue that occurred when the users want to change the integration name. Therefore you will get an error message "skyvvasolutions.trgBl_Integration: execution of AfterUpdate caused by: System.DMLException: Update failed. First Exception on a row with id xxxxxxxxxxxxxxx; first error: DUPLICATE_VALUE. duplicate value found: skyvvasolutions_ExtID__c duplicates value on record with id; xxxxxxxxxxxxxxx:[] (skyvvasolutions)". This issue was caused by regenerating ExtId__c of Mapping records. This issue has been resolved. #### Fixed several issues on Message - We fixed to added the checkbox for the first child business message - There is an issue when the user sets the mode Delete Completed but keeps another Message. All completed business messages (child’s message) will be deleted, but it keeps only the basket message (parent message) due to the status partial completed is not updated after doing this mode. This issue has been fixed. - In the previous version, the user only filters on the parent/root message. Now we fixed to allow message filter both child message and parent/root message. - Fixed message reprocessing from the child business message failed to fail again, but the parent message (basket message) updated to partial completed. This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 2-47-main-release-1-installation-link URL: https://help.skyvva.com/#article/2-47-main-release-1-installation-link ================================================================================ # 1. Installation Link ** Here is the link for install SKYVVA official Version 2.47:** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TiMo](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TiMo) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TiMo](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TiMo) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Info Slug: 2-47-main-release-2-info URL: https://help.skyvva.com/#article/2-47-main-release-2-info ================================================================================ # 2. Info #### Removed Manual Load, Mass Manual Load, and Export Data We have merged Manual Load, Mass Manual Load, and Export Data into a new function called Data Loader. You will find the Data Loader under custom links of the integration detail page. #### Added new “Generate raw payload?” field to Interface Layout while upgrading the new release We would like to inform you that every new field created by us will not display on page layout when you upgrade to a new release of SKYVVA. To be able to use those fields you have to manually add them. Follow the following instruction to added a new “Generate raw payload?” field: - To be able to add this field to the page layout. You can click “Setup” Setting on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab. - Click on object manager then scroll down the page to find the “Interface” or you can search it in the “Quick Find” box, then click it. ![](../images/2021/03/FilterInterfaceObject.png) - On the interface page, please select the “Page Layouts”, then select “IInterface Layout” page layout name. ![](../images/2021/03/SelectInterfacelayout.png) - You can search “Generate raw payload?” in Quick find - Drag and drop the “Generate raw payload?” fields, then click save Layout. ![](../images/2021/03/dropthenewfield.png) You will able to see this field on the interface detail page. ![](../images/2021/03/Interfacepage.png) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 3. Warning Slug: 2-47-main-release-3-warning URL: https://help.skyvva.com/#article/2-47-main-release-3-warning ================================================================================ # 3. Warning #### Removed the old IScheduler of the New Agent while upgrading the new release We have added the new field skyvvasolutions__Cron_Expression_Long__c in skyvvasolutions__IScheduler_Setting__c object in order to store more character than the old field that uses in the agent control board. We would like to warn you that you have to remove the old IScheduler of a new agent. It can be getting some errors happens. Follow the following instruction to remove the old scheduler: - You can click the setting icon on the top right side page, then select “Developer Console”. - On the Developer Console page, you will able to several tabs - Click on the Query Editor Tab - Please copy the query statement to the query box: “SELECT Id FROM skyvvasolutions__IScheduler_Setting__c”, and click the Execute button". ![](../images/2021/03/QueryStatement.png) - Select all id of the scheduler and click the Delete Row button ![](../images/2021/03/DeleteTheOldScheduler.png) #### Remove the set filter condition mapping records while upgrading the new release We want to warn you that you have to remove the set filter condition mapping records and redo the mapping again. Therefore, it will prevent some errors. The error will be effective from SKYVVA Version 2.46.5 to 2.46.7. You can remove the mapping records from the mapping tool or IMapping Section of the Interface related page. If you are not using the set filter condition function of Mapping, please ignore this warning. Follow the following instruction to remove mapping records in IMapping Section: - You can enter the interface page - On the interface page, you will able to see the two tab - You need to click the Related tab - You have to select the Set filter Condition mapping records of the IMapping Section - Please click the Delete button ![](../images/2021/03/DeleteIMapping.png) #### Adding many picklist values while upgrading the new release To prevent some errors while users use those picklists, SKYVVA wants to warn you that every new picklist value created by us will not be overwritten when you upgrade to a new release of SKYVVA. However, if you install our latest release, you will have all those picklists include in the package. To be able to use those picklists you need to manually add them. **-Add picklist values of the Type field in the AgentSetting object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Added a picklist value of the ****Additional Message Statuses to Delete**** field in Integration** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. **-Added picklist values of the Type field in the Message Type object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the first title section. You need to add more picklist values of the type field in the message type object on this release. Please added the picklist values below: - SAP Function - SAP Function Request - SAP Function Response **- Added many picklist values of the "type" field in the "IStructure" object. ** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning) is in the top listing title. **- Added several picklists of UsageType in IMapping Object** Please follow the link for adding these picklists: [#article/2-warning](#article/2-warning) is in the second title section. **- Added various picklist values of the record Type field in the Interface control runtime object.** Please follow the link for adding these picklists: [#article/1-warning](#article/1-warning). After you added the "**Integrate3x_API_Parameter**" picklist value, please added the other picklists such as **Agent V3 Integration Scheduler**, **Agent V3 Interface Group Scheduler**, **Agent V3 Interface Scheduler**, and **Agent V3 LogEntry **on the 2.46 version. **- Added "Delete Specific Child" picklist value of the "Init Operation" field in the "IChained Interface" object.** Please follow the link for adding this picklist: [#article/1-warning](#article/1-warning) is in the second title section. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Please ignore some part that you have done it already in the previous version.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 4. New Features Slug: 2-47-main-release-4-new-features URL: https://help.skyvva.com/#article/2-47-main-release-4-new-features ================================================================================ # 4. New Features #### New Version V4 of Inbound processing We add a new design in a new version v4 of inbound processing in order to split up the payload between the business data/pure data and SKYVVA system parameters. The SKYVVA system parameters like Integration name, Interface name, and mode, etc. will be passed through the query parameter, not in the body in version v3. The core functionality is still the same as version v3 for you to easily manage your data payload. #### Added new Data Loader We have added a new data loader to enable manual load, Mass Manual Load, and Export Data function. It uses for uploading and downloading a huge file and a much higher value of data. Only CSV and XML files are supported for both import and export. #### Added several adapter New Agent Adapter We added several New Agent Adapter as example Agent RabitMQ, Agent JMS, Agent ActiveMQ, and Agent SAP S/4 HANA. - Agent RabitMQ adapter to integrate to the RabitMQ queueing system. It accepts messages from producers and delivers them to consumers. It acts like a middleman which can be used to reduce loads and delivery times taken by web application servers. - Agent JMS adapter to connect to the JMS queueing provider. A staging area that contains messages that have been sent and are waiting to be read (by only one consumer). As the name queue suggests, the messages are delivered in the order sent. A JMS queue guarantees that each message is processed only once. - Agent ActiveMQ adapter is used to connect the ActiveMQ queueing system. It will translate messages from sender to receiver. It can connect multiple clients and servers and allows messages to be held in a queue, instead of requiring both the client and server to be available simultaneously in order to communicate. Messaging can still happen even if one application is temporarily indisposed. - We have been added the Agent SAP S/4 HANA adapter. It is a new feature like the existing SAP S/4 HANA adapter. However, It has more power than the SAP S/4 HANA adapter. It can invoke the local API, and it is responsible to make the connection inside your enterprise. If you want to invoke with internet zone, you will only open the firewall for the new Agent. Therefore, you will not open your business application to be accessible through the internet. It will keep your business application was safe and secure. - Agent SAP All-in-One is similar to the Agent SAP ERP adapter. It is used to connect the SAP All in One system and access the data between Salesforce and SAP All in One. #### The new agent is possible to manual processing We have been added manual processing in the interface and interface group for inbound and outbound processing. On the outbound processing, there are two options to be processing. You can processing by manually select the sObject using the Query Builder and the SOQL statement on the interface to select the sObject. #### Enhanced New agent support JSON and XML file format We have enhanced several new agent adapters that supported JSON and XML file formats, and there are Agent File, Agent Kafka, Agent Pulsar, Agent JMS, Agent ActiveMQ, and Agent RabitMQ. #### Enhanced New Agent to support V2 processing as old the Agent We have enhanced the new agent for processing the old integrated v2 with the flat data. You do not need to redesign the old configuration anymore while you use the old technique. To use this function, you have to change only the adapter from the old agent to the new agent. #### Auto Create SQL statement in Database Query based on do mapping In the previous release, you have to enter the SQL statement in the interface manually. With this enhancement, we have added a function where the SQL statement is now getting generated automatically based on your mapping with the graphical mapping tool. Thus you do not need to care about entering manually the SQL statement for the external database. But you still have the possibility to change and add as you want using the manual way. #### Enhanced Agent Database adapter for New Agent -In the previous release, you can use outbound processing with INSERT, UPDATE, DELETE and SELECT operation for executing records on the database. With this enhancement, we have added a new UPSERT operation that is possible to update and insert records at the same time based on the record’s ID to check the records that are existing or not. For example, if it is existing records, it will update the records. If not, it will insert records into the database. - Agent Database adapter support for the stored procedure(Outbound direction) while it has a response back to Salesforce. #### REST/SOAP adapter supports Salesforce Authentication Provider We have added a new picklist value 'Salesforce Authentication Provider' to use the built-in Salesforce authentication provider with the REST/SOAP adapter. With this function, you can use the Salesforce authentication provider additional to the Skyvva authentication as for example Basic Authentication, OAuth 2.0, etc.. #### Generate Raw Payload for inbound and outbound processing of SOAP, REST, and Google Cloud Pub/Sub adapter We have added a new feature regarding Generate Raw Payload. This function uses to debug and define the error in case the data is not correctly transformed. It will create a file and link to the API or parent message, and you will see its original state. To use this function, you need to have checked the “Raw logging Payload” field in the inbound and outbound interface. For inbound processing is not support with ASYNC Mode. #### Add outbound scheduler of New Agent Control Board Outbound scheduler processing is the new feature that allows you to set a schedule to process automatically for the outbound interface in the scheduler tab of the agent control board. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 5. Bug Fixed Slug: 2-47-main-release-5-bug-fixed URL: https://help.skyvva.com/#article/2-47-main-release-5-bug-fixed ================================================================================ # 5. Bug Fixed #### Not support an array in the Request JSON payload of Agent Rest Adapter and Rest Adapter There is an error that occurred while the JSON payload contains an array[]. There are two places for generating such as Message Type and Message Type Field Entry. **-For example of Message Type:** [ { "Account":[ { "BillingCountry":"cam2", "BillingCity":"pp2", "Name":"Kumuu" } ] } ] By choosing the “IsArray” in the property field of MessageType. To support the data payload which is an array in message type. **-For example of Message Type Field Entry** [ { "Account":[ { "BillingCountry":"cam2", "BillingCity":"pp2", "Name":[ "Kumuu" ] } ] } ] By choosing the “IsArray” in the property field of Message Type field Entry. To enable the data payload which has an array in message type field entry. #### Display the roof messages wrong while using agent database adapter When Interface mode is non-transactional after processing with agent database adapter, it was an error the roof message is 'completed' status while the child messages have mixed message status. This issue fixed by changing the roof message to ''Partial Completed". ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 2. Info Slug: 2-47-30-patch-2-info URL: https://help.skyvva.com/#article/2-47-30-patch-2-info ================================================================================ # 2. Info #### Renamed the browser Tab to the Interface Name while we open the interface page We have changed the browser tab name of Interface in order to make it more understandable, and readable. This implementation has been added to the interfaceButtonDetail Component in patch 2.48.9 and InterfaceInboundOutboundStep component in this patch. If you remove these components from the interface record page layout, it will display the old one. #### Renamed the old export/import button of the Skyvva object to the Backup/Restore button To prevent users that being confused with the rename button name, therefore SKYVVA would like to inform you that a button name has been renamed from “Import” to “Restore” and “Export” to “backup”. There are many places to rename such as: - Integration Tab - Integration Detail Page - Integration of the Interface page - Interface Details Page - Adapter Tab - Adapter Details Page - MetaData Provider Tab - MetaData Provider Details Page - Repository Tab - Repository Details Page - Message Type Details Page - Imapping of Related Interface Page - IStrcuture of Related Interface Page - Workflows Tab on the Integration page - Adapter in Agent Control Board - Adapter in SAP Control Board - Adapter in Google Control Board - Adapter in Microsoft Control Board - Adapter in Oracle Control Board #### Renamed column "RELATED TO" the message monitor We have renamed the column from "RELATED TO" to "SOBJECT" in order to see the sObject linked to this message. For example, if you push the Account object record, it will show the Account under SOBJECT column of the message monitor. #### Change multi-picklist fix screen on Functional Category In the previous version, the Functional Category multi-picklist on the generic scheduler page was the fixed screen. Therefore we enhanced the screen to the multi-picklist pop-up screen instead in order to make the clean space, look better view, and make user-friendly. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 3. Warning Slug: 2-47-30-patch-3-warning URL: https://help.skyvva.com/#article/2-47-30-patch-3-warning ================================================================================ # 3. Warning #### Adding a picklist value while upgrading the new version In general picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. - **Added picklist "Failed" on the “skyvvasolutions__WorkflowStatusHandling__c” field on “skyvvasolutions__Interfaces__c” object:** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the “skyvvasolutions__Interfaces__c” object or you can search for it in the “Quick Find” box, then click it. - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the “skyvvasolutions__WorkflowStatusHandling__c” field in the “Quick Find” box or scroll down the page to find it. - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/01/CreateNew.png) - Fill in the value’s API name in the box and click the save button. ![](../images/2023/01/ClickSavePicklistField.png) - Please update the Label name from "Failed" to Update Message status to 'Failed' to make it more understandable. ![](../images/2023/01/ChangeLabelName.png) Finally, we will get the Failed picklist value on skyvvasolutions__WorkflowStatusHandling__c of skyvvasolutions__Interfaces__c Object as the screenshot below. ![](../images/2023/01/UpdateDone.png) --- [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this skyvvasolutions__WorkflowStatusHandling__c  field. To avoid the problem please kindly add those values by checking the box of the picklist value for a particular skyvvasolutions__WorkflowStatusHandling__c.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 4. Features Slug: 2-47-3-patch-4-features URL: https://help.skyvva.com/#article/2-47-3-patch-4-features ================================================================================ # 4. Features #### Auto Set MetaData, Repository, and Message Type Currently, we create the interface from the message type and will not set the Metadata provider, Repository, and MessageType into Interface. Now we will provide the feature to auto-set those fields into the interface. Therefore the user does not need to link Metadata, Repository, and MessageType into Interface manually anymore. #### Added a Delete button and a checkbox for Repository and Message Type section Skyvva has provided the delete function and checkbox on the Repository, Repository (Child), and Message type in order to select the repository and message type records to be deleted. **Added Basket Message to cover the Business Message** We have added the Basket Message to cover business messages in order to make a better view, check, and monitor which messages belong to which basket. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 5. Bug Fixed Slug: 2-47-30-patch-5-bug-fixed URL: https://help.skyvva.com/#article/2-47-30-patch-5-bug-fixed ================================================================================ # 5. Bug Fixed ** Not able to delete more than 1000 message records** There is an error occurred when to user deleted the message including filters such as Interface Name and Comment Content and the message records are more than 1000. After you click the "Delete All" button, you will get the message error "Error line:711:unexpeced token: And". This issue has been fixed. ** Fixed issues of mapping generating path and runtime processing** Fixed several issues related to mapping that generate the wrong path and not working with the runtime processing. ** Getting an error while backup IMapping on the interface ** While backup of IMapping on the interface it will get an error text=”” EL Expression Unbalanced: … #{ctx.skyvvasol]]>. This issue is fixed. ** Not able to update the MetaData Name** There is an error occurred while the user try to update the MetaData Name. The error is caused by IStructure being the names. This issue has been fixed. ** Update Bulk API to Version 50 on Skyvva App** In the previous version, the Skyvva app use version 30 for the Bulk API calls. Salesforce will retire API usage till version 30 in Summer 23. Therefore we have updated it to version 50. The user also set the version by executing this snippet code in the developer console. For example, skyvvasolutions.IServicesUtilConst.setKey('BULK_API_VERSION', '51');. It will work only on the deletion message that executes from the salesforce bulk API. **Getting error "ListExceptionRow with duplicate Id at index: XX"** Getting an error "ListExecptionRow with duplicate Id at index:xx" while you do V3 inbound processing IntegrateWithIMessage that external id has a concat formula with parent field and itself. The external id's parent field value will get null. This issue has been fixed. #### The asynchronous call got the error "null input to JSON parser" with mode "Batch Apex" There is an error that occurred when the user pushed the record containing more than 131072 lengths with the Asynchronous call of Batch Apex Mode. The message's data is too long. Therefore, It will write the records into the ContentVersion. The problem happens the message's data cannot be read from the file and it raises an error message "First error: null input to JSON parser" on the apex job. This error has been fixed. #### Skyvva Data Loader faced an issue with Salesforce limit parsing Data There is an issue that occurred while the user imported the CSV file with a large amount of data. Therefore our Data Loader does not import the data and gets a non-stop spinner due to an issue with Salesforce limit parsing Data. This issue has been fixed by splitting data into small amounts in order to avoid this error happening. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’21 V2.47 Title: 1. Installation Link Slug: 2-47-30-patch-1-installation-link URL: https://help.skyvva.com/#article/2-47-30-patch-1-installation-link ================================================================================ # 1. Installation Link #### ​​Here is the SKYVVA Version 2.47.30 (patch): - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSrM](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSrM) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSrM](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bSrM) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’19 V2.41 Title: 2. Bug Fixed Slug: 2-41-7-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-41-7-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed ### Re-Fix Pop up screen with cancel Pending Message on message monitoring We need to change pop up error screen to pop up Success screen when we clicked Cancelled All button for all Pending Messages only no mix with other Status. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-18-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-18-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.18: - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPeX](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPeX) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPeX](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPeX) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-2-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-2-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.2 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tk32](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tk32) - Sandbox Org:[ https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tk32](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tk32) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Warning Slug: 2-50-2-patch-2-warning URL: https://help.skyvva.com/#article/2-50-2-patch-2-warning ================================================================================ # 2. Warning #### Adding a picklist value while upgrading the new version In general picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. **Added picklist “External Key Expression Evaluator” on the “skyvvasolutions__RecordType__c” field of “skyvvasolutions__InterfaceControlRuntime__c” object:** *If you forget to add this picklist value you will get a mapping error when trying to do mapping.* - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__InterfaceControlRuntime__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/03/ObjectManager.png) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__RecordType__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/03/Field.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/03/ClickNewButton.png) - Fill in the value’s API name in the box and click the save button. ![](../images/2023/03/ClickSaveButton.png) Finally, we will get the External Key Expression Evaluator picklist value on skyvvasolutions__RecordType__c of skyvvasolutions__InterfaceControlRuntime__c Object as the screenshot below. ![](../images/2023/03/GetPicklistFields.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__RecordType__c**  field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__RecordType__c**.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Enhancement Slug: 2-50-2-patch-3-enhancement URL: https://help.skyvva.com/#article/2-50-2-patch-3-enhancement ================================================================================ # 3. Enhancement #### Added Define External Key Button on the Mapping tool In the previous version, you can set the external key by checking the field of mapping. Currently, you define one field as a key or multiple fields as a combined key. Therefore we enhanced our mapping tool to handle many possibilities to define the complex keys. We added the Define Exernal Key button on the Mapping tool in order to define the key with AND, OR clause, Customize the logic, or create a custom class to build your own key logic. We provide these three options to build the external Key. - All of the conditions are met (AND) means this is the default we currently have as the only available solution. - Any of the conditions are met (OR) means you want to provide. With this option, we can have 3 fields f1, f2, and f3 defined as key fields. But when the sender sends only f1, we use f1 as the key. If the sender sends f1 and f2 we use these two fields, and if it sends all three fields f1, f2, and f3 we use these 3 fields and chose one of them. - Customize the logic means the user has to define the logic like 1 AND (2 OR 3) - Custom Class means you can build your own key logic by creating your apex code. #### Allow the mapping to map with the Salesforce formula field as the external ID In the previous version, you can not map the salesforce formula field, because this field reads only. Now, we will allow you to map this salesforce formula field as the external id in order to make the key for upsert, delete, insert, and update the records. #### Mass Find & Replace function for failed/pending message If you have a large number of failed messages that need to be edited, you can use the Find & Replace function to perform mass editing and replace data. With this function, you can search, edit, and replace the text in the IData of failed/pending messages. The Find & Replace function can be accessed from the Integration page. #### Added a new field to support GETCORRELATIONID In the previous version, GETCORRELATIONID() only supported three fields: SKYVVA_EXTERNAL_ID__c, TransferId__c, and TransactionId__c. We have added a new field called "system_external_id__c" in order to generate a correlation ID based on it. This ID is used to reference the request and response so that you can identify which request corresponds to which response in asynchronous mode communication. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Bugs Fixed Slug: 2-50-2-patch-4-bugs-fixed URL: https://help.skyvva.com/#article/2-50-2-patch-4-bugs-fixed ================================================================================ # 4. Bugs Fixed #### The asynchronous call got the error "null input to JSON parser" with mode "Batch Apex" There is an error that occurred when the user pushed the record containing more than 131072 lengths with the Asynchronous call of Batch Apex Mode. The message's data is too long. Therefore, It will write the records into the ContentVersion. The problem happens the message's data cannot be read from the file and it raises an error message "First error: null input to JSON parser" on the apex job. This error has been fixed. #### Reprocess not work with child Bussiness sObject message We fixed the reprocessing parent business sObject message that does not take the child message to reprocess. This issue happens only with a message push from Data Loader. For example, you pushed three message levels such as Account, Contact, and Case to reprocess despite you getting the failed reprocessing. The message will have Data Loader Message as the parent of the Account, the Account child's Contact, and the Contact child's Case. Then, you reprocessed the failed Account Bussiness sObject Message. Therefore, it does not work with the child message of the Account. #### Fixed Rest Adapter with SOAP XML Format There is an issue with the rest adapter sending the SOAP XML format e.g. soap envelope in XML syntax is used exclusively in the soap adapter and not in the rest adapter. Fixed this issue by sending and receiving with pure XML (Pure Business Data). #### Fixed V3 inbound processing while the response payload has an empty node Inbound v3 processing gets an error message "Failed inbound processing, Please check response and inbound interface!" because some systems will respond with an empty node array while the fields did not have any value field map. This issue has been fixed by not creating the message for the node empty anymore. #### Always remove the manual query while saving the outbound mapping Got a problem removing the manual query while after saving the outbound mapping. Now we have fixed this by merging manually added with an auto-generated query from the mapping. ### Fixed not being able to update messages after reprocessing the messages Fixed added duplicate message id to the list of updated messages while the users have been reprocessing the message. This issue has been fixed. #### Generate Node without mapping request body of Rest Adapter There is a problem when the user does not map the source node to the target side message type request body in the Rest adapter and it still was generating the root node using the source object of the outbound interface. Therefore it was creating problems when we are sending requests using the GET protocol. The issue has been resolved. #### Auto Mapping parent reference field This issue occurred while auto-mapping with the parent note reference field of the child. Therefore, it will generate an extra node and fields for the mapping. This problem has been resolved. #### Get message error "Error:skyvvasolution: Too many query rows: 50001" on delete/cancel/ reprocess message function This error happened when you processed records by Dataloader or Basket, and you will get a few message root messages containing too many child business messages. Therefore, you will get an error message "Error:skyvvasolution: Too many query rows: 50001" while you try to use the delete, cancel, reprocess function. This issue has been fixed. **Note:** if your hierarchical messages are more than 10000 records, it will take only 10000 records to reprocess per batch in per transaction. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Enhancement Slug: 2-48-18-patch-3-enhancement URL: https://help.skyvva.com/#article/2-48-18-patch-3-enhancement ================================================================================ # 3. Enhancement #### Allow the mapping to map with the Salesforce formula field as the external id In the previous version, you can not map the salesforce formula field, because this field reads only. Now, we will allow you to map this salesforce formula field as the external id in order to make the key for upsert, delete, insert, and update the records. #### Added a new field to support GETCORRELATIONID In the previous version, GETCORRELATIONID() only supported three fields: SKYVVA_EXTERNAL_ID__c, TransferId__c, and TransactionId__c. We have added a new field called "system_external_id__c" in order to generate a correlation ID based on it. This ID is used to reference the request and response so that you can identify which request corresponds to which response in asynchronous mode communication. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. Bug Fixed Slug: 2-48-18-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-48-18-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Not possible to update the message after message reprocessing is done We got an issue while the user did the reprocessing message. Therefore, the message does not update the status due to the duplicate message id in the list during the update. This issue has been fixed.  #### Fixed Rest Adapter with SOAP XML Format There is an issue with the rest adapter sending the SOAP XML format e.g. soap envelope in XML syntax is used exclusively in the soap adapter and not in the rest adapter. Fixed this issue by sending and receiving with pure XML (Pure Business Data). #### The asynchronous call got the error "null input to JSON parser" with mode "Batch Apex" There is an error that occurred when the user pushed the record containing more than 131072 lengths with the Asynchronous call of Batch Apex Mode. The message's data is too long. Therefore, It will write the records into the ContentVersion. The problem happens when the message's data cannot be read from the file and it raises an error message "First error: null input to JSON parser" on the apex job. This error has been fixed. #### Always remove the manual query while saving the outbound mapping Got a problem removing the manual query while after saving the outbound mapping. Now we have fixed this by merging manually added with an auto-generated query from the mapping. #### Fixed V3 inbound processing while the response payload has an empty node Inbound v3 processing gets an error message "Failed inbound processing, Please check the response and inbound interface!" because some systems will respond with an empty node array while the fields did not have any value field map. This issue has been fixed by not creating the message for the node empty anymore. #### Generate Node without mapping request body of Rest Adapter There is a problem when the user does not map the source node to the target side message type request body in the Rest adapter and it still was generating the root node using the source object of the outbound interface. Therefore it was creating problems when we are sending requests using the GET protocol. The issue has been resolved. #### Auto Mapping parent reference field This issue occurred while auto-mapping with the parent note reference field of the child. Therefore, it will generate an extra node and fields for the mapping. This problem has been resolved. #### Get message error "Error:skyvvasolution: Too many query rows: 50001" on delete/cancel/ reprocess message function This error happened when you processed records by Dataloader or Basket, and you will get a few message root messages containing too many child business messages. Therefore, you will get an error message "Error:skyvvasolution: Too many query rows: 50001" while you try to use the delete, cancel, reprocess function. This issue has been fixed. **Note:** if your hierarchical messages are more than 10000 records, it will take only 10000 records to reprocess per batch in per transaction. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Warning Slug: 2-48-15-patch-2-warning URL: https://help.skyvva.com/#article/2-48-15-patch-2-warning ================================================================================ # 2. Warning #### Adding a picklist value while upgrading the new version In general picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ##### Added picklist “Subscribe Salesforce Event” on the “skyvvasolutions__OperationType__c ” field of “skyvvasolutions__Interfaces__c” object: - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__Interfaces__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/03/ObjectMa.png) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__OperationType__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/03/InterfaceObject.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/03/ClickNewButton-1.png) - Fill in the value’s API name in the box and click the save button. ![](../images/2023/03/Fillapi.png) Finally, we will get the External Key Expression Evaluator picklist value on **skyvvasolutions__OperationType__c** of **skyvvasolutions__Interfaces__c** Object as the screenshot below. ![](../images/2023/03/GOtPicklist.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__OperationType__c**  field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__OperationType__c**.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Warning Slug: 2-50-1-patch-2-warning URL: https://help.skyvva.com/#article/2-50-1-patch-2-warning ================================================================================ # 2. Warning #### Adding a picklist value while upgrading the new version In general picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. **Added picklist “Subscribe Salesforce Event” on the “skyvvasolutions__OperationType__c ” field of “skyvvasolutions__Interfaces__c” object:** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__Interfaces__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/03/ObjectMa.png) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__OperationType__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/03/InterfaceObject.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/03/ClickNewButton-1.png) - Fill in the value’s API name in the box and click the save button. ![](../images/2023/03/Fillapi.png) Finally, we will get the **Subscribe Salesforce Event** picklist value on **skyvvasolutions__OperationType__c** of **skyvvasolutions__Interfaces__c** Object as the screenshot below. ![](../images/2023/03/GOtPicklist.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__OperationType__c**  field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__OperationType__c**.[/su_box] ##### Added picklist “DataLoader Message” on the “skyvvasolutions__Message_Type__c ” field of “skyvvasolutions__IMessage__c” object: - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__IMessage__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/03/MessageObjectManager.png) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__Message_Type__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/03/MessageTypefieldPicklist.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/03/ClickSaveButtonMessageTypePicklist.png) - Fill in the value’s API name in the box and click the save button. ![](../images/2023/03/SaveThePicklistName.png) Finally, we will get the **DataLoader Message** picklist value on **skyvvasolutions__Message_Type__c **of **skyvvasolutions__IMessage__c** Object as the screenshot below. ![](../images/2023/03/DataloaderMessage.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__Message_Type__c**  field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__Message_Type__c**.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-19-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-19-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.19: - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPec](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPec) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPec](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPec) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Bug Fixed Slug: 2-48-19-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-48-19-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Not possible to update the message after message reprocessing is done We encountered an issue “ListExceptionRow with duplicate Id at index: XX” when the user attempted to reprocess a message, causing the message status to not update due to a duplicate message ID in the list during the update process. However, this issue has now been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-3-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-3-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.3 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tk3C](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tk3C) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tk3C](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tk3C) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Bug Fixed Slug: 2-50-3-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-50-3-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Not possible to update the message after message reprocessing is done We got an issue while the user did the reprocessing message. Therefore, it does not update the status due to the duplicate message id in the list during the update. This issue has been fixed. #### Not Generate dynamic header, query, and path parameters value using InterfaceExecute scheduler  through the mapping tool The users have mapped the header, query, and path parameters using a mapping tool and invoked callout with InterfaceExecute scheduler. Therefore, it will not get the value from the mapping to pass the request header, query, and path parameters. #### Second Basket Business message not covered by Basket Message There is an issue when processing one job with multiple baskets simultaneously. Only a basket message is created to cover a basket, and the other baskets being processed do not receive a basket message to cover them. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 1. Installation Link Slug: 2-46-18-patch-1-installation-link-3 URL: https://help.skyvva.com/#article/2-46-18-patch-1-installation-link-3 ================================================================================ # 1. Installation Link **Here is the SKYVVA Version 2.46.18 (patch):** - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QT7i](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QT7i) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QT7i](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003QT7i) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’20 V2.46 Title: 2. Enhancement Slug: 2-46-18-patch-2-enhancement URL: https://help.skyvva.com/#article/2-46-18-patch-2-enhancement ================================================================================ # 2. Enhancement **Update API Version to 50 on the Skyvva package** In the previous version, the Skyvva app uses API version under 30 for Apex class, Apex trigger, Aura, Lwc component, and Visalforce page. Salesforce will retire API usage till version 30 in Summer 23. Therefore we have updated it to version 50. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 1. Installation Link Slug: 2-44-14-patch-1-installation-link URL: https://help.skyvva.com/#article/2-44-14-patch-1-installation-link ================================================================================ # 1. Installation Link **Here is the link for installation SKYVVA Patch Version 2.44.14** - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNUB](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNUB) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNUB](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000002uNUB) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’20 V2.44 Title: 2. Enhancement Slug: 2-44-14-patch-2-enhancement URL: https://help.skyvva.com/#article/2-44-14-patch-2-enhancement ================================================================================ # 2. Enhancement #### Update API Version to 50 on the Skyvva package In the previous version, the Skyvva app uses API version under 30 for Apex class, Apex trigger, Aura, Lwc component, and Visalforce page. Salesforce will retire API usage till version 30 in Summer 23. Therefore we have updated it to version 50. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 1. Installation Link Slug: 2-42-14-patch-1-installation-link URL: https://help.skyvva.com/#article/2-42-14-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for installation SKYVVA official Version 2.42.14: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fehi](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fehi) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fehi](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003fehi) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’19 V2.42 Title: 2. Enhancement Slug: 2-42-14-patch-2-enhancement URL: https://help.skyvva.com/#article/2-42-14-patch-2-enhancement ================================================================================ # 2. Enhancement **Update API Version to 50 on the Skyvva package** In the previous version, the Skyvva app uses API version under 30 for Apex class, Apex trigger, Aura, Lwc component, and Visalforce page. Salesforce will retire API usage till version 30 in Summer 23. Therefore we have updated it to version 50. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 1. Installation Link Slug: 2-43-23-patch-1-installation-link URL: https://help.skyvva.com/#article/2-43-23-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for installation SKYVVA official Version 2.43.23: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bT0P](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bT0P) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bT0P](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003bT0P) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer’ 19 V2.43 Title: 2. Enhancement Slug: 2-43-23-patch-2-enhancement URL: https://help.skyvva.com/#article/2-43-23-patch-2-enhancement ================================================================================ # 2. Enhancement **Update API Version to 50 on the Skyvva package** In the previous version, the Skyvva app uses API version under 30 for Apex class, Apex trigger, Aura, Lwc component, and Visalforce page. Salesforce will retire API usage till version 30 in Summer 23. Therefore we have updated it to version 50. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 2-45-10-patch-1-installation-link URL: https://help.skyvva.com/#article/2-45-10-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for installation of SKYVVA official Version 2.45.10: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FR6u](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FR6u) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FR6u](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003FR6u) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 1. Installation Link Slug: 2-45-11-patch-1-installation-link URL: https://help.skyvva.com/#article/2-45-11-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the link for installation of SKYVVA official Version 2.45.11: - Production: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jQoZ](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jQoZ) - Sandbox: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jQoZ](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003jQoZ) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’20 V2.45 Title: 2. Enhancement Slug: 2-45-11-patch-2-enhancement URL: https://help.skyvva.com/#article/2-45-11-patch-2-enhancement ================================================================================ # 2. Enhancement **Update API Version to 50 on the Skyvva package** In the previous version, the Skyvva app uses API version under 30 for Apex class, Apex trigger, Aura, Lwc component, and Visalforce page. Salesforce will retire API usage till version 30 in Summer 23. Therefore we have updated it to version 50. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation link Slug: 2-50-4-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-4-patch-1-installation-link ================================================================================ # 1. Installation link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.4 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tk3b](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003Tk3b) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0==04t0o000003Tk3b](https://test.salesforce.com/packaging/installPackage.apexp?p0==04t0o000003Tk3b) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Warning Slug: 2-50-4-patch-2-warning URL: https://help.skyvva.com/#article/2-50-4-patch-2-warning ================================================================================ # 2. Warning #### Disable Ext id Box in Mapping Tool In the previous version, to set an External Id for mapping, you needed to check the 'Ext Id' box. However, in outbound and V3 Inbound mapping, this box has been disabled. Instead, you should define the External Key using the 'Define External Key' button. This button is available in the Data Mapping section and also appears in the 'List' button on the Interface Detail Page. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 5. Bug Fixed Slug: 2-50-4-patch-5-bug-fixed URL: https://help.skyvva.com/#article/2-50-4-patch-5-bug-fixed ================================================================================ # 5. Bug Fixed #### Missing SKYVVA__MessageId while processing with InterfaceExecute scheduler An issue occurred during outbound processing with the InterfaceExecution scheduler where the SKYVVA__MessageId was not being generated into the request payload. This issue has since been resolved. #### Missing the Category values on Message Type Field Entry To create the message type field entry, there are two ways: manually or by creating an auto-select from IStructure in the repository. This issue occurred while using "Select Field From the Repository" to create the message field entry. It was not taking the category value from the IStructure into the category field of message type field entry. However, this issue has now been fixed. #### Loading all messages on the message detail screen inside the Root Message There was a problem when attempting to view a specific message, as the whole message tree was displayed on the message details screen. This could be difficult to view and took a long time to load, particularly when there were many messages in a root. However, this issue has been resolved by displaying only fifteen business messages including the select message. The selected message will highlight the green color. #### Job id did not update the Basket Queue while running a schedule This issue occurred when the package size was added to the interface group and processed by the scheduler. For example, we have 30 baskets in the working basket, and each EO Queue has 6 baskets. Each basket contains 20 records, and the added package size is 100. As a result, it will take five baskets to complete a job because five baskets equal 100 records. It will take one basket for each EO Queue, so five EO Queues will work on the job. However, although the job is completed, it only updates one Queue for this job ID. This issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-5-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-5-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.6 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkAx](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkAx) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkAx](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkAx) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Bug Fixed Slug: 2-50-6-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-50-6-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Fixed 'Delete Completed Message but Keep Other Message' with message reprocessing An error occurred while reprocessing a failed message tree that was set to 'Delete Completed Message but Keep Other Message' mode on the interface setting. This caused the complete message parent and child to be deleted during message reprocessing, but the failed child message was kept without its parent. This issue has been resolved by deleting the completed message along with the entire tree, instead of just deleting individual messages. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Warning Slug: 2-48-18-patch-2-warning URL: https://help.skyvva.com/#article/2-48-18-patch-2-warning ================================================================================ # 2. Warning #### Adding a picklist value while upgrading the new version In general picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ##### Added picklist “External Key Expression Evaluator” on the “skyvvasolutions__RecordType__c” field of “skyvvasolutions__InterfaceControlRuntime__c” object: - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__InterfaceControlRuntime__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/03/ObjectManager.png) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__RecordType__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/03/Field.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/03/ClickNewButton.png) - Fill in the value’s API name in the box and click the save button. ![](../images/2023/03/ClickSaveButton.png) Finally, we will get the External Key Expression Evaluator picklist value on skyvvasolutions__RecordType__c of skyvvasolutions__InterfaceControlRuntime__c Object as the screenshot below. ![](../images/2023/03/GetPicklistFields.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__RecordType__c**  field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__RecordType__c**.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-20-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-20-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.20: - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPeh](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPeh) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPeh](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPeh) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Bug Fixed Slug: 2-48-20-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-48-20-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Clear Old Value When Click Back Button in Data Loader In the previous version, when you clicked the back button in the Data Loader and then clicked the next button to proceed to the next step, the existing value remained on the screen. This issue has been fixed by clearing the previous value when the back button is clicked. #### Missing the Category values on Message Type Field Entry To create the message type field entry, there are two ways: manually or by creating an auto-select from IStructure in the repository. This issue occurred while using “Select Field From the Repository” to create the message field entry. It was not taking the category value from the IStructure into the category field of message type field entry. However, this issue has now been fixed. #### Get Error “For Job id ‘xxxxxxxxxxxxxx’ :skyvvasolution: Too many query rows: 50001” on Delete Completed Message after Processing This issue occurs when the 'delete completed' flag is set on an Integration with a large number of completed messages, and the integration attempts to delete all completed messages at once. This causes an error message to be raised, specifically: 'For Job id ‘xxxxxxxxxxxxxx’ :vskyvvasolution: Too many query rows: 50001'. However, this issue has been resolved by deleting only specific completed messages that were processed per transaction, rather than selecting all completed messages per integration for deletion. #### Not generate dynamic values for the header, query, and path parameters using the InterfaceExecute scheduler through the mapping tool The users have mapped the header, query, and path parameters using a mapping tool and invoked a callout with the InterfaceExecute scheduler. Therefore, the scheduler will not retrieve the values from the mapping to pass the request header, query, and path parameters. #### Fixed tree messages reprocessing separately between the parents and child messages An issue occurred while reprocessing outbound tree messages with the Integration scheduler. The scheduler picked the child message records from the message hierarchy and reprocessed them separately from the parent message. However, the following error message was encountered during this process: 'No outbound adapter to call out >Detail:Class.skyvvasolutions.IServiceBatchCallOut.: line 136, column 1' in the code. This issue has been fixed. #### Loading all messages on the message detail screen inside the Root Message There was a problem when attempting to view a specific message, as the whole message tree was displayed on the message details screen. This could be difficult to view and took a long time to load, particularly when there were many messages in a root. However, this issue has been resolved by displaying only fifteen business messages including the select message. The selected message will highlight the green color. #### Missing SKYVVA__MessageId while processing with InterfaceExecute scheduler An issue occurred during outbound processing with the InterfaceExecution scheduler where the SKYVVA__MessageId was not being generated into the request payload. This issue has since been resolved. #### Second Basket Business message not covered by Basket Message There is an issue when processing one job with multiple baskets simultaneously. Only a basket message is created to cover a basket, and the other baskets being processed do not receive a basket message to cover them. #### Fixed Create duplicate child fail messages after reprocessing the outbound tree message An issue occurred while reprocessing outbound failed tree messages with the REST, SOAP, and SAP CPI adapters, resulting in the creation of duplicate failed child business messages. This issue only occurred when reprocessing fail-to-fail messages. However, it has since been fixed. #### MessageReprocessPerInterface Scheduler Did Not Pick Up the Message for Reprocessing An issue occurred while reprocessing the message with the MessageReprocessPerInterface scheduler. When the scheduler started, it did not pick up the message for reprocessing. However, this issue has now been fixed. #### Fixed Delete Completed Message but Keep other message with message reprocessing An error occurred while reprocessing a failed message tree that was set to 'Delete Completed Message but Keep Other Message' mode on the interface setting. This caused the complete message parent and child to be deleted during message reprocessing, but the failed child message was kept without its parent. This issue has been resolved by deleting the completed message along with the entire tree, instead of just deleting individual messages. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Feature Slug: 2-50-4-patch-3-feature URL: https://help.skyvva.com/#article/2-50-4-patch-3-feature ================================================================================ # 3. Feature #### Raw data basket We have added a new control board to process raw business data baskets. It functions similarly to our batch basket processing, but the business data remains in its raw format as we have not yet transformed it into IMessage, unlike the batch basket. This means that you no longer need to write Java code or manually convert your raw business data to IMessage. This feature can handle medium-sized records, but for larger records, you will still need to use batch basket processing. #### Added New Button ‘Rebuild Cache’ for Agent Cache Monitor Tab The 'Rebuild Cache' button is used to rebuild the cache by taking all objects that are linked to the connection destination and placing them into the Agent Cache table. For example, for situations after a clone/restoration of the integration or when you just want to rebuild the cache again right away. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Enhancement Slug: 2-50-4-patch-4-enhancement URL: https://help.skyvva.com/#article/2-50-4-patch-4-enhancement ================================================================================ # 4. Enhancement #### Batch Baskets will be processed for All Free Available Apex Jobs In the previous version, when the scheduler ran, a basket would process a job for each interface, which made the process slow. Now, by default, we have improved the process so that a batch basket will handle a job and it will do so for all available jobs. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-7-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-7-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.7 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkBC](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkBC) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkBC](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkBC) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Bug Fixed Slug: 2-50-7-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-50-7-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Second Workflow Errors Caused by 'What to Do with Failed Messages?' Interface Setting in Batch Processing We had a problem with the second workflow of batch processing because the option 'Overwrite failed message and delete pending' was set, which caused the second workflow to encounter an error. However, we have resolved this issue now. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-21-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-21-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.21: - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPiK](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPiK) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPiK](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPiK) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bug Fixed Slug: 2-48-21-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-48-21-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Incorrect Level Displayed in Mapping Our mapping did not display the correct level hierarchy for the mapping record. For example, 'Account' is the first level, and 'Contact' and 'Contract' are child of 'Account'. However, 'Contract' was displayed incorrectly and appeared under 'Contact' instead of 'Account'. This issue has been resolved. #### Second Workflow Errors Caused by ‘What to Do with Failed Messages?’ Interface Setting in Batch Processing We had a problem with the second workflow of batch processing because the option ‘Overwrite failed message and delete pending’ was set, which caused the second workflow to encounter an error. However, we have resolved this issue now. #### Not able to be saving the mapping An error occurred while attempting to save many mapping records, resulting in the following error message: 'Apex CPU time limit exceeded: Error is in the expression ‘{!saveMapping}’ in page skyvvasloutions: sc_mapping: (skyvvasolutions).' This issue has been resolved by reducing the query record of object ifunction__c and reducing calling getFields(IMapping__c m). ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Enhancements Slug: 2-48-21-patch-2-enhancements URL: https://help.skyvva.com/#article/2-48-21-patch-2-enhancements ================================================================================ # 2. Enhancements #### Enhanced filter message for Sub-Interface We have enhanced the message monitor to filter specifically on the sub-interface. After selecting a sub-interface, the results will show only the messages belonging to its child that are linked to the selected sub-interface. This enhancement will enable faster searching for specific messages at a deeper level. #### Enhanced the structure message We have the API Monitoring mode present in our Message Monitoring in order to filter the API Message. Therefore we have improved our message structure of sObject Message to cover by API Message while callout failed. If you use this option to filter, you will be able to get an API Message and its child. For example, the filter option will retrieve messages such as the following: - API Message (Request Failed/Request Success) sObject Business Message - API Message (Have Request and Response) API Request Message (Request Success) sObject Message - API Response Message (Response Success/Fail) sObject Business Message #### Added Sample Data for Testing Workflow We have enhanced the workflow to allow you to create sample data for testing workflow conditions. This provides an easy way to test formulas in the workflow without having to update the IStructure for sample data in the interface or the message type field entry. Additionally, we can handle message types of type Salesforce sObject without message type field entries. The option to create sample data will appear on both the 'Create New Workflow Condition' and 'Edit Workflow Condition' screens. #### Allow the Mapping of Reference Fields to Nodes In the previous version of outbound processing, mapping reference fields to a node was not allowed. However, we have now enhanced the mapping functionality to allow for reference mapping to a master node on the target side for the Outbound Interface. This will result in the generation of an object node in the payload after the callout. #### Added New “GETORGID” Formula We have added a new formula function called GETORGID to retrieve the org ID. This function can be used, for example, to determine which Salesforce instance a request message is coming from to the receiver. The org ID information can then be used to send the response message back to the caller via a synchronous call. #### Add a New ''Re-Order Mapping" button on the Mapping Tool We have added a new button called 'Re-Order Mapping' to the Mapping Tool, which allows users to reorder mapping records by sequence. This change also prevents users from reordering records in Data Mapping. When the button is used, the sequence field is reorganized during the callout of the record, and the resulting payload records are sorted in ascending sequence numbers. These improvements result in a more efficient and organized data payload sequence structure. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-8-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-8-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.8 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkDI](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkDI) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkDI](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkDI) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Enhancements Slug: 2-50-8-patch-3-enhancements URL: https://help.skyvva.com/#article/2-50-8-patch-3-enhancements ================================================================================ # 3. Enhancements #### Enhanced Message Monitor of Batch Queue Detail page On the Batch Queue Detail page, you can monitor messages on the 'Messages' section of the Batch Queue screen. In the previous version, messages were displayed as flat messages, which could be difficult to navigate, especially for complex data structures. However, in the current version, the messages have been enhanced by a hierarchical message view, allowing for easier visualization of data relationships and dependencies. #### Enabling DataLoader to Import XML and JSON Files with V3 Processing Without Specifying Message Type In the previous version, importing data in JSON and XML format was not possible unless your interface was linked with a message type. However, with the introduction of the Interface API Version setting, you can now set it to V3 to allow for the mapping of sObject hierarchies. As a result, we have enhanced our Data Loader to support XML and JSON files with V3 processing without the need for a message type. #### Added New “Reprocess In Batch” Button On Message Detail Screen Currently, reprocessing messages on the Message Detail page in synchronous mode by default is no longer possible due to the presence of multiple business messages in a root message. This can result in the Apex CPU time limit being exceeded. To address this issue, we have enhanced the functionality by adding a new 'Reprocess In Batch' button, which allows messages to be reprocessed in batches. #### Added Sample Data for Testing Workflow We have enhanced the workflow to allow you to create sample data for testing workflow conditions. This provides an easy way to test formulas in the workflow without having to update the IStructure for sample data in the interface or the message type field entry. Additionally, we can handle message types of type Salesforce sObject without message type field entries. The option to create sample data will appear on both the 'Create New Workflow Condition' and 'Edit Workflow Condition' screens. #### Allow the Mapping of Reference Fields to Nodes In the previous version of outbound processing, mapping reference fields to a node was not allowed. However, we have now enhanced the mapping functionality to allow for reference mapping to a master node on the target side for the Outbound Interface. This will result in the generation of an object node in the payload after the callout. #### Enhanced filter message for Sub-Interface We have enhanced the message monitor to filter specifically on the sub-interface. After selecting a sub-interface, the results will show only the messages belonging to its child that are linked to the selected sub-interface. This enhancement will enable faster searching for specific messages at a deeper level. #### Enhanced the Structure Message We have the API Monitoring mode present in our Message Monitoring in order to filter the API Message. Therefore we have improved our message structure of sObject Message to cover by API Message while callout failed. If you use this option to filter, you will be able to get an API Message and its child.  For example, the filter option will retrieve messages such as the following: - API Message (Request Failed/Request Success) sObject Business Message - API Message (Have Request and Response) API Request Message (Request Success) sObject Message - API Response Message (Response Success/Fail) sObject Business Message #### Added New “GETORGID” Formula We have added a new formula function called GETORGID to retrieve the org ID. This function can be used, for example, to determine which Salesforce instance a request message is coming from to the receiver. The org ID information can then be used to send the response message back to the caller via a synchronous call. #### Upgrade API Version to 57 on the Skyvva package In the previous version, the Skyvva app used API version 52 for Apex classes, Apex triggers, Aura components, LWC components, and Visualforce pages. To prevent certain errors, for example, you were unable to map the Address field of the asset sObject using our current API Version. Therefore we have updated the API Version to 57. #### Add a New ''Re-Order Mapping" button on the Mapping Tool We have added a new button called 'Re-Order Mapping' to the Mapping Tool, which allows users to reorder mapping records by sequence. This change also prevents users from reordering records in Data Mapping. When the button is used, the sequence field is reorganized during the callout of the record, and the resulting payload records are sorted in ascending sequence numbers. These improvements result in a more efficient and organized data payload sequence structure. #### Redesign of Interface detail page, interface list view, and Interface Tab of the Integration page screen We have redesigned the interface screen to improve organization and provide more flexible features, including: - Enhanced flexibility in searching for interface records on the interface list view and interface tab of the Integration page. - Hierarchical view of sub/IChain interfaces on Interface Tab of Integration page, interface list view, and the left panel on interface detail page view. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Warning Slug: 2-50-8-patch-2-warning URL: https://help.skyvva.com/#article/2-50-8-patch-2-warning ================================================================================ # 2. Warning #### Disabled the ‘Check Syntax’ Button on the Expression Formula  of Inbound Interface The 'Check Syntax' button for formula and expression in the inbound interface IMapping has been disabled. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Bug Fixed Slug: 2-50-8-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-50-8-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Fixed tree messages processing separately between the parents and child messages There was an issue when reprocessing outbound tree messages using the Integration Scheduler. The Scheduler selected the child message record of the message hierarchy and attempted to reprocess them separately from the parent message. However, an error occurred with the message 'No outbound Adapter to callout >Detail:Class.skyvvasolutions.IServiceBatchCallOut.: line 136, column 1' in the code. This issue has since been fixed. #### Fixed Create duplicate child fail messages after reprocessing the outbound tree message There is an issue when reprocessing the failed tree message using the REST, SOAP, and SAP CPI adapter. This results in the creation of multiple duplicate failed child business messages when attempting to reprocess those failed tree messages again. #### MessageReprocessPerInterface Scheduler Did Not Pick Up the Message for Reprocessing An issue occurred while reprocessing the message with the MessageReprocessPerInterface scheduler. When the scheduler started, it did not pick up the message for reprocessing. However, this issue has now been fixed. #### The Child Unlink Parent Business During Reprocess Message We experienced an issue with the 'Delete Completed but keep other messages' interface setting during message reprocessing when the parent business message was partial completed, with some child messages completed and some failed. When reprocessing, if all child messages are completed, the parent business message is marked as completed, and any failed child messages are also marked as completed. However, if child messages were completed before being unlinked from the root message, they are not deleted. This issue has been resolved. #### Fixed Response Message does not contain all business response messages There is a problem while attempting to reprocess the request message which has a response message. After reprocessing the request successfully, it will respond to the response message back. Some business messages are not inside the API Response Message. #### Get Error “For Job id ‘xxxxxxxxxxxxxx’ :vskyvvasolution: Too many query rows: 50001” on Delete Completed Message after Processing This issue occurs when the 'delete completed' flag is set on an Integration with a large number of completed messages, and the integration attempts to delete all completed messages at once. This causes an error message to be raised, specifically: 'For Job id ‘xxxxxxxxxxxxxx’ :vskyvvasolution: Too many query rows: 50001'. However, this issue has been resolved by deleting only specific completed messages that were processed per transaction, rather than selecting all completed messages per integration for deletion. #### Backup the Formula Mapping did not work on multiple lines If you backed up mapping records that contained a formula field with multiple lines, the backup function did not capture all the values in the formula field. However, this issue has been fixed. #### Source Object Generates Wrong the Inbound Interface While Update Interface Name There is an issue when an inbound interface is designed as V3 without specifying a message type in the Interface setting on Interface API Version = V3. The structure mapping generates a sObject hierarchy, typically with the source object represented as a sObject node map. However, changing the interface name also changes the source object to the current interface name, which can cause integration data to become incorrect. #### Clear Old Value When Click Back Button in Data Loader In the previous version, when you clicked the back button in the Data Loader and then clicked the Next button to proceed to the next step, the current value remained on the screen. This issue has been fixed by clearing the previous value when clicking the back button. #### Incorrect Level Displayed in Mapping Our mapping did not display the correct level hierarchy for the mapping record. For example, 'Account' is the first level, and 'Contact' and 'Contract' are child of 'Account'. However, 'Contract' was displayed incorrectly and appeared under 'Contact' instead of 'Account'. This issue has been resolved. #### Fixed Check Syntax of Mapping Formula and Expression An issue has been identified with checking the syntax of the field and sObject in Formula and Expression mapping on the outbound interface. For example, the expression VLOOKUP(Account, Name, Name, Name) has the correct syntax for the field and sObject, but it was displaying an error message stating that 'Field Account is invalid.' This issue has now been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-22-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-22-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.22: - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPie](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPie) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPie](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPie) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bug Fixed Slug: 2-48-22-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-48-22-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Not able to be saving the mapping An error occurred while attempting to save the mapping records, which resulted in the following error message: '928 >> System.DmlException: Upsert failed. The first exception occurred on row 7, with the following error: DUPLICATE_VALUE. A duplicate value was found for the skyvvasolutions__ExtID__c field on a record with the ID xxxxxxxxxxxxxxxx. This was due to mapping the same attribute fields to the same target/source fields multiple times. However, this issue has now been fixed. #### Getting Issue Cannot Update Standard comment There is an issue while you have used the Operation Type Apex class function in order to override message comments. Since it still uses the standard comment instead. This issue has been fixed. #### The Formula Cannot Retrieve the Field Value The formula function was unable to retrieve the value from the 'Field' due to white spaces at the start and end of the field, while there was another field inside the formula that had a relation with a dot. For example, in the formula IF(FieldA = 'xxx', FieldB.FieldC, FieldD), FieldA was unable to trim the white spaces, resulting in an issue. However, this issue has been resolved. #### Fixed the Issue of Duplicate Name Creation for Connection Destination in the New Agent There is an issue when the user creates multiple connection destinations with the same name, as it will only display one connection destination even if there are multiple. Therefore, we are no longer allowed to create duplicate names. #### Fixed Various Issues on Mapping Tool - The fixed outbound mapping now allows fields to be mapped directly without a parent node - Previously, there was an issue re-generating sequence when mapping a source node to multiple target nodes in outbound mapping. However, this issue has been resolved. - The problem of deleting a mapping record and unintentionally deleting other sibling records has been fixed. - Fixed the ordering of mapping records based on the Target Node records in outbound mapping. - The issue of the mapping tool generating an incorrect tree mapping view of the outbound mapping has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-9-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-9-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.9 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkFs](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkFs) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkFs](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkFs) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Enhancement Slug: 2-50-9-patch-3-enhancement URL: https://help.skyvva.com/#article/2-50-9-patch-3-enhancement ================================================================================ # 3. Enhancement #### Allow Importing Message Type for MsAccess Database We have enhanced our 'Import Database Metadata' function for the MsAccess database to automatically retrieve the table and fields, which is then used to create the message type. This enhancement can help you avoid manual errors while creating the message type. #### Enhanced some adapters to handle request timeout We enhanced our adapter by adding a timeout property to limit request timeouts. The default timeout is 10 seconds. A custom timeout can be defined for each callout. The minimum is 1 millisecond and the maximum is 120,000 milliseconds. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Bug Fixed Slug: 2-50-9-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-50-9-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Fixed Deletion of Partial Messages without Child Message There is an issue when using the 'Delete Failed Message' function on the Integration Setting, where messages may be partial due to failed and new child messages. The 'DoMaintenance' scheduler runs and deletes these failed and new messages, but it may leave partial messages without a child. This issue has been fixed by implementing a trigger to delete partial messages without a child. #### Missing CSV Records While Process V4 Integrate An issue occurred during the ‘V4 integrate’ process in CSV format. For example, you may have pushed many records, but only one was pushed into Salesforce. This issue has since been fixed. #### Fixed Test Mapping There are several fixes on the Test Mapping function as follows: - Fixed execute while no message is to be executed by an added alert warning message “Please Create iMessage” - The issue occurred when clicking the 'Refresh' button, but it didn't clear the previously executed result. - Get an error message “Attempt to de-reference a null object” alert while clicking Execute XML Data format. - Get an error message “No implementation for file type:json. The possible types are CSV and XML.Line Of Number: 487” while clicking Execute JSON Data format. - Getting “Message Error: List index out of bounds: 0Line Of Number: 26” while clicking Execute XML Data format. - If you select the message and then click the Execute button, You will get an error message “**Message Error: Invalid payload format for the interface a0d1X000002faKcQAILine Of Number: 395**”. #### Fixed Find & Replace Function There are various issues that have been fixed on Find & Replace as follows  - The issue of the message status displaying as gray even if it has failed and is pending under Find & Replace has been resolved. - Fixed cannot replace the null value - Fixed cannot find middle text for replacement. - Added a column to display the status of the message under Find & Replace - Cannot update the manual value #### Not able to be saving the mapping An error occurred while attempting to save the mapping records, which resulted in the following error message: '928 >> System.DmlException: Upsert failed. The first exception occurred on row 7, with the following error: DUPLICATE_VALUE. A duplicate value was found for the skyvvasolutions__ExtID__c field on a record with the ID xxxxxxxxxxxxxxxx. This was due to mapping the same attribute fields to the same target/source fields multiple times. However, this issue has now been fixed. #### Getting Issue Cannot Update Standard comment There is an issue while you have used the Operation Type Apex class function in order to override message comments. Since it still uses the standard comment instead. This issue has been fixed. #### The Formula Cannot Retrieve the Field Value The formula function was unable to retrieve the value from the 'Field' due to white spaces at the start and end of the field, while there was another field inside the formula that had a relation with a dot. For example, in the formula IF(FieldA = 'xxx', FieldB.FieldC, FieldD), FieldA was unable to trim the white spaces, resulting in an issue. However, this issue has been resolved. #### Fixed the Issue of Duplicate Name Creation for Connection Destination in the New Agent There is an issue when the user creates multiple connection destinations with the same name, as it will only display one connection destination even if there are multiple. Therefore, we are no longer allowed to create duplicate names. #### Fixed Various Issues on Mapping Tool - The fixed outbound mapping now allows fields to be mapped directly without a parent node - Previously, there was an issue re-generating sequence when mapping a source node to multiple target nodes in outbound mapping. However, this issue has been resolved. - The problem of deleting a mapping record and unintentionally deleting other sibling records has been fixed. - Fixed the ordering of mapping records based on the Target Node records in outbound mapping. - The issue of the mapping tool generating an incorrect tree mapping view of the outbound mapping has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Warning Slug: 2-50-9-patch-2-warning URL: https://help.skyvva.com/#article/2-50-9-patch-2-warning ================================================================================ # 2. Warning #### Adding a picklist value while upgrading the new version In general picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ##### Added picklist “Custom Message” on the “Message Type” field of “skyvvasolutions__IMessage__c” object: - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “**Object Manager**” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__IMessage__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/07/Screen-Shot-2023-07-24-at-3.34.33-PM.png) - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the **"Message Type”** field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/07/Screen-Shot-2023-07-24-at-3.39.33-PM.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/07/Screen-Shot-2023-07-24-at-3.50.51-PM.png) - Fill value’s API name **"Custom Message"** in the box and click the save button. ![](../images/2023/07/Screen-Shot-2023-07-24-at-3.52.51-PM.png) Finally, you will get the “Custom Message**”** picklist value as the screenshot below. ![](../images/2023/07/Screen-Shot-2023-07-24-at-3.56.31-PM.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Message Type field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular Message Type.[/su_box] **Added picklist “Create **Custom Message**” on the “****Operation Type” ****field of “skyvvasolutions__Interfaces__c” object:** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “**Object Manager**” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__Interfaces__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/07/Screen-Shot-2023-07-24-at-4.13.39-PM.png) - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the **"Operation Type”** field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/07/Screen-Shot-2023-07-24-at-4.55.52-PM.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/07/Screen-Shot-2023-07-24-at-5.07.32-PM.png) - Fill value’s API name **"Create Custom Message"** in the box and click the save button. ![](../images/2023/07/Screen-Shot-2023-07-24-at-5.28.03-PM.png) Finally, you will get the “Create Custom Message**”** picklist value as the screenshot below. ![](../images/2023/07/Screen-Shot-2023-07-24-at-5.26.28-PM.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Operation Type field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular Operation Type.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-10-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-10-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.10 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkGg](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkGg) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkGg](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkGg) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Warning Slug: 2-50-10-patch-2-warning URL: https://help.skyvva.com/#article/2-50-10-patch-2-warning ================================================================================ # 2. Warning #### Adding a picklist value while upgrading the new version In general picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ##### Added picklist “Agent Message” on the “Message Type” field of “skyvvasolutions__IMessage__c” object: - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “**Object Manager**” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__IMessage__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/07/Screen-Shot-2023-07-24-at-3.34.33-PM.png) - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the **"Message Type”** field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/07/Screen-Shot-2023-07-24-at-3.39.33-PM.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/07/Screen-Shot-2023-07-29-at-3.35.58-PM.png) - Fill value’s API name **"Agent Message"** in the box and click the save button. ![](../images/2023/07/Screen-Shot-2023-07-29-at-3.24.24-PM.png) Finally, you will get the “**Agent Message****”** picklist value as the screenshot below. ![](../images/2023/07/Screen-Shot-2023-07-29-at-3.32.46-PM.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Message Type field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular Message Type.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Enhancement Slug: 2-50-8-patch-3-enhancement URL: https://help.skyvva.com/#article/2-50-8-patch-3-enhancement ================================================================================ # 3. Enhancement #### Added New “User with invalid license key” Option for Filter Users Invalid License Key We have enhanced the Type of Users in order to filter the user's invalid license key. This option is called “User with invalid license”.  #### Added a new “Save & New” Button on Create the Message Type Popup Screen We have added a 'Save & New' button when creating new message-type records. This button will be helpful if you do not want to repeatedly click the 'New' button. When clicked, the button will save the current record and open a new record form. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Bug Fixed Slug: 2-50-10-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-50-10-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Outbound Mapping Tool Generate Wrong Order Fields There is an issue with receiving the outbound error message '387, Message: 851 Message :: MyStack, No item' due to incorrect field order mapping generated by the Outbound Mapping Tool. However, we have already fixed this issue. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-11-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-11-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.11 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkHj](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkHj) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkHj](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkHj) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Enhancement Slug: 2-50-11-patch-2-enhancement URL: https://help.skyvva.com/#article/2-50-11-patch-2-enhancement ================================================================================ # 2. Enhancement #### Enhanced Screen and Create Message Type on Open Editor Function #### We have enhanced the Open Editor button function in the Repository, allowing you to select a specific API to create the desired Message Type. #### Add Runtime Behavior for sub-interface Workflow In the previous version, the Workflow did not have the Runtime Behavior option. However, in the current version, this option is now available, allowing you to configure separate settings from the main/parent interface. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Bug Fixed Slug: 2-50-11-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-50-11-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Not able to Export Large Records in the Data Loader Fixed the issue of encountering the apex job error message 'First error: skyvvasolutions: Too many query rows: 50001' while exporting a large number of records using our Data Loader function. This issue has been resolved. #### Fixed Generate SObjectType Node for XSD File We have fixed the generation of message types to include the SObjectType, ensuring that the structure is generated with the SObjectType filling in the node name for XSD generate MetaData. Otherwise, it will use the message type name. For example, if your MessageType type is Salesforce sObject and the SObjectType is 'Account', it will use the 'Account' value to generate the node name. If they are not Salesforce sObject type, the message type name will be used for the node name of the XSD file. #### Fixed various issues in Test Mapping Function - There is an issue while executing the payload without an external ID in Test Mapping Function, and the result still shows success, but only the node without any fields. This issue has been resolved by adding the error alert message: 'After evaluating the data source 'FieldName', no data was passed for the mapped external ID field 'FieldName'.' for inbound processing. - The issue of the payload not generating correctly with the SOAP and REST template payload has been fixed for inbound processing. - Fixed getting a nonstop spinner on Query Editor of outbound processing while querying with the wrong field of the sObject. It was fixed by adding the error message “Error No such column ‘FieldName’ on entity ‘sObject’” - Fixed test mapping to support XML and JSON file formats when the interface does not use the message type and set V3 to Interface API Version. - Fixed the functionality of the Refresh button in the Test Mapping feature, ensuring that it works correctly with the outbound interface. - Select the existing message to execute and observe the error message 'Error: Attempt to de-reference a null object.' This issue has been resolved. - The issue of not removing the existing file after clicking the cancel button in the Import file functionality has been fixed. - Due to the fact that Test Mapping does not support Outbound Interface API Version V2, we have removed the 'Test Connection' button and Payload box for the outbound Interface API Version V2. - While selecting the completed message to be execute in order to get the payload, it will get the message alert error “**Attempt to de-reference a null object**”. This issue have been fixed. - Fixed issue of page refreshing while executing the new record and retrieving the existing result payload. - Fixed the issue where clicking the 'Test Connection' button did not redirect the screen to the Test Connection Page. #### Fixed minor bug - Fixed the filter on the Integration under the Interfaces filters section of the Integration page, which now only allows filtering for the current integration. - The issue of saving the new interface and losing the tree of the interfaces list has been resolved. - When creating the sub-interface on the query editor, it generates the wrong Parent Relationship Name / Foreign Field when working with a custom object. #### Fixed Generate Payload for Cusotm Processing Class of Rest Adapter We encountered a small bug in the custom processing class of the REST adapter while generating a request payload to be sent to the actual business server. However, this issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-12-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-12-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.12 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkIS](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkIS) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkIS](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkIS) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Enhancement Slug: 2-50-12-patch-3-enhancement URL: https://help.skyvva.com/#article/2-50-12-patch-3-enhancement ================================================================================ # 3. Enhancement #### Enhanced Outbound Mapping V3 Allows to Map Hierarchical sObjects (without Message Type) We have improved the mapping tool to support hierarchical sObject mapping for outbound processing in order to process V3 without the need for Message Type. #### Enhanced Upload IStructure in Interface In the previous version, uploading IStructure on an interface would override the existing IStructure records. However, we have now added an alert message to prompt confirmation for overriding or merging the IStructure records of the interface. #### Enhanced Screen and Create Message Type on Open Editor Function We have enhanced the Open Editor button function in the Repository, allowing you to select a specific API to create the desired Message Type. #### Add Runtime Behavior for sub-interface Workflow In the previous version, the Interface Workflow Setting did not have the Runtime Behavior option. However, in the current version, this option is now available, allowing you to configure separate settings from the main/parent interface. #### Enhanced Data Loader works with V3 processing without Message Type for Outbound Processing In the previous version, outbound mapping did not support hierarchical sObjects with V3 processing. However, in the current version, outbound mapping now allows mapping with V3 hierarchical sObjects. Therefore, we have enhanced the support for V3 processing without requiring a message type. #### Enhanced 'Generate Template' Functionality with Message Type Option In the previous version, the 'Generate Template' functionality only supported generating SOAP and REST templates for sObjects. However, we have enhanced it to include the option of selecting a Message Type. This allows users to utilize existing message types for creating new SOAP and REST templates. #### Add Processing Mode for sub-interface Workflow Setting In the previous version, the Interface Workflow Setting did not have the Processing Mode option. However, in the current version, this option is now available, allowing you to configure separate settings from the main/parent interface. #### Enhanced Screen on Switching/Selecting Some Mode of Interface Detail Page - When switching from V3 to V2 on the Interface API Version without specifying the Message Type, the MetaData Provider, Repository, and Source/Target Message Type options will be disabled for filtering. - When switching from Normal Mapping to External Mode without specifying the Message Type, the MetaData Provider, Repository, and Source/Target Message Type options will be disabled for filtering. - When switching from V3 to V2 on the Interface API Version while specifying the Message Type, an alert message will appear stating, 'You have selected API Version 'V2' and have specified the message type. This is not needed because using API 'V2' does not require a message type. Please remove the message type or set it to 'V3' if you want to use a message type.' You can confirm by clicking the 'Ok' button, which will automatically remove the message type. Alternatively, clicking the 'Cancel' button will retain the existing setting. - When switching from Normal Mapping to External Mode while specifying the Message Type, an alert message will appear stating, 'You have checked External Mapping and have specified the message type. This is not needed because using External Mapping does not require a message type. Please remove the message type or uncheck External Mapping if you want to use a message type.' You can confirm by clicking the 'Ok' button, which will remove the Message Type. Alternatively, clicking the 'Cancel' button will keep the existing mode. #### Enhancements to the Data Loader - Currently, outbound mapping supports hierarchical sObjects with V3 processing without requiring a Message Type. As a result, we have enhanced the Data Loader to generate the V3 payload without the need for a message type. - We have enhanced the export function to support V2 (old interface mapping style). For example, you can now manually create two interfaces (Parent + Child) and establish a chained interface based on their relationship. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Bug Fixed Slug: 2-50-12-4-patch-bug-fixed URL: https://help.skyvva.com/#article/2-50-12-4-patch-bug-fixed ================================================================================ # 4. Bug Fixed #### Fixed various issues in Test Mapping Function - When executing records with outbound interface V2 without linking the adapter, the result is not generated. This issue has been resolved by generating the result. - When clicking the 'Test Connection' button on the Test Mapping, the screen did not correctly capture the adapter value. This issue has been fixed. - An error message "ERROR List index out of bounds: 0566" is displayed when clicking on the Test Mapping button with the Interface Type set to 'Event-Interface'. This issue has been fixed to allow test mapping with the Interface Type 'Event-Interface'. - The error message "Message Error: Attempt to de-reference a null objectLine Of Number: 381" occurs when selecting an existing message to be executed with interface v2. However, this issue has been resolved. - Added error message “**Test Mapping in Sub-Interface is not allowed. Please come to the Main-Interface**” while attempting to click the ‘Test Mapping’ button. #### Fixed minor bug - When clicking on the sub-interface link to view the interface details, the tree interface was not displayed. This issue has been resolved by implementing hierarchical viewing. - When using the query editor on sub-interfaces, the interface did not display the hierarchy. This issue has been fixed. - On the query editor, while you have selected all fields, the root node did not select. This issue has been resolved. - Remove the warning without setting external ID for REST Query, REST Query All, BULK Query, and BULK Query All operations. #### Fixed various issue IWorkflow - There is an issue when attempting to save a workflow without a condition, causing the condition to generate as 'undefined'. We have fixed this issue and now it is no longer possible to save an empty condition. - There is an issue of duplicate sequencing of workflow records when saving them. As a result, the last workflow is executed multiple times due to the same sequence. - The target interface of the workflow was set randomly. However, we have now set the default target interface to match the selected source interface. #### Fixed various issues in the Mapping Tool - There was an issue when mapping the parent field from the source to the child in the target while doing the inbound mapping. These mapping records were still located in the parent block. However, this issue has been resolved by relocating them to the child block. - We encountered an issue while mapping the attribute and copying the node. After mapping it, we were unable to remove these records. However, this issue has been fixed - We encountered a problem while performing inbound mapping in V3 without a Message Type when you uploaded the IStructure for the Interface. This resulted in additional fields being added under the Name sObject field in the source. This issue has been resolved. - Added “fx Functions” to do formula for Hybrid Mapping. - While creating a formula with the fx(Functions) field map, we encountered an issue where the formula mapping would save with the wrong field assigned to another node of fields. However, I am pleased to inform you that this issue has been resolved. #### Missing Some Messages After Search Message Again There is an issue when searching for messages and clicking on 'Show More' to view additional messages. After performing a search and clicking 'Show More' again, some messages are missing. This issue has been fixed. #### Missing Not able to Delete Integration on Integration Detail Page There is an issue when the user deletes the integration on the Integration Detail Page. The integration does not get deleted. However, this issue has been resolved. #### Not able to do Manual Processing There is an issue when expanding the main interface in order to view the interface tree. When attempting to select the main interface for manual processing, the “Manual Process” button is disabled. However, this issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-23-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-23-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.23: - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPk1](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPk1) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPk1](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPk1) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bug Fixed Slug: 2-48-23-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-48-23-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Fixed the filter of the License Key There is an issue when you filter for "Users with active license keys" in the Type of Users, as it also filters out users with invalid license keys. However, this issue has been fixed. #### Not able to Export Large Records in the Data Loader Fixed the issue of encountering the apex job error message ‘First error: skyvvasolutions: Too many query rows: 50001’ while exporting a large number of records using our Data Loader function. This issue has been resolved. #### Fixed Created Message Type - If your XML file contains prefix namespaces, the prefix namespaces will be included when creating the message type. However, this issue has been resolved by removing the prefix namespaces during the message type creation process. - If your XML file has many records without a root tag, the import message type will be generated incorrectly. Fixed by adding the message error “XML Parsing Error : This page contains the following errors:error on line x at column x: Extra content at the end of the document Below is a rendering of the page up to the first error.” - In the previous version of importing message types, namespaces were generated for all message type nodes. However, in the current version, namespaces are only generated for elements that have on themselves. #### Missing Some Messages After Search Message Again There is an issue when searching for messages and clicking on 'Show More' to view additional messages. After performing a search and clicking 'Show More' again, some messages are missing. This issue has been fixed. #### Error Occurs in Restore Function for Restoring Same Interface with Different Integration There is an issue when searching for messages and clicking on 'Show More' to view additional messages. After performing a search and clicking 'Show More' again, some messages are missing. This issue has been fixed. #### Outbound Mapping Tool Generate Wrong Order Fields There was an issue with receiving the outbound error message '387, Message: 851 Message :: MyStack, No item' due to an incorrect field order mapping generated by the Outbound Mapping Tool. For instance, if you had to map the same source node to multiple target nodes and an issue was raised, it was not done correctly. However, we have already fixed this issue. #### Fixed Generate SObjectType Node for XSD File ** **We have fixed the generation of message types to include the SObjectType, ensuring that the structure is generated with the SObjectType filling in the node name for XSD generate MetaData. Otherwise, it will use the message type name. For example, if your MessageType type is Salesforce sObject and the SObjectType is 'Account', it will use the 'Account' value to generate the node name. If they are not Salesforce sObject type, the message type name will be used for the node name of the XSD file. #### Fixed Error when Re-ordering IWorkflow An error occurs when the checkbox for re-ordering IWorkflow is selected. As a result, an error message will be displayed: "[Failed to execute 'querySelectorAll' on 'Element': '[data-row-key-value="xxxxxxx (Condition with Break Link) [data-col-key-value="seq-number-1"] > :first-child' is not a valid Selector.]" This error message is triggered when the condition value contains a new line, and that value is utilized as the key to re-order the record on this screen. However, this problem has been resolved by using an ID instead. #### Apex Heap Size Issue When Deleting Messages with Multiple Child Messages You may encounter the apex heap size limit when selecting all messages (10,000 records) that have a large number of child for deletion using the 'Delete' or 'Cancel' buttons in Message Monitoring. This issue has been resolved by stopping the 'BatchGenerateMessage' job to collect messages and pass all messages collected to the 'BatchDeleteCancelAllMessage' job instead of using only one job 'BatchDeleteCancelAllMessage' to query and delete. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Enhancements Slug: 2-48-23-patch-2-enhancements URL: https://help.skyvva.com/#article/2-48-23-patch-2-enhancements ================================================================================ # 2. Enhancements #### Added new “User without valid license key” option for filter user without License Key We have enhanced the Type of Users in order to filter the user's invalid license key. This option is called “User without valid license key”. #### Enable SAP CPI Adapter to Send SOAP Payload In the previous version, the SAP CPI adapter only sent pure XML/JSON based on the Rest Template. Now, we have enhanced it to enable sending SOAP payloads based on the SOAP Template with the SOAP Protocol. #### Add Processing Mode and Runtime Behavior for sub-interface Workflow Setting In the previous version, the Interface Workflow Setting did not have the Processing Mode and Runtime Behavior options. However, in the current version, this option is now available, allowing you to configure separate settings from the main/parent interface. #### Enhanced Default Workflow Target Setting to Match Workflow Source In the previous version, the Interface Workflow Target Setting was randomly set by default. However, we have enhanced it so that by default, it will now be set to match the Interface Workflow Source. #### Enhance CSV Payload of V3 Outbound Adapter to support Hierarchy The outbound file adapter previously did not support Hierarchy CSV payloads. However, we have enhanced it to now support the generation of Hierarchy CSV payloads with adapters such as Google Drive, Dropbox, and Google PubSub. #### Creating a 'File Message' to Cover Business Messages via Integration with the Inbound Internet Drive Adapter In the previous version, when pushing data using our inbound internet drive adapter, it would only create the business message for monitoring purposes. As a result, we have enhanced it to include the File Message, which covers the business messages. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-13-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-13-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.13 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkNx](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkNx) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkNx](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkNx) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Info Slug: 2-50-13-patch-2-info URL: https://help.skyvva.com/#article/2-50-13-patch-2-info ================================================================================ # 2. Info #### Removed Database Template in Generate Template Function on Repository In the previous version, the "Generate Template" function on the Repository included three options for the 'Select Type Template': Rest, Soap, and Database Template. However, in the current version, we have removed the "Database Template" picklist value from the 'Select Type Template' options. This change was made because we already have the "Import Database Metadata" button on the same page as the "Generate Template" button. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Warning Slug: 2-50-13-patch-3-warning URL: https://help.skyvva.com/#article/2-50-13-patch-3-warning ================================================================================ # 3. Warning #### Adding the picklist values while upgrading the new version In general picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ##### Added a few values to the picklist for the 'Type' field of the 'skyvvasolutions__MessageType__c' object: - **Query Expression** - **Query sObject** - **Query Children** **Follow the steps below to create the picklist: ** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__MessageType__c”** object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/10/1-MessageTypeObject.png) - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the "Type” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/10/2-ObjectField.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/10/3-ClickNewButtonAddedPicklist.png) - Fill in the value’s API name "**Query Expression**, **Query sObject**, and **Query Children**" in the box and click the save button. ![](../images/2023/10/4-FieldValues.png)Finally, you will get the “**Query Expression**, **Query sObject**, and **Query Children**” picklist value as the screenshot below. ![](../images/2023/10/5-AfterAdded.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Type field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular Type.[/su_box] ##### Added a “File Message” value to the picklist for the 'skyvvasolutions__Message_Type__c' field of the 'skyvvasolutions__IMessage__c' object: **Follow the steps below to create the picklist: ** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__IMessage__c”** object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/10/1.MessagesObject.png) - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the "Message Type” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/10/2-MessageTypeField.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/10/4.ClickNewButtonToSave.png) - Fill in the value’s API name "**File Message**" in the box and click the save button. ![](../images/2023/10/3.InputTheAPIFieldName.png) Finally, you will get the “**File Message**” picklist value as the screenshot below. ![](../images/2023/10/5.FinalSave.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Message Type field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular Message Type.[/su_box] ##### Added a few values to the picklist for the 'skyvvasolutions__Operation_Type__c' field of the 'skyvvasolutions__IWorkFlow__c' object: - **Upsert Auto External ID** - **Update Auto External ID** - **Delete Auto External ID** **Follow the steps below to create the picklist: ** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__IWorkFlow****__c”** object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/10/1.Iworkflow-1.png) - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the "Operation Type” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/10/Screenshot-2023-11-01-at-09.23.46.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/10/3.ClickNewButton.png) - Fill in the value’s API name "**Upsert Auto External ID**, **Update Auto External ID**, and **Delete Auto External ID" **in the box and click the save button. ![](../images/2023/10/3.InputpicklistValue.png) Finally, you will get the "**Upsert Auto External ID**, **Update Auto External ID**, and **Delete Auto External ID**” picklist values as the screenshot below. ![](../images/2023/10/Screenshot-2023-11-01-at-09.26.24.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this **'skyvvasolutions__Operation_Type__c' **field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular**'skyvvasolutions__IWorkFlow__c'**.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Enhancement Slug: 2-50-13-patch-4-enhancement URL: https://help.skyvva.com/#article/2-50-13-patch-4-enhancement ================================================================================ # 4. Enhancement #### Enhanced Data Loader supports new pure XML payload We have introduced a new feature to generate Pure XML Payload. As a result, we have added the XML Root Tag and XML Root Tag Namespace options when selecting the XML Data type on the Data Loader screen. These additions enable the generation of Pure XML Payload as follows: - XML Root Tag is used to add the Root Tag of the XML payload. - XML Root Tag Namespace is used to add your own Namespace to the XML payload. #### Enhanced CSV Payload of V3 File Outbound Adapter to support Hierarchy The outbound file adapter previously did not support Hierarchy CSV payloads. However, we have enhanced it to now support the generation of Hierarchy CSV payloads with adapters such as Google Drive, Dropbox, Microsoft OneDrive, and Google Cloud Pub/Sub. To accomplish this, we have introduced a node prefix for interfaces with multiple levels in the header field. Here's an example of the desired hierarchy: NodeAccount.Field, NodeContact.Field, NodeN.Field. #### Creating a 'File Message' to Cover Business Messages via Integration with the Inbound Internet Drive Adapter In the previous version, when pushing data using our inbound internet drive adapters such as Google Drive, Dropbox, Microsoft OneDrive, and Amazon S3, it would only create the business message. However, we have enhanced it to include the File Message as well, providing additional context to understand the source of each message. We also added the file name as the transfer ID of that message. So we can easily view which files belong to which group of messages by its root as "File Message". #### Enhanced to Custom Message Name Format to support Interface V3 The custom message name format is used to customize any name based on your settings in the interface. Currently, the custom name format only supports interface v2. Therefore, we have enhanced the capability to customize message names with interface V3. #### Added Query Template on Generate Template Function We have enhanced the Generate Template Function on the repository page to create the message types specifically for querying. The Query Template is used with the V4/Query API to construct queries. This API facilitates executing search queries, specifying search criteria, and retrieving search results. #### Enhanced Email Adapter to Support V3 Processing In the previous version, the Email adapter only supported v2 inbound processing. However, we have now enhanced it to support inbound and outbound V3 processing, including the handling of two in the body or attachments. #### Added a few picklists for the Operation Type of Workflow We have added Upsert Auto External ID, Update Auto External ID, and Delete Auto External ID as picklist values for the Operation Type in the Workflow. This enhancement allows users to filter messages based on these operation types. #### Added WorkFlow Status Button in Message Details We have added a Workflow Status Button to the Message Details, making it easier to view and check the workflow status, similar to the message monitoring workflow view. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 5. Bug Fixed Slug: 2-50-13-patch-5-bug-fixed URL: https://help.skyvva.com/#article/2-50-13-patch-5-bug-fixed ================================================================================ # 5. Bug Fixed #### Fixed various issues regarding the Import Metadata and Open Editor Function - When using the XSD file type and uploading an XSD file on the Import Metadata screen, an error occurs, causing the screen to become stuck after clicking Save. This issue has been resolved. - There is an issue when uploading a JSON Schema file without the 'title' keyword. If you choose the 'From the keywords 'title' option on 'Choose the name for the root message type' in order to generate the root message type, it results in an endless spinner. However, this issue has been fixed. - Select the check header box in the message type section and delete them. However, the checkbox headers remain checked even after they have been deleted. This issue has been fixed. - When importing a JSON file in the Open Editor, if you input an incorrect file and then save it, the pop-up screen will close and an error message will be displayed. However, when reopening the Open Editor, the screen does not refresh and still retains the previously selected. - In the JSON Schema Open Editor, if an incorrect file is input and the Next button is clicked, an error message is displayed. However, clicking the Back button takes you to the upload file screen instead of returning to the input text box. This issue has already been fixed. - In the XML Open Editor, if you input an incorrect XML format, it still allows you to import and create the message type. However, this issue has been resolved by adding an error message stating, 'Invalid XML text entered.' - The spinner did not stop while entering to repository page because the user had unchecked "Use Lightning Web for Lightning Web and Aura components Mode". - On Open Editor function for import Message type. When selecting JSON Schema/JSON file format gets a pop-up screen error message "Uncaught Assertion Failed!: Descriptor for Config required for registration : undefined". This issue has been resolved. #### Fixed Successful Ping Connection, but Incorrect Alert Message Displayed An issue occurred when adding the correct credentials to Microsoft OneDrive. The alert message for the ping connection displayed a code 200 with a failed message alert. We have now resolved this issue by changing the alert message color from red to green and providing a JSON response. #### Fixed Created Message Type - If your XML file contains prefix namespaces, the prefix namespaces will be included when creating the message type. However, this issue has been resolved by removing the prefix namespaces during the message type creation process. - If your XML file has many records without a root tag, the import message type will be generated incorrectly. Fixed by adding the message error “XML Parsing Error : This page contains the following errors:error on line x at column x: Extra content at the end of the document Below is a rendering of the page up to the first error.” - In the previous version of importing message types, namespaces were generated for all message type nodes. However, in the current version, namespaces are only generated for elements that have on themselves. #### Apex Heap Size Issue When Deleting Messages with Multiple Child Messages You may encounter the apex heap size limit when selecting all messages (10,000 records) that have a large number of child for deletion using the 'Delete' or 'Cancel' buttons in Message Monitoring. This issue has been resolved by stopping the 'BatchGenerateMessage' job to collect messages and pass all messages collected to the 'BatchDeleteCancelAllMessage' job instead of using only one job 'BatchDeleteCancelAllMessage' to query and delete. #### 'Manual Process' Remains Disabled When Closing the Log When you select the main interface, the 'Manual Process' button will be enabled. However, after clicking the 'Log' button and closing it, the 'Manual Process' becomes disabled, even when the main interface is still selected. This issue has been resolved. #### Interface Not Refreshing After Delete Inteface on Interface Detail Page The interface does not refresh after deleting an interface on the Interface Detail Page. This issue occurs when attempting to delete or edit interfaces, potentially causing problems. There are two scenarios that occur when deleting an interface: - Deleting a sub-interface will trigger a reload of its parent. - Deleting the main interface will trigger a self-reload #### Fixed to Display Giving Interface Name on Tab Name When you edit the interface records on the Interface Detail page and save the changes, the interface will display an automatically generated name. However, this issue has been fixed. #### Fixed not being able to search Adapter Name on the Interface Detail There is an issue when searching for a name in the adapter settings on the screen interface detail for both the Inbound and Outbound adapters. The search function is not working properly, but this issue has been resolved. #### Fixed not being able to retrieve Source Tree value while selecting parent sObject in Hybrid Mode When performing the function on the mapping, you can select the Source Tree and Source Fields to apply the Expression Formula. However, if you select the parent nodes in the Source Tree and the Parent Field in the Source Fields, it would only retrieve the Parent field, and the Parent Reference sObject would not be retrieved in Hybrid Mode Mapping. Fortunately, this issue has been resolved. #### Fixed SObject row was retrieved via SOQL without querying the requested field: sObject.ExternalId Field There was an issue when checking multiple external ID fields in the mapping for the Upsert Operation Type. After pushing the records, the external field would not be queried, resulting in an issue with the comment 'SObject row was retrieved via SOQL without querying the requested field: sObject.ExternalId Field.' This issue has been fixed by checking the mapping's external ID field as Salesforce ID. Consequently, the integration now upserts records using the Salesforce ID value instead of other external ID mapping fields. #### Fixed Searching Message Getting alert Message Error “Error Line: 334:Invalid Id: xxxxxxxxxxxx” When you have searched for All messages that include the message with an invalid the salesforce id. The issue will be raised and get the failed message alert “Error Line: 334:Invalid Id: xxxxxxxxxxxx”. This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. New Feature Slug: 2-50-1-patch-3-new-feature URL: https://help.skyvva.com/#article/2-50-1-patch-3-new-feature ================================================================================ # 3. New Feature #### Test Mapping Function We have added a new feature that allows users to execute test mapping records. This feature offers several benefits, such as: - To prevent errors before sending records out to the real system and in salesforce. - You can validate that your request body acceptable to your system - You can test the mapping result with the adapter - Easy to check mapping results to generate the payload through the mapping ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-14-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-14-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.14 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkRu](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkRu) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkRu](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003TkRu) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Info Slug: 2-50-14-patch-2-info URL: https://help.skyvva.com/#article/2-50-14-patch-2-info ================================================================================ # 2. Info #### Renamed 'Related To' to 'Salesforce sObject Field' Label We would like to inform you that we have renamed the 'Related To' field to the Salesforce sObject field Label in the Message Detail Page. Additionally, the 'Related_To' link now directs to the name sObject link of records. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Warning Slug: 2-50-14-patch-3-warning URL: https://help.skyvva.com/#article/2-50-14-patch-3-warning ================================================================================ # 3. Warning #### Adding a picklist value while upgrading the new version In general picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ##### Added a “Mail Message” value to the picklist for the 'skyvvasolutions__Message_Type__c' field of the 'skyvvasolutions__IMessage__c' object: **Follow the steps below to create the picklist: ** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__IMessage__c”** object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/12/1-ObjectManager.png) - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the "Message Type” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/12/2-MessageTypeField.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/12/3-PicklistDetail.png) - Fill in the value’s API name "**Mail Message**" in the box and click the save button. ![](../images/2023/12/4-AddedNewPicklist.png) Finally, you will get the “**Mail Message**” picklist value as the screenshot below. ![](../images/2023/12/5-FinallyGetThePickList.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this Message Type field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular Message Type.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Enhancement Slug: 2-50-14-patch-4-enhancement URL: https://help.skyvva.com/#article/2-50-14-patch-4-enhancement ================================================================================ # 4. Enhancement #### Added Filter Conditions in Mapping Tool We have enhanced our mapping tool to allow you to apply Filter Conditions at the Master Node Level mapping. This feature is used to control the message creation based on filter conditions. For example, if all conditions are not met, messages will not be created. This functionality helps you save storage space and maintain a cleaner Message Monitoring environment. Currently, this feature only supports V3/integrate and V4/integrate. #### Added new LastRunDate Param for V4/Query API We have added the LastRunDate parameter for the V4/Query API. This allows users to pass the last run date as a parameter to query all records with a last modification date greater than or equal to the specified date. By doing so, we can retrieve the latest changes made to the records since the last API call. #### Enhanced Agent Control Board Support for OAuth2 Grant Type In the previous version, the Agent Control Board did not specify the Grant Type. However, in the latest update, we have added support for OAuth2 Grant Type with password and client_credentials in the Agent to Salesforce step. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 5. Bug Fixed Slug: 2-50-14-patch-bug-fixed-2 URL: https://help.skyvva.com/#article/2-50-14-patch-bug-fixed-2 ================================================================================ # 5. Bug Fixed #### The deselect All function did not work with the child Message When child messages have been selected and you attempt to deselect them using the 'Deselect All' button, the child messages are not deselected. However, this issue has been fixed. #### Unable to Search All Message Records When the Reset Function is Applied An error occurred when you clicked the reset button to reset the values you selected or entered in Message Monitoring. However, the Mode selection was not reset. This is why the existing search Mode remained unchanged. Fortunately, this issue has been resolved. #### The spinner did not stop while selecting Parent Reference in the Source Tree An issue occurred when you were mapping for the first time without saving it yet with V3 sObject mapping. Then, you attempted to map a child field to create a formula for retrieving the parent reference field using Source Tree in the child mapping record. After selecting the parent reference sObject, a spinner appeared but did not stop. Fortunately, this issue has been fixed. #### Missing Root Namespace There is an issue when you perform a V4/Query with a root message type namespace. The mapping tool does not save it. Therefore, when you query it with our V4/Query, the business payload does not have the namespace in the root business. However, this issue has been resolved. #### Getting an Error 'Attempt to de-reference a null object' while integrating with External Mapping There is an issue when you perform external mapping with a set external ID field and pass the value as  “0010000496:0010” format. It will raise an error message “Attempt to de-reference a null object”. Because our integration tries to search existing records by this value 0010000496:0010, the record is not found in the search result then integration checks a value that is 15 chars and an instance of ID, then integration casts it to ID's value to get the completed Id-value (18 chars) to search result again if record existing by 18 chars, but casting error due to value is not correct form if record Id. #### Did Not Return Salesforce ID into the Response of SOAP Adapter There was an issue when choosing the Salesforce Authentication Provider and wanting to return the Salesforce ID in the response of the SOAP adapter. It would not include the Salesforce ID in the response payload. However, this issue has been resolved. #### Fixed Various Issues with Mapping Tool There are various issues related will the sObject V3 Mapping in the Mapping Tool as follows: - When you set the context level while using sObject V3 for mapping, for example, setting the context from 'contact' to 'account' and mapping 'account' to the 'Account' node, then mapping the 'contact' field to the 'Account' field, a message will alert you to confirm to do the filter. If you set the filter and then click the Save or Cancel button, the screen may become unresponsive. However, this issue has been fixed. - The issue happens when you have to do the formula of the set context field, it will lead to to select the Source Tree and Source Fields. After selecting the alert message will ask you to set a coditon to filter the data. Then Click OK, the screen set condition filter popup screen will not pop up and the existing expression will clear. This issue is Fixed. - The issue with saving the mapping record which has a mapping that includes a set context field has been resolved. Previously, an alert message would appear saying, 'Warning! Mapping from a lower level to a higher level is not allowed!'. This issue has been fixed by allowing the mapping to be saved. - We have also added the missing 'Add/Edit Filter' functionality, allowing you to edit and add filter conditions to refine data filtering, similar to the V3 Message Type. #### Fixed the issue of missing child records when selecting 'Delete + Upsert' on the 'Init Operation' option An issue occurred when attempting to delete a child record before performing an upsert. For example, if you created a relationship between an iChain Contact and an Account and selected 'Delete + Upsert' on the Init Operation, pushing the records would fail to upsert the child record because Salesforce cannot delete existing child records in some cases. As a result, the upsert operation will not work. This issue has been resolved by upserting child records even deleting child failed. #### Fixed The Issue of Job Information not displaying on the interface of the Agent Control Board We have an 'Interface' tab in the Agent Control Board to view a list of interface information. However, it did not display the details of the job information running on this interface. This issue has been fixed. #### Fixed missing interface scheduler on Agent Control Board This issue occurred when you updated the Connection Destination on the adapter. After the update, the Agent interface scheduler was missing. However, this issue has been fixed. #### Not Able To Restore IStrcutrue To Interface On the Related Page of the Interface, you will be able to Backup and Restore IStructure. However, an error message alert stating 'import the wrong file' appears even when you restore an existing file that has been backed up. This issue occurs because of the white space at the first line of the backup file. However, this issue has been fixed by removing the white space in the Backup IStrcutrue function. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-24-patch-1-installation URL: https://help.skyvva.com/#article/2-48-24-patch-1-installation ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.24: - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPkz](https://login.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPkz) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPkz](https://test.salesforce.com/packaging/installPackage.apexp?p0=04t0o000003JPkz) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Enhancements Slug: 2-48-24-patch-2-enhancements URL: https://help.skyvva.com/#article/2-48-24-patch-2-enhancements ================================================================================ # 2. Enhancements #### Added WorkFlow Status Button in Message Details We have added a Workflow Status Button to the Message Details, making it easier to view and check the workflow status, similar to the message monitoring workflow view. #### Enhanced Agent Control Board Support for OAuth2 Grant Type In the previous version, the Agent Control Board did not specify the Grant Type. However, in the latest update, we have added support for OAuth2 Grant Type with password and client_credentials in the Agent to Salesforce step. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bug Fixed Slug: 2-48-24-3-bug-fixed URL: https://help.skyvva.com/#article/2-48-24-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Fixed SObject row was retrieved via SOQL without querying the requested field: sObject.ExternalId Field There was an issue when checking multiple external ID fields in the mapping for the Upsert Operation Type. After pushing the records, the external field would not be queried, resulting in an issue with the comment 'SObject row was retrieved via SOQL without querying the requested field: sObject.ExternalId Field.' This issue has been fixed by checking the mapping's external ID field as Salesforce ID. Consequently, the integration now upserts records using the Salesforce ID value instead of other external ID mapping fields. #### Getting an Error 'Attempt to de-reference a null object' while integrating with External Mapping There is an issue when you perform external mapping with a set external ID field and pass the value as  “0010000496:0010” format. It will raise an error message “Attempt to de-reference a null object”. Because our integration try to search existing record by this value 0010000496:0010, the record is not found in the search result then integration checks the value that is 15 chars and instance of ID, then integration casts it to the ID's value to get the completed Id-value (18 chars) to search result again if record existing by 18 chars, but casting error due to value is not correct form if record Id. #### Did Not Return Salesforce ID into the Response of SOAP Adapter There was an issue when choosing the Salesforce Authentication Provider and wanting to return the Salesforce ID in the response of the SOAP adapter. It would not include the Salesforce ID in the response payload. However, this issue has been resolved. #### Fixed the issue of missing child records when selecting 'Delete + Upsert' on the 'Init Operation' option An issue occurred when attempting to delete a child record before performing an upsert. For example, if you created a relationship between an iChain Contact and an Account and selected 'Delete + Upsert' on the Init Operation, pushing the records would fail to upsert the child record because Salesforce cannot delete existing child records in some cases. As a result, the upsert operation will not work. This issue has been resolved by upserting child records even deleting child failed. #### Fixed The Issue of Job Information not displaying on the interface of the Agent Control Board We have an 'Interface' tab in the Agent Control Board to view a list of interface information. However, it did not display the details of the job information running on this interface. This issue has been fixed. #### Fixed missing interface scheduler on Agent Control Board This issue occurred when you updated the Connection Destination on the adapter. After the update, the Agent interface scheduler was missing. However, this issue has been fixed. #### Fixed Searching Message Getting alert Message Error “Error Line: 334:Invalid Id: xxxxxxxxxxxx” When you have searched for All messages that include the message with an invalid the salesforce id. The issue will be raised and get the failed message alert “Error Line: 334:Invalid Id: xxxxxxxxxxxx”. This issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Enhancement Slug: 2-50-3-patch-2-enhancement URL: https://help.skyvva.com/#article/2-50-3-patch-2-enhancement ================================================================================ # 2. Enhancement ### Enhanced DateTime formula In the previous version, the mapping tool only supported four datetime formats: "YYYY-MM-DDThh:mm:ss+hh:mm", "YYYY-MM-DDThh:mm:ss-hh:mm", "YYYY-MM-DDThh:mm:ssZ", and "YYYY-MM-DDThh:mm:ss.xxxZ". However, we have enhanced it to support two additional formats due to other systems supporting different ones, such as "YYYY-MM-DDThh:mm:ss.xxx+hh:mm" (for example, 2023-02-13T08:57:07.733+02:00) and "YYYY-MM-DDThh:mm:ss.xxx-hh:mm" (for example, 2023-02-13T08:57:07.733-02:00). ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. New Features Slug: 2-50-12-patch-2-new-features URL: https://help.skyvva.com/#article/2-50-12-patch-2-new-features ================================================================================ # 2. New Features #### Webhook Adapter We have added a Webhook adapter for use with our Skyvva 'V3/integratewebhook' API for sending raw data. You can provide your own API key to access our API without authentication. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Warning Slug: 2-51-main-release-3-warning URL: https://help.skyvva.com/#article/2-51-main-release-3-warning ================================================================================ # 3. Warning ## Adding a picklist value while upgrading the new version In general, the picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ## Added picklist value "Event Trigger Apex" on the “skyvvasolutions__InboundPostingBehavior__c” field on the “skyvvasolutions__Interfaces__c” object: - Users can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the “Interface” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/12/Screenshot-2023-12-20-at-5.55.39-pm.png) - On the left side of the page, you will the panel select the “Fields & Relationships” field. - You can search the “Inbound Processing Behavior” field label in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/12/Screenshot-2023-12-20-at-6.03.36-pm.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/12/Screenshot-2023-12-20-at-6.07.33-pm.png) **Fill in the **“Event Trigger Apex”** value’s API name in the box and click the save button.** ![](../images/2023/12/Screenshot-2023-12-21-at-11.11.34-am.png) **Finally, we will get the “Event Trigger Apex” type picklist value as the screenshot below.** ![](../images/2023/12/Screenshot-2023-12-21-at-10.54.05-am.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this skyvvasolutions__InboundPostingBehavior__c field. To avoid the problem please kindly add those values by checking the box of the picklist value for a particular skyvvasolutions__InboundPostingBehavior__c.[/su_box] ## Added picklists “Use CDT Job to send response” and "Create Platform Event" on the “skyvvasolutions__InbResponse_handling__c” field of “skyvvasolutions__Interfaces__c” object: - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__Interfaces__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/12/Screenshot-2023-12-20-at-5.55.39-pm.png) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__InbResponse_handling__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/12/Screenshot-2023-12-21-at-11.54.42-am.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2024/03/Screenshot-2024-03-25-at-11.35.46-am.png) - Fill in the value’s API name below in the box and click the save button. Use CDT Job to send response - Create Platform Event ![](../images/2024/03/Screenshot-2024-03-25-at-11.39.26-am.png) Finally, we will get the "**Use CDT Job to send response**" and "**Create Platform Event**" picklist values on **skyvvasolutions__InbResponse_handling__c** of **skyvvasolutions__Interfaces__c** Object as in the screenshot below. ![](../images/2024/03/Screenshot-2024-03-25-at-11.43.05-am.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__InbResponse_handling__c**  field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__InbResponse_handling__c**.[/su_box] ## Added several picklists below to the “skyvvasolutions__RecordType__c” field of “skyvvasolutions__InterfaceControlRuntime__c” object: - **Agent V3 Scheduler not run since xxx** - **Agent V3 Interface not runs since xxx** - **Agent V3 Interface Group not runs since xxx** - **Agent V3 Integration not runs since xxx** - **Alert When Not Run** **Follow the steps below to create the picklist: ** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__InterfaceControlRuntime__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2024/03/Screenshot-2024-03-25-at-5.06.11-pm.png) - On the left side of the page, you will the panel select the “Fields & Relationships” field. - You can search the “Record Type” (API Name: skyvvasolutions__RecordType__c) field label in the “Quick Find” box or scroll down the page to find it. ![](../images/2024/03/Screenshot-2024-03-25-at-5.55.04-pm.png) - Fill in the value’s API name below in the box and click the save button. **Agent V3 Scheduler not run since xxx** - **Agent V3 Interface not runs since xxx** - **Agent V3 Interface Group not runs since xxx** - **Agent V3 Integration not runs since xxx** - **Alert When Not Run** ![](../images/2024/03/Screenshot-2024-03-25-at-6.10.41-pm.png) Finally, we will get the "Agent V3 Scheduler not run since xxx", "Agent V3 Interface not runs since xxx", "Agent V3 Interface Group not runs since xxx", "Agent V3 Integration not runs since xxx", and "Alert When Not Run" **picklist values on skyvvasolutions__RecordType__c** of **skyvvasolutions__InterfaceControlRuntime__c** Object as in the screenshot below. ![](../images/2024/03/Screenshot-2024-03-25-at-6.22.20-pm.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__RecordType__c**  field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__RecordType__c**.[/su_box] ## Enable Lightning Web Security to Use the Beautify Editor In this version, we have introduced a Beautify Editor in various areas, including Test Connection, Raw Logging Payload, Adapter Detail, Test Mapping, Import Message Editor, and View Basket. However, if you attempt to view it without enabling the 'Use Lightning Web Security for Lightning Web Components and Aura Components' option, an error will occur, causing a nonstop spinner. To resolve this, please make sure to check this flag. To enable this setting, follow the steps below: - Click on 'Setup' at the top of the interface page. - Type ' Session Settings ' in the 'Quick Find' box - Select 'Session Settings' from the search results. - In the Lightning Web Security section, check the box for 'Use Lightning Web Security for Lightning Web components and Aura components'." - Click Save Button ![](../images/2024/03/Screenshot-2024-04-17-at-6.52.39-pm.webp) ## Ensuring Proper Configuration for Custom Processing Classe in SKYVVA In the previous version, you could use a 'Custom Processing Class' without specifying the location or processing unit. The processing block or unit can be set under the field 'Custom Block to Replace SKYVVA Block'. Now, if you do not set the processing block, your custom class will not get invoked by our processing runtime. Therefore you must select one of the 'Custom Block to Replace SKYVVA Block' that you need to override. ![](../images/2024/09/Custom-Block-Replace-Skyvva-Block--scaled.webp) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Info Slug: 2-51-main-release-2-info URL: https://help.skyvva.com/#article/2-51-main-release-2-info ================================================================================ # 2. Info ## Renamed column "RELATED TO" the message monitor We have renamed the column from "RELATED TO" to "SOBJECT" in order to see the sObject linked to this message. For example, if you push the Account object record, it will show the Account under SOBJECT column of the message monitor. ## Added some fields on Interface sObject We would like to inform you that we have added some fields in skyvvasolutions__Interfaces__c. - The ‘skyvvasolutions__Bulk_Runtime_Behavior__c field is used with the file trigger. When set to "Dynamic switch based on record size" we can set on the next field "Record Size To Be Switched" the number from where we switch to use batch instead of synchronous processing. In this case, baskets are created and need to be processed by the bulk scheduler. - The 'skyvvasolutions__Bulk_Processing_order__c' field is used to determine the order of basket processing for bulk processing. For example, it can process baskets in ascending or descending order for bulk processing" - The ‘skyvvasolutions__Bulk_RecordSizeToBeSwitch__c’ field is used only in the combination of the field "Runtime Behavior" with the value "Dynamic switch based on record size". If this is chosen we need to set her the trash hold value from which it will switch to use batch processing e.g. create the basket instead of posting immediately and synchronously. - The 'skyvvasolutions__Processing_order__c' field is used to determine the order of basket processing. For example, it can process baskets in ascending or descending order for batch processing. ## Removed ‘Create Last Data’ and ‘Last Data’ On the interface list under the integration section, we previously had options called 'Create Last Date' and 'Last Data'. However, we would like to inform you that we have now removed these options. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Enhancements Slug: 2-48-22-patch-2-enhancements URL: https://help.skyvva.com/#article/2-48-22-patch-2-enhancements ================================================================================ # 2. Enhancements #### Enhanced some adapters to handle request timeout We enhanced our adapter by adding a timeout property to limit request timeouts. The default timeout is 10 seconds. A custom timeout can be defined for each callout. The minimum is 1 millisecond and the maximum is 120,000 milliseconds. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-25-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-25-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.25: - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPls](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPls) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPls](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPls) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Warning Slug: 2-48-25-patch-2-warning URL: https://help.skyvva.com/#article/2-48-25-patch-2-warning ================================================================================ # 2. Warning #### Adding a picklist value while upgrading the new version In general picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ##### Added a few values to the picklist for the 'skyvvasolutions__Operation_Type__c' field of the 'skyvvasolutions__IWorkFlow__c' object: - **Upsert Auto External ID** - **Update Auto External ID** - **Delete Auto External ID** **Follow the steps below to create the picklist: ** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__IWorkFlow****__c”** object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/10/1.Iworkflow-1.png) - On the left side of the page, you will the panel select the “Field & Relationship” field. - You can search the "Operation Type” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/10/Screenshot-2023-11-01-at-09.23.46.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2023/10/3.ClickNewButton.png) - Fill in the value’s API name "**Upsert Auto External ID**, **Update Auto External ID**, and **Delete Auto External ID" **in the box and click the save button. ![](../images/2023/10/3.InputpicklistValue.png) Finally, you will get the "**Upsert Auto External ID**, **Update Auto External ID**, and **Delete Auto External ID**” picklist values as the screenshot below. ![](../images/2023/10/Screenshot-2023-11-01-at-09.26.24.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing some picklist values in this **'skyvvasolutions__Operation_Type__c' **field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular**'skyvvasolutions__IWorkFlow__c'**.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Enhancements Slug: 2-48-25-patch-3-enhancements URL: https://help.skyvva.com/#article/2-48-25-patch-3-enhancements ================================================================================ # 3. Enhancements #### Added a few picklists for Operation Type of Workflow We have added 'Upsert Auto External ID,' 'Update Auto External ID,' and 'Delete Auto External ID' as picklist values to the Operation Type field in the Workflow. Now you can perform workflow actions using these operation types. #### Enhance Internet Drive adapters to support Batch and Bulk Mode We already have support for the Internet Drive adapter's inbound processing with various platforms such as Google Drive, Dropbox, and more. This support includes handling XML, CSV, and JSON formats. However, please note that currently, we do not support batch or bulk processing modes, which can be scheduled to run at specific times, such as overnight. Therefore, we have enhanced the adapter to include batch and bulk processing, allowing scheduled execution for improved flexibility and efficiency. To handle the processing mode: - If the interface setting is 'bulk,' the adapter will create a bulk basket. - If the interface setting is 'batch,' the adapter will create a batch basket. - If the interface setting is ‘batch’ and ‘bulk’ the adapter will create a batch basket. - Otherwise, normal processing. #### Add New 'message_only’ Mode for invokeCalloutV3() Method We have enhanced the functionality by adding a new 'message_only' mode to the invokeCalloutV3() method. This mode allows for the creation of a new outbound message status without executing any processing. With this mode, you can generate a new message that can be utilized later according to your business requirements. It is important to note that this mode does not perform any immediate processing of the message. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. Bug Fixed Slug: 2-48-25-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-48-25-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Fixed Issue Cannot read properties of Undefined While importing BAPI to Create Message Type There is an issue that occurred while you connected to import BAPI to create the message type. Then get a message alert “TypeError: Cannot read properties of undefined (reading 'Name')” because it will not able to read type as ‘undefined’. This issue has been fixed. #### Fixed Missing some messages while processing with Bulk Processing Mode When processing a basket in bulk control, a basket message will be created to cover the business messages within that basket. Normally, a basket is processed as a single job. However, if you split the basket into multiple batches per job, the second batch may encounter an issue where it cannot create the message. The business records are functioning correctly. This issue has been resolved. #### Fixed Delete Message Option on Integration Setting We have an option to delete messages on the integration setting. In the previous version, when you enabled the 'Delete Message’ on the ‘Integration' setting, it did not immediately delete the complete messages. However, we have now fixed this issue by enabling the immediate deletion of complete messages when this setting is enabled. #### Fixed execute without CallOutControl() setting of InvokeCalloutV3() method For some adapters, the invokeCalloutV3() method required the CallOutControl() setting. This setting was necessary, for example, when executing response interfaces (actionDoIntegrate=true), creating messages (isCreateMessage=true), and so on. If you did not set this setting, the message would not be created, and the response interface would not be executed. However, we have made a fix, and now the CallOutControl() setting is no longer required. #### Fixed Assign Wrong Value on Target Node Level There was an issue when saving the mapping, where the mapping records were generated incorrectly with the wrong Target Node Level. This resulted in an incorrect payload being generated during outbound processing. However, we have fixed this issue. Now, when you save the mapping, the records will be generated correctly, ensuring the correct payload is generated. #### Fix for 'Too many DML rows (10001)' error when deleting a large amount of data in multiple Baskets on the Bulk Control Board When you click the Delete All button while having a large amount of data in multiple baskets on the Bulk Control Board, it raises the 'Too many DML rows (10001)' issue. This issue occurs because the system attempts to perform database operations on a significant number of rows simultaneously, exceeding the limit set by the 'Too many DML rows (10001)' error. However, our team has successfully resolved this issue by implementing optimizations and improvements to the system, allowing for the smooth deletion of large datasets without encountering this error. #### Not Able To Restore IStrcutrue To Interface Completed On the Related Page of the Interface, you will be able to Backup and Restore IStructure. However, an error message alert stating 'import the wrong file' appears even when you restore an existing file that has been backed up. This issue occurs because of the white space at the first line of the backup file. However, this issue has been fixed by removing the white space in the Backup IStrcutrue function. #### Getting Connection Offline While Ping Adapter on Agent Control Board The connection is already online on Agent Control Board; however, the connection goes offline when adding it to the adapter and clicking the ‘Ping’ button on the edit screen. This issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation LInk Slug: 2-50-15-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-15-patch-1-installation-link ================================================================================ # 1. Installation LInk #### Here is the Installation Link for the SKYVVA Patch Version 2.50.15 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkUt](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkUt) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkUt](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkUt) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Enhancement Slug: 2-50-15-patch-2-enhancement URL: https://help.skyvva.com/#article/2-50-15-patch-2-enhancement ================================================================================ # 2. Enhancement ### Added New "Authorization Code with PKCE" OAuth2.0 Flow On Rest Adapter We enhanced the Rest Adapter to seamlessly integrate the new "Authorization Code with PKCE" OAuth2.0 Flow. This upgraded functionality brings advanced security measures to the authentication process, offering protection against interception and unauthorized access. With the Rest Adapter now supporting this new flow, users can enjoy the benefits of a more secure and reliable integration solution, ensuring the confidentiality and integrity of their data throughout the authorization process. ### Enhance Internet Drive adapters to support Batch and Bulk Mode Completed We already have support for the Internet Drive adapter's inbound processing with various platforms such as Google Drive, Dropbox, and more. This support includes handling XML, CSV, and JSON formats. However, please note that currently, we do not support batch or bulk processing modes, which can be scheduled to run at specific times, such as overnight. Therefore, we have enhanced the adapter to include batch and bulk processing, allowing scheduled execution for improved flexibility and efficiency. To handle the processing mode: - If the interface setting is 'bulk,' the adapter will create a bulk basket. - If the interface setting is 'batch,' the adapter will create a batch basket. - If the interface setting is ‘batch’ and ‘bulk’ the adapter will create a batch basket. - Otherwise, normal processing. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Bug Fixed Slug: 2-50-15-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-50-15-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed ### Fixed Missing some messages while processing with Bulk Processing Mode When processing a basket in bulk control, a basket message will be created to cover the business messages within that basket. Normally, a basket is processed as a single job. However, if you split the basket into multiple batches per job, the second batch may encounter an issue where it cannot create the message. The business records are functioning correctly. This issue has been resolved. ### Fixed Delete Message Option on Integration Setting  Completed We have an option to delete messages on the integration setting. In the previous version, when you enabled the 'Delete Message’ on the ‘Integration' setting, it did not immediately delete the complete messages. However, we have now fixed this issue by enabling the immediate deletion of complete messages when this setting is enabled. ### Fixed Executing Without CallOutControl() setting of InvokeCalloutV3() method For some adapters, the invokeCalloutV3() method required the CallOutControl() setting. This setting was necessary, for example, when executing response interfaces (actionDoIntegrate=true), creating messages (isCreateMessage=true), and so on. If you did not set this setting, the message would not be created, and the response interface would not be executed. However, we have made a fix, and now the CallOutControl() setting is no longer required. ### Fixed Assigning Wrong Value on Target Node Level There was an issue when saving the mapping, where the mapping records were generated incorrectly with the wrong Target Node Level. This resulted in an incorrect payload being generated during outbound processing. However, we have fixed this issue. Now, when you save the mapping, the records will be generated correctly, ensuring the correct payload is generated. ### Fixed Selecting Source Tree of Inbound for Getting to Do Formula There was an issue when manually uploading Istructures to the interface and setting V3 as the Interface API Version. While performing the formula, you could only select source trees and fields from the IStructures. However, the issue has been resolved. Now, you can select sObjects and their corresponding fields, and merge them with the IStructures. ### Fixed various issues with HTTP Adapter - Fixed an issue where the File Message was not included to cover the Business Message for inbound processing - Fixed an issue where the File Name was not added to the Transfer ID field value of the Message - Implemented functionality to generate a random unique number value for the TRANSACTION ID field of the Message #### Getting Connection Offline While Ping Adapter on Agent Control Board The connection is already online on Agent Control Board; however, the connection goes offline when adding it to the adapter and clicking the ‘Ping’ button on the edit screen. This issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation LInk Slug: 2-50-16-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-16-patch-1-installation-link ================================================================================ # 1. Installation LInk #### Here is the Installation Link for the SKYVVA Patch Version 2.50.16 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkWf](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkWf) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkWf](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkWf) Release Date: 16-January-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Enhancement Slug: 2-50-16-patch-2-enhancement URL: https://help.skyvva.com/#article/2-50-16-patch-2-enhancement ================================================================================ # 2. Enhancement #### Enhanced License Screen to Have Pagination In the license key page, managing a large number of users can be cumbersome when they are all displayed on a single page. To improve usability, we have introduced pagination. Now, users are divided into smaller groups of 25 per page, allowing for easier navigation and efficient management of the user list. #### Added New Property to Adapter for Supporting Line Breaks in Inbound Processing of CSV File In the previous version, we were able to support CSV files with normal line break as "\n". However, we have enhanced the adapter by adding a new 'Line Breaks' property. This property now allows for support for any line break. E.g '\r = CR', '\n = LF', or '\r\n = CR+LF'. It is important to note that by default, the line break will be set to '\n'. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Bug Fixed Slug: 2-50-16-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-50-16-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Fixed Issue Cannot read properties of Undefined While Importing BAPI to Create Message Type There is an issue that occurred while you connected to import BAPI to create the message type. Then get a message alert “TypeError: Cannot read properties of undefined (reading 'Name')” because it will not able to read type as ‘undefined’. This issue has been fixed. #### Not Able to Save TransportRoute Record When you have a long password, you will not be able to save or create TransportRoute records, and an issue will be raised with the error message: 'Error: Upsert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, skyvvasolutions.trgTransportRoute: data changed by trigger for field Password: data value too large: (value has been hidden): []'. This issue occurs due to the small size of the password field length. However, this issue has been resolved by increasing the length. #### Fixed Apex Heap Size Error on Bulk Control Board There is an issue when dealing with a large number of records in multiple baskets (New Baskets and Current Processing Baskets) and history baskets (Processed Baskets) on the Bulk Control Board. This issue leads to an 'Apex heap size' error due to the query and processing of History basket records. The serializedString converting the History Baskets exceeds the apex limit. However, we have successfully resolved this issue by implementing a solution that involves splitting the query when loading Bulk Basket records and Basket History for each section. #### Not Able to Open Message Monitoring There is an issue that arises when attempting to open the Message Page for Monitoring. Upon opening the page, it automatically reloads, and an error message is displayed: 'Uncaught Error in SA.getCallback0 [Cannot read properties of undefined (reading 'reportid')]. Callback failed: apex:/skyvvasolutions.IMessageController/ACTIONSgetMessageReport'. This issue occurs because the browser does not support the lower version of jQuery that is being utilized. However, I am pleased to inform you that this issue has been resolved by upgrading the jQuery library. Note: It's important to note that other screens may also encounter issues due to the outdated version of jQuery. **To avoid the error without upgrading the version to resolve the issue, you can disable the 'Use Lightning Web Security for Lightning web components and Aura components' option. Please follow the instructions below:** => **Setup** =>** Session Settings** under **Security => **unchecked **"Use Lightning Web Security for Lightning web components and Aura components" **option => Click **Save** Button ![](../images/2024/01/disableLightningWebSecurity.png) Before you disable or enable this option, please refer to the Lightning Web Security document: [https://developer.salesforce.com/docs/platform/lightning-components-security/guide/lws-intro.html](https://developer.salesforce.com/docs/platform/lightning-components-security/guide/lws-intro.html) #### Fixed Cannot Save Auto-Mapping Records The issue occurred when the source tree had an attribute field and auto-mapping without expanding the node. Consequently, when attempting to save the mapping, an error message was displayed: 'validate AndSaveMappings> ERROR: TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.' To resolve this issue, we have implemented a solution that automatically expands the node when the user selects it. #### CDT with sObject V3 hierarchy Mapping When processing CDT outbound with sObject V3 hierarchy Mapping and the SAP CPI adapter, and subsequently sending the CP records as a response asynchronously, you may encounter a pending message and experience an issue in the log: 'skyvvasolutions.ISAPCalloutService.ISAPCalloutException: The executed method does not support the SAP CPI adapter type.' However, I am pleased to inform you that this issue has been resolved by supporting V3 without message type. #### Missing GETCORRELATIONID field value in the Payload When you post an inbound message request and execute the outbound response interface in Asynchronous mode, the outbound message will copy the 'system_external_id__c' and return the value to the request payload using the mapping formula 'GETCORRELATIONID(system_external_id__c)' on the outbound interface. There was an issue where the payload was missing this mapped formula value field. However, I am pleased to inform you that this issue has been fixed. #### Resolved Issue: Field Inside Selected Field Not Found When performing the outbound interface and completing the mapping, the query will be automatically generated. The query field statement will include the 'Selected Field' when using a formula during mapping. However, there was an issue where this field was missing on the source field when selecting the 'Selected Field' in the source tree. This issue has been resolved by displaying all query field statements that have been queried. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-17-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-17-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.17 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkX9](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkX9) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkX9](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TkX9) Release Date: 26-January-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Enhancement Slug: 2-50-17-patch-2-enhancement URL: https://help.skyvva.com/#article/2-50-17-patch-2-enhancement ================================================================================ # 2. Enhancement #### Enhanced QUICK ACTION SKYVVA Trigger to Support V3 Without Message Type In the previous version, our Quick Action SKYVVA Trigger script only supported V2 and V3 with the message type for making callouts. We did not support V3 without the message type. However, in the current version, you are now able to use the Quick Action script to make V3 callouts even without the message type. #### Added A Few New Column for the Agent Cache Screen We have added 'Created Date' and 'Last Modified Date' to the Agent Cache to allow users to view the date of cache creation and the last update of cache records. #### Added “Users with expired license key” on the Type of Users Filter We have added the 'Users with expired license key' option to the Type of Users Filter. This option is used to filter users who have expired our Skyvva license key, allowing us to identify and manage those who need to renew their licenses. By utilizing this filter, we can efficiently track and address the expiration status of users' license keys. #### Various Enhancements on Microsoft OneDrive Adapter - We have added the Refresh Token to the OAuth2.0 Flow - We allow users to customize the API URL Prefix in the adapter property - Instead of using Folder ID, we now use Folder path - In the override mode, we no longer set the item ID; instead, we use the folder name for the outbound adapter. #### Added several New Columns and Change Action Button for Transport Routes Screen We have added several columns such as 'Ping Status', 'Salesforce Environment', 'Created Date', and 'Lastmodified Date', and included the 'Ping Transport Routes' in the Transport Routes list view. These additions allow users to access more information about the Transport Routes records. Additionally, we have changed the Dropdown List button to an Action Button. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Bug Fixed Slug: 2-50-17-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-50-17-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Fixed Various Issues on the Bulk Control Board - The batch job limit is set to 5 by default, which means that even if you select multiple baskets, only 5 baskets can be processed at a time. We encountered an issue where we selected these 5 baskets with separate pagination. The system will process the selected baskets within the current pagination. This issue has been resolved. - We have also addressed the issue of missing some baskets when the organization reaches its storage limit. The job was still completed successfully, even if the storage limit had been reached and some baskets remained uncreated that is why the missing basket was even the apex job was completed. This issue has been fixed. - Furthermore, we have resolved the issue where it was not possible to 'Delete All' baskets in the Processing Baskets section and 'Delete All' history baskets in the Processed Baskets section. #### Incorrect Message Structure and Message Status CallOut Using SAP Business One Adapter There is an issue when making a callout with Future and Queueable mode from the invokeCalloutV3() method using the SAP Business One Adapter. The outbound message structure relation is not being established, and the status is incorrect due to the error message 'Update failed. First exception on row 0; first error: MISSING_ARGUMENT, Id not specified in an update call: []'. This issue has been resolved, and now the message structure and status are correct. #### Fixed the DoMaintenance scheduler only Delete ISERVICE_LOG4I.txt Log File Name The DoMaintenance scheduler is used to delete messages, logs, and basket history. We encountered an issue while deleting logs because it only deleted logs with the file name ISERVICE_LOG4I.txt, while other logs with different names were not being deleted. However, this issue has been resolved by allowing the deletion of all logs. #### Fixed Generate Incorrect Request URL of Microsoft OneDrive Adapter There was an issue when making a request to retrieve files. Unfortunately, the API call generated an incorrect request URL by adding double slashes ('//'). As a result, the log displayed an error message: 'Resource not found for the segment 'root':''. However, this issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-26-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-26-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.26 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPm2](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPm2) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPm2](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPm2) Release Date: 26-January-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Enhancements Slug: 2-48-26-patch-2-enhancements URL: https://help.skyvva.com/#article/2-48-26-patch-2-enhancements ================================================================================ # 2. Enhancements #### Enhanced License Screen to Have Pagination In the license key page, managing a large number of users can be cumbersome when they are all displayed on a single page. To improve usability, we have introduced pagination. Now, users are divided into smaller groups of 25 per page, allowing for easier navigation and efficient management of the user list. #### Added “Users with expired license key” on the Type of Users Filter We have added the 'Users with expired license key' option to the Type of Users Filter. This option is used to filter users who have expired our Skyvva license key, allowing us to identify and manage those who need to renew their licenses. By utilizing this filter, we can efficiently track and address the expiration status of users' license keys. #### Added A Few New Columns for the Agent Cache Screen We have added 'Created Date' and 'Last Modified Date' to the Agent Cache to allow users to view the date of cache creation and the last update of cache records. #### Various Enhancements on Microsoft OneDrive Adapter - We have added the Refresh Token to the OAuth2.0 Flow - We allow users to customize the API URL Prefix in the adapter property - Instead of using Folder ID, we now use Folder path - In the override mode, we no longer set the item ID; instead, we use the folder name for the outbound adapter. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bug Fixed Slug: 2-48-26-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-48-26-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Fixed Apex Heap Size Error on Bulk Control Board There is an issue when dealing with a large number of records in multiple baskets (New Baskets and Current Processing Baskets) and history baskets (Processed Baskets) on the Bulk Control Board. This issue leads to an 'Apex heap size' error due to the query and processing of History basket records. The serializedString converting the History Baskets exceeds the apex limit. However, we have successfully resolved this issue by implementing a solution that involves splitting the query when loading Bulk Basket records and Basket History for each section. #### Fixed Cannot Save Auto-Mapping Records The issue occurred when the source tree had an attribute field and auto-mapping without expanding the node. Consequently, when attempting to save the mapping, an error message was displayed: 'validate AndSaveMappings> ERROR: TypeError: Failed to execute 'appendChild' on 'Node': parameter 1 is not of type 'Node'.' To resolve this issue, we have implemented a solution that automatically expands the node when the user selects it. #### Not Able to Open Message Monitoring There is an issue that arises when attempting to open the Message Page for Monitoring. Upon opening the page, it automatically reloads, and an error message is displayed: 'Uncaught Error in SA.getCallback0 [Cannot read properties of undefined (reading 'reportid')]. Callback failed: apex:/skyvvasolutions.IMessageController/ACTIONSgetMessageReport'. This issue occurs because the browser does not support the lower version of jQuery that is being utilized. However, I am pleased to inform you that this issue has been resolved by upgrading the jQuery library. Note: It's important to note that other screens may also encounter issues due to the outdated version of jQuery. **To avoid the error without upgrading the version to resolve the issue, you can disable the 'Use Lightning Web Security for Lightning web components and Aura components' option. Please follow the instructions below:** => **Setup** =>** Session Settings** under **Security => **unchecked **"Use Lightning Web Security for Lightning web components and Aura components" **option => Click **Save** Button ![](../images/2024/01/disableLightningWebSecurity.png) Before you disable or enable this option, please refer to the Lightning Web Security document: [https://developer.salesforce.com/docs/platform/lightning-components-security/guide/lws-intro.html](https://developer.salesforce.com/docs/platform/lightning-components-security/guide/lws-intro.html) #### Not Able to Save TransportRoute Record When you have a long password, you will not be able to save or create TransportRoute records, and an issue will be raised with the error message: 'Error: Upsert failed. First exception on row 0; first error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY, skyvvasolutions.trgTransportRoute: data changed by trigger for field Password: data value too large: (value has been hidden): []'. This issue occurs due to the small size of the password field length. However, this issue has been resolved by increasing the length. #### Resolved Issue: Field Inside Selected Field Not Found When performing the outbound interface and completing the mapping, the query will be automatically generated. The query field statement will include the 'Selected Field' when using a formula during mapping. However, there was an issue where this field was missing on the source field when selecting the 'Selected Field' in the source tree. This issue has been resolved by displaying all query field statements that have been queried. #### Fixed Various Issues on the Bulk Control Board - The batch job limit is set to 5 by default, which means that even if you select multiple baskets, only 5 baskets can be processed at a time. We encountered an issue where we selected these 5 baskets with separate pagination. The system will process the selected baskets within the current pagination. This issue has been resolved. - We have also addressed the issue of missing some baskets when the organization reaches its storage limit. The job is still completed successfully, even if the storage limit has been reached and some baskets remain uncreated, which is why the missing basket is even the apex job completed. This issue has been fixed. - Furthermore, we have resolved the issue where it was not possible to 'Delete All' baskets in the Processing Baskets section and 'Delete All' history baskets in the Processed Baskets section. #### Fixed the DoMaintenance scheduler only Delete ISERVICE_LOG4I.txt log File Name The DoMaintenance scheduler is used to delete messages, logs, and basket history. We encountered an issue while deleting logs because it only deleted logs with the file name ISERVICE_LOG4I.txt, while other logs with different names were not being deleted. However, this issue has been resolved by allowing the deletion of all logs. #### Fixed Generated an Incorrect Request URL of the Microsoft OneDrive Adapter There was an issue when making a request to retrieve files. Unfortunately, the API call generated an incorrect request URL by adding double slashes ('//'). As a result, the log displayed an error message: 'Resource not found for the segment 'root':''. However, this issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. All Warning Slug: 2-all-warning-main-and-patch-2-48 URL: https://help.skyvva.com/#article/2-all-warning-main-and-patch-2-48 ================================================================================ # 2. All Warning This blog provides a comprehensive list of all warning main and patch versions of 2.48, highlighting the potential issues and considerations associated with each version. #### Adding Several picklist values while upgrading the new version In general, picklist values from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. sObject Field API Name Picklist Value Version skyvvasolutions__IMessage__c skyvvasolutions__Message_Type__c API Request Message [2.48.5](#article/2-48-5-patch-2-warnings) skyvvasolutions__IMessage__c skyvvasolutions__Message_Type__c API Response Message [2.48.5](#article/2-48-5-patch-2-warnings) skyvvasolutions__IMessage__c skyvvasolutions__Message_Type__c Custom Message [2.48.13](#article/2-48-13-patch-2-warnings) skyvvasolutions__IMessage__c skyvvasolutions__Message_Type__c Composite Message [2.48.13](#article/2-48-13-patch-2-warnings) skyvvasolutions__IMessage__c skyvvasolutions__Message_Type__c Basket Message [2.48.13](#article/2-48-13-patch-2-warnings) skyvvasolutions__IMessage__c skyvvasolutions__Status__c Application Error [2.48.12](#article/2-48-12-patch-2-warnings) skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c V3 Outbound Execution [2.48.12](#article/2-48-12-patch-2-warnings) skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c RecordCreationDate [2.48.12](#article/2-48-12-patch-2-warnings) skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c RecordModificationDate [2.48.12](#article/2-48-12-patch-2-warnings) skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c External Key Expression Evaluator [2.48.18](#article/2-48-18-patch-2-warning) skyvvasolutions__Interfaces__c skyvvasolutions__WorkflowStatusHandling__c Failed [2.48.14](#article/2-48-14-patch-3-warnings) skyvvasolutions__Interfaces__c skyvvasolutions__OperationType__c Subscribe Salesforce Event [2.48.15](#article/2-48-15-patch-2-warning) skyvvasolutions__IWorkFlow__c skyvvasolutions__Operation_Type__c Upsert Auto External ID [2.48.25](#article/2-48-25-patch-2-warning) skyvvasolutions__IWorkFlow__c skyvvasolutions__Operation_Type__c Update Auto External ID [2.48.25](#article/2-48-25-patch-2-warning) skyvvasolutions__IWorkFlow__c skyvvasolutions__Operation_Type__c Delete Auto External ID [2.48.25](#article/2-48-25-patch-2-warning) skyvvasolutions__IChained_Interfaces__c skyvvasolutions__Init_Operation__c Delete child not present in the payload [2.48.32](#article/2-48-32-patch-3-warning) #### Another Warning Outside the Picklist ##### Replace attachment by file for batch and bulk processing: (2.48) Before you can use this version all the baskets in the batch control board and all attachments in the bulk control board have to be processed with the old version. Because we change the processing format the new code is not able to process the old basket and attachment anymore. There is a big change regarding batch and bulk processing. We have made some changes to the screen and also to the processing. For example for the bulk, we now use the batch object to link to the contentVersion and we don’t process the contentVersion or Attachment object directly anymore. Instead, we are processing the baskets which are linked to the contentVersion. Note that from this version 2.48, we don’t use the old attachment anymore. We use only the contentVersion sObject to store the business data. Make sure that you don’t have any items in this screen section. All baskets have to be processed with the old version before upgrading to version 2.48! #### We have renamed the browser Tab to Interface Name while we open the interface page (2.48.12) We have changed the browser tab name of Interface in order to make it more understandable, and readable. This implementation has been added to the interfaceButtonDetail Component in patch 2.48.9 and the InterfaceInboundOutboundStep component in this patch. If you remove these components from the interface record page layout, it will display the old one. #### Remap hybrid , external, and internal mapping (2.48.12) While using hybrid mapping, external mapping, and internal mapping the old existing mapping that has been mapped before will be deleted automatically. Please make sure before switching from mode to mode, because you need to redo your mapping after the change. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. All Info Slug: 1-all-info2-main-and-patch-2-48 URL: https://help.skyvva.com/#article/1-all-info2-main-and-patch-2-48 ================================================================================ # 1. All Info **We have renamed the browser Tab to Interface Name while we open the interface page (2.48.9)** We have changed the browser tab name of Interface in order to make it more understandable, and readable. This implementation has been added to the interfaceButtonDetail Component. Therefore you need to add it to the Interface record page. If you remove it from the layout, it will display the old one. **Rename the old export/import button of the Skyvva object to Backup/Restore button (2.48.10)** To prevent user that was confused with the rename button name, therefore SKYVVA would like to inform that a button name has been renamed from “Import” to “Restore" and "Export" to "backup". There are many places to rename such as: 1. Integration Tab 2. Integration Detail Page 3. Integration of Interface page 4. Interface Details Page 5. Adapter Tab 6.  Adapter Details Page 7. MetaData Provider Tab 8. MetaData Provider Details Page 9. Repository Tab 10. Repository Details Page 11. Message Type Details Page 12. Imapping of Related Interface Page 13. IStrcuture of Related Interface Page 14. Workflows Tab on Integration page 15. Adapter in Agent Control Board 16. Adapter in SAP Control Board 17. Adapter in Google Control Board 18. Adapter in Microsoft Control Board 19. Adapter in Oracle Control Board **Renamed column "RELATED TO" the message monitor (2.48.14)** We have renamed the column from "RELATED TO" to "SOBJECT" in order to see the sObject linked to this message. For example, if you push the Account object record, it will show the Account under SOBJECT column of the message monitor. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-27-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-27-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.27 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPqj](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPqj) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPqj](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JPqj) Release Date: 23-Feburary-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. Bug Fixed Slug: 2-48-27-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-48-27-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Not Refresh Log Profile After Save Log Configuration of Agent Control Board The Log Configuration on the Agent Control Board helps us set the logging profile for an application. This allows you to control the types of log messages that will be recorded in a log file. We also have an option to save the default Log Profile. However, we encountered an issue where, after saving the Log Profile, the screen did not refresh properly and displayed a different profile name instead of the one that was saved. Fortunately, this issue has been fixed. #### The Message Remains in 'New' Status Even After Related Record of the Message Has Been Deleted When you use the invokeCalloutV3() method with the 'message_only' mode during a callout, new messages will be created. These messages can be retained and reprocessed at a later time, either through a scheduler or manually. However, we have encountered an issue where, after the scheduler or manual reprocessing of the message, if the related record of the message is deleted, the message remains in the 'New' status. To address this issue, we have fixed it by updating the message status to ‘Completed’ and adding a comment stating 'Related record (Id=xxxxxxxxxxxxxxxx) deleted'. #### Fixed Remove White Space Inside Single Quotes and Double Quotes We have a problem with our formula in the white space inside a string (Single/Double Quotes). For example, you have added “Laptop - Screen”. After the mapping is executed, it gets the result Laptop-Screen. We notice that the white space has been removed. This issue has been fixed. #### Fixing Issue: Generating XML Payload with Double Root There is an issue when performing mapping with a root, where the XML generated payload contains a double root. This issue has been fixed by implementing a solution that ensures the mapping process generates XML with a single root element, resolving the problem of duplicated root elements in the payload. #### Error in Query Generation Due to Line Breaks in the Query When there is a line break between the 'From' and 'Where' conditions in your query, it would result in the generated query being incorrect after saving the new field mapping. This issue has been fixed through the implementation of a solution that ensures proper query generation, regardless of line breaks between the 'From' and 'Where' conditions. With this fix in place, users can now confidently save their field mappings without encountering any inconsistencies in the generated queries. #### Not Able To Delete Custom Interface Group An issue arises when attempting to delete the custom interface group, resulting in an error message indicating 'Invalid Id: Delete Record'. However, this issue has been successfully resolved by implementing the capability to delete custom interface group records. #### Fixed Update/Delete Connection Property of Adapter (Generic Adapter List and Control Board) There is an issue when updating or deleting the connection destination of the adapter within the same organization. For instance, if you delete the connection destination, it results in the connection destination being removed from the adapter. When accessing the Any Control Board, you may notice that the connection still appears on the adapter screen. However, when viewing the details of the adapter, the connection destination property is missing. This issue has been fixed by adding a warning and setting the Connection Destination Name highlight as a yellow color. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Info Slug: 2-48-27-patch-2-info URL: https://help.skyvva.com/#article/2-48-27-patch-2-info ================================================================================ # 2. Info #### Change Color Highlight to Interface Tab Screen Of Agent Control Board #### We have changed the highlight color from white to gray when the connection is offline. Additionally, the highlight color for online connections has been changed to white. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Enhancements Slug: 2-48-27-patch-3-enhancements URL: https://help.skyvva.com/#article/2-48-27-patch-3-enhancements ================================================================================ # 3. Enhancements #### Enhanced log while cannot create the batch basket When you push the batch basket, the job will be completed, but you may encounter a situation where the batch basket does not appear on the control board due to storage limitations. At that point, you may not be aware of the reason for the inability to create the batch basket. To address this, we have enhanced by adding an error to the log. This error occurs when the batch basket cannot be created due to 'STORAGE_LIMIT_EXCEEDED' and it also counts the number of failed executions. #### Enable Interface Status Modification in Integration and Interface Group List View We have added a De/Updeploy Button to Integrations and Interface Groups, enabling users to easily modify the status of Interfaces. This enhancement provides a convenient way to make status changes without the need to navigate to each individual interface. With this improvement, users now have three locations where they can edit the Interface Status. #### Enhanced View Integration, Interface, and Interface Group We have introduced a Deployment Status View for Integration, Interface Group, and Interface List View. This feature allows users to easily view the status of each interface within the Integration or Interface Group, whether it is Deployed or in Development. It provides valuable information regarding the interface's status, offering enhanced visibility and understanding. There are four notes the status as follows: - Green: all interfaces are deployed. - Yellow: all interfaces are in development. - Gray: there are no interfaces. - Green and Yellow (Partial): some interfaces are deployed and others are in development. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-18-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-18-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.18 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Tl0D](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Tl0D) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Tl0D](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Tl0D) Release Date: 26-Feburary-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Info Slug: 2-50-18-patch-2-info URL: https://help.skyvva.com/#article/2-50-18-patch-2-info ================================================================================ # 2. Info #### Change Color Highlight to Interface Tab Screen Of Agent Control Board We have changed the highlight color from white to gray when the connection is offline. Additionally, the highlight color for online connections has been changed to white. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Enhancement Slug: 2-50-18-patch-3-enhancement URL: https://help.skyvva.com/#article/2-50-18-patch-3-enhancement ================================================================================ # 3. Enhancement #### Enhanced log while cannot create the batch basket When you push the batch basket, the job will be completed, but you may encounter a situation where the batch basket does not appear on the control board due to storage limitations. At that point, you may not be aware of the reason for the inability to create the batch basket. To address this, we have enhanced by adding an error to the log. This error occurs when the batch basket cannot be created due to 'STORAGE_LIMIT_EXCEEDED' and it also counts the number of failed executions. #### Enable Interface Status Modification in Integration and Interface Group List View We have added a De/Updeploy Button to Integrations and Interface Groups, enabling users to easily modify the status of Interfaces. This enhancement provides a convenient way to make status changes without the need to navigate to each individual interface. With this improvement, users now have three locations where they can edit the Interface Status. #### Enhanced View Integration, Interface, and Interface Group We have introduced a Deployment Status View for Integration, Interface Group, and Interface List View. This feature allows users to easily view the status of each interface within the Integration or Interface Group, whether it is Deployed or in Development. It provides valuable information regarding the interface's status, offering enhanced visibility and understanding. There are four notes the status as follows: - Green: all interfaces are deployed. - Yellow: all interfaces are in development. - Gray: there are no interfaces. - Green and Yellow (Partial): some interfaces are deployed and others are in development. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Bug Fixed Slug: 2-50-18-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-50-18-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Resolved: Null Message Name Issue Fixed We have a problem while we are doing custom message name format with V3 processing. The formula was not correctly retrieving the value from the field. It consistently returned a null value for the message name, despite the field being passed in the payload. Fortunately, this issue has now been resolved. #### Not Refresh Log Profile After Save Log Configuration of Agent Control Board The Log Configuration on the Agent Control Board helps us set the logging profile for an application. This allows you to control the types of log messages that will be recorded in a log file. We also have an option to save the default Log Profile. However, we encountered an issue where, after saving the Log Profile, the screen did not refresh properly and displayed a different profile name instead of the one that was saved. Fortunately, this issue has been fixed. #### The Message Remains in 'New' Status Even After Related Record of the Message Has Been Deleted When you use the invokeCalloutV3() method with the 'message_only' mode during a callout, new messages will be created. These messages can be retained and reprocessed at a later time, either through a scheduler or manually. However, we have encountered an issue where, after the scheduler or manual reprocessing of the message, if the related record of the message is deleted, the message remains in the 'New' status. To address this issue, we have fixed it by updating the message status to ‘Completed’ and adding a comment stating 'Related record (Id=xxxxxxxxxxxxxxxx) deleted’ or 'Related record (Id=xxxxxxxxxxxxxxxx) not found (child message) '. #### Incorrect Message Structure Generation When Using The Agent SAP ERP Adapter to Invoke BAPI When we use Agent SAP ERP to call a BAPI, we encounter an issue with the message structure view in the new V3 format. We only see two separate messages for the request and response, without the root message that should enclose both. The expected message structure should be as follows: - API Message API Request Message Business Messages - API Response Message Business Messages #### Fixed Remove White Space Inside Single Quotes and Double Quotes We have a problem with our formula in the white space inside a string (Single/Double Quotes). For example, you have added “Laptop - Screen”. After the mapping is executed, it gets the result Laptop-Screen. We notice that the white space has been removed. This issue has been fixed. #### Error in Query Generation Due to Line Breaks in the Query When there is a line break between the 'From' and 'Where' conditions in your query, it would result in the generated query being incorrect after saving the new field mapping. This issue has been fixed through the implementation of a solution that ensures proper query generation, regardless of line breaks between the 'From' and 'Where' conditions. With this fix in place, users can now confidently save their field mappings without encountering any inconsistencies in the generated queries. #### Not Able To Delete Custom Interface Group  Completed An issue arises when attempting to delete the custom interface group, resulting in an error message indicating 'Invalid Id: Delete Record'. However, this issue has been successfully resolved by implementing the capability to delete custom interface group records. #### Fixed Update/Delete Connection Property of Adapter (Generic Adapter List and Control Board) There is an issue when updating or deleting the connection destination of the adapter within the same organization. For instance, if you delete the connection destination, it results in the connection destination being removed from the adapter. When accessing the Any Control Board, you may notice that the connection still appears on the adapter screen. However, when viewing the details of the adapter, the connection destination property is missing. This issue has been fixed by adding a warning and setting the Connection Destination Name highlight as a yellow color. #### Fixing the issue of Test Mapping Generation without a Child Header in the CSV Hierarchical Structure The identified issue occurs during the testing of mapping to validate the generated payload using CSV hierarchical structure. It was observed that the headers for the child fields were not being generated. However, I am pleased to inform you that this issue has been successfully resolved. #### Fixed parent and child messages with different status There is an issue with the Internet Drive adapter during the callout process, resulting in a warning message. Consequently, the child and parent messages have different statuses. For example, the parent message may be marked as 'pending', while the child message may be marked as 'failed'. This issue has been resolved by setting all messages to a pending status. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-19-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-19-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.19 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003ToM6](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003ToM6) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003ToM6](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003ToM6) Release Date: 27-Feburary-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Bug Fixed Slug: 2-50-19-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-50-19-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Incorrect Target Path Generation in Outbound Interface IMapping Records There is an issue when you save the outbound mapping. The outbound mapping generates the wrong target path, which can cause an issue during callouts. This issue has been resolved. #### Cannot Cancel and Refresh Button on Transport to Other Org Pop-Up Screen When you use the 'Transport to Other Org' button on the related interface page, the refresh and cancel buttons do not work. However, this issue has been resolved by eliminating the use of the 'Transport to Other Org' pop-up screen, and now it will directly navigate to the Transport Page instead. #### Fixed Attempt to De-Reference a Null Object in Copy Field The issue with the callout using the Rest Template and copying fields in the mapping has been fixed. Previously, it would raise an error message stating 'Attempt to de-reference a null object.' However, the issue has now been resolved and it is working correctly. #### Fixed Contains Special Characters Field Values XML Payload Builder There is an issue related to the presence of special characters in your field value. Our tool inadvertently double-escaped special field values, leading to the XML payload generating incorrect data. For example, the value 'United Oil  & Gas, UK' was incorrectly converted to 'United Oil &  Gas, UK'. I am pleased to inform you that this issue has been successfully resolved by 'United Oil &  Gas, UK'. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. All Warning Slug: 2-all-warning-main-and-patch-2-50 URL: https://help.skyvva.com/#article/2-all-warning-main-and-patch-2-50 ================================================================================ # 2. All Warning This blog provides a comprehensive list of all warning main and patch versions of 2.50, highlighting the potential issues and considerations associated with each version. #### Adding Several picklist values while upgrading the new version In general picklist values from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. **sObject** **Field API Name** **Picklist Value** **Version** skyvvasolutions__Interfaces__c skyvvasolutions__InboundPostingBehavior__c Scheduled Apex [2.50](#article/2-50-main-release-3-warning) skyvvasolutions__Interfaces__c skyvvasolutions__OperationType__c Subscribe Salesforce Event [2.50.1](#article/2-50-1-patch-2-warning) skyvvasolutions__Interfaces__c skyvvasolutions__InbResponse_handling__c When empty response -> Status Completed (green) [2.50.24](#article/2-50-24-patch-2-warning) skyvvasolutions__Interfaces__c skyvvasolutions__InbResponse_handling__c When empty response -> Status Failed (red) [2.50.24](#article/2-50-24-patch-2-warning) skyvvasolutions__Interfaces__c skyvvasolutions__InbResponse_handling__c When empty response -> Status Pending (yellow) [2.50.24](#article/2-50-24-patch-2-warning) skyvvasolutions__Interfaces__c skyvvasolutions__InbResponse_handling__c When empty response -> Status Cancelled (grey) [2.50.24](#article/2-50-24-patch-2-warning) skyvvasolutions__IMessage__c skyvvasolutions__Message_Type__c DataLoader Message [2.50.1](#article/2-50-1-patch-2-warning) skyvvasolutions__IMessage__c skyvvasolutions__Message_Type__c Custom Message [2.50.9](#article/2-50-9-patch-2-warning) skyvvasolutions__IMessage__c skyvvasolutions__Message_Type__c Agent Message [2.50.10](#article/2-50-10-patch-2-warning) skyvvasolutions__IMessage__c skyvvasolutions__Message_Type__c Mail Message [2.50.14](#article/2-50-14-patch-3-warning) skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c External Key Expression Evaluator [2.50.2](#article/2-50-2-patch-2-warning) skyvvasolutions__MessageType__c skyvvasolutions__Type__c Query sObject [2.50.13](#article/2-50-13-patch-3-warning) skyvvasolutions__MessageType__c skyvvasolutions__Type__c Query Children [2.50.13](#article/2-50-13-patch-3-warning) skyvvasolutions__IChained_Interfaces__c skyvvasolutions__Init_Operation__c Delete child not present in the payload [2.50.22]((link not available)) #### Another Warning Outside the Picklist #### Disable Ext id Box in Mapping Tool (2.50.4) In the previous version, to set an External Id for mapping, you needed to check the 'Ext Id' box. However, in outbound and V3 Inbound mapping, this box has been disabled. Instead, you should define the External Key using the 'Define External Key' button. This button is available in the Data Mapping section and also appears in the 'List' button on the Interface Detail Page. #### Disabled the ‘Check Syntax’ Button on the Expression Formula  of Inbound Interface (2.50.8) The 'Check Syntax' button for formula and expression in the inbound interface IMapping has been disabled. #### Disable Formula Box in Mapping Tool (2.50.24) In the previous version, to do a formula for mapping, you needed to check the 'Formula' box. However, this box is no longer available. Instead, you should define the formula using the 'Open Formula' button, which is available in the Data Mapping section. #### Ensuring Proper Configuration for Custom Processing Classe in SKYVVA (2.50.24) In the previous version, you could use a 'Custom Processing Class' without specifying the location or processing unit. The processing block or unit can be set under the field 'Custom Block to Replace SKYVVA Block'. Now, if you do not set the processing block, your custom class will not get invoked by our processing runtime. Therefore you must select one of the 'Custom Block to Replace SKYVVA Block' that you need to override. ![](../images/2024/09/Custom-Block-Replace-Skyvva-Block--scaled.webp) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Info Slug: 1-all-info-main-and-patch-2-50 URL: https://help.skyvva.com/#article/1-all-info-main-and-patch-2-50 ================================================================================ # 1. Info ## Swap Column Order Between IChain Interfaces and Child Interface (2.50) We changed the column order of the IChain section screen between ICHAIN INTERFACES NAME and CHILD INTERFACE. In the Related View of an interface, we can see this IChainedInterfaces section. Here we have in the first column the ICHAIN INTERFACES NAME and in the second column the CHILD INTERFACE. Now We swap the order, so the first column should be the CHILD INTERFACE and then the ICHAIN INTERFACES NAME. ## Removed Database Template in Generate Template Function on Repository (2.50.13) In the previous version, the "Generate Template" function on the Repository included three options for the 'Select Type Template': Rest, Soap, and Database Template. However, in the current version, we have removed the "Database Template" picklist value from the 'Select Type Template' options. This change was made because we already have the "Import Database Metadata" button on the same page as the "Generate Template" button. ## Renamed 'Related To' to 'Salesforce sObject Field' Label (2.50.14) We would like to inform you that we have renamed the 'Related To' field to the Salesforce sObject field Label in the Message Detail Page. Additionally, the 'Related_To' link now directs to the name sObject link of records. #### Change Color Highlight to Interface Tab Screen Of Agent Control Board (2.50.18) We have changed the highlight color from white to gray when the connection is offline. Additionally, the highlight color for online connections has been changed to white. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-28-patch-version-1-installation-link URL: https://help.skyvva.com/#article/2-48-28-patch-version-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.28 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JQs7](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JQs7) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JQs7](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JQs7) Release Date: 07-March-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Bug Fixed Slug: 2-48-28-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-48-28-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Fixed Contains Special Characters Field Values XML Payload Builder There is an issue related to the presence of special characters in your field value. Our tool inadvertently double-escaped special field values, leading to the XML payload generating incorrect data. For example, the value 'United Oil  & Gas, UK' was incorrectly converted to 'United Oil &  Gas, UK'. I am pleased to inform you that this issue has been successfully resolved by 'United Oil &  Gas, UK'. #### The Related sObject Record is Not Clickable in the Message Record The related sObject record in the message cannot be clicked to redirect to the sObject record page detail when using SFDC Bulk Mode. However, I am pleased to inform you that this issue has been resolved. #### Fixed Attempt to De-Reference a Null Object in Copy Field The issue with the callout using the Rest Template and copying fields in the mapping has been fixed. Previously, it would raise an error message stating 'Attempt to de-reference a null object.' However, the issue has now been resolved and it is working correctly. #### Fixed Manual Delete Function Leaving Failed Child Message Alone When a Basket Message has both completed and failed child messages, deleting the root message will remove all completed child messages and the Basket Messages, leaving the failed message without the basket message reference. This issue has been resolved by keeping the basket messages. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Enhancement Slug: 2-48-28-patch-2-enhancement URL: https://help.skyvva.com/#article/2-48-28-patch-2-enhancement ================================================================================ # 2. Enhancement #### Upgrade API Version to 60 on the Skyvva Package In the previous version, the Skyvva app used API version 57 for Apex classes, Apex triggers, Aura components, LWC components, and Visualforce pages. To prevent certain errors, for example, you were unable to map the QuoteAccountId field of the Quote sObject using our current API Version. Therefore we have updated the API Version to 60. #### Enhanced Message Monitor - We have enabled the checkbox for all level messages of inbound messages on the Message Monitor. This enhancement will speed up the processing. For example, in the previous version, when you wanted to reprocess a child record, you needed to select the parent and reprocess the entire tree. Now, you can select specifically what you need to reprocess. - Disable checkbox sObject Message of API/API Request Message of Outbound. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-main-release-1-installation URL: https://help.skyvva.com/#article/2-51-main-release-1-installation ================================================================================ # 1. Installation Link ## Here is the Installation Link for the Official Version 2.51 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JSdT](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JSdT) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JSdT](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JSdT)
Release Date: 08-April-2024
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-20-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-20-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.20 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TodV](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TodV) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TodV](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TodV) Release Date: 22-March-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Enhancement Slug: 2-50-20-patch-3-enhancement URL: https://help.skyvva.com/#article/2-50-20-patch-3-enhancement ================================================================================ # 3. Enhancement #### Upgrade API Version to 60 on the Skyvva Package In the previous version, the Skyvva app used API version 57 for Apex classes, Apex triggers, Aura components, LWC components, and Visualforce pages. To prevent certain errors, for example, you were unable to map the QuoteAccountId field of the Quote sObject using our current API Version. Therefore we have updated the API Version to 60. #### Enhanced Message Monitor - We have enabled the checkbox for all level messages of inbound messages on the Message Monitor. This enhancement will speed up the processing. For example, in the previous version, when you wanted to reprocess a child record, you needed to select the parent and reprocess the entire tree. Now, you can select specifically what you need to reprocess. - Disable checkbox sObject Message of API/API Request Message of Outbound. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Bug Fixed Slug: 2-50-20-patch4-bug-fixed URL: https://help.skyvva.com/#article/2-50-20-patch4-bug-fixed ================================================================================ # 4. Bug Fixed #### The Related sObject Record is Not Clickable in the Message Record The related sObject record in the message cannot be clicked to redirect to the sObject record page detail when using SFDC Bulk Mode. However, I am pleased to inform you that this issue has been resolved. #### Do Not Allow Missing 'numberOfTree' Parameter in IntegrateWithIMessage API In the previous issue, it was null when you pushed an IMessage to the batch basket via the IntegrateWithIMessage API without the 'numberOfTree' parameter or 'numberOfTree'. This caused the processing of the batch basket to get stuck. However, this issue has been resolved by returning an error while pushing the batch basket without including 'numberOfTree' or 'numberOfTree' as null. #### Prioritize Retrieving the Old Basket for Processing First on the Bulk Control Board We are encountering an issue with multiple baskets on the Bulk Control Board, consisting of both old and new baskets. The old and new baskets contain the same data. Our scheduler processing prioritizes the new baskets over the old ones. This leads to a problem with corrupted data, as the new data gets overwritten with the old data. This issue has been fixed by selecting the old basket processing first. #### Fixed various issues regarding Log Configuration on the Agent Control Board - We have added a warning not to allow the user to save an empty name on the log configuration of the Agent Control Board. - There is an issue when inputting any name while selecting the '--none--' Log Profile Name. However, this issue has been resolved by removing the Name input field. - Fixed the issue​ does not allow cloning the same profile name anymore. - After Saving the Log and profile will be refreshed automatically. #### Invalid Query While to Export Data From Data Loader An error is encountered when the outbound interface query is invalid while using the Data Loader to export data. However, an error alert message is displayed: 'Unexpected Token: "xxxxxxxxx".' This alert message makes it difficult for us to fully understand the issue. The problem has been resolved with a new error message: 'Invalid SOQL: unexpected token, Interface ID: xxxxxxxxxxxxxxxx, Query: query statement.' #### Fixed Manual Delete Function Leaving Failed Child Message Alone When a Basket Message has both completed and failed child messages, deleting the root message will remove all completed child messages and the Basket Messages, leaving the failed message without the basket message reference. This issue has been resolved by keeping the basket messages. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 5. Enhancement Slug: 2-51-main-release-5-enhancement URL: https://help.skyvva.com/#article/2-51-main-release-5-enhancement ================================================================================ # 5. Enhancement ## SAP Business ByDesign Adapter We have enhanced SAP Business ByDesign by adding the Pagination property for the response. Pagination is a technique used to limit the number of records returned by an API response. For example, if you have a thousand records in SAP Business ByDesign and you need to retrieve all records without encountering a limit error, you will need to use pagination. You can set the 'top' parameter to twenty records and retrieve a response of twenty records per response by checking the pagination flag. ## Test Adapter Currently, the Test Connection is a tool used to test the adapter endpoint. We have now enhanced the Test Connection by allowing users to create records for testing their APIs. This enhancement also provides a Request Path, Request Header, and Request Query for inputting invoke callout parameters, and allows users to add Test Cases to test as many use cases as needed. The Test Connection can retrieve the request body via the test mapping result or allow for the upload of XML and JSON payloads into the request body. This enhancement is currently only available for the SAP ERP adapter. ## Not required to check flag 'External Mapping' when using an inbound interface without a message type In the previous version, in order to use V3 processing, you needed to add a message type or check the 'External Mapping' mode. However, we have enhanced our V3 processing to support using it without a message type or setting the 'External Mapping' flag. If no message type is specified, we assume that the structure of the message is the same as the sObject that the user has set in the 'Source/Target Name' field. ## Enhanced Send asynchronous response for the inbound call There are two options for enhancing the sending of asynchronous responses for inbound calls, as outlined below: - Create Platform Event: This is a custom event that requires you to write Apex trigger code to perform the desired action. For example, you can use the invokeCalloutV3() method to send a response interface, and the event will be consumed by the external client. - Use CDT Job to Send Response: This option does not provide a real-time asynchronous response. Instead, it creates CP records and waits for the CDT to pick up the CP record and send it to the receiver. ## Set the status for the empty message Our default behavior is to set the status of an empty message to 'Failed'. However, we have added a new enhancement that allows users to set the status of a message when it is created, even if it does not contain any IData. This improvement is aimed at enhancing monitoring for users who want to set the status and be notified when a message does not contain any IData. This setting is flexible and can be customized according to user preferences. Therefore, you can define the status of an empty message to be displayed in the monitoring. ## Read changed data based on the last API call date We have enhanced our reading to only include the latest change records based on their modification and creation dates. To achieve this, we will pass the last scheduler run date as a query parameter that needs to be added to the API, e.g., 'LastRunDate'. This will allow us to read only the data that has been changed since the last call, i.e., the last run. The API call will compare the last run date with the modification and creation dates of the records. ## Process the raw data basket using the event consumer This enhancement will enable you to process raw data asynchronously in real-time. You can use this function by setting the 'Inbound Processing Behavior' to 'Event Trigger Apex' for IntegrateV4, or for IntegrateWebhook. It will create an event, and our Skyvva Trigger will subscribe to it to process raw data baskets synchronously in real-time. ## Added a New Formula function to convert the timezone We have added a ConvertTimezone formula that allows you to convert your DateTime to any other timezone you may need, based on your business requirements. For example, if you want to convert a time from Moscow to Phnom Penh timezone, you can use the formula: 'ConvertTimeZone("2023-07-05T07:25:00", "YYYY-MM-DDThh:mm:ss", "GMT+03","GMT+07")'. The result will be '2023-07-05 11:25:00'. ## Enhanced Email Adapter to Support V3 Processing In the previous version, the Email adapter supported only v3 inbound processing and V2 Processing. However, we have now enhanced it to support outbound V3 processing, including the handling of two in the body or attachments. ## Enhanced Rest Adapter support form-data and x-www-form-urlencoded request payload In the previous version, the Rest adapter only supported the application/xml and application/json request formats. However, we have made significant enhancements to the Rest adapter in the latest version. It now includes support for additional request payload formats, specifically application/form-data and application/x-www-form-urlencoded. This means that you can now utilize these formats when sending requests through the Rest adapter, providing greater flexibility and compatibility with various data formats and systems. ## Don't process the interface in parallel in batch processing In EO Group, the BatchProcessPerInterface scheduler processes the basket in parallel by default. However, suppose your business requires updates to the same records to be processed sequentially. In that case, you can use the new picklist option, 'Don't process the interface in parallel', available in the Batch Processing Runtime behavior. This option ensures that only one job is used per interface processing, preventing any potential issues that may arise from parallel processing. ## Interface Data Button and Action Button The 'Interface Data' button is located in the Interface Detail, while the 'Action' button can be found in the Interface List under the integration section. When you click on the 'Interface Data' button, a popup window will appear, providing access to view Reports and Dashboards. This feature allows you to monitor your messages and gain insights into the performance and status of your interfaces. It provides valuable information and analytics to help you track and evaluate the data flowing through your interfaces. ## Enhanced Outbound Adapters for Internet Drive to Exporting Binary Files In the previous version, the outbound adapters for Internet Drive only supported the export of CSV, XML, and JSON files. However, in this new version, we have expanded the capabilities of the outbound adapters. Now, you can utilize outbound adapters for Google Drive, Amazon S3, Dropbox, and Microsoft OneDrive to export not only CSV, XML, and JSON files but also binary files. ## Active and Deactivate on Workflow We have enhanced the functionality that allows you to activate and deactivate workflows. When 'Active' is set, the workflow will trigger the workflow rule. If the 'Deactivate' option is set, your workflow will not run at all. This feature is very helpful because it enables you to keep the workflow for future use without the need to delete it when you're not using the workflow rule. ## Added Various Enhancement on Transport Routes - Added Instance URL of the Target Org to Transport Routes. In the previous version, we introduced two remote sites: the Login URL and the target Salesforce Instance URL. We added the Instance URL of the Target Org field to allow users to input the Salesforce target instance URL for Transport Routes. However, in this enhancement, you will only be able to add a remote site specifically for the Salesforce target instance URL. - We have added the Authentication Type option to Transport Routes in order to provide an additional layer of security by utilizing the Salesforce Authentication Provider. This allows users to authenticate and access the system with stronger security measures, enhancing protection beyond the traditional use of usernames and passwords. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 4. New Feature Slug: 2-51-main-release-4-new-feature URL: https://help.skyvva.com/#article/2-51-main-release-4-new-feature ================================================================================ # 4. New Feature ## SAP BTP Event Mesh Adapter The SAP Event Mesh adapter is used to connect Salesforce to the SAP Event Mesh, which is a cloud-based messaging service provided by SAP. The Event Mesh enables real-time event-driven communication, allowing systems to exchange messages and data seamlessly. With the Event-Mesh adapter, you can publish and consume messages to and from the Event Mesh Queue or Topic. ## Oracle Cloud ERP Adapter We have added the Oracle Cloud ERP adapter, which is used to establish a connection between Salesforce and Oracle Cloud ERP (Enterprise Resource Planning). Oracle Cloud ERP encompasses various modules that cover different areas of business operations. With the Oracle Cloud ERP adapter, you can seamlessly integrate and synchronize data between Salesforce and Oracle Cloud ERP, enabling efficient management of financials, procurement, supply chain, human resources, and other critical business processes. This adapter enhances interoperability and streamlines the flow of information between the two platforms, empowering organizations to optimize their operations and make informed decisions based on consolidated and up-to-date data. ## AmazonAPIGateway Adapter The Amazon API Gateway is a tool used to build, deploy, and manage APIs. We have added the Amazon API Gateway Adapter to seamlessly connect Salesforce with the Amazon API Gateway service. With this adapter, you can integrate data by making requests and receiving responses from the API. It simplifies the integration process, allowing you to securely expose Salesforce data, integrate with external systems, and leverage the capabilities of both platforms effectively. ## GraphQL Adapter We have added a GraphQL adapter to integrate Salesforce with other systems that support GraphQL API. GraphQL is a query language used for APIs, which provides a schema of the data available in the API and empowers clients to request only the specific data they require. GraphQL acts as a mediator between the clients and the backend services. ## Webhook Adapter We have added a Webhook adapter for use with our Skyvva 'V3/integratewebhook' API for sending raw data. You can provide your own API key to access our API without authentication. ## BigMessage We have added a BigMessage adapter to handle the sending of big messages to receivers, in order to avoid Salesforce CPU or head size limitations. This adapter creates a big message record and sends a notification to an external system, which then pulls the necessary records and creates the XML and JSON payload. ## SAP BTP Graph Adapter We have implemented the SAP BTP Graph adapter, which enables us to use the SAP Graph service on the BTP platform. This adapter provides access to a connected business data graph of SAP-managed data, regardless of where this data is located. ## SAP BTP Graph Adapter We have implemented the SAP BTP Graph adapter, which enables us to use the SAP Graph service on the BTP platform. This adapter provides access to a connected business data graph of SAP-managed data, regardless of where this data is located. ## Microsoft SharePoint Adapter We have added the Microsoft SharePoint Adapter to integrate the exchange between Salesforce and SharePoint Drive. You will be able to push and pull data from SharePoint documents to Salesforce. There are four File types supported for this adapter such as XML, JSON, CSV, and Binary. ## Add Custom Authentication Class property of Adapters We have introduced a new feature called the 'Custom Authentication Class' for authentication. With this feature, you can configure a custom class to build your own authentication logic. If you have unique or specific authentication requirements that are not supported by our default authentication, you now have the ability to modify, extend, or enhance our provided class to cater to your specific needs. This grants you the flexibility to implement specialized authentication logic that aligns with your specific use case, ensuring a tailored authentication experience. ## New method InboundExecuter.executeInbound() We have added a new method, InboundExecuter.executeInbound(), for executing inbound processing. This means that you no longer need to use other tools to execute our inbound interface. You can customize your apex script and execute the inbound interface via the developer console. ``` skyvvasolutions.InboundExecuter.InboundControl ctrl=new skyvvasolutions.InboundExecuter.InboundControl(); ctrl.integrationName=null; // input your integration name ctrl.interfaceName=null; // input your interface name //xml,csv,json or imessage(message tree) ctrl.requestPayloadFormat=null; // input your data format //can be string or list of message tree(imssage) ctrl.payLoad=null; // input your data //Synchronous or ASynchronous ctrl.mode=null; // input your mode e,g Synchronous //if payload is csv then this field is mandatory ctrl.csvSeparator=null; // input your separator if you data is csv //ctrl.systemExternalId=null; //ctrl.transferId=null; //ctrl.runtimeParams=new Map(); skyvvasolutions.InboundExecuter.InboundResult result=skyvvasolutions.InboundExecuter.executeInbound(ctrl); System.debug('>hasError:'+result.hasError); System.debug('>errorMessage:'+result.errorMessage); System.debug('>groupMessage:'+result.groupMessage); ``` ## New apex action for Salesforce flow for invokeCalloutV3() The new apex action feature provides a response to the flow for invokeCalloutV3(), including the HTTP status code, response payload, HTTP header data, and interface response mapping result for the flow. For example, if you want to use the invokable method from the flow to pass data from a screen in the ScreenFlow during outbound processing, you can call the invokeCalloutV3() from the apex. This will read the data from the screen and put it into the data map. This feature is directly available in the flow, allowing you to pass the ScreenFlow field as a map and use it with our invokeCalloutV3() invokable method. ## Import MetaData support EDMX format We already have the OData adapter in place to work with the OData API. OData has a specific data format that describes the API, called the EDMX format, which uses XML to define the API. To support this format, we have enhanced our import Metadata function. ## New Formula function to get the date and time from a date time field We add two new formulas to extract the date and time from a date-time format of the source. - GetDateFromDateTime(,,) returns the date from source data - GetTimeFromDateTime(,,) returns the time from source data. For example:  - GetDateFromDateTime(“2023-02-27T10:56:08.000+0000”,”YYYY-MM-DDThh:mm:ss”,“DD.MM.YYYY”) => The date of return is '27.02.2023'. - GetTimeFromDateTime(“2023-02-27T10:56:08.000+0000”,”YYYY-MM-DDThh:mm:ss”,“hh.mm.ss”) Note: Pattern for data must be upper case and time must be lower case Date pattern: Y (Year), M (Month), D (Day of the month) i.e.: YYYY-MM-DD, DD.MM.YYYY Time pattern: hh (hour), mm (minute), ss(second). i.e: hh:mm:ss, or hh:mm ## New Processing Mode for the Basket We have added a new picklist called 'Event Processing Based on Record Size' to the Batch Mode Switching Behavior Mode. This picklist allows users to switch the record processing mode based on the size of the record. For example, if you keep the default setting for 'Records Size to be Switched' and the record you're processing has less than 50 records, the batch will be processed immediately using event processing. ## New tab 'Pending Event Basket' to reprocess event basket The new tab, 'Pending Event Basket', is only used for the manual reprocessing of the event basket. In this view, we only show the event basket, which was created by the event and has an event ID. You could look at the 'Elapsed Time' column to see how long the basket has been waiting. A long value indicates a high probability of a dying event due to hitting the governor limit. If the event cannot process the basket, the status will be either 'worker' or 'processing'. Note that when the event is created, the status is set to 'worker'. When the basket is processed, the status is set to 'processing'. However, if the event is killed due to an unknown error or by hitting the governor limit, the status will remain at 'worker' or 'processing'. If the event runs without any errors, the time in the 'Elapsed Time' column will be a small number, just a few seconds. If we see a few minutes, the probability is high that the event has been killed and is already dead. In this case, the user can select the basket and reprocess it. This new tab, 'Pending Event Basket', exists for this reason. ## Reports & Dashboards Monitoring Reports and dashboards allow you to monitor your messages by interface or interface group. Reports present collections of data in table form, while dashboards provide visualizations that display data in chart diagrams. This feature is very helpful for analyzing messages such as: - Which interfaces have the most volume of messages or the most failed messages? - What is going on with the status of messages per interface, like how many failed messages, pending messages, etc. - How many data pushes to Salesforce per hour, per day, etc. ## Applying Beautify Editor to Various Skyvva Functions We have successfully applied the editor to several Skyvva functions, including Test Mapping, Test Connection, and View Raw Logging Payload in IMessage, and create message type. This integration of the editor enhances the payload editing like XML/JSON experience within these functionalities, providing advanced features such as syntax highlighting, code completion, and improved readability. ## Public SKYVVA Event To Execute Inbound and Outbound Processing We have added 'skyvvasolutions__Processing__e' to our system, allowing for the triggering of SKYVVA Events. This update enables the seamless execution of both inbound and outbound interfaces for public events. With this feature, users can trigger two types of public events: 'Event Data' and 'Notification Event'. By triggering the 'Event Data' event, the system executes the inbound interface, while the 'Notification Event' triggers the outbound interface. This new feature is highly beneficial as it eliminates the need for users to manually create events in Salesforce in order to trigger our inbound and outbound processing. ## Notification when the Scheduler Does Not Run for a Certain Time We have implemented a new feature that alerts users when the scheduler unexpectedly stops running. This functionality is beneficial as it provides users with alerts or notifications, informing them that the scheduler has not been run since xxx. This ensures that users are promptly notified of disruptions in the scheduler's operation. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 6. Bug Fixed Slug: 2-51-main-release-6-bug-fixed URL: https://help.skyvva.com/#article/2-51-main-release-6-bug-fixed ================================================================================ # 6. Bug Fixed ## Fixed Too many SOQL queries 201 The complex VLOOKUPs, including nested VLOOKUPs (where a VLOOKUP contains a sub-VLOOKUP), can result in the error 'Too many SOQL queries: 201.' This issue can be addressed by using the lookup formula with relationship names. However, this issue has been resolved. ## Fixed Comparison Issue between Null and Number Values We encountered an issue when comparing a Null value with a Number in a formula mapping. For example, consider the following formula: IF(ISNULL(FieldX__c), 'VALUE IS NULL', IF((FieldX__c >= '15000', 'MORE', 'LESS')). When FieldX__c is null, an error occurs: 'Output Error line: 1019 > For >= operator, LHS & RHS should be of the same data type!'. This error is caused by comparing a Null value with a Number, which are different data types. To resolve this issue, we have made an enhancement. Comparisons between Null and Number will now always result in false. For instance: - FieldX__c is blank (null) - FieldX__c>= '17000101' : false ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-21-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-21-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.21 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TqnN](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TqnN) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TqnN](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TqnN) Release Date: 26-March-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Bug Fixed Slug: 2-50-21-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-50-21-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Fixed Issue Regarding Auto Switch Mode An issue arises when Auto Switch Mode is enabled. In cases where the interface has a batch basket, it will not display and provide the scheduler for running the basket processing. This issue has been resolved by implementing an interface filter and Batch Interface scheduler for that option. #### Fixed decode of username/password Agent/SAP Connection Destination There is an issue that arises with the error message 'API Message: Invalid initialization vector. Must be 16 bytes' when the callout fails due to an incorrect decoding of the username and password from the Agent/SAP Connection Destination. This issue has been resolved by decoding the username and password correctly. #### Fixed Selection Options for Batch, Bulk, and Use Auto-Switch Modes We have added validation for the batch, bulk, and auto-switch modes. Now, each interface can only have one of these modes enabled. If you attempt to enable more than one, an error message will be triggered, stating: 'Batch, bulk, and auto-switch modes are not allowed per interface'. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Info Slug: 2-50-20-patch-2-info URL: https://help.skyvva.com/#article/2-50-20-patch-2-info ================================================================================ # 2. Info #### Simplifying the Creation of New Integrations We would like to inform you that when creating the integration record, we have simplified the process. It will display only the integration name and description. As a result, this screen becomes much easier to use. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-29-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-29-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.29 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JRpc](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JRpc) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JRpc](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JRpc) Release Date: 03-April-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. Bug Fixed Slug: 2-48-29-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-48-29-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Fixed various issues regarding Log Configuration on the Agent Control Board - There is an issue while you have updated the Log profile. It will alert the message The log profile Name already exists. This issue has been fixed by allowing to update. - Allow to remove inactive profile while you have updated profile. #### Do Not Allow Missing 'numberOfTree' Parameter in IntegrateWithIMessage API In the previous issue, when you pushed an IMessage to the batch basket via the IntegrateWithIMessage API without the 'numberOfTree' parameter or 'numberOfTree', it was null. This caused the processing of the batch basket to get stuck. However, this issue has been resolved by returning an error while pushing the batch basket without including 'numberOfTree' or 'numberOfTree' as null. #### Prioritize Retrieving the Old Basket for Processing First on the Bulk Control Board We are encountering an issue with multiple baskets on the Bulk Control Board, consisting of both old and new baskets. The old and new baskets contain the same data. Our scheduler processing prioritizes the new baskets over the old ones. This leads to a problem with corrupted data, as the new data gets overwritten with the old data. This issue has been fixed by selecting the old basket processing first. #### Fixed Issue Regarding Use of Auto-Switch Mode An issue arises when Use Auto-Switch Mode is enabled. In cases where the interface has a batch basket, it will not display and will not provide the scheduler for running the basket processing. This issue has been resolved by implementing an interface filter and Batch Interface scheduler for that option. #### Fixed Selection Options for Batch, Bulk, and Use Auto-Switch Modes We have added validation for the batch, bulk, and auto-switch modes. Now, each interface can only have one of these modes enabled. If you attempt to enable more than one, an error message will be triggered, stating: 'Batch, bulk, and auto-switch modes are not allowed per interface'. #### Invalid Query While to Export Data From Data Loader An error is encountered when the outbound interface query is invalid while using the Data Loader to export data. However, an error alert message is displayed: 'Unexpected Token: "xxxxxxxxx".' This alert message makes it difficult for us to fully understand the issue. The problem has been resolved with a new error message: 'Invalid SOQL: unexpected token, Interface ID: xxxxxxxxxxxxxxxx, Query: query statement.' #### Fixed Not Change Parent Development Status of Interface The development status of the parent interface does not change from Green to Partial when the child interface is ‘Development’. However, we have resolved this matter by updating the parent interface to partial whenever this situation arises. #### Fixed Issue Exporting CSV Files with Data Loader including the special character '#' hash #### We encountered an issue when exporting the CSV file that contains the '#' symbol within the data. This was causing errors, resulting in an incorrect format and missing data. Fortunately, this issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Info Slug: 2-48-29-patch-2-info URL: https://help.skyvva.com/#article/2-48-29-patch-2-info ================================================================================ # 2. Info #### Simplifying the Creation of New Integrations We would like to inform you that when creating the integration record, we have simplified the process. It will display only the integration name and description. As a result, this screen becomes much easier to use. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. All Info Slug: 1-all-info-main-and-patch-2-51 URL: https://help.skyvva.com/#article/1-all-info-main-and-patch-2-51 ================================================================================ # 1. All Info ## Renamed column "RELATED TO" the message monitor (2.50) We have renamed the column from "RELATED TO" to "SOBJECT" in order to see the sObject linked to this message. For example, if you push the Account object record, it will show the Account under SOBJECT column of the message monitor. ## Added some fields on Interface sObject (2.50) We would like to inform you that we have added some fields in skyvvasolutions__Interfaces__c. - The ‘skyvvasolutions__Bulk_Runtime_Behavior__c field is used with the file trigger. When set to "Dynamic switch based on record size" we can set on the next field "Record Size To Be Switched" the number from where we switch to use batch instead of synchronous processing. In this case, baskets are created and need to be processed by the bulk scheduler. - The 'skyvvasolutions__Bulk_Processing_order__c' field is used to determine the order of basket processing for bulk processing. For example, it can process baskets in ascending or descending order for bulk processing" - The ‘skyvvasolutions__Bulk_RecordSizeToBeSwitch__c’ field is used only in the combination of the field "Runtime Behavior" with the value "Dynamic switch based on record size". If this is chosen we need to set her the trash hold value from which it will switch to use batch processing e.g. create the basket instead of posting immediately and synchronously. - The 'skyvvasolutions__Processing_order__c' field is used to determine the order of basket processing. For example, it can process baskets in ascending or descending order for batch processing. ## Removed ‘Create Last Data’ and ‘Last Data’ (2.50) On the interface list under the integration section, we previously had options called 'Create Last Date' and 'Last Data'. However, we would like to inform you that we have now removed these options. ## Rename Tab and Remove a Section and Tab Name on the Batch Control Board (2.51.1) We would like to inform you that we have removed the History Basket section from the Basket Tab and added a new tab called 'History Basket' instead. Additionally, we have renamed the original basket tab to 'Working Basket'. ## Rename Some Label Tab Name On the Agent Control Board (2.51.1) We have renamed from "Log File" to "Agent Log" and "Log" to "Salesforce Log" for better clarity and understanding. This makes it easier to identify the source of the log. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. All Warning Slug: 2-all-warning-main-and-patch-2-51 URL: https://help.skyvva.com/#article/2-all-warning-main-and-patch-2-51 ================================================================================ # 2. All Warning This blog provides a comprehensive list of all warning, main, and patch versions of 2.51, highlighting the potential issues and considerations associated with each version. ## Adding Require picklists values while upgrading the new version In general picklist values from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise.
sObject Field API Name Picklist Value Version
skyvvasolutions__Interfaces__c skyvvasolutions__InboundPostingBehavior__c Event Trigger Apex 2.51
skyvvasolutions__Interfaces__c skyvvasolutions__InbResponse_handling__c Subscribe Salesforce Event 2.51
skyvvasolutions__Interfaces__c skyvvasolutions__InbResponse_handling__c Create Platform Event 2.51
skyvvasolutions__Interfaces__c skyvvasolutions__InbResponse_handling__c When empty response -> Status Completed (green) 2.51.2
skyvvasolutions__Interfaces__c skyvvasolutions__InbResponse_handling__c When empty response -> Status Failed (red) 2.51.2
skyvvasolutions__Interfaces__c skyvvasolutions__InbResponse_handling__c When empty response -> Status Pending (yellow) 2.51.2
skyvvasolutions__Interfaces__c skyvvasolutions__InbResponse_handling__c When empty response -> Status Cancelled (grey) 2.51.2
skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c Agent V3 Scheduler not run since xxx 2.51
skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c Agent V3 Interface not runs since xxx 2.51
skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c Agent V3 Interface Group not runs since xxx 2.51
skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c Agent V3 Integration not runs since xxx 2.51
skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c Alert When Not Run 2.51
skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c SchedulerSubmittedTime 2.51.7
skyvvasolutions__InterfaceControlRuntime__c skyvvasolutions__RecordType__c Child Relationship Name 2.51.7
skyvvasolutions__IChained_Interfaces__c skyvvasolutions__Init_Operation__c Delete child not present in the payload 2.51.1
skyvvasolutions__IMessage__c skyvvasolutions__Message_Type__c Routing Message 2.51.1
## Enable Lightning Web Security to Use the Beautify Editor 2.51 In this version, we have introduced a Beautify Editor in various areas, including Test Connection, Raw Logging Payload, Adapter Detail, Test Mapping, Import Message Editor, and View Basket. However, if you attempt to view it without enabling the 'Use Lightning Web Security for Lightning Web Components and Aura Components' option, an error will occur, causing a nonstop spinner. To resolve this, please make sure to check this flag. ## Ensuring Proper Configuration for Custom Processing Class in SKYVVA (2.51) In the previous version, you could use a 'Custom Processing Class' without specifying the location or processing unit. The processing block or unit can be set under the field 'Custom Block to Replace SKYVVA Block'. Now, if you do not set the processing block, your custom class will not get invoked by our processing runtime. Therefore, you must select one of the 'Custom Block to Replace SKYVVA Block' that you need to override. ![](../images/2024/09/Custom-Block-Replace-Skyvva-Block--scaled.webp) ## Ensure Halting of All Outbound Schedulers Before Upgrading to New Agent Version 3.06.03 and Skyvva Version 2.51.8 for Non-Open Firewall Mode (2.51.8) In light of our enhancements in outbound processing on the Agent side aimed at minimizing event usage, it is crucial to halt all outbound schedulers before upgrading Skyvva (from version 2.51.7 or earlier to 2.51.8 or later) and the Agent Version (from 3.05.7 or earlier to 3.06.03 or later) in non-open firewall mode exclusively. Note: Skyvva Version 2.51.8 or earlier must be used with Agent Version 3.06.03 or later in non-open firewall mode with outbound processing. For Open Firewall Mode, no action is required; simply upgrade it. Follow the Instructions below to halt all Outbound Agent Schedulers, Reconfigure the Outbound Agent Scheduler settings, and then start them again * Navigate to the Scheduler Setting in the Agent Control Board and click on 'Stop All Outbound Agent Scheduler ![](../images/2025/07/image-40.png) - After completing the upgrade, you must reset the Agent Scheduler settings before starting the scheduler. If you start it without resetting the Agent scheduler, you will encounter the error shown in the screenshot below. ![](../images/2025/07/clipboard-202507181156-rpf57.png) - Please adjust your Agent Scheduler settings and then click the save button. ![](../images/2025/07/image-41-1.png) - Click the start scheduler icon, then press the 'Yes' button to confirm to start this scheduler. ![](../images/2025/07/image-42.png) - Finally, the AgentProcessPerIntegration scheduler is now running. Please make sure to reconfigure all the outbound schedulers that you intend to run after the upgrade. ![](../images/2025/07/image-43.png) **In case you did not stop the Agent Outbound Scheduler before the Upgrade** If you did not stop the outbound scheduler processing before the upgrade, the Outbound Processing is still using the old method that consumes significant event resources. Errors like 'Agent Response: The Scheduler with id: xxxxxxxxxxxxxxx is not running.' are appearing in the comments of the Outbound Scheduler, but the processing remains functional on the Salesforce side. This indicates that the processing is not running for the Agent side. ![](../images/2025/07/clipboard-202507181156-r17j0.png) Please stop the scheduler that you intend to run processing on the agent side to reduce event consumption. Although you encountered an error, the scheduler will be stopped as shown in the screenshot below: ![](../images/2025/07/image-44-1.png) After stopping the Agent scheduler, please reconfigure the scheduler settings and start it again. Follow these steps [#article/2-all-warning-main-and-patch-2-51](#article/2-all-warning-main-and-patch-2-51) to reconfigure the scheduler setting. ## Ensure Cleanup is Executed Using the Outbound Scheduler Within the Scheduler Settings of the Agent Control Board After Upgrading (2.51.9) You will get the following error message, as shown in the screenshot below, in the scheduler settings tag on the Agent Control Board if you have upgraded to version 2.51.9 or later. In this version, we have modified the outbound scheduler naming schema, so your old schedulers will no longer work. The error will be displayed as shown in the screenshot below: ![](../images/2025/12/ErrorAgentSetting.jpg) We offer you the function to clean up and restore the old schedulers. To execute this conversion, please click on the button ‘Run Cleanup’.  ![](../images/2025/12/CLickCleanUp.jpg) You will encounter a pop-up confirming the cleanup of the outbound scheduler. Please click 'OK' to proceed with the cleanup. ![](../images/2025/12/ClickOkButton.jpg) The cleanup of the outbound scheduler has now been completed. ![](../images/2025/12/successToClean.jpg) Note: The scheduler is running before the upgrade. ![](../images/2025/12/2025-11-20_19-00-14.png) After the upgrade and cleanup, you must start the outbound scheduler manually; it will not run automatically afterward. Please note that this change only affects the outbound scheduler. For the inbound scheduler, there is no change, and thus you don’t need to take any action after the upgrade.  ![](../images/2025/12/startscheudler.jpg) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-30-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-30-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.30 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JSLV](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JSLV) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JSLV](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JSLV) Release Date: 19-April-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Bug Fixed Slug: 2-48-30-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-48-30-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Fixed Issue: Incorrect Order of Nodes and Fields in Generated JSON Payload You may encounter a problem with the mapping order incorrect, leading to the generation of an incorrect JSON payload. In certain cases, specific fields may be misplaced and end up in the wrong node. However, we have resolved this issue by appropriately enhancing our JSON builder. This ensures the correct order and field population in the JSON payload. #### Fixed Issue: Unable to Add Interface to Interface Group This issue occurs when attempting to add an interface to an interface group that contains multiple interface records within the integration. It results in an error message alert stating, 'Please enter the value in Sequence.' The issue arises during the interface trigger when verifying and validating the source name of the interface. We have resolved this problem by using Type.forName('xxxxxxx') instead of Schema.getGlobalDescribe().get('xxxxxxx'). This approach provides faster performance and prevents validation checks during interface updates within the Interface group. #### Fixing the Issue of the MessageReprocessPerInterfaceGroup Scheduler We have resolved the issue with the MessageReprocessPerInterfaceGroup scheduler that was causing a mix-up between inbound and outbound reprocessing messages that caused an incorrect setting of Processing Package size to outbound. To fix this issue, we implemented the following solutions: - Ensured that inbound and outbound processes are not mixed within the same scheduler of the interface group. When the interface group contains only outbound interfaces, the scheduler will execute the outbound worker job (IServiceBatchCallout) to reprocess the outbound messages. - Similarly, when the interface group contains only inbound interfaces, the scheduler will execute an inbound worker job (IServiceBatchReprocess) to reprocess the inbound messages. - The issue with the scheduler on the interface group that reprocesses outbound messages with a processing package size greater than 1, even when the Processing Package Size is blank, has been resolved. The issue occurred due to a mix-up in the scheduler's reprocessing of request/response messages (outbound/inbound messages) within the same group. When the 'Processing Package Size' setting is blank, the following default values will apply: For outbound message reprocessing, the setting will be 1. - For inbound message reprocessing, the setting will be 10. #### Fixed Various Issues Updated incorrect Message Status - We have encountered an issue during the Request and Response process with the SAP CPI Adapter. Specifically, when receiving a failed response, the API message does not update its status from 'completed' to 'Partial Completed.' This issue occurs when using the invokeCalloutV3 method in various modes such as Future, Queueable, Batch, Auto, and message_only. - Incorrect Update of API Message: After reprocessing the message, the API Message incorrectly updates as 'failed' even though some business messages are completed successfully while others have failed. This issue has been resolved by updating the status to 'Partial Completed. - We encountered another issue when calling the 'SAP CPI' adapter and performing the 'Get' operation without mapping (only querying data for inbound processing) using callout modes such as Future, Queueable, Batch, Auto, and message_only. As a result, both the request business message and API Message remained in a pending status. However, we have resolved this issue by updating the message statuses correctly. #### Fixed Error: Handling Multiple-Level Mapping in Raw Upload File of Data Loader Function We encountered an issue with the Data Loader where the error message 'No field name specified on the column for sObject of type skyvvasolutions__IMessage__c' appears when attempting to upload a file using Raw Upload File with multiple-level mapping. However, this issue has been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Enhancement Slug: 2-48-29-patch-3-enhancement URL: https://help.skyvva.com/#article/2-48-29-patch-3-enhancement ================================================================================ # 3. Enhancement #### Enhanced Export CSV File of Data Loader We have made significant improvements to the CSV file export format of the Data Loader. These enhancements now include support for the 'Has File Header' and 'Has Quote' options, as well as the addition of comprehensive logging traces throughout the process. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-22-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-22-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.22 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TrA2](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TrA2) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TrA2](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TrA2) Release Date: 26-April-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-31-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-31-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.31 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TsML](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TsML) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TsML](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TsML) Release Date: 26-April-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Bug Fixed Slug: 2-48-31-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-48-31-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Resolved Frozen Data Loader Screen When Selecting All Records, Appending Their Child Records, and Pushing Records with Raw Upload File We have identified an issue that occurs when selecting all records and appending their child records using the Raw Upload File. After pushing these selected records, you may experience a frozen Data Loader screen. We are pleased to inform you that this issue has been successfully resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Enhancement Slug: 2-50-22-patch-2-enhancement URL: https://help.skyvva.com/#article/2-50-22-patch-2-enhancement ================================================================================ # 2. Enhancement #### Enhanced Export CSV File of Data Loader We have made significant improvements to the CSV file export format of the Data Loader. These enhancements now include support for the 'Has File Header' and 'Has Quote' options, as well as the addition of comprehensive logging traces throughout the process. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Bug Fixed Slug: 2-50-22-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-50-22-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Mapping is Always Lost After Updating BAPI Message Type An issue arises when attempting to update the message type by reimporting the BAPI Metadata. After reimporting, the existing message type gets updated, leading to the loss of mapping. However, this issue has been resolved by ensuring that the 'Source/Target Message Type' is not removed from the interface during the metadata re-import process.  #### Fixed Issue Exporting CSV Files with Data Loader including the special character '#' hash We encountered an issue when exporting the CSV file that contains the '#' symbol within the data. This was causing errors, resulting in an incorrect format and missing data. Fortunately, this issue has been resolved. #### Resolved Issues in the Search Filter of the Interface List on the Integration Page - Fixed issue cannot filter interface name records where the interface name field contains the word search. You can search only a specific interface name. Now you can search for both of them. - Issue fixed: Filtering and retrieving interface names outside of this Integration. #### Various Enhanced On Mapping Tool - We have improved the view Source Field by displaying a more readable value. For example, if you have set a filter on the field, the original value 'SF!$!Contact.SF!$!Case.SF!$!Subject_FirstName' might have been unclear. We have now updated it to 'SF.Contact.SF.Case.SF.Subject_FirstName' for better understanding. - Significantly enhanced the capability to set the Ext Id on mapping for inbound V3 by simply selecting the 'Ext Id' checkbox. Notably, you can now set the checkbox without the need to define the External Key using new approaches. - We have implemented a custom alert message to enhance user-friendliness on the mapping tool. #### Fixed Various Issues Update incorrect Message Status - We have encountered an issue during the Request and Response process with the SAP CPI Adapter. Specifically, when receiving a failed response, the API message does not update its status from 'completed' to 'Partial Completed.' This issue occurs when using the invokeCalloutV3 method in various modes such as Future, Queueable, Batch, Auto, and message_only. - Incorrect Update of API Message: After reprocessing the message, the API Message incorrectly updates as 'failed' even though some business messages are completed successfully while others have failed. This issue has been resolved by updating the status to 'Partial Completed. - We encountered another issue when calling the 'SAP CPI' adapter and performing the 'Get' operation without mapping (only querying data for inbound processing) using callout modes such as Future, Queueable, Batch, Auto, and message_only. As a result, both the request business message and API Message remained in a pending status. However, we have resolved this issue by updating the message statuses correctly. #### Fixed Issue: Unable to Add Interface to Interface Group This issue occurs when attempting to add an interface to an interface group that contains multiple interface records within the integration. It results in an error message alert stating, 'Please enter the value in Sequence.' The issue arises during the interface trigger when verifying and validating the source name of the interface. We have resolved this problem by using Type.forName('xxxxxxx') instead of Schema.getGlobalDescribe().get('xxxxxxx'). This approach provides faster performance and prevents validation checks during interface updates within the Interface group. #### Fixed Issue of the MessageReprocessPerInterfaceGroup Scheduler We have resolved the issue with the MessageReprocessPerInterfaceGroup scheduler that was causing a mix-up between inbound and outbound reprocessing messages that caused an incorrect setting of Processing Package size to outbound. To fix this issue, we implemented the following solutions: - Ensured that inbound and outbound processes are not mixed within the same scheduler of the interface group. When the interface group contains only outbound interfaces, the scheduler will execute the outbound worker job (IServiceBatchCallout) to reprocess the outbound messages. - Similarly, when the interface group contains only inbound interfaces, the scheduler will execute an inbound worker job (IServiceBatchReprocess) to reprocess the inbound messages. - The issue with the scheduler on the interface group that reprocesses outbound messages with a processing package size greater than 1, even when the Processing Package Size is blank, has been resolved. The issue occurred due to a mix-up in the scheduler's reprocessing of request/response messages (outbound/inbound messages) within the same group. When the 'Processing Package Size' setting is blank, the following default values will apply: For outbound message reprocessing, the setting will be 1. - For inbound message reprocessing, the setting will be 10. #### Fixed exceeded 100000 distinct who/what's of inbound processing with event object This issue may arise when using 'List lst = [SELECT Id FROM SObjectX WHERE IsDeleted = false LIMIT 0];' in Inbound Processing with Event sObject. If you exceed the limit 100000, you will encounter an error message stating 'First error: exceeded 100000 distinct who/what's'. To resolve this issue, consider using 'List lst = new List();' instead. #### Overlapping Interface Text on View Screen on Compact Mode We have encountered an issue where the text on the interface view screen overlaps when the screen size is small and the input text field contains a long value on Compact Mode. This problem has been addressed by implementing a responsive interface detail screen, ensuring that the text view is displayed properly without any overlapping. #### Resolved Frozen Data Loader Screen When Selecting All Records, Appending Their Child Records, and Pushing Records with Raw Upload File We have identified an issue that occurs when selecting all records and appending their child records using the Raw Upload File. After pushing these selected records, you may experience a frozen Data Loader screen. We are pleased to inform you that this issue has been successfully resolved. #### Error Encountered When Navigating Back to the Interface Group Tab When you click on the Interface Group Name link in the Interface Group List of Integrations, you will be directed to the Interface Group Detail Page with a new tab. However, upon returning to the Interface Group List, you may encounter a pop-up error screen displaying the message: "Cannot read properties of undefined (reading 'split')." We are pleased to inform you that this issue has been resolved. #### Resolution of Update Issue with Integration Records in the Presence of Multiple Interfaces We have identified an issue when updating integration records in the presence of multiple interfaces. During this process, you may encounter the following error message: "skyvvasolutions.trgBI_Integration: System.limitException: skyvvasolutions: Too many SOQL queries 101." We are pleased to announce that this issue has been successfully resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-23-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-23-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.23 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Yw3P](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Yw3P) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Yw3P](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Yw3P) Release Date: 10-May-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Info Slug: 2-50-23-patch-2-info URL: https://help.skyvva.com/#article/2-50-23-patch-2-info ================================================================================ # 2. Info #### Rename Some Label Tab Name On Agent Control Board We have renamed from "Log File" to "Agent Log" and "Log" to "Salesforce Log" for better clarity and understanding. This makes it easier to identify the source of the log. #### ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Warning Slug: 2-50-23-patch-3-warning URL: https://help.skyvva.com/#article/2-50-23-patch-3-warning ================================================================================ # 3. Warning #### Adding a picklist value while upgrading the new version In general, the picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ##### Added a picklist “Delete child not present in the payload” on the “skyvvasolutions__Init_Operation__c” field of “skyvvasolutions__IChained_Interfaces__c” object: - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__IChained_Interfaces__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2024/04/1-IChained-Interfaces-.webp) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__Init_Operation__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2024/04/2-Initialization-Operation.webp) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2024/04/3-Click-New-Button.webp) - Fill in the value’s API name in the box and click the save button. ![](../images/2024/04/4-Fill-API.webp) Finally, we will get the Use ‘**Delete child not present in the payload**’ picklist value on **skyvvasolutions__Init_Operation__c** of **skyvvasolutions__IChained_Interfaces__c** Object as in the screenshot below. ![](../images/2024/04/6-Get-Fields.webp) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__Init_Operation__c** field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__Init_Operation__c**.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Enhancement Slug: 2-50-23-patch-4-enhancement URL: https://help.skyvva.com/#article/2-50-23-patch-4-enhancement ================================================================================ # 4. Enhancement #### Added New “Delete child not present in the payload” Initialization Operation We are excited to introduce a new Initialization Operation that empowers you to effectively handle parent records sent by the external system without their associated child records. With our enhanced feature called 'Delete child not present in the payload' within the Initialization Operation of the iChained Interface setting, you have the ability to conveniently remove child records while sending the parent records. This feature provides the flexibility and control you need to manage your data seamlessly. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 5. Bug Fixed Slug: 2-50-23-patch-5-bug-fixed URL: https://help.skyvva.com/#article/2-50-23-patch-5-bug-fixed ================================================================================ # 5. Bug Fixed #### Fixed VLOOKUP on Workflow Function and Mapping Issue Getting Error 'Too many SOQL queries: 201' An issue was encountered when using VLOOKUP on the workflow function and Mapping with multiple child records to look up to a parent. This resulted in an error message: "System.LimitException: skyvvasolutions:Too many SOQL queries: 201." However, this issue has been resolved. #### Fixed 'Please Select a Record' Warning Message in V2 Interface Design for Importing Records When importing records using the V2 interface design, a warning message stating "Please select a record" may appear, even if you have already selected it. However, this issue has been resolved by allowing the selection of records ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-1-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-1-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.1 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fksH](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fksH) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fksH](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fksH)
Release Date: 17-May-2024
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Info Slug: 2-51-1-patch-2-info URL: https://help.skyvva.com/#article/2-51-1-patch-2-info ================================================================================ # 2. Info ## Rename Tab and Remove a Section and Tab Name on the Batch Control Board We would like to inform you that we have removed the History Basket section from the Basket Tab and added a new tab called 'History Basket' instead. Additionally, we have renamed the original basket tab to 'Working Basket'. ## Rename Some Label Tab Name On Agent Control Board We have renamed from "Log File" to "Agent Log" and "Log" to "Salesforce Log" for better clarity and understanding. This makes it easier to identify the source of the log. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Warning Slug: 2-51-1-patch-3-warning URL: https://help.skyvva.com/#article/2-51-1-patch-3-warning ================================================================================ # 3. Warning ## Adding a picklist value while upgrading to the new version In general, the picklist value from the package will not be added automatically when you upgrade the package. Therefore, you must add them manually after the upgrade. Note that this problem will not arise for a new installation. ## Added a picklist “Delete child not present in the payload” on the “skyvvasolutions__Init_Operation__c” field of “skyvvasolutions__IChained_Interfaces__c” object: - You can click “Setup” at the top of the interface page. - In the “Quick Find” box, type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager, then scroll down the page to find the **“skyvvasolutions__IChained_Interfaces__c**” object, or you can search for it in the “Quick Find” box, then click it. ![](../images/2024/04/1-IChained-Interfaces-.webp) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__Init_Operation__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2024/04/2-Initialization-Operation.webp) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2024/04/3-Click-New-Button.webp) - Fill in the value’s API name in the box and click the save button. ![](../images/2024/04/4-Fill-API.webp) Finally, we will get the Use ‘**Delete child not present in the payload**’ picklist value on **skyvvasolutions__Init_Operation__c** of **skyvvasolutions__IChained_Interfaces__c** Object as in the screenshot below. ![](../images/2024/04/6-Get-Fields.webp) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__Init_Operation__c** field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__Init_Operation__c**.[/su_box] ## Added a picklist “Routing Message” on the “skyvvasolutions__Message_Type__c” field of “skyvvasolutions__IMessage__c” object: - You can click “Setup” at the top of the interface page. - In the “Quick Find” box, type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager, then scroll down the page to find the **“skyvvasolutions__IChained_Interfaces__c**” object, or you can search for it in the “Quick Find” box, then click it. ![](../images/2024/05/2025-05-29_14-39-21.png) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__Message_Type__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2024/05/2025-05-29_14-43-01.png) - Select the field and scroll down the page to find the values section. You will find some values are already there, so to add the new picklist, just click the “New” button. ![](../images/2024/05/2025-05-29_14-45-06.png) - Fill in the value’s API name in the box and click the save button. ![](../images/2024/05/2025-05-29_14-46-05.png) Finally, we will get the Use ‘**Routing Message**’ picklist value on **skyvvasolutions__Message_Type__c **field of **skyvvasolutions__IMessage__c** Object as in the screenshot below. ![](../images/2024/05/2025-05-29_14-49-46.png) **Note:** However, some organizations will face missing this picklist value in this skyvvasolutions__Message_Type__c field. To avoid the problem, please kindly add this value by checking the box of the picklist value for a particular skyvvasolutions__Message_Type__c. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 4. Enhancement Slug: 2-51-1-patch-4-enhancement URL: https://help.skyvva.com/#article/2-51-1-patch-4-enhancement ================================================================================ # 4. Enhancement ## Various Enhanced Message Alert - Previously, the failed messages alert was real-time, it would immediately send an email when a message failed, based on your settings. We've now added a Non-real-time Alert option, which lets you set up the failed message alert to be sent later, instead of immediately when the failure occurs. We now support both real-time and non-real-time alert options. - We've added an Alert Category option, letting you choose between Message-Based Alerts or Object-Based Alerts. The Message-Based Alert is our original approach. With Object-Based Alerts, we only create one alert for the root business message, reducing the number of alerts needed for hierarchical objects. However, we still allow users to define detailed alerting per individual message if desired. - When the 'Switch off Message Processing Alert' option is enabled, it means you do not want to receive notifications from the message processing alert. ## Added New “Delete child not present in the payload” Initialization Operation We are excited to introduce a new Initialization Operation that empowers you to effectively handle parent records sent by the external system without their associated child records. With our enhanced feature called 'Delete child not present in the payload' within the Initialization Operation of the iChained Interface setting, you have the ability to conveniently remove child records while sending the parent records. This feature provides the flexibility and control you need to manage your data seamlessly. ## Enhanced “Batch Processing Order” and “Query Limit for Batch Processing” to Check Next Level Setting When Not Configured We have made significant improvements to the 'Batch Processing Order' and 'Query Limit for Batch Processing' settings. These parameters could be set at the Interface, Interface Group, and Integration levels. In the previous version, the interface group and integration settings were not considered if the interface setting was not configured when processing the interface scheduler. Now, we have enhanced the functionality to include checking the interface group and integration settings while the interface setting is not configured during interface scheduler processing. ## Improved Opening of Salesforce sObject Related to IMessage in a New Tab New Tab In the previous version, when you opened the Salesforce sObject related to IMessage, it would open in the current browser tab. We have now enhanced this functionality to open in a new tab. This improvement makes it easier for you to access and review the details of existing messages. ## Enhanced Bulk Processing Support with Basket Record Collection Size Of Interface Group Setting In the previous version, we had a batch job that processed only a single bulk basket. However, we have enhanced it to support the Basket Record Collection Size. For example, suppose the basket record collection size setting on the interface group is 20, and Bulk Basket 1 has 5 records while Bulk Basket 2 has 10 records, resulting in a total of 15 records (5 + 10 ≤ 20). In that case, the Bulk interface group Scheduler will execute a batch apex job to process a single batch job with Bulk Basket 1 and 2 together. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 5. Bug Fixed Slug: 2-51-1-patch-5-bug-fixed URL: https://help.skyvva.com/#article/2-51-1-patch-5-bug-fixed ================================================================================ # 5. Bug Fixed ## Mapping is Always Lost After Updating BAPI Message Type An issue arises when attempting to update the message type by reimporting the BAPI Metadata. After reimporting, the existing message type gets updated, leading to the loss of mapping. However, this issue has been resolved by ensuring that the 'Source/Target Message Type' is not removed from the interface during the metadata re-import process. ## Fixed Various Issues Updated incorrect Message Status - We have encountered an issue during the Request and Response process with the SAP CPI Adapter. Specifically, when receiving a failed response, the API message does not update its status from 'completed' to 'Partial Completed.' This issue occurs when using the invokeCalloutV3 method in various modes such as Future, Queueable, Batch, Auto, and message_only. - Incorrect Update of API Message: After reprocessing the message, the API Message incorrectly updates as 'failed' even though some business messages are completed successfully while others have failed. This issue has been resolved by updating the status to 'Partial Completed. - We encountered another issue when calling the 'SAP CPI' adapter and performing the 'Get' operation without mapping (only querying data for inbound processing) using callout modes such as Future, Queueable, Batch, Auto, and message_only. As a result, both the request business message and API Message remained in a pending status. However, we have resolved this issue by updating the message statuses correctly. ## Unable to Add Interface to Interface Group This issue occurs when attempting to add an interface to an interface group that contains multiple interface records within the integration. It results in an error message alert stating, 'Please enter the value in Sequence.' The issue arises during the interface trigger when verifying and validating the source name of the interface. We have resolved this problem by using Type.forName('xxxxxxx') instead of Schema.getGlobalDescribe().get('xxxxxxx'). This approach provides faster performance and prevents validation checks during interface updates within the Interface group. ## Fixing the Issue of the MessageReprocessPerInterfaceGroup Scheduler We have resolved the issue with the MessageReprocessPerInterfaceGroup scheduler that was causing a mix-up between inbound and outbound reprocessing messages that caused an incorrect setting of Processing Package size to outbound. To fix this issue, we implemented the following solutions: - Ensured that inbound and outbound processes are not mixed within the same scheduler of the interface group. When the interface group contains only outbound interfaces, the scheduler will execute the outbound worker job (IServiceBatchCallout) to reprocess the outbound messages. - Similarly, when the interface group contains only inbound interfaces, the scheduler will execute an inbound worker job (IServiceBatchReprocess) to reprocess the inbound messages. - The issue with the scheduler on the interface group that reprocesses outbound messages with a processing package size greater than 1, even when the Processing Package Size is blank, has been resolved. The issue occurred due to a mix-up in the scheduler's reprocessing of request/response messages (outbound/inbound messages) within the same group. When the 'Processing Package Size' setting is blank, the following default values will apply: For outbound message reprocessing, the setting will be 1. - For inbound message reprocessing, the setting will be 10. ## Fixed exceeded 100000 distinct who/what's of inbound processing with the event object This issue may arise when using 'List lst = [SELECT Id FROM SObjectX WHERE IsDeleted = false LIMIT 0];' in Inbound Processing with Event sObject. If you exceed the limit 100000, you will encounter an error message stating 'First error: exceeded 100000 distinct who/what's'. To resolve this issue, consider using 'List lst = new List();' instead. ## Overlapping Interface Text on View Screen on Compact Mode We have encountered an issue where the text on the interface view screen overlaps when the screen size is small and the input text field contains a long value on Compact Mode. This problem has been addressed by implementing a responsive interface detail screen, ensuring that the text view is displayed properly without any overlapping.  ## Incorrect Order of Nodes and Fields in Generated JSON Payload You may encounter a problem with the mapping order incorrect, leading to the generation of an incorrect JSON payload. In certain cases, specific fields may be misplaced and end up in the wrong node. However, we have resolved this issue by appropriately enhancing our JSON builder. This ensures the correct order and field population in the JSON payload. ## Added Filter and Pagination for Generic Repository List View We have enhanced the Generic Repository by adding filter and pagination functionalities. These enhancements will assist you in searching your repository and easily viewing each repository record in a paginated manner. ## Added Various Functions for Generic Baskets List View We have implemented several functions on the Generic Baskets List View, as outlined below: - Refresh button: Added a refresh button to facilitate the refreshing of Basket Records. - Process button: Introduced a process button to enable the processing of Baskets. - New field - Processing Type: Included a new field called Processing Type, which provides information on the origin of the basket generation. Examples include batch, bulk, or raw basket processing. - We have added a Download option that enables you to download all baskets ## Resolution of Error When Deleting Pending Event Baskets There was an issue encountered when attempting to delete a Pending Event Basket that was under processing. This issue triggered an error message on the pop-up screen, stating "Cannot read properties of undefined [reading 'exceptionType']." We are pleased to inform you that this issue has been successfully resolved. ## Resolved Frozen Data Loader Screen When Selecting All Records, Appending Their Child Records, and Pushing Records with Raw Upload File We have identified an issue that occurs when selecting all records and appending their child records using the Raw Upload File. After pushing these selected records, you may experience a frozen Data Loader screen. We are pleased to inform you that this issue has been successfully resolved.  ## Fixed 'Please Select a Record' Warning Message in V2 Interface Design for Importing Records When importing records using the V2 interface design, a warning message stating "Please select a record" may appear, even if you have already selected it. However, this issue has been resolved by allowing the selection of records. ## Fixed Filter Baskets with Specific Integration We have identified an issue where, when you filter the basket by a specific Integration, it displays all baskets from all integrations, instead of just the baskets for the selected integration. This issue has now been resolved. ## Fixed VLOOKUP on Workflow Function and Mapping Issue Getting Error 'Too many SOQL queries: 201' An issue was encountered when using VLOOKUP on the workflow function and Mapping with multiple child records to look up to a parent. This resulted in an error message: "System.LimitException: skyvvasolutions:Too many SOQL queries: 201." However, this issue has been resolved. ## Fixed Various Issues Regarding DoAlert Function - When all Agent Schedulers start, a triggered error prevents the Agent from inserting the interfaceControlRunTime. Due to this issue on the Salesforce side, it is unable to generate an alert notification about the scheduler not running since xxx. - The issue was caused by the Alert Configuration being set at the integration level, but it did not check the NextRun of interfaceControlRunTime for the Interface Group. This resulted in the system failing to generate an alert notification when the scheduler stop running since xxx. This issue has been fixed by updating the Alert Configuration to check the interfaceControlRunTime at the Integration, Interface Group, and Interface levels. - Fixed the issue of lost Alerting Setup for Scheduler Processing on integration caused by an unexpected deletion of the scheduler. This issue has now been resolved. - The issue of accidentally losing the alert configuration record has been resolved. This issue could occur when creating a new integration, interface, interface group, or scheduler. The problem arose when creating a new record, the ID was initially set to null. This caused the trigger for creating the new integration, interface, interface group, or scheduler to query the wrong alert configuration record with a null ID, and then attempt to update the wrong record. ## Fixed Various Issues Regarding Find & Replace - The Interface may not refresh the interfaces on the Find & Replace the second time cause you may make a change to the interface. For example, you remove or create an interface. This issue has been fixed by refreshing the interface after clicking the Find & Replace Tab again. - Previously, when there were failed messages with no iData on the outbound interface, an error alert was displayed after selecting the outbound interface. This issue has now been fixed, and instead of the error alert, a warning message "No Failed or Pending Messages are Available" is shown. - In the previous version, the formula headers in both the mapping and workflow functionalities displayed the complete formula. This resulted in some issues. However, in the current version, the formula headers in both the mapping and workflow functionalities now only show the field names of the formula, rather than the full formula, in the header of the find and replace function. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-32-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-32-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.32 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TsQs](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TsQs) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TsQs](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TsQs) Release Date: 07-June-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Info Slug: 2-48-32-patch-2-info URL: https://help.skyvva.com/#article/2-48-32-patch-2-info ================================================================================ # 2. Info #### Rename Some Label Tab Name On Agent Control Board We have renamed from "Log File" to "Agent Log" and "Log" to "Salesforce Log" for better clarity and understanding. This makes it easier to identify the source of the log. #### Remove Some Properties in New Agent Database Adapter The Agent Database adapter was not utilized in certain properties, so we have decided to remove it as follows: - For SQLServer database type, we have removed the properties: Hostname, Port, Database Name, and Server Instance. - For MsAccess database type, we have removed the properties: Hostname and Database Name. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Warning Slug: 2-48-32-patch-3-warning URL: https://help.skyvva.com/#article/2-48-32-patch-3-warning ================================================================================ # 3. Warning #### Adding a picklist value while upgrading the new version In general, the picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that this problem will not arise for a new installation. ##### Added a picklist “Delete child not present in the payload” on the “skyvvasolutions__Init_Operation__c” field of “skyvvasolutions__IChained_Interfaces__c” object: - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the object manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__IChained_Interfaces__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2024/04/1-IChained-Interfaces-.webp) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__Init_Operation__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2024/04/2-Initialization-Operation.webp) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2024/04/3-Click-New-Button.webp) - Fill in the value’s API name in the box and click the save button. ![](../images/2024/04/4-Fill-API.webp) Finally, we will get the Use ‘**Delete child not present in the payload**’ picklist value on **skyvvasolutions__Init_Operation__c** of **skyvvasolutions__IChained_Interfaces__c** Object as in the screenshot below. ![](../images/2024/04/6-Get-Fields.webp) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__Init_Operation__c** field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__Init_Operation__c**.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. Enhancement Slug: 2-48-32-patch-4-enhancement URL: https://help.skyvva.com/#article/2-48-32-patch-4-enhancement ================================================================================ # 4. Enhancement #### Added New “Delete child not present in the payload” Initialization Operation We are excited to introduce a new Initialization Operation that empowers you to effectively handle parent records sent by the external system without their associated child records. With our enhanced feature called 'Delete child not present in the payload' within the Initialization Operation of the iChained Interface setting, you have the ability to conveniently remove child records while sending the parent records. This feature provides the flexibility and control you need to manage your data seamlessly. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 5. Bug Fixed Slug: 2-48-32-patch-5-bug-fixed URL: https://help.skyvva.com/#article/2-48-32-patch-5-bug-fixed ================================================================================ # 5. Bug Fixed #### Fixed VLOOKUP in Workflow Function Issue Getting Error 'Too many SOQL queries: 201' An issue was encountered when using VLOOKUP on the workflow and mapping function with multiple child records to look up to a parent. This resulted in an error message: "System.LimitException: skyvvasolutions:Too many SOQL queries: 201." However, this issue has been resolved. #### Direct Link Message Waiting for First Message Process in V2 Processing In our message flow, when the first message fails, the second message has the same external ID as the previous one. It will be pending and will wait until the first message is processed. The second message will not provide a direct link to the failed first message. This issue has been resolved by providing the direct link to the first failed message in the comment. #### Get “Too many query rows: 50001” on Bulk Processing Basket When you have numerous bulk baskets with over 50000 basket records and you set the scheduler to process them, the system will query all the bulk baskets and filter them for processing. However, this can lead to an issue where an error message is raised stating 'Too many query rows: 50001'. Fortunately, this issue has been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-2-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-2-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.2 - Developer Edition Org: [http://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fnFk](http://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fnFk) - Sandbox Org: [http://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fnFk](http://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fnFk)
Release Date: 30-August-2024
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Enhancement Slug: 2-51-2-patch-3-enhancement URL: https://help.skyvva.com/#article/2-51-2-patch-3-enhancement ================================================================================ # 3. Enhancement ## Enhanced Interface Screen - Remove “Streaming, CDC, and Planform Events Setting” - Visible Fields-based Event Type Selection in Event Configuration Section ## Enhanced Bulk Processing to Support Per-Integration and Per-Interface Group Scheduler Currently, we have a scheduler for bulk processing per interface. However, we enhance it by adding scheduling capabilities per Interface Group and integration. This expansion will allow you to organize and execute your Bulk Basket. ## Apply the Threshold for Raw Basket and Bulk Basket In the previous version, the Raw Basket and Bulk Basket did not have a Threshold feature to alert users when the basket limit was reached. This feature has now been enhanced to provide Threshold support for both the Raw Basket and Bulk Basket. ## Enhance All Manual Process Functions In the previous version, users could perform the Manual Process function even when the interface was linked with an inactive adapter. In the current version, the Manual Process function is now only available for interfaces with a status of "Deployed", the interface must be linked to an active adapter, and the interface type must be the main interface. ## Enhanced Batch Control Board Screen - The interface filter should provide the selected interface instead of requiring the user to input the interface name into the History Basket. - The Processing Type filter should be enhanced to allow the selection of the processing type of the baskets for the filter on the History Basket Tab. - An Interface Group Column was added to the History Basket display records. - We have added an ORDER BY on the filter for the Working Basket of the batch control board in order to monitor which batch baskets are older or newer records. The default setting for this field is Descending. ## Added Refresh Button on All Reports & Dashboards Page Currently, the Reports & Dashboards feature lacks a Refresh button to update and retrieve the latest records. However, in this version, we have implemented a Refresh button across all Reports & Dashboards. ## Separate Adapter Status and Inbound Consumer File of New Agent In the previous version, the Agent Inbound Consumer file would trigger and become active, and its active status would be stored in the Adapter Status field, indicating that a Consumer File was being utilized. However, in the current version, we have created a new Adapter property called Consumer Status. This Consumer Status field allows the status to be explicitly recorded as either 'stop' or 'start', providing more granular visibility and control over the Consumer File's state. ## New 'Retrieve Data' Operation Type: Outbound Processing in 'AUTO Mode', Handles invokeCallout Without Records, Supports Manual & Scheduled Processing We've introduced a new 'Retrieve Data' operation type to handle outbound queries, even when records lack the required data. Previously, missing records caused issues, but this new type avoids errors during 'AUTO' mode processing, even without any records. We've added this operation mode, which is used only when there are no available records from the filter query. In such cases, the system calls invokeCalloutV3 in 'AUTO' mode. It supports both manual and scheduled processing. ## Added Pagination to Generic Basket Histories We have added pagination functionality to the Generic Basket Histories feature to facilitate easier monitoring of historical basket data. Previously, users were faced with scrolling through long lists of basket records, making it challenging to quickly locate and review specific entries. ## Enhanced on Alert When Not Run Function - We have an icon state to indicate that this scheduler will not run. - We have updated the comment regarding the number of schedulers that will not run for several hours, minutes, etc. - Enhanced the Alert Value dependency screen based on the “Unite of time for the alert” field selection. - Changed the display type to show the scheduler type instead of the scheduler name. ## Enhanced Import Database Metadata to Generate Hierarchical Message Type Previously, users faced challenges importing hierarchical message types, as this required manual configuration - a cumbersome and time-consuming process. To address this, we've enhanced the Import Database Meta Function to automatically generate the hierarchical message type structure, eliminating the need for manual intervention. ## Removal of Extraneous Whitespace in some Filter Fields on Message We have improved the search message function to remove unwanted whitespace from the following fields: - Message Name - Business External ID - System External ID - Transfer ID - Transaction ID - Basket Name ## Enhanced IChain Initialization Operation: 'Delete child not present in the payload' We have enhanced the IChain Initialization Operation “Delete child not present in the payload” This operation deletes a collection of child records. In the previous version, the remaining records child could not be deleted if one record failed to be deleted. However, this operation has been enhanced. Now, if a record fails, some records in the collection can still be deleted successfully. ## Enhancement Screen Display  to Remove Some Pagination on Different Sections and Pages We have enhanced the Screen Display to remove some pagination from the Different Sections and Pages.  - Remove the pagination from a data table of related Interface Page in sections IStructure, IMapping, IWorkflow, etc. - The change has an effect on another screen like: - Agent Control Board(Old) > data table in adapter tab - Meta, Repo, Message Type related list > view all? - Message Type related list > Select a field from the repository, use the existing message type ## Added A few Buttons and Filters Sections on the License Page We have added Remove Key and Remove Key for All Users.  - The Remove Key button means you need to select the user who wants to remove Skyvva Lience Skey. - The Remove Key for All Users will remove all the Skyvva License Keys in the list of users We have removed the ‘Type of User’ select filter option nearly button section and also added the filter section as below:  - Full Name - UserName - FirstName - LastName - Active - Type Of Users - Users with no license key - Users with active license key - Inactive Users - Users with invalid License key - Users with expired license key - Expiration Date ## Enhanced Message Status Handling for Empty Responses We have enhanced our response handling to set the status when there is an empty response. The available statuses are as follows: - When empty response -> Status Completed (green) - When empty response -> Status Failed (red) - When empty response -> Status Pending (yellow) - When empty response -> Status Cancelled (grey) You can set the message status in the Response Handling field of the inbound interface using these four picklist values while managing empty responses. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 4. Bug Fixed Slug: 2-51-2-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-51-2-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed ## Direct Link Message Waiting for First Message Process in V2 Processing In our message flow, when the first message fails, the second message has the same external ID as the previous one. It will be pending and will wait until the first message is processed. The second message will not provide a direct link to the failed first message. This issue has been resolved by providing the direct link to the first failed message in the comment. ## Fixed Check Adatper Status Before Creating the Message of InvokeCalloutV3() Processing In the previous version, the InvokeCalloutV3() function did not check the adapter status while creating the message. However, in the adapter, it would follow the status rules. If the status was not active, we would not have created the message before calling InvokeCalloutV3(). This issue has been fixed, and we have now provided validation to create the message based on the status of the adapter. ## Fixed Always Alert Failed Message While “Switch Off Message Processing Alert” is True We have a DoAlert Scheduler to process alerts when the scheduler accidentally stops and gets a failed message. Currently, when you enable the “Switch Off Message Processing Alert”, the message failed still alert. This issue has been fixed. ## Fixed Various Issues on the Batch Control Board - ​​When attempting to filter by Comment, an error message previously popped up stating "Error: field 'skyvvasolutions__Comment__c' cannot be filtered in a query call, causing the application to get stuck with a spinner. The issue has been resolved by removing the filter on the 'Comment'. This is because the 'Comment' field is a text area field that cannot be specified in the WHERE clause of a queryString in a query() call. - Fixed an issue where users could not delete all history baskets on General History Baskets, which would raise an error and display the message "Fail to delete basket history!". This issue has been fixed. ## Fixed the Issue of Having Huge Baskets on the Generic Basket Page An issue occurred in the Basket Generic Page, where when there are many baskets (around 50,000 or more), clicking on the Basket Generic tab would result in an error alert stating "JSON string exceeds heap size limit". This issue has been resolved by adding pagination and limiting the records displayed to 10,000. Each pagination page now displays 100 records. ## Fixed  Return -1 Day on Query Param with Last Run Date Scheduler call of Sage 100 Adapter We have resolved an issue that was occurring in scheduled outbound interfaces where the dynamic query parameters were being built incorrectly. Specifically, the sage 100 adapter logic was subtracting one day from the scheduler's last run date and time, causing the operations to be performed with the wrong date and time values. We have corrected this logic to properly utilize the accurate scheduler's last run date and time, eliminating the unintended date adjustments and ensuring the scheduled interfaces operate as expected. ## Fixed Issue with Test Formula on CDATE During testing, we encountered an issue with the formula mapping that uses the CDATE function. The issue was caused by the 'IF' condition, which could produce unexpected results. For example, the formula: IF(Field = '#N/A', '', IF(Field = 'Purchased', '', CDATE(Field, 'm/d/y'))) was resulting in the error message: "Output Line:1587>CDATE>dataText [Purchased] does not correspond to the format [m/d/y]". This issue has been fixed. ## Resolving Scheduler Display Issues on the Agent Control Board In the previous version, we encountered an issue where the Salesforce agent's next-run scheduler would fail, and the scheduler records did not display on the scheduler tab of the agent control board. This issue has now been fixed. The scheduler records and their associated comments are now correctly displayed on the scheduler tab, with any issues or errors marked in red. ## Issue Fixed - Saving Name Edits on Restore Interface Screen We previously encountered an issue where users would receive an error message when attempting to save edits made to the name field on the Restore Interface screen. The error message stated: 'TypeError: Action failed: skywvasolutions:ImportSKYVVASobjectsScriptScontroller$handleSaveEdition mapping[j] is undefined]. This issue has been resolved. ## Fixed Update skyvvasolutions__BulkReprocessScheduledJobId__c Field Issue on Interface Records Previously, the scheduler would update the 'skyvvasolutions__BulkReprocessScheduledJobId__c' field on the interface record with the Schedule Job Id. This field was used to store the job ID for the scheduler. However, this was caused by users auto-modifying the interface record. The field was used in an earlier version of our bulk feature but is no longer needed in the current version, as we now store the job ID directly on the skyvvasolutions__IScheduler_Setting__c object instead. This issue has been resolved, and the interface records are no longer updated with the Schedule Job ID. ## Fixed Issue Edit Field Inside Interface Details Page We have an issue with the edit field on the interface detail page. After saving the value, an error message appears. This issue has been resolved. ## Resolved Error: 'Too Many Query Rows (50001)' on Bulk Control Board There is an issue when accessing the Bulk Control Board. A Message Error Alert appears with the text "skyvvasolutions: Too many query rows: 50001". This error occurs due to the large number of baskets being queried. For example, the Bulk Control Board queries 50,000+ Baskets and History Baskets. To resolve this, we have set a limit of 10,000+ History Baskets to display on the screen. ## Resolved Issue: Unable to Open Adapter List We have an issue when entering the Apdater list, it will raise an error message pop-up alert “Cannot read properties of undefined (reading ‘Name’)]) The issue arises when the adapter queries the Connection Destination Name, which does not exist in Salesforce. This issue has been resolved. ## Automated Replacement of Dots in IStructure Field Causing Data Synchronization Issues We have identified an issue with the dot (.) character in your IStructure field, for example, 'Account.Name'. Previously, our system would automatically replace the dot (.) with a dollar sign (!$!) symbol during the Source_Long__c field mapping, which resulted in incorrect data synchronization. We have now fixed this issue by removing the automatic replacement of the dot (.) with the (!$!) symbol. However, in the existing cases where the replacement has already occurred, the Set Context Function still remains with the automatically generated dollar sign (!$!) symbol. ## Fixed Alert When Not Run Function In the previous version, setting up an alert configuration with multiple sObjects inside an integration could cause issues. For example, if you had already set up an interface and an interface group, resulting in an error when querying the InterfaceControlRuntimes. This would then prevent the alert notification from being triggered when the scheduler didn't run. Fortunately, this issue has been fixed in the current version. ## Fixed Not Allow to Create the Second Interface Control Runtime The error in the trigger when creating a second Interface Control Runtime arises error: 'Not allow to add Interface Control Run Time more than one record per interface'. This occurs when the first Interface Control Runtime, linked to a specific Integration/Interface Group/Interface, is set as 'Alert When Not Run’. and you try to create another Interface Control Runtime with a different record type that links to the same interface/Interface group/Integration will trigger an error. This issue has been resolved. ## Fixed Text Overlapping in Another Column When Switching to ‘Swap Text’’ Fixed an issue in the Agent Cache data table where selecting "Wrap Text" caused the data in the "Swap Text" column to overlap with other columns. ## Fix for IStructure Deletion When Updating Query Old Design Outbound Interface There was an issue where, upon updating the query of the old design outbound interface, the old IStructure created by the Agent would be deleted immediately. This issue has now been fixed, preventing the deletion of the Agent's IStructure. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Warning Slug: 2-51-2-patch-2-warning URL: https://help.skyvva.com/#article/2-51-2-patch-2-warning ================================================================================ # 2. Warning ## Adding a picklist value while upgrading the new version In general, the picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ## Added the following picklist values to the 'skyvvasolutions__InbResponse_handling__c' field of the 'skyvvasolutions__Interfaces__c' object: - **When empty response -> Status Completed (green)** - **When empty response -> Status Failed (red)** - **When empty response -> Status Pending (yellow)** - **When empty response -> Status Cancelled (grey)** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__Interfaces__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/12/Screenshot-2023-12-20-at-5.55.39-pm.png) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__InbResponse_handling__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/12/Screenshot-2023-12-21-at-11.54.42-am.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2024/09/ClickNewButtonSetStatusOnResponseHandling.webp) - Fill in the value’s API name below in the box and click the save button. **When empty response -> Status Completed (green)** - **When empty response -> Status Failed (red)** - **When empty response -> Status Pending (yellow)** - **When empty response -> Status Cancelled (grey)** ![](../images/2024/09/AddPicklistSetStatusResponseHandling.webp) Finally, we will get the "**When empty response -> Status Completed (green)**", "**When empty response -> Status Failed (red)**", "**When empty response -> Status Pending (yellow)**",  and "**When empty response -> Status Cancelled (grey)**" picklist values on **skyvvasolutions__InbResponse_handling__c** of **skyvvasolutions__Interfaces__c** Object as in the screenshot below. ![](../images/2024/09/AddedPicklistSetStatusResponseHandling.webp) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__InbResponse_handling__c**  field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__InbResponse_handling__c**.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-24-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-24-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.24 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000002qZXN](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000002qZXN) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000002qZXN](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000002qZXN) Release Date: 23-September-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Warning Slug: 2-50-24-patch-2-warning URL: https://help.skyvva.com/#article/2-50-24-patch-2-warning ================================================================================ # 2. Warning #### Adding a picklist value while upgrading the new version In general, the picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ##### Added the following picklist values to the 'skyvvasolutions__InbResponse_handling__c' field of the 'skyvvasolutions__Interfaces__c' object: - **When empty response -> Status Completed (green)** - **When empty response -> Status Failed (red)** - **When empty response -> Status Pending (yellow)** - **When empty response -> Status Cancelled (grey)** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__Interfaces__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/12/Screenshot-2023-12-20-at-5.55.39-pm.png) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__InbResponse_handling__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/12/Screenshot-2023-12-21-at-11.54.42-am.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2024/09/ClickNewButtonSetStatusOnResponseHandling.webp) - Fill in the value’s API name below in the box and click the save button. **When empty response -> Status Completed (green)** - **When empty response -> Status Failed (red)** - **When empty response -> Status Pending (yellow)** - **When empty response -> Status Cancelled (grey)** ![](../images/2024/09/AddPicklistSetStatusResponseHandling.webp) Finally, we will get the "**When empty response -> Status Completed (green)**", "**When empty response -> Status Failed (red)**", "**When empty response -> Status Pending (yellow)**",  and "**When empty response -> Status Cancelled (grey)**" picklist values on **skyvvasolutions__InbResponse_handling__c** of **skyvvasolutions__Interfaces__c** Object as in the screenshot below. ![](../images/2024/09/AddedPicklistSetStatusResponseHandling.webp) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__InbResponse_handling__c**  field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__InbResponse_handling__c**.[/su_box] #### Ensuring Proper Configuration for Custom Processing Classe in SKYVVA In the previous version, you could use a 'Custom Processing Class' without specifying the location or processing unit. The processing block or unit can be set under the field 'Custom Block to Replace SKYVVA Block'. Now, if you do not set the processing block, your custom class will not get invoked by our processing runtime. Therefore you must select one of the 'Custom Block to Replace SKYVVA Block' that you need to override. ![](../images/2024/09/Custom-Block-Replace-Skyvva-Block--scaled.webp) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Enhancement Slug: 2-50-24-patch-3-enhancement URL: https://help.skyvva.com/#article/2-50-24-patch-3-enhancement ================================================================================ # 3. Enhancement #### Apply the Threshold for Raw Basket and Bulk Basket In the previous version, the Raw Basket and Bulk Basket did not have a Threshold feature to alert users when the basket limit was reached. This feature has now been enhanced to provide Threshold support for both the Raw Basket and Bulk Basket. #### Enhance All Manual Process Functions In the previous version, users could perform the Manual Process function even when the interface was linked with an inactive adapter. In the current version, the Manual Process function is now only available for interfaces with a status of "Deployed", the interface must be linked to an active adapter, and the interface type must be the main interface. #### Enhanced Interface Screen - Remove “Streaming, CDC, and Planform Events Setting” - Visible Fields-based Event Type Selection in Event Configuration Section #### Separate Adapter Status and Inbound Consumer File of New Agent In the previous version, the Agent Inbound Consumer file would trigger and become active, and its active status would be stored in the Adapter Status field, indicating that a Consumer File was being utilized. However, in the current version, we have created a new Adapter property called Consumer Status. This Consumer Status field allows the status to be explicitly recorded as either 'stop' or 'start', providing more granular visibility and control over the Consumer File's state. #### New 'Retrieve Data' Operation Type: Outbound Processing in 'AUTO Mode', Handles invokeCallout Without Records, Supports Manual & Scheduled Processing We've introduced a new 'Retrieve Data' operation type to handle outbound queries, even when records lack the required data. Previously, missing records caused issues, but this new type avoids errors during 'AUTO' mode processing, even without any records. We've added this operation mode, which is used only when there are no available records from the filter query. In such cases, the system calls invokeCalloutV3 in 'AUTO' mode. It supports both manual and scheduled processing. #### Removal of Extraneous Whitespace in some Filter Fields on Message We have improved the search message function to remove unwanted whitespace from the following fields: - Message Name - Business External ID - System External ID - Transfer ID - Transaction ID - Basket Name #### Enhanced Message Status Handling for Empty Responses We have enhanced our response handling to set the status when there is an empty response. The available statuses are as follows: - When empty response -> Status Completed (green) - When empty response -> Status Failed (red) - When empty response -> Status Pending (yellow) - When empty response -> Status Cancelled (grey) You can set the message status in the Response Handling field of the inbound interface using these four picklist values while managing empty responses. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Bug Fixed Slug: 2-50-24-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-50-24-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Get “Too many query rows: 50001” on Bulk Processing Basket When you have numerous bulk baskets with over 50000 basket records and you set the scheduler to process them, the system will query all the bulk baskets and filter them for processing. However, this can lead to an issue where an error message is raised stating 'Too many query rows: 50001'. Fortunately, this issue has been fixed. #### Fixed Various Issues Regarding Find & Replace Function - The Interface may not refresh the interfaces on the Find & Replace the second time cause you may make a change to the interface. For example, you remove or create an interface. This issue has been fixed by refreshing the interface after clicking the Find & Replace Tab again. - Previously, when there were failed messages with no iData on the outbound interface, an error alert was displayed after selecting the outbound interface. This issue has now been fixed, and instead of the error alert, a warning message “No Failed or Pending Messages are Available” is shown. - In the previous version, the formula headers in both the mapping and workflow functionalities displayed the complete formula. This resulted in some issues. However, in the current version, the formula headers in both the mapping and workflow functionalities now only show the field names of the formula, rather than the full formula, in the header of the find and replace function. - This error occurs when the interface's source name is defined with an external object in Salesforce, causing the error when it cannot query the value of the source field in that interface. This issue has since been resolved #### Direct Link Message Waiting for First Message Process in V2 Processing In our message flow, when the first message fails, the second message has the same external ID as the previous one. It will be pending and will wait until the first message is processed. The second message will not provide a direct link to the failed first message. This issue has been resolved by providing the direct link to the first failed message in the comment. #### Fixed Check Adatper Status Before Creating the Message of InvokeCalloutV3() Processing In the previous version, the InvokeCalloutV3() function did not check the adapter status while creating the message. However, in the adapter, it would follow the status rules. If the status was not active, we would not have created the message before calling InvokeCalloutV3(). This issue has been fixed, and we have now provided validation to create the message based on the status of the adapter. #### Fixed Update skyvvasolutions__BulkReprocessScheduledJobId__c Field Issue on Interface Records Previously, the scheduler would update the 'skyvvasolutions__BulkReprocessScheduledJobId__c' field on the interface record with the Schedule Job Id. This field was used to store the job ID for the scheduler. However, this was caused by users auto-modifying the interface record. The field was used in an earlier version of our bulk feature but is no longer needed in the current version, as we now store the job ID directly on the skyvvasolutions__IScheduler_Setting__c object instead. This issue has been resolved, and the interface records are no longer updated with the Schedule Job ID. #### Fixed Issue with Test Formula on CDATE During testing, we encountered an issue with the formula mapping that uses the CDATE function. The issue was caused by the 'IF' condition, which could produce unexpected results. For example, the formula: IF(Field = '#N/A', '', IF(Field = 'Purchased', '', CDATE(Field, 'm/d/y'))) was resulting in the error message: "Output Line:1587>CDATE>dataText [Purchased] does not correspond to the format [m/d/y]". This issue has been fixed. #### Fixed Various Issues on the Batch Control Board - When attempting to filter by Comment, an error message previously popped up stating "Error: field 'skyvvasolutions__Comment__c' cannot be filtered in a query call, causing the application to get stuck with a spinner. The issue has been resolved by removing the filter on the 'Comment'. This is because the 'Comment' field is a text area field that cannot be specified in the WHERE clause of a queryString in a query() call. - Fixed an issue where users could not delete all history baskets on General History Baskets, which would raise an error and display the message "Fail to delete basket history!". This issue has been fixed. #### Resolving Scheduler Display Issues on the Agent Control Board In the previous version, we encountered an issue where the Salesforce agent's next-run scheduler would fail, and the scheduler records did not display on the scheduler tab of the agent control board. This issue has now been fixed. The scheduler records and their associated comments are now correctly displayed on the scheduler tab, with any issues or errors marked in red. #### Issue Fixed - Saving Name Edits on Restore Interface Screen We previously encountered an issue where users would receive an error message when attempting to save edits made to the name field on the Restore Interface screen. The error message stated: 'TypeError: Action failed: skywvasolutions:ImportSKYVVASobjectsScriptScontroller$handleSaveEdition mapping[j] is undefined]. This issue has been resolved. #### Fixed Issue related to “Delete child not present in the payload” While Using Workflow We previously encountered an issue where the deletion of child records was affecting parent records that were updated through different target interfaces in the workflow. For example, if you had defined an interface called 'AccountIn' with the 'Ichiain Contact (Delete child not in the payload)' option, and then defined another workflow target called 'AccountParentIn', any contacts associated with accounts that were updated through the 'AccountParentIn' interface would be incorrectly deleted. This issue has been resolved by ensuring that the child records are not deleted if the interface does not have the 'Delete child in the payload' option set. #### Fixed Issue Edit Field Inside Interface Details Page We have an issue with the edit field on the interface detail page. After saving the value, an error message appears. This issue has been resolved.  #### Fix for IStructure Deletion When Updating Query Old Design Outbound Interface There was an issue where, upon updating the query of the old design outbound interface, the old IStructure created by the Agent would be deleted immediately. This issue has now been fixed, preventing the deletion of the Agent's IStructure. #### Resolved Issue: Unable to Open Adapter List We have an issue when entering the Apdater list, it will raise an error message pop-up alert “Cannot read properties of undefined (reading ‘Name’)]) The issue arises when the adapter queries the Connection Destination Name, which does not exist in Salesforce. This issue has been resolved. #### Resolved Error: 'Too Many Query Rows (50001)' on Bulk Control Board There is an issue when accessing the Bulk Control Board. A Message Error Alert appears with the text "skyvvasolutions: Too many query rows: 50001". This error occurs due to the large number of baskets being queried. For example, the Bulk Control Board queries 50,000+ Baskets and History Baskets. To resolve this, we have set a limit of 10,000+ History Baskets to display on the screen. #### Automated Replacement of Dots in IStructure Field Causing Data Synchronization Issues We have identified an issue with the dot (.) character in your IStructure field, for example, 'Account.Name'. Previously, our system would automatically replace the dot (.) with a dollar sign (!$!) symbol during the Source_Long__c field mapping, which resulted in incorrect data synchronization. We have now fixed this issue by removing the automatic replacement of the dot (.) with the (!$!) symbol. However, in the existing cases where the replacement has already occurred, the Set Context Function still remains with the automatically generated dollar sign (!$!) symbol. #### Fixed Bug on Rebuild Cache Function When you click to rebuild the cache, an issue occurs: the caches appear briefly and then disappear. This issue has been by deleting the old cache and recreating it to ensure that the cache is clean and functions work properly. #### Duplicate WHERE Clause Generated in Query After Removing Mapping We encountered an issue when removing a field from the mapping. The SOQL query generated additional WHERE clause conditions. This issue has been resolved. #### Fixed CSV File Import via Email Adapter We encountered an issue when importing CSV files with data payloads containing quotes ("). This caused the CSV format to be invalid. The problem has been resolved by removing all quotes and inserting only the values without them. #### Fixed Duplicate Sequence in Mapping Records We encountered duplicate sequences in the mapping records, which caused the payload to be generated incorrectly. This issue has been resolved by generating the numbers in order, ensuring that duplicate numbers are no longer generated. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-33-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-33-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.33 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TtKo](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TtKo) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TtKo](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TtKo) Release Date: 27-September-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Warning Slug: 2-48-33-patch-2-warning URL: https://help.skyvva.com/#article/2-48-33-patch-2-warning ================================================================================ # 2. Warning #### Adding a picklist value while upgrading the new version In general, the picklist value from the package will not be added automatically when you upgrade the package. Therefore you must add them manually after the upgrade. Note that for a new installation, this problem will not arise. ##### Added the following picklist values to the 'skyvvasolutions__InbResponse_handling__c' field of the 'skyvvasolutions__Interfaces__c' object: - **When empty response -> Status Completed (green)** - **When empty response -> Status Failed (red)** - **When empty response -> Status Pending (yellow)** - **When empty response -> Status Cancelled (grey)** - You can click “Setup” on the top of the interface page. - In the “Quick Find” box type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager then scroll down the page to find the **“skyvvasolutions__Interfaces__c**” object or you can search for it in the “Quick Find” box, then click it. ![](../images/2023/12/Screenshot-2023-12-20-at-5.55.39-pm.png) - On the left side of the page, you will the panel select the **“Field & Relationship**” field. - You can search the “**skyvvasolutions__InbResponse_handling__c**” field in the “Quick Find” box or scroll down the page to find it. ![](../images/2023/12/Screenshot-2023-12-21-at-11.54.42-am.png) - Select the field and scroll the page down to find the value section. You will find some values are already there, so to add the new picklist just click the “New” button. ![](../images/2024/09/ClickNewButtonSetStatusOnResponseHandling.webp) - Fill in the value’s API name below in the box and click the save button. **When empty response -> Status Completed (green)** - **When empty response -> Status Failed (red)** - **When empty response -> Status Pending (yellow)** - **When empty response -> Status Cancelled (grey)** ![](../images/2024/09/AddPicklistSetStatusResponseHandling.webp) Finally, we will get the "**When empty response -> Status Completed (green)**", "**When empty response -> Status Failed (red)**", "**When empty response -> Status Pending (yellow)**",  and "**When empty response -> Status Cancelled (grey)**" picklist values on **skyvvasolutions__InbResponse_handling__c** of **skyvvasolutions__Interfaces__c** Object as in the screenshot below. ![](../images/2024/09/AddedPicklistSetStatusResponseHandling.webp) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]However, some organizations will face missing this picklist value in this **skyvvasolutions__InbResponse_handling__c**  field. To avoid the problem please kindly add this value by checking the box of the picklist value for a particular **skyvvasolutions__InbResponse_handling__c**.[/su_box] ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 3. Enhancement Slug: 2-48-33-patch-3-enhancement URL: https://help.skyvva.com/#article/2-48-33-patch-3-enhancement ================================================================================ # 3. Enhancement #### Enhance All Manual Process Functions In the previous version, users could perform the Manual Process function even when the interface was linked with an inactive adapter. In the current version, the Manual Process function is now only available for interfaces with a status of "Deployed", the interface must be linked to an active adapter, and the interface type must be the main interface. #### New 'Retrieve Data' Operation Type: Outbound Processing in 'AUTO Mode', Handles invokeCallout Without Records, Supports Manual & Scheduled Processing We've introduced a new 'Retrieve Data' operation type to handle outbound queries, even when records lack the required data. Previously, missing records caused issues, but this new type avoids errors during 'AUTO' mode processing, even without any records. We've added this operation mode, which is used only when there are no available records from the filter query. In such cases, the system calls invokeCalloutV3 in 'AUTO' mode. It supports both manual and scheduled processing. #### Separate Adapter Status and Inbound Consumer File of New Agent In the previous version, the Agent Inbound Consumer file would trigger and become active, and its active status would be stored in the Adapter Status field, indicating that a Consumer File was being utilized. However, in the current version, we have created a new Adapter property called Consumer Status. This Consumer Status field allows the status to be explicitly recorded as either 'stop' or 'start', providing more granular visibility and control over the Consumer File's state. #### Removal of Extraneous Whitespace in some Filter Fields on Message We have improved the search message function to remove unwanted whitespace from the following fields: - Message Name - Business External ID - System External ID - Transfer ID - Transaction ID - Basket Name #### Enhanced Message Status Handling for Empty Responses We have enhanced our response handling to set the status when there is an empty response. The available statuses are as follows: - When empty response -> Status Completed (green) - When empty response -> Status Failed (red) - When empty response -> Status Pending (yellow) - When empty response -> Status Cancelled (grey) You can set the message status in the Response Handling field of the inbound interface using these four picklist values while managing empty responses. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 4. Bug Fixed Slug: 2-48-33-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-48-33-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Fixed Update skyvvasolutions__BulkReprocessScheduledJobId__c Field Issue on Interface Records Previously, the scheduler would update the 'skyvvasolutions__BulkReprocessScheduledJobId__c' field on the interface record with the Schedule Job Id. This field was used to store the job ID for the scheduler. However, this was caused by users auto-modifying the interface record. The field was used in an earlier version of our bulk feature but is no longer needed in the current version, as we now store the job ID directly on the skyvvasolutions__IScheduler_Setting__c object instead. This issue has been resolved, and the interface records are no longer updated with the Schedule Job ID. #### Resolved Error: 'Too Many Query Rows (50001)' on Bulk Control Board There is an issue when accessing the Bulk Control Board. A Message Error Alert appears with the text "skyvvasolutions: Too many query rows: 50001". This error occurs due to the large number of baskets being queried. For example, the Bulk Control Board queries 50,000+ Baskets and History Baskets. To resolve this, we have set a limit of 10,000+ History Baskets to display on the screen. #### Fixed Duplicate Sequence in Mapping Records We encountered duplicate sequences in the mapping records, which caused the payload to be generated incorrectly. This issue has been resolved by generating the numbers in order, ensuring that duplicate numbers are no longer generated. #### Fixed Check Adatper Status Before Creating the Message of InvokeCalloutV3() Processing In the previous version, the InvokeCalloutV3() function did not check the adapter status while creating the message. However, in the adapter, it would follow the status rules. If the status was not active, we would not have created the message before calling InvokeCalloutV3(). This issue has been fixed, and we have now provided validation to create the message based on the status of the adapter. #### Fixed Issue related to “Delete child not present in the payload” While Using Workflow We previously encountered an issue where the deletion of child records was affecting parent records that were updated through different target interfaces in the workflow. For example, if you had defined an interface called 'AccountIn' with the 'Ichiain Contact (Delete child not in the payload)' option, and then defined another workflow target called 'AccountParentIn', any contacts associated with accounts that were updated through the 'AccountParentIn' interface would be incorrectly deleted. This issue has been resolved by ensuring that the child records are not deleted if the interface does not have the 'Delete child in the payload' option set. #### Resolving Scheduler Display Issues on the Agent Control Board In the previous version, we encountered an issue where the Salesforce agent's next-run scheduler would fail, and the scheduler records did not display on the scheduler tab of the agent control board. This issue has now been fixed. The scheduler records and their associated comments are now correctly displayed on the scheduler tab, with any issues or errors marked in red. #### Issue Fixed - Saving Name Edits on Restore Interface Screen We previously encountered an issue where users would receive an error message when attempting to save edits made to the name field on the Restore Interface screen. The error message stated: 'TypeError: Action failed: skywvasolutions:ImportSKYVVASobjectsScriptScontroller$handleSaveEdition mapping[j] is undefined]. This issue has been resolved. #### Fix for IStructure Deletion When Updating Query Old Design Outbound Interface There was an issue where, upon updating the query of the old design outbound interface, the old IStructure created by the Agent would be deleted immediately. This issue has now been fixed, preventing the deletion of the Agent's IStructure. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 1. Installation Link Slug: 2-48-34-patch-1-installation-link URL: https://help.skyvva.com/#article/2-48-34-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.48.34 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TuCO](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TuCO) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TuCO](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003TuCO) Release Date: 16-October-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Spring ’21 V2.48 Title: 2. Bug Fixed Slug: 2-48-34-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-48-34-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Fixed Issue: Apex CPU Limit Exceeded When Saving Multiple Mapping Records There was an issue where saving multiple mapping records, such as reference fields, in the mapping tool would result in an "APEX CPU time limit exceeded" error. This issue has now been resolved. #### Fixed Issue Did Not Get Field Map on the Mapping tool We encountered an issue when creating message types with the same name and sObject type but at different levels. This caused the mapping display to not show the child-level fields for one of them. This issue has now been fixed. #### Resolving DML Row Limit Errors in MessageDeletionBatch Apex Users set the DoMaintenance scheduler to delete messages. There is an issue with the MessageDeletionBatch batch Apex, which raises the error 'Too many DML rows: 10001' when deleting parent and child messages in batches of 200. If the 200 records are all root messages, it queries their child messages again, potentially exceeding the DML row limit of 10,000 records. This issue has been fixed by preventing the unnecessary query for child messages. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-3-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-3-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.3 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fngI](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fngI) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fngI](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fngI)
Release Date: 18-October-2024
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-25-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-25-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.25 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048Qpd](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048Qpd) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048Qpd](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048Qpd) Release Date: 18-October-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Enhancement Slug: 2-50-25-patch-2-enhancement URL: https://help.skyvva.com/#article/2-50-25-patch-2-enhancement ================================================================================ # 2. Enhancement #### Enhancing Various Functions to Support External and Hybrid Mapping in the Mapping Tool In the previous version, we did not have features such as 'Define Filter', 'Select Field', and 'Define SOQL Statement' for External and Hybrid Mapping. Now, we have enhanced these features to provide support. #### Enhanced the Mapping Tool to Make the UI More User-Friendly We have enhanced the mapping tool to make the UI more user-friendly:  - Add two more columns called 'Key' and 'Option' to the data mapping. The 'Key' column displays a key icon when the record is an external ID or the 'Ext Id' flag is checked. - The 'Option' column displays the filter, formula, selected field, and SOQL icons when the record has a defined filter, formula, selected field, and SOQL statement. - Added four buttons to the data mapping: 'Open Formula,' 'Define Filter,' 'Select Field,' and 'Define SOQL Statement. 'Open Formula' opens the formula screen without needing to click on the row. - Define Filter' adds conditions or filters data to select values based on specific criteria. - ‘Select Field' we can select fields from the parent or the own node. - ‘Define SOQL Statement' is used to query field values from the database into message data. - Formula Screen: Remove some combo boxes, including Source Tree, Target Tree, Target Fields, sObject Tree, and sObject Fields. Split this screen into three sections: Source Tree, Expression, and Filter Fields (inboundv3). The ‘Source Tree’ section displays source tree nodes. - The ‘Expression’ section is a combination of values, variables, operators, and functions that, when evaluated, produce another value. - The ‘Filter’ section shows the filter name and source path. - Define Filter Screen: This screen has three sections: Source Tree, Conditions, and Preview Results. - Inbound V3 Mapping: Remove the set context function and allow users to perform mapping without validation. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Bug Fixed Slug: 2-50-25-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-50-25-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Fixed Various Issues with Copy Node Function - There was an issue during outbound processing when copying nodes with the same mapping levels to generate a JSON payload. The JSON data levels were incorrectly generated as parent and child records instead of sibling records. This issue has now been resolved. - When you use the function to copy a node the field of value is generated incorrectly and gets a null value while having an array of records. #### Fixed Issue Did not Get field map on mapping tool We encountered an issue when creating message types with the same name and sObject type but at different levels. This caused the mapping display to not show the child-level fields for one of them. This issue has now been fixed. #### Fixed Various Issues Ilog2 - If Ilog2 has more than 50,000 records, you will receive the alert error message: 'Too many query rows: 50001'. We have now fixed this by limiting the display to only 50,000 records. - Add pagination to display Ilog2 records, with ten records per page. - Implemented batch Apex to delete Ilog2 records when they exceed three thousand records. #### Resolving DML Row Limit Errors in MessageDeletionBatch Apex Users set the DoMaintenance scheduler to delete messages. There is an issue with the MessageDeletionBatch batch Apex, which raises the error 'Too many DML rows: 10001' when deleting parent and child messages in batches of 200. If the 200 records are all root messages, it queries their child messages again, potentially exceeding the DML row limit of 10,000 records. This issue has been fixed by preventing the unnecessary query for child messages. #### Resolving Count and Order By Conflicts in Outbound Processing We use the 'Count' logic before executing the outbound processing, which results in the error message: 'Count() and Order by may not be used together.' because you added a WHERE clause with ORDER BY in the filter field of the sObject. To avoid this error, you must use a query filter field on the Interface sObject to add your WHERE condition in the previous version. However, this issue was fixed in this version by applying ORDER BY after executing the query. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Enhancement Slug: 2-51-3-patch-2-enhancement URL: https://help.skyvva.com/#article/2-51-3-patch-2-enhancement ================================================================================ # 2. Enhancement ## Non-Opening Firewall will always use Pull Processing Mode We would like to inform you that the New File Agent Adapter will automatically use Pull Processing Mode on a Non-Opening Firewall. In this mode, we send a notification with message IDs to the agent via an HTTP request or event. The agent then pulls the data from Salesforce for outbound integration. This approach works for most use cases, including preventing Salesforce limitations. However, since the agent processes tasks asynchronously, we support pulling data in Non-Opening Firewall mode. ## Enhancing Various Functions to Support External and Hybrid Mapping in the Mapping Tool In the previous version, we did not have features such as 'Define Filter', 'Select Field', and 'Define SOQL Statement' for External and Hybrid Mapping. Now, we have enhanced these features to provide support. ## Enhanced the Mapping Tool to Make the UI More User-Friendly: We have enhanced the mapping tool to make the UI more user-friendly: - Add two more columns called **'Key'** and **'Option'** to the data mapping. - The **'Key'** column displays a key icon when the record is an external ID or the **'Ext Id'** flag is checked. - The **'Option'** column displays filter, formula, selected field, and SOQL icons when the record has a defined filter, formula, selected field, and SOQL statement. - Added four buttons to the data mapping: **'Open Formula'**, **'Define Filter'**, **'Select Field'**, and **'Define SOQL Statement'**. - **'Open Formula'** opens the formula screen without needing to click on the row. - **'Define Filter'** adds conditions or filters data to select values based on specific criteria. - **'Select Field'** allows selecting fields from the parent or the current node. - **'Define SOQL Statement'** is used to query field values from the database into message data. - **Formula Screen**:Remove some combo boxes, including Source Tree, Target Tree, Target Fields, sObject Tree, and sObject Fields. Split this screen into three sections: **Source Tree**, **Expression**, and **Filter Fields (Inbound V3)**. - The **'Source Tree'** section displays source tree nodes. - The **'Expression'** section is a combination of values, variables, operators, and functions that produce another value when evaluated. - The **'Filter'** section shows the filter name and source path. - **Define Filter Screen**:This screen has three sections: **Source Tree**, **Conditions**, and **Preview Results**. - **Inbound V3 Mapping**: Remove the set context function and allow users to perform mapping without validation. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Bug Fixed Slug: 2-51-3-3-bug-fixed URL: https://help.skyvva.com/#article/2-51-3-3-bug-fixed ================================================================================ # 3. Bug Fixed ## Fixed Bug on Rebuild Cache Function When you click to rebuild the cache, an issue occurs: the caches appear briefly and then disappear. This issue has been solved by deleting the old cache and recreating it to ensure that the cache is clean and functions properly. ## Resolving Count and Order By Conflicts in Outbound Processing We use the 'Count' logic before executing the outbound processing, which results in the error message: 'Count() and Order by may not be used together.' because you added a WHERE clause with ORDER BY in the filter field of the sObject. To avoid this error, you must use a query filter field on the Interface sObject to add your WHERE condition in the previous version. However, this issue was fixed in this version by applying ORDER BY after executing the query. ## Fixed Issues with Multi-Select Interface for Manual Processes We encountered a problem while performing a manual process on the interface list under Integration. When selecting multiple interfaces with the same Interface Direct and clicking this button, an error message appears: 'You have uncommitted work pending. Please commit or rollback before proceeding.’ This issue has been resolved. ## Resolving DML Row Limit Errors in MessageDeletionBatch Apex Users set the DoMaintenance scheduler to delete messages. There is an issue with the MessageDeletionBatch batch Apex, which raises the error 'Too many DML rows: 10001' when deleting parent and child messages in batches of 200. If the 200 records are all root messages, it queries their child messages again, potentially exceeding the DML row limit of 10,000 records. This issue has been fixed by preventing unnecessary queries about child messages. ## Fixed Duplicate Sequence in Mapping Records We encountered duplicate sequences in the mapping records, which caused the payload to be generated incorrectly. This issue has been resolved by generating the numbers in order, ensuring that duplicate numbers are no longer generated. ## Fixed Bug on Rebuild Cache Function When you click to rebuild the cache, an issue occurs: the caches appear briefly and then disappear. This issue has been by deleting the old cache and recreating it to ensure that the cache is clean and functions work properly. ## Fixed Various Issues with Copy Node Function - There was an issue during outbound processing when copying nodes with the same mapping levels to generate a JSON payload. The JSON data levels were incorrectly generated as parent and child records instead of sibling records. This issue has now been resolved. - When you use the function to copy a node the field of value is generated incorrectly and gets a null value while having an array of records. ## Fixed Issue Did not Get field map on mapping tool We encountered an issue when creating message types with the same name and sObject type but at different levels. This caused the mapping display to not show the child-level fields for one of them. This issue has now been fixed. ## Resolved Issue: License Key Renewal Buttons There was an issue when clicking the ‘Renew Key’ and ‘Renew Key for All Users’ buttons on the License page; nothing happened to allow input of the license key. This issue has now been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-26-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-26-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.26 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048S2G](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048S2G) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048S2G](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048S2G) Release Date: 09-November-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Info Slug: 2-50-26-patch-2-info URL: https://help.skyvva.com/#article/2-50-26-patch-2-info ================================================================================ # 2. Info #### Update on Message Database Table Template Naming Convention We would like to inform you that we have changed the generated Message Database Table Template Name from Database_tbl_(Table’s Name) to DB_Table_(Database Operations)_(Table’s Name). We changed it so that one Repo can be added with multiple messages and different Database Operations. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Enhancement Slug: 2-50-26-patch-3-enhancement URL: https://help.skyvva.com/#article/2-50-26-patch-3-enhancement ================================================================================ # 3. Enhancement #### Reprocess a Single Message In the previous version, you were unable to reprocess a single message; you could only reprocess the root message, which triggered the reprocessing of all messages within that root message. Now, we have enhanced the system to allow reprocessing of individual messages. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 4. Bug Fixed Slug: 2-50-26-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-50-26-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed #### Resolution of JSON Payload Generation Issue When Copying Nodes with the Same Name There was an issue where the JSON payload was generated incorrectly when copying a node with the same name in the mapping tool. This resulted in duplicate object payloads in the JSON. This issue has now been fixed by ensuring that only an array object covering different records is generated. #### Fixed issue Backup and Restore IMapping Records The issue concerns the incorrect Full_Source_Path__c, Full_Target_Path__c, and Source_Path__c fields of Source and Target after restoring a backup. This occurs when a user backs up only the IMapping record and restores it to another Org. This issue has now been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-4-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-4-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.4 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003foaw](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003foaw) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003foaw](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003foaw)
Release Date: 20-November-2024
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Info Slug: 2-51-4-patch-2-info URL: https://help.skyvva.com/#article/2-51-4-patch-2-info ================================================================================ # 2. Info ## Update on Message Database Table Template Naming Convention We would like to inform you that we have changed the generated Message Database Table Template Name from Database_tbl_(Table’s Name) to DB_Table_(Database Operations)_(Table’s Name). We changed it so that one Repo can be added with multiple messages and different Database Operations. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Bug Fixed Slug: 2-51-4-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-51-4-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed ## Fixed: Browser Crashes Due to Large History Baskets on the Batch Control Board There is a problem with the History Baskets having many records on the Batch Control Board, causing the browser tab to crash when it takes a long time to load. This issue has been fixed by adding pagination. ## Resolution of JSON Payload Generation Issue When Copying Nodes with the Same Name There was an issue where the JSON payload was generated incorrectly when copying a node with the same name in the mapping tool. This resulted in duplicate object payloads in the JSON. This issue has now been fixed by ensuring that only an array object covering different records is generated. ## Reprocess a Single Message In the previous version, you could not reprocess a single message; you could only reprocess the root message, which triggered the reprocessing of all messages within that root message. Now, we have enhanced the system to allow reprocessing of individual messages. ## Fixed issue Backup and Restore IMapping Records The issue concerns the incorrect Full_Source_Path__c, Full_Target_Path__c, and Source_Path__c fields of Source and Target after restoring a backup. This occurs when a user backs up only the IMapping record and restores it to another Org. This issue has now been resolved. ## Fixed Issue on Message status remains 'New' during Request and Response processing in synchronous mode There is an issue with Request and Response processing in synchronous mode. While all message requests and responses are marked as 'Completed', the root Agent Message remains in a 'new' status. This issue has been fixed, and the Agent Root Message has been updated correctly. ## Fixed Issue on Import SAP Metadata Function When you use the 'Import SAP Metadata' function from SAP ERP, the message type field entry is not generated. This issue has now been fixed. ## Fixed Some Issues for Alert Feature - There is an issue with the Agent Scheduler not running on the Agent side. The alert will trigger and update the comment on the Agent Scheduler on the Salesforce side. It will send the agent scheduler cache to the cache table. In this case, we have been fixed by not sending the cache to the Agent anymore to avoid unexpected errors. - Fixed an issue with the agent inbound scheduler. Previously, the logic was to create InterfaceControlRunTime only after the scheduler had executed at least once. To avoid the problem where InterfaceControlRunTime is not created if the scheduler crashes on its first run and never triggers the alert feature, we have changed the process to create InterfaceControlRunTime when starting the scheduler. - When you stop the Agent scheduler on the Salesforce side, it updates the comment to 'Stop by Admin' and triggers an alert feature. We have fixed this by preventing the alert from being triggered when the scheduler is  'Stop by Admin'. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-5-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-5-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.5 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fpdS](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fpdS) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fpdS](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fpdS)
Release Date: 10-December-2024
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-27-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-27-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.27 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048TKA](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048TKA) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048TKA](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048TKA) Release Date: 11-December-2024 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Enhancement Slug: 2-51-5-patch-2-enhancement URL: https://help.skyvva.com/#article/2-51-5-patch-2-enhancement ================================================================================ # 2. Enhancement ## Enhancing Interface Group Stop Validation for EO Group We are experiencing an issue with EO Group validation, which is not processing one of the interfaces without an adapter. As a result, none of the interfaces will be processed. We have now enhanced the EO Group to stop validation and resume normal interface processing. ## Enhancing the V4/integrate API to Support CSV Payload Format with External and Hybrid Mapping In the previous version, we did not support the CSV payload format with External and Hybrid Mapping for the V4/integrate API. This limitation made it challenging for users who relied on CSV files for data integration. Now, we have enhanced our V4/integrate API to support External and Hybrid Mapping with the CSV payload format, providing greater flexibility and ease of integration for our users. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Bug Fixed Slug: 2-51-5-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-51-5-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed ## Fixing Search Function Issues in Database Message Template Creation We encountered an issue when using the search function to ‘enter Table/View/Store Procedure names’ while creating the Database Message Template with Hierarchical Business Message Type. The search was not displaying all tables from the database because it cached the previous search results. This issue has been resolved by fetching all Table/View/Store Procedures. ## Fixed Repeated All Bulk Baskets to Processing There was an issue when setting the Processing Package Size and the Bulk Basket for multi-batch processing in an Apex job. The system did not move the Bulk batches to the Bulk Basket History in the ‘Processed Baskets’ section. Instead, it reloaded the baskets to ‘New Baskets’ for reprocessing. This issue has now been fixed. ## Automatically Append Sub-Reference Field When Mapping Reference Field to Inbound Target Field There was an issue where the map reference inbound target field automatically appended the sub-reference field to the display. This issue has been fixed by preventing the automatic append. ## Fixed Error in Skyvva Bulk Processing: 'First error: Attempt to de-reference a null object' There was an issue when processing with Custom Group and Interface Group Scheduler (BulkProcessPerInterfaceGroup) for Skyvva Bulk processing, resulting in the error message: 'First error: Attempt to de-reference a null object.' This occurred due to an incorrect calculation of the Processing Package Size per batch of the Apex job to be executed. The issue has been fixed by correctly calculating the package size to be processed. ## Fixed Filter and Filter Query to Support Link Break There was an issue when you added your query on Filter or Query Filter with a line break. This caused an error when sending records outside Salesforce and raised an issue in the Ilog2: > BatchManualProcessInterfaceGroup.executeAsParallel > interfaceId: a0gGA00000IPrQSYA1 > Exception: unexpected token: '' > Trace: (skyvvasolutions) This issue has been fixed. Now, you can use Filter and Filter Query fields with line breaks. ## Fixed A Few Issues Regarding the Import of the BAPI Function Module - There was an issue when your SAP BAPI payload contained a dot, which caused an error during the skyvva message type generation. This issue has been fixed by now supporting dot-generated message types. - We have also fixed multi-nested message types with more than two levels. ## Fixed Apply Button on Filter Section of History Basket We encountered a problem when you clicked the 'Apply' button in the Filter section of the History Basket Tab on the Batch Control Board to view the History Basket record. The error message pop-up displayed was: “TypeError: Action failed: skyvvasolutions:IBatchBasketHistoryListview$controller$doApplyfilterBasketHis2 [cmp.find(...) is undefined]”. This issue has now been fixed. ## Fixed Missing Generated Child Message Type Field Entry for Child Business Message Type There was an issue importing message types from the database template with the hierarchy Business Message Type. The child Business Message Type was missing the generated message field entry. This issue has now been fixed. ## Fix Screen Crash When Clicking 'Open Formula' Button on Mapping Tool We encountered an issue when you have many fields and select one to apply a formula. After clicking 'Open Formula,' the mapping screen would crash. This issue has now been fixed. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Bug Fixed Slug: 2-50-27-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-50-27-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Automatically Append Sub-Reference Field When Mapping Reference Field to Inbound Target Field There was an issue where the map reference inbound target field automatically appended the sub-reference field to the display. This issue has been fixed by preventing the automatic append. #### Fix Screen Crash When Clicking 'Open Formula' Button on Mapping Tool We encountered an issue when you have many fields and select one to apply a formula. After clicking 'Open Formula,' the mapping screen would crash. This issue has now been fixed. #### Fixed Restore Wrong Value on Source Field of IMapping Record We encountered a problem while restoring the IMapping record. It retrieved the old source value into the Source field, which could cause issues during integration. This issue has now been resolved, and the correct value has been restored as expected. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-6-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-6-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.6 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fqOj](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fqOj) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fqOj](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fqOj)
Release Date: 17-Januray-2025
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-28-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-28-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.28 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048VL9](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048VL9) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048VL9](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048VL9) Release Date: 17-Januray-2025 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Bug Fixed Slug: 2-51-6-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-51-6-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed ## Fixed the 'Select Field' function for Node to support systems that call the IntegrateWithIMessage In the previous version, using the 'Select Field' function for Node did not support payloads as IMessage. This issue has now been resolved for both Raw Payload and IMessage Payload. Additionally, we have disabled the display of parent fields that are selected, so they no longer appear in child message data. ## Fixed Not Able to Callout with V2 Interface API Version While Using Agent xxx Adapter In the previous version, using the Interface API Version would raise a 'No implementation for the outbound interface with name = xxx and adapter type = Agent xxx' issue. This has now been fixed by the Agent xxx adapter, which enables v3 outbound processing support with the V2 Interface API Version. ## Agent Rest Adapter Does Not Return Salesforce Id Into the Response There was an issue with setting the 'Return Salesforce Id in the response' option under the Salesforce Id Handling property adapter of the Agent Rest Adapter. It did not return the Salesforce ID in the message response. This issue has now been resolved, and it correctly returns the ID in the message response. ## Fixed Issue Delete Message with Bulk Delete When you set 'Enable Bulk Delete?' and click 'Delete All' with more than 500 records, the deletion did not occur because Skyvva uses a Lightning component/LWC to get the session Id via UserInfo.getSessionId(). The Lightning component/LWC did not work, raising a Batch Apex job issue: 'First error: Refresh token has been deleted.' This issue has now been fixed. ## Removed Default Skyvva Namespace on XML Root Tag Namespace for Outbound Adapter In the previous version, the namespace was generated as the Skyvva default namespace when the user did not set the namespace for the 'XML Root Tag Namespace' outbound adapter. Now, we have removed the Skyvva default namespace. If you do not set it, the 'XML Root Tag Namespace' will remain empty. ## Fixed Reprocess Messages While Setting the ‘Delete Completed but Keep Other Messages’ Option There was an issue when reprocessing 500 - 5000 failed messages using the 'Delete Completed but Keep Other Messages' mode. The total batches differed from the batches processed. For example, if the total batches were 50, the batches processed might be 52. This meant that not all records were reprocessed, leaving some records in message monitoring. This issue has now been resolved, and all messages are reprocessed and deleted as expected when 'Delete Completed Messages' is checked. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Info Slug: 2-51-6-patch-2-info URL: https://help.skyvva.com/#article/2-51-6-patch-2-info ================================================================================ # 2. Info ## Added Two fields on the Agent Control Board We have added two fields to the Connection Destination step on the Configure tab of the Agent Control Board: - Agent Version - Agent Instance Id ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Bug Fixed Slug: 2-50-28-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-50-28-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Fixed Not Able to Callout with V2 Interface API Version While Using Agent xxx Adapter In the previous version, using the Interface API Version would raise a 'No implementation for the outbound interface with name = xxx and adapter type = Agent xxx' issue. This has now been fixed by the Agent xxx adapter, which enables v3 outbound processing support with the V2 Interface API Version. #### Fixed Issue Delete Message with Bulk Delete When you set 'Enable Bulk Delete?' and click 'Delete All' with more than 500 records, the deletion did not occur because Skyvva uses a Lightning component/LWC to get the session Id via UserInfo.getSessionId(). The Lightning component/LWC did not work, raising a Batch Apex job issue: 'First error: Refresh token has been deleted.' This issue has now been fixed. #### Removed Default Skyvva Namespace on XML Root Tag Namespace for Outbound Adapter In the previous version, the namespace was generated as the Skyvva default namespace when the user did not set the namespace for the 'XML Root Tag Namespace' outbound adapter. Now, we have removed the Skyvva default namespace. If you do not set it, the 'XML Root Tag Namespace' will remain empty. #### Fixed Reprocess Messages While Setting the ‘Delete Completed but Keep Other Messages’ Option There was an issue when reprocessing 500 - 5000 failed messages using the 'Delete Completed but Keep Other Messages' mode. The total batches differed from the batches processed. For example, if the total batches were 50, the batches processed might be 52. This meant that not all records were reprocessed, leaving some records in message monitoring. This issue has now been resolved, and all messages are reprocessed and deleted as expected when 'Delete Completed Messages' is checked. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-29-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-29-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.29 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048XBm](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048XBm) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048XBm](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048XBm) Release Date: 31-Januray-2025 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Bug Fixed Slug: 2-50-29-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-50-29-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Fixed Preventing Automatic Creation of IStructures from Filter Field Queries in Cases of Manually Created Old IStructures Using Database Adapter In the previous version, during outbound processing, users were able to add a Salesforce query to the Filter field. This action resulted in the generation of the query field and IStructure in the outbound interface due to the manually created column field in the table database on IStructure Interface. However, if confusion arose during the mapping of this field for agent database processing, it led to errors indicating invalid columns on the table during post-processing. To address this issue, a prevention mechanism has been implemented to prevent the creation of IStructure in the interface from the query for the outbound interface of the Agent Database. #### Fixed Duplicate Id Issue in List: xxxxxxxxxxxxx in Mapping Tool When Saving Mapping We are currently encountering an issue with the existing mapping for outbound processing. The user is mapping a source node to a multi-target node. After remapping and saving the configuration, an error occurs: 'Error while saving mapping 194 >> System.ListException: Duplicate Id in List: xxxxxxxxxxxx'. This problem arose as we attempted to create a sub-interface that was unnecessary. Fortunately, this issue has now been resolved. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-7-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-7-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.7 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fsoT](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fsoT) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fsoT](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fsoT)
Release Date: 09-May-2025
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Info Slug: 2-51-7-patch-2-info URL: https://help.skyvva.com/#article/2-51-7-patch-2-info ================================================================================ # 2. Info ## Rename Label Name From SAP CPI to SAP BTP Integration Suite Type of Adapter We would like to inform you that we have renamed the label from 'SAP CPI' to 'SAP BTP Integration Suite ', which is the type of adapter. ## Rename the 'CDC Event' Picklist Label to 'Salesforce CDC Event' of the ‘Event Type’ Field In the previous version, you would have seen the CDC Event picklist label on the Event Type field. We have now updated it from 'CDC Event' to 'Salesforce CDC Event' on the Event Type field. ## Remove the 'Notification For Operation’ while 'Platform Event' is Selected on Event Type In this version, we will remove 'Notification For Operation' when 'Platform Event' is selected on Event Type. ## Removed Some Type and Added New Type of Connection Destination We would like to inform you that we have removed the following types of Connection Destinations: - Agent File - Agent Database - Agent Rest - Agent Soap - Agent Kafka - Agent Pulsar - Agent ActiveMQ - Agent JMS - Agent RabbitMQ Instead of removing these, we have introduced the 'Agent' Type. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Warning Slug: 2-51-7-patch-3-warning URL: https://help.skyvva.com/#article/2-51-7-patch-3-warning ================================================================================ # 3. Warning ## Adding a picklist value while upgrading to the new version In general, the picklist value from the package will not be added automatically when you upgrade the package. Therefore, you must add them manually after the upgrade. Note that this problem will not arise for a new installation. ## Added few picklists below to the “skyvvasolutions__RecordType__c” field of “skyvvasolutions__InterfaceControlRuntime__c” object: - **SchedulerSubmittedTime** - **Child Relationship Name** **Follow the steps below to create the picklist: ** - You can click “Setup” at the top of the interface page. - In the “Quick Find” box, type the word “Object Manager” or click on the Object Manager tab - Click on Object Manager, then scroll down the page to find the **“skyvvasolutions__InterfaceControlRuntime__c**” object, or you can search for it in the “Quick Find” box, then click it. ![](../images/2024/03/Screenshot-2024-03-25-at-5.06.11-pm.png) - On the left side of the page, you will see the panel select the “Fields & Relationships” field. - You can search the “Record Type” (API Name: skyvvasolutions__RecordType__c) field label in the “Quick Find” box or scroll down the page to find it. ![](../images/2024/03/Screenshot-2024-03-25-at-5.55.04-pm.png) - Fill in the value’s API name below in the box and click the save button. - **SchedulerSubmittedTime** - **Child Relationship Name** ![](../images/2025/05/2025-05-12_23-32-15.png) Finally, we will get the "SchedulerSubmittedTime" and "Child Relationship Name" **picklist values on skyvvasolutions__RecordType__c** of **skyvvasolutions__InterfaceControlRuntime__c** Object as in the screenshot below. ![](../images/2025/05/2025-05-12_23-36-38.png) **Note:** However, some organizations will face missing this picklist value in this skyvvasolutions__RecordType__c  field. To avoid the problem, please kindly add this value by checking the box of the picklist value for a particular skyvvasolutions__RecordType__c. #### If the Agent Service is running and you receive an error message while trying to ping the Agent Connection, please follow the instructions below: In this Skyvva version, you may encounter an error with some Agent versions (3.06.xx) because Skyvva attempts to call an API that is no longer included in the New Agent. You will see the error message: 'System.HttpResponse[Status=Not Found, StatusCode=404]' in the screenshot below: ![](../images/2025/05/2025-07-25_13-27-46.png) As a workaround, simply leave the Agent Version blank to call the old API that is still present in the New Agent. ![](../images/2025/05/2025-07-25_13-30-44.png) After removing the Agent Version value, click the **Continue** button. ![](../images/2025/05/2025-07-25_13-36-26.png) Finally, you can successfully ping the Agent​ Connection. ![](../images/2025/05/2025-07-25_13-47-55.png) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 4. Enhancements Slug: 2-51-7-patch-4-enhancements URL: https://help.skyvva.com/#article/2-51-7-patch-4-enhancements ================================================================================ # 4. Enhancements ## Enhanced Capability to Create IStructure from Database within the Interface In the previous version, you could not retrieve columns to create an IStructure for the old V2 interface design for flat mapping. We have now enhanced this functionality by adding a new 'Import Database IStructure' button on the IStructure related to the Interface sObject. This allows you to retrieve columns to create an IStructure for the old interface v2 design for mapping purposes. You no longer need to create it manually or upload a file; you can directly obtain the IStructure from the database. ## Automated Connection URI Generation in Enhanced Database Adapter Configuration In the previous version, all adapter properties for the database adapter, such as Driver, Hostname, Port, Database Name, and Connection URI, had to be manually input, resulting in duplicate values. To enhance efficiency, we will automate the rendering of the Connection URI and introduce new Connection Properties to handle extra parameters for the connection URI. Additionally, we will include a Schema Name property in the adapter to specify your schema. ## Added a Warning Alert on Mapping while doing Update and Delete operations on the Agent Database We have added a warning alert while the user performs updates and deletes operations in the V3 and V2 interface designs. If a user did not specify a WHERE clause for V3 or an external key for V2 when updating or deleting all records in external databases such as SQL, MySQL, MS Access, Oracle, or Postgres. In such instances, it is very important to give a warning to alert the user, making sure they are fully aware that all records will be updated or deleted. - For Update operation warning: It seems that you have not specified a where condition for your update operation. Without a where condition, all records in a table will be updated with the same data. Do you really want to update all records with the same data? - For Delete operation warning: “It seems that you have not specified a where condition for your delete operation. Without a where condition, all records in a table will be deleted. Do you really want to delete all records from the table?” ## Implementing Query Data from External Database for Inbound Processing and Query Editor via Inbound Agent Database In the previous version, you were unable to use the Query Editor to query records from the external database for inbound processing. In this version, you can now perform manual inbound processing by selecting 'Manually select the external database record using the Query Editor.' Additionally, you can use the Query Editor for the Inbound Agent Database by selecting 'Query data from the external database' ## Add New ‘Database CDC Event’ to Capture Data Change to Do Inbound Processing Using Agent Database Adapter We have added a new picklist value 'Database CDC Event' to the 'Event Type' field on the Salesforce Interface Screen to capture data changes from the database according to the selected 'Notification For Operation' with the 'Database CDC Event' Event Type. By choosing 'Create' under the 'Notification For Operation' for the Database CDC Event Event Type, only newly created data will be consumed for integration with this interface. ## Add ‘Notification For Operation’ for ‘Salesforce CDC Event’ Now, with your 'Salesforce CDC Event', you can filter notifications to receive operations by selecting Create, Delete, Update, or Undelete under 'Notification For Operation'. By choosing 'Update' under the 'Notification For Operation' for the 'Salesforce CDC Event' Event Type, only newly updated data will be utilized for integration with this interface. ## Added new ISINTEGER(text) Formula We have introduced a new formula called 'ISINTEGER(text).' This formula verifies if a given string can be converted into a valid integer. If the conversion is successful, it returns true; otherwise, it returns false. For example, ISINTEGER('12') returns true, while ISINTEGER('ABC') returns false. ## Enhanced Outbound Manual Processing with “Manually select the sObject using the Query Builder?” Option Currently, when you use manual process with 'Manually select the sObject using the Query Builder?' option for outbound processing, any 'WHERE' conditions on the 'Filter' and 'Filter Query' will not work if you manually select records outside those conditions. We have now enhanced the selection of records to disregard where the conditions are placed in the 'Filter' and 'Filter Query' sections ## Enhance Salesforce to Republish Event while Reprocess Event Message Previously, Skyvva was unable to reprocess event messages. We have now enhanced the system's capability to process event messages. Skyvva will republish the event to reprocess the message. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 5. Bug Fixed Slug: 2-51-7-patch-5-bug-fixed URL: https://help.skyvva.com/#article/2-51-7-patch-5-bug-fixed ================================================================================ # 5. Bug Fixed ## Fixed Cache Issue When Deleting Integration and Interface We encountered a pending cache issue after you deleted the integration and interface. This issue has been resolved: when the integration and interface are deleted, all associated caches and child caches are also removed. ## Fixed Restore Wrong Value on Source Field of IMapping Record We encountered a problem while restoring the IMapping record. It retrieved the old source value into the Source field, which could cause issues during integration. This issue has now been resolved, and the correct value has been restored as expected. ## Outbound Scheduler Delayed Several Seconds​ For Next Scheduler We encountered an issue during rescheduling that caused several seconds of delay for the entire Skyvva scheduler. To address this, we have changed from using DateTime.now(), we now store the previous time and the next scheduled time in the InterfaceControlRuntime__c object. By utilizing the ‘SchedulerSubmittedTime'  field rather than DateTime.now(), we aim to prevent delays of several seconds for the next scheduler run. ## Import Database Message Type for Inbound Processing We currently have a database template for outbound database processing. Now, we need to create an inbound message type for the inbound database message template for the V3 processing. This requires us to consider our adapter for a generation. If the outbound adapter is chosen, we will keep the existing database template message type. If an inbound adapter is selected, we will generate two levels of messages: one being the Database Table Template and the other being the table name with the 'Database Table' type. Additionally, we will use an indicator under the name of the adapter to show whether it is inbound or outbound, making it easier for users to identify their adapter. ## Resolution of Error: 'Invalid Decimal' Message in Interface Creation Due to Accidental Space Entry While creating a new interface with bulk mode and input space, an error occurred due to an accidental space entry in the Bulk Package Size field, resulting in the message 'Invalid decimal:'. This issue has been resolved by eliminating the space before creating the interface.  ## Enhance Support Import Database Metadata for Non-Open Firewall In the previous version, the Import Database Metadata feature only supported open firewalls. In the latest update, we have enhanced this functionality to also support non-open firewalls for creating the Database Message Type on the Salesforce side. ## Fixed Preventing Automatic Creation of IStructures from Filter Field Queries in Cases of Manually Created Old IStructures Using Database Adapter In the previous version, during outbound processing, users were able to add a Salesforce query to the Filter field. This action resulted in the generation of the query field and IStructure in the outbound interface due to the manually created column field in the table database on IStructure Interface. However, if confusion arose during the mapping of this field for agent database processing, it led to errors indicating invalid columns on the table during post-processing. To address this issue, a prevention mechanism has been implemented to prevent the creation of IStructure in the interface from the query for the outbound interface of the Agent Database. ## Fixed Duplicate Id Issue in List: xxxxxxxxxxxxx in Mapping Tool, When Saving the Mapping We are currently encountering an issue with the existing mapping for outbound processing. The user is mapping a source node to a multi-target node. After remapping and saving the configuration, an error occurs: 'Error while saving mapping 194 >> System.ListException: Duplicate Id in List: xxxxxxxxxxxx'. This problem arose as we attempted to create an unnecessary sub-interface. Fortunately, this issue has now been resolved. ## Fixed Outbound Processing Issue with “Apex heap size too large: xxxxxxxxxxx” and got Exception: Read timed out We have observed an issue occurring in the Business Message without Agent Message during Outbound Agent Database Processing, manifesting as 'Apex heap size too large: xxxxxxxxxxx' and resulting in the exception 'Read timed out'. This problem arises when querying messages for processing in the Agent Database. If the root message's Agent Message is null, and an attempt is made to fetch the child message's sObject Message using rootMessageId = null, all messages are retrieved for reprocessing. Consequently, this process decelerates gradually, leading to timeout errors and heap size issues. To address this issue, we are implementing a validation check to ensure that the sObject Message ID is utilized in place of the root message when it is absent. ## Fixed Missing Label Name Connection Tab of Connection Destination Configuration We are missing label names for steps four and five in the Agent SAP ERP and Agent SAP S/4HANA Connection Types. Without these labels, you might skip steps four and five and see only 'Agent->' and '->Agent'. We have rectified this by adding 'Agent -> SAP ERP' and 'SAP ERP -> Agent' for SAP ERP, and 'Agent -> SAP S/4HANA' and 'SAP S/4HANA -> Agent' for Agent SAP S/4HANA. ## Fixed Various issues on the Configuration Tab of the Agent Control Board - In the Agent Connection Destination section, we can switch between Username-Password OAuth2 and Client-Credential OAuth2, so the previously saved data remains on the screen. When the user switches the Authentication Type, they must input the new values. However, the cache and agent properties do not delete the username and password after saving values with the OAuth2 Client-Credential Authentication Type. This issue has been resolved by requiring the user to input new data while switching and delete the necessary cache after switching. - When pinging the Agent to Salesforce, the request payload for the ping is missing proxy values such as proxyUse, proxyUsername, proxyPassword, proxyHost, and proxyPort. This issue has been addressed by including these values in the payload while the user is using the New Agent 3.06.01. - Update the mandatory input fields, proxyUsername and proxyPassword, to be optional inputs, and move them below proxyHost and proxyPort. ## Fixed Issue Cache While Outbound Request and Inbound Response Link Together An issue arose during the design of the outbound request interface and the link response interface to the outbound request interface. The Response Interface did not cache to the Agent Cache. This issue has been resolved. While the user is linked with the Ref Field, we will send all cache-related data from the parent and child cache records. ## Fixed A few Issues. Reprocess Message with Max Number Of Retry - There was an issue where the failed message did not reprocess despite the Max Number of Retry setting on the integration. This problem has been resolved by querying 'RootMessage__r.Integration__r.Max_Number_Of_Retry__c' during the ReachMaxRetry check. Now, the messages are processed as expected. - The root message that incorrectly counted retries has been fixed. The Retry Counter no longer needs to be counted in the root message. It will now count business messages on its own. ## Fixed Interface Cache Not Ordered into Agent Cache There was an issue when saving mappings, updating the cache, or rebuilding the cache with the interface hierarchy. The interface cache was unordered, leading to problems. This issue has been resolved. ## Enhanced Salesforce Reprocess Event Message with New Agent 3.06.01 In the previous version, the event message did not support reprocessing. However, in Salesforce, we have enhanced it to include support for the reprocessing feature with New Agent 3.06.01.  ## Fixed Incorrect Warning Message during Manual Processing while the Interface Type is not Main-Interface There is an issue where the interface type is not set to Main-Interface, and a warning message stating 'Interface not found. Id: (xxxxxxxxxxxxxxx). Please make sure your interface is in Deployed mode.' appears, despite the interface already being in Deployed mode. We have now updated the alert warning to 'Interface Id: (xxxxxxxxxxxxxxxx) is not set as the Main Interface'. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: skyvva-2-51-8-patch-1-installation-link URL: https://help.skyvva.com/#article/skyvva-2-51-8-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.8 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fvWy](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fvWy) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fvWy](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003fvWy)
Release Date: 21-July-2025
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Warning Slug: skyvva-2-51-8-patch-3-warning URL: https://help.skyvva.com/#article/skyvva-2-51-8-patch-3-warning ================================================================================ # 3. Warning ## Ensure Halting of All Outbound Schedulers Before Upgrading to New Agent Version 3.06.03 and Skyvva Version 2.51.8 for Non-Open Firewall Mode In light of our enhancements in outbound processing on the Agent side aimed at minimizing event usage, it is crucial to halt all outbound schedulers before upgrading Skyvva (from version 2.51.7 or earlier to 2.51.8 or later) and the Agent Version (from 3.05.7 or earlier to 3.06.03 or later) in non-open firewall mode exclusively. Note: Skyvva Version 2.51.8 or earlier must be used with Agent Version 3.06.03 or later in non-open firewall mode with outbound processing. For Open Firewall Mode, no action is required; simply upgrade it. ## Follow the Instructions below to halt all Outbound Agent Schedulers, Reconfigure the Outbound Agent Scheduler settings, and then start them again - Navigate to the Scheduler Setting in the Agent Control Board and click on 'Stop All Outbound Agent Scheduler ![](../images/2025/07/image-40.png) - After completing the upgrade, you must reset the Agent Scheduler settings before starting the scheduler. If you start it without resetting the Agent scheduler, you will encounter the error shown in the screenshot below. ![](../images/2025/07/clipboard-202507181156-rpf57.png) - Please adjust your Agent Scheduler settings and then click the save button. ![](../images/2025/07/image-41-1.png) - Click the start scheduler icon, then press the 'Yes' button to confirm to start this scheduler. ![](../images/2025/07/image-42.png) - Finally, the AgentProcessPerIntegration scheduler is now running. Please make sure to reconfigure all the outbound schedulers that you intend to run after the upgrade. ![](../images/2025/07/image-43.png) #### In case you did not stop the Agent Outbound Scheduler before the Upgrade If you did not stop the outbound scheduler processing before the upgrade, the Outbound Processing is still using the old method that consumes significant event resources. Errors like 'Agent Response: The Scheduler with id: xxxxxxxxxxxxxxx is not running.' are appearing in the comments of the Outbound Scheduler, but the processing remains functional on the Salesforce side. This indicates that the processing is not running for the Agent side. ![](../images/2025/07/clipboard-202507181156-r17j0.png) Please stop the scheduler that you intend to run processing on the agent side to reduce event consumption. Although you encountered an error, the scheduler will be stopped as shown in the screenshot below: ![](../images/2025/07/image-44-1.png) After stopping the Agent scheduler, please reconfigure the scheduler settings and start it again. Follow these steps (link not available)) to reconfigure the scheduler setting. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 4. Enhancement Slug: skyvva-2-51-8-patch-4-enhancement URL: https://help.skyvva.com/#article/skyvva-2-51-8-patch-4-enhancement ================================================================================ # 4. Enhancement ## Handle Restore Interface without Message Type We have enhanced the restore interface to include the message type. This means that the interface you backed up has the message linked to your interface. If the message type is not created before restoring the interface, it will not import, and you will receive an alert email informing you that this interface cannot be imported without a message type. ## Enhanced to Get the Default Picklist Value on the Operation Type of  Interface We encountered an issue when picklist values were reordered, resulting in the Apex Class being positioned at the top of the operation type on the Interface. We have enhanced this matter by defaulting to the picklist value instead of maintaining the top order. ## Enhancement: Reflecting the Ping Status After Saving the Newly Created Adapter In the previous version, when you created an adapter and pinged it, the ping status icon did not reflect the ping status after saving. We have enhanced it so that the ping status is now updated after saving the newly created adapter. ## Added a function to show and copy the Credentials in Various Screens - Added eye and copy icons to show and copy passwords of the Agent Control Board, the SAP Control Board, and the Microsoft Control Board. - Added eye and copy icons to show and copy passwords in the Adapter Property in Agent Control Board, SAP Control Board, Microsoft Control Board, Google Control Board, Oracle Control Board, and Sage Control Board. - Added eye and copy icons to show and copy the password in Transport Route ## Disable Loading Waiting Screen immediately while starting Consumer without an interface link with the Inbound Adapter of a Non-Open Firewall In this scenario, when the user clicks on the Consumer button, the Agent Inbound File Adapter file does not link to any interface, resulting in a prolonged loading screen. The loading screen should promptly close after displaying the warning alert message: "Start/Stop Consumer: You need to link the adapter with the inbound interface." Consequently, we need to halt the spinner immediately. ## Auto-Generate WHERE-Clause For Database Message Type Template In the previous version, if you wanted to include the message type field entry for the ‘WHERE-clause’ in the Outbound Database Message Type Template, you had to add it manually. We have now enhanced this process by automatically generating it when you create the Database Message Type, with the addition of a new 'Select Field for WHERE-Clause' button.  ## Not Allowed to Edit the Adapter While Agent File Adapter Start Consumer Previously, we encountered issues when attempting to edit the Agent File adapter while the consumer was active. To prevent unexpected errors, editing of the Agent File adapter during consumer startup is now restricted. ## Added ‘Parent Object’ Filter on Cache Monitor of Agent Control Board We have introduced a new filter called 'Parent Object' to facilitate the filtering of the Parent Object from the Cache Record. This filter aims to provide an easier way for the user to filter the cache records associated with this Parent Object. ## Added ‘Job End Time' on the Interface List of the Agent Control Board We have decided to include a new column header titled 'Job End Time' in the interface list of the Agent Control Board. This addition will provide information about the end time of each interface's processing for easier monitoring. ## Redesign the Outbound Interface to Use the Java Quartz Scheduler Instead of the Salesforce Scheduler Because outbound processing consumes a large number of events for Non-Open Firewall, we enhance the transition outbound processing by Manual and Scheduler on the Agent side to reduce event usage on the Salesforce side. This will minimize the number of events published by Salesforce. Now we have redesigned the Agent Outbound Scheduler to use the Java Quartz Scheduler instead of the Salesforce Scheduler. ## Enhanced outbound support with Initial Mode In the previous version, outbound processing did not support the 'Initial Mode,' which refers to a specific configuration that allows the system to perform initial data processing. This mode typically utilizes an Initialization Filter query to execute the first query during processing. We have now enhanced this mode to support both inbound and outbound processing. ## Added Remove Connection for Non-Open Firewall In the previous version, we had removed the connection function exclusively for open firewall connections. Now, we have enhanced it to also remove connections for non-open firewall configurations by enabling the 'Remove Connection' button for non-open firewall mode. Please note that this enhanced support is available only with Agent Version 3.06.04. ## Added a Pop-up to view the full Sync Comment in the Cache Monitor of the Agent Control Board We have introduced a pop-up to view Sync Comment in the Cache Monitor of the Agent Control Board to enable easy viewing of lengthy sync comments. By clicking on the text comment, a pop-up screen will display, providing a convenient way to access and read the full sync comment. ## Added New Setup on Agent Control Board We have added a Setup Tab to the Agent Control Board to streamline user setup, offering the following features: - **Log Configuration** is an old feature. Nothing has changed, just move to reorganize the screen. - **User Management: **This function empowers users to create, update, and delete agent users, serving as an essential aspect of user management. - **Register OAuth2 Client:** This function facilitates the registration of an OAuth2 client, enabling Spring Security's OAuth2 to generate a client ID, client secret, and access token for logging in as a new Agent. - **Configure JWT Function:** This function configures Spring Security's JWT to acquire an Access Token for logging in as a new Agent. - **Configure API Key Function:** This function configures Spring Security's JWT API Key to obtain the necessary API Key credentials for logging in as a new Agent. ## Added New 'Import Database IStructure’ Button on Create New interface Screen We have added a new button named “Import Database IStructure” on the Create New Interface screen to simplify the creation of Database IStructure. This button only appears when connecting the Agent database Adapter with the interface v2 design. You are no longer required to create the Database IStructure after configuring the interface; now, you can create it while setting up the interface. ## Added New Agent AI ChatPDF Adapter The Agent AI ChatPDF adapter is employed to extract data from a PDF file using the ChatPDF AI. To enable the ChatPDF AI to read data from the PDF and convert it into JSON format, you must manually input commands prompt to specify in the Query field on the interface to receive a response by this AI, our Agent API ChatPDF proceeds to send the JSON data to Salesforce. This functionality is compatible with Agent Version 3.06.04 and Skyvva Version 2.51.8. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 5. Bug Fixed Slug: skyvva-2-51-8-patch-5-bug-fixed URL: https://help.skyvva.com/#article/skyvva-2-51-8-patch-5-bug-fixed ================================================================================ # 5. Bug Fixed ## Fixed issue allowing the saving of the Inbound Agent File adapter without a required value in the Content Format field We are experiencing an issue with the inbound Agent File adapter, possibly caused by saving without any value in the Content Format required field. This may result in an error during processing. The problem has been resolved by adding a default value, 'SKYVVA Message'. ## Resolution of Error in Resizing Columns Table View Inside Agent Control Board There was an issue encountered when resizing the columns in the Table View of the Agent Control Board, affecting all functions that call this table view. This led to a pop-up error message: '[Cannot read properties of undefined (reading 'contains')].' This issue has been resolved. ## Cache Monitor did not display the Cache Record We encountered an issue where the cache record was not displayed on the cache monitor of the agent control board when the interface type was null after upgrading the version. This problem has been resolved by enabling the display of cache records of Null within the same main interface type. ## Fixed Get Black and Error Pop-Up Screen on Interface Detail Page While scrolling up, down, and editing on the interface detail page, an issue was causing a black screen and pop-up screen or displaying an error message: 'Uncaught Action failed: skyvvasolutions:InterfaceInboundOutboundStep$hidePopover[propover.getElement is not a function].' We have now resolved this problem. ## Resolved Issue with Outbound Processing When Starting Where Condition with Round Brackets There is an issue when your query has a WHERE condition starting with round brackets, for example, 'WHERE (Name <> 'dd' OR Name <> 'test') AND BillingCity = 'PP'. It encountered an error in the log of the Outbound Processing Component as shown below:  “V3OutboundUtils.SQLBuiler>reBuildQuery>AfterWhere: WHERE () AND (Id IN :ids)(Name <> 'dd' OR Name <> 'test') AND BillingCity = 'PP'reprocess:Eorr-Message: unexpected token: ')' >Detail:(skyvvasolutions)” This issue has been resolved. ## Resolution: Correcting Message Deletion Functionality in Integration and Interface for Outbound Processing using Agent xxx Adapter There was an issue when you selected 'Delete Completed but keep other Messages' on the interface and 'Delete Message' in Integration, despite performing outbound processing using Agent xxx Adapter, the completed message continued to exist in Salesforce. This problem has been resolved by deleting the completed message when this flag is checked. ## Resolved: Fixed the Interface Screen's Continuous Spinner Issue When Adding Event Type Outside of Events Configuration Section We encountered an issue when accessing the interface details page, causing a continuous spinner due to adding the 'Event Type' field outside the Events Configuration section. This problem has been resolved, allowing you to add any section without encountering errors. ## Resolved the Issue of Missing Connection Destination from the Adapter After Cloning the Interface There is an issue when you have a cloned interface with an adapter linked to the Connection Destination adapter property. This can result in a lost Connection Destination for the Adapter after cloning the interface. This issue has been resolved.  ## Fixed Workflow Did Not Set Messages to New While Not Met All Conditions Of the Workflow There is an issue when setting the 'Update Message status to 'New'’ on 'Action when all Conditions not Met' option on the Workflow Settings. When processing a message that does not meet all conditions, the status is not updated to 'New' but instead set to 'Completed'. This issue has been resolved. ## Automatically Setting the Sequence for Interfaces after Cloning, Restoring, and Interfaces Sequence Inside the Default Interface Group There was an issue where cloning and backing up an existing interface resulted in a duplicate sequence alongside the original. Furthermore, setting the interface sequence within the interface group did not properly establish sequencing. This problem has been resolved by increasing the maximum sequence by one during the cloning, restoration, and sequencing of interfaces within the default group. ## Minimize Unnecessary Calls to the Salesforce API for Message Reprocessing by the New Agent in Non-Open Firewall Mode There is an issue when a New Agent is using non-open firewall mode; it will automatically use Asynchronous processing. When reprocessing a message, the New Agent will make multiple API calls to Salesforce for message reprocessing unnecessarily. This issue has been resolved by calling only a message update after completing the message reprocessing. ## Loss of Agent Connection Destination from Agent xxx Adapter During Destination Name Rename When renaming the Agent Connection Destination, all associated Agent xxx Adapters linked to this Destination are lost. This issue has been resolved by ensuring that all Agent xxx Adapter links remain connected to this Connection Destination. ## The Running Scheduler did not run anymore after rebuilding the Cache We encountered an error while the Agent Scheduler was running, and you clicked 'Rebuild Cache' under Cache Monitor on the Agent Control Board. This action deletes the old cache and upserts the Agent caches in the Postgres Database. The quartz job details will be removed during this process of deleting the scheduler agent cache. The scheduler will not run and raise the scheduler comment “Agent Response: The Scheduler with id: xxxxxxxxxxxxxxx is not running.”. In this scenario, we will forego deleting the cache after clicking 'Rebuild Cache' and only upsert the cache instead. ## Fixed Issue Agent Retry to Update Message Via Processing with Skyvva CDC There is an issue encountered when updating the message and logging the problem during the update process. This issue stems from messages that have not been generated in Salesforce yet, which is why the Agent is unable to effect the update. The New Agent attempts multiple retries to update the message. This problem has now been resolved by transitioning to asynchronous processing using Skyvva CDC and the Agent xxxx adapter. This adjustment ensures that once the message is fully created, Salesforce calls upon the agent to process the data, and the agent calls to update the message. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Info Slug: skyvva-2-51-8-patch-2-info URL: https://help.skyvva.com/#article/skyvva-2-51-8-patch-2-info ================================================================================ # 2. Info ## Remove Store Procedure on Object Type of Query data from the external database Option We would like to inform you that we have removed the 'Stored Procedure’ on ‘Object Type' option from the Query Editor Function for ’Query data from external database’. This option works only with tables and views. ## Remove and Make Some changes on the Agent Control Board and the SAP Control Board - We have removed the Server Environment field on the Agent Control Board and SAP Control Board - Remove the Required select Logical System while connecting with the SAP System on the Agent Control Board ## Move 'Log Configuration' to the Setup Page of the Agent Control Board As we have added a new Setup Tab on the Agent Control Board, we have relocated the Log Configuration to this page. If you need to configure the log settings, you must access this Setup page. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-30-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-30-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.30 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048Y8d](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048Y8d) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048Y8d](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048Y8d) Release Date: 18-November-2025 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Info Slug: 2-50-30-patch-2-info URL: https://help.skyvva.com/#article/2-50-30-patch-2-info ================================================================================ # 2. Info #### Rename Label Name From SAP CPI to SAP BTP Integration Suite Type of Adapter We would like to inform you that we have renamed the label from 'SAP CPI' to 'SAP BTP Integration Suite ', which is the type of adapter. #### Remove Development Status and Add Message Status to the Interface List We have removed the Development Status column and added the Message Status column to the Interface List View. The Message Status will indicate the status of messages within the interface. You can now easily track the status within this interface. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 3. Bug Fixed Slug: 2-50-30-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-50-30-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed #### Fixed A few Issues Reprocess the Message with Max Number of Retry - There was an issue where the failed message did not reprocess despite the Max Number of Retry setting on the integration. This problem has been resolved by querying 'RootMessage__r.Integration__r.Max_Number_Of_Retry__c' during the ReachMaxRetry check. Now, the messages are processed as expected. - The root message that incorrectly counted retries has been fixed. The Retry Counter no longer needs to be counted in the root message. It will now count business messages on its own. #### Fixed Issue Cache While Outbound Request and Inbound Response Link Together An issue arose during the design of the outbound request interface and the link response interface to the outbound request interface. The Response Interface did not cache to the Agent Cache. This issue has been resolved. While the user is linked with the Ref Field, we will send all cache-related data from the parent and child cache records. #### Fixed Interface Cache Not Ordered into Agent Cache There was an issue when saving mappings, updating the cache, or rebuilding the cache with the interface hierarchy. The interface cache was unordered, leading to problems. This issue has been resolved. #### Added new ISINTEGER(text) Formula We have introduced a new formula called 'ISINTEGER(text).' This formula verifies if a given string can be converted into a valid integer. If the conversion is successful, it returns true; otherwise, it returns false. For example, ISINTEGER('12') returns true, while ISINTEGER('ABC') returns false. #### Fixed the Restore Wrong Value on the Source Field of the IMapping Record We encountered a problem while restoring the IMapping record. It retrieved the old source value into the Source field, which could cause issues during integration. This issue has now been resolved, and the correct value has been restored as expected. #### The Running Scheduler did not run anymore after rebuilding the Cache We encountered an error while the Agent Scheduler was running, and you clicked 'Rebuild Cache' under Cache Monitor on the Agent Control Board. This action deletes the old cache and upserts the Agent caches in the Postgres Database. The quartz job details will be removed during this process of deleting the scheduler agent cache. The scheduler will not run and raise the scheduler comment “Agent Response: The Scheduler with id: xxxxxxxxxxxxxxx is not running.”. In this scenario, we will forego deleting the cache after clicking 'Rebuild Cache' and only upsert the cache instead. #### Resolved Issue: Invalid Type 'Report' and Message Monitor Accessibility with 'High Assurance Session Required' Enabled There is an issue related to the 'IExportController' class when calling the Skyvva API. Within the class, there is a variable named 'public IntegrationAdminTab admin'. Although the 'IntegrationAdminTab' class includes a method that queries the Report object, this method is never invoked during the integration process, and the user is also not able to access message monitoring. This limitation arises when the user enables the 'High Assurance Session Required' Salesforce feature. To address this issue, we have implemented solutions for both enabling and disabling the 'High Assurance Session Required' setting. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-9-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-9-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.9 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JfwB](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JfwB) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JfwB](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003JfwB)
Release Date: 12-December-2025
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Info Slug: 2-51-9-patch-2-info URL: https://help.skyvva.com/#article/2-51-9-patch-2-info ================================================================================ # 2. Info ## Remove Development Status and Add Message Status to the Interface List We have removed the Development Status column and added the Message Status column to the Interface List View. The Message Status will indicate the status of messages within the interface. You can now easily track the status within this interface. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Warning Slug: 2-51-9-patch-3-warning URL: https://help.skyvva.com/#article/2-51-9-patch-3-warning ================================================================================ # 3. Warning ## Ensure Cleanup is Executed Using the Outbound Scheduler Within the Scheduler Settings of the Agent Control Board After Upgrading You will get the following error message, as shown in the screenshot below, in the scheduler settings tag on the Agent Control Board if you have upgraded to version 2.51.9 or later. In this version, we have modified the outbound scheduler naming schema, so your old schedulers will no longer work. The error will be displayed as shown in the screenshot below: ![](../images/2025/12/ErrorAgentSetting.jpg) We offer you the function to clean up and restore the old schedulers. To execute this conversion, please click on the button ‘Run Cleanup’.  ![](../images/2025/12/CLickCleanUp.jpg) You will encounter a pop-up confirming the cleanup of the outbound scheduler. Please click 'OK' to proceed with the cleanup. ![](../images/2025/12/ClickOkButton.jpg) The cleanup of the outbound scheduler has now been completed. ![](../images/2025/12/successToClean.jpg) Note: The scheduler is running before the upgrade. ![](../images/2025/12/2025-11-20_19-00-14.png) After the upgrade and cleanup, you must start the outbound scheduler manually; it will not run automatically afterward. Please note that this change only affects the outbound scheduler. For the inbound scheduler, there is no change, and thus you don’t need to take any action after the upgrade.  ![](../images/2025/12/startscheudler.jpg) ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 4. Enhancement Slug: 2-51-9-patch-4-enhancement URL: https://help.skyvva.com/#article/2-51-9-patch-4-enhancement ================================================================================ # 4. Enhancement ## Added Agent Instances on the Left Side of the Agent Control Board We have enhanced our Agent Control Board by adding Agent Instances to the left-hand panel for better viewing, easier switching, and easier searching of Agent Connection Destinations. Now, you have a complete overview of how many agents are connected to your organization and which connections exist. You can navigate through the agent instance ID tree and select one for pinging the connection. ## Enhancements and Handling of xxxxxExecution Scheduler We enhanced to prevent the xxxxxExecution scheduler from failing to pick up the interface link with the Agent xxxx Adapter for outbound processing. The reason why we are not allowing the user to set the interfaceExecute scheduler is that we have an issue with duplicate outbound processing when a user configures it in two places: once on the agent scheduler and again on InterfaceExecute on the globe scheduler tab. Additional for handling: - The InterfaceExecution scheduler is created when the interface is not linked to an Agent Adapter. We generate this schedule while accessing the scheduler on the integration screen, specifically the globe scheduler screen. - The InterfaceExecution scheduler is not created when the interface is linked to Agent Adapter xxxx. We do not create this schedule while accessing the scheduler on the integration screen, specifically the globe scheduler screen. - For IntegrationExecution and InterfaceGroupExecution: - If all interfaces are within the integration and the InterfaceGroup is linked with the agent xxx adapter, these two schedulers will not be created. - If all interfaces are within the integration, and the InterfaceGroup is linked with both the agent xxx adapter and a non-agent xxx adapter, these two schedulers will be created as normal. - If all interfaces are within the Integration and the InterfaceGroup is linked only to the non-agent xxx version, IntegrationExecution and InterfaceGroupExecution schedulers will be created as normal. - We added a warning log to get the information while this scheduler executes. It will skip the interface execution that the link New Agent Adapter uses. ## Added ‘Job Trigger By’ Column to the Interface List of Agent Control Board We have added a new 'Job Trigger By' column to the Interface List on the Agent Control Board to indicate whether the interface was triggered by INTERFACE, GROUP, and INTEGRATION categories, either by a scheduler (value = SCHEDULER) or manually (value = MANUAL) ## Enhancements to the Interface Group to Display the Information within the Agent Control Board We have made some enhancements within the interface group as follows:**  ** - We have improved Salesforce to display the Agent job information of the Interface Group. - Additionally, we have added the display of Agent Connection and adapter status on the interfaces within the Interface Group tab of the Agent Control Board. ## Enhancements to Amazon xxx Adapter Various Enhancements with the Amazon xxx Adapter: - Previously, the AmazonAPIGateway adapter only supported GET and POST operations. Now, it has been expanded to support additional methods, such as HEAD, PUT, DELETE, and PATCH. Furthermore, it did not initially support dynamic paths, queries, and headers; however, these features are now supported. - Enhancements have been made to the Custom Authentication Class functionality for the following adapters: - AmazonAPIGateway - Amazon SNS - Amazon SQS - Amazon Event Bridge ## Enhanced Message Comment to Better Clarify that the External ID Fields cannot be Filtered in a Query Call In the previous version, you could use a textarea or VersionData field as an external ID. An error message would appear with the comment 'field xxxxx cannot be filtered in a query call.' This message was not clear. Therefore, we have enhanced the comment to 'Cannot Use Field xxxxx as an External ID because its data type is TEXTAREA/BASE64, which cannot be used in query filters. ## Enhanced Organized Setup of Agent Control Board We have organized the Setup screen as follows: - Added a Security Settings category to the group:  - User Management - Register OAuth2 Client - Configure JWT - Configure API Key - Implemented search functionality across all setup sections ## Added Job Status Reset Functionality within the Interface List View of the Agent Control Board We encountered an issue where the interface gets stuck in processing with an IN_PROGRESS status. Previously, to reset the job, users had to log in to the PostgreSQL database on the Agent server. To address this, we have implemented a 'Reset Job Status' feature accessible by clicking the Job ID link within the Interface List View on the Agent Control Board. It is important to note that this option should only be used when you are certain that processing is not stuck. If the interface is still processing, avoid using this option to prevent unexpected errors. ## Fixed Message Type for Database View of Import Database Metadata Function We have an unnecessary Message Type Database View for the ‘Import Database Metadata’ function. Therefore, we fixed it by removing the Database Operation, and we made the View have only one message type template as follows:  * DB_View_(ViewName) => Type: Database View Template * Request => Type: Database Request * (ViewName) => Type: Database View * WHERE-Clause => Type: Database WHERE Clause * WHERE-Expression => Type: Database WHERE Expression * Response => Type: Database Response * Records => Type: Plain structure * (ViewName) Plain structure ## Enhanced Mapping Saving to Generate Database Query Statements We have improved the mapping saving process with Aget Database. If you are only mapping the Primary Key and Foreign Key fields when the user checks these fields exclusively, without selecting other fields. Upon saving the mapping, the Database Query will save 'SELECT * FROM TableName'. However, if your mapping includes fields beyond the Primary Key and Foreign Key, a query will be generated for all mapped fields, such as 'SELECT PKField, FKField, Fieldxx FROM TableName'. ## Enhanced Outbound Processing to Create a Pending Message While the Outbound Adapter is in Inactive Status In the previous version, when the adapter was inactive and linked to the outbound interface deploy status, you may make a callout such as invokeCallout, invokeCallout2, and invokeCallV3, resulting in no message creation or processing. However, we have enhanced the system to create pending messages with all generic adapters and process messages later as needed. Note: This feature is not supported by the Agent xxxxx adapter. ## Added Queue Tab for Agent Control Board We have added the Queue Tab to the Agent Control Board for monitoring the processing queues of the Integration, Interface Group, and Interface. Within this tab, you can perform actions such as pausing queue processing and deleting queues. This feature provides greater visibility into the queuing system, allowing for efficient management and control over the processing flow within the system. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 5. Bug Fixed Slug: 2-51-9-patch-5-bug-fixed URL: https://help.skyvva.com/#article/2-51-9-patch-5-bug-fixed ================================================================================ # 5. Bug Fixed ## Missing Some Value2__c Adapter Database Properties When Cloning/Restoring the Interface Linked to This Adapter There is an issue when using the clone/restore function to replicate the interface that links to the Agent Database. After cloning, the adapter loses value2__c of the connectionURI and hostname properties, which can lead to problems when processing interfaces with that adapter. This issue has been resolved. ## Resolved various issues related to 'Import Database IStructure' within the Creation Interface Step There are some issues concerning the 'Import Database Structure' within the Creation Interface Step as follows: - Fixed the issue of losing the initial Source Name selection after clicking the cancel button on the Import Database Structure screen - Resolved the issue of the 'Import Database Structure' button remaining enabled even after exiting the Agent Database Adapter from the interface creation step. - Fix the issue of losing the initial Operation Type selection after clicking the cancel button on the Import Database Structure screen. - An issue was identified with 'Import Database Structure'. When creating an interface, an IStructure was generated. Subsequently, creating another interface on the same page without clearing the existing IStructure caused it to be retained in the cache. This caused the new interface to also inherit the previous IStructure. The issue has been resolved by clearing the IStructure cache when creating a new interface on the same page. ## Fixed 'Object Type' Filter for Cache Monitor An issue arises when you apply a filter for Object Type set to 'All' in Cache Monitor, resulting in a loss of caches for objects such as Integration, Interface, and InterfaceGroup. This problem has been resolved by displaying all objects without missing any objects. ## Resolved the issue of Duplicate Interface Records in the 'Where to Use Inside' Option of the Adapter There was an issue with the 'Where to Use' function in the Adapter for searching the interfaces that use this adapter. However, if a space was inadvertently typed, the screen might display duplicate interface records. This issue has been resolved.  ## Fixed Cannot Edit Adapter and Stop Consumer of Agent Adapter File An issue was identified during the integration backup involving the interface link to the Agent File Adapter. Specifically, when starting the consumer from one organization and restoring it to another organization for the Agent Adapter File, users were unable to edit or stop the consumer of the Agent File Adapter after the restore. This issue has been resolved. Now, after the restore, the agent connection destination is removed, and the consumer of the Agent File Adapter is automatically stopped when restoring it to the other organization. Additionally, we have implemented a solution to prevent cloning an interface that is already linked to the Agent File Adapter during the start of the consumer process. ## Fixed Cannot Edit Adapter and Stop Consumer of Agent Adapter File An issue was identified during the integration backup involving the interface link to the Agent File Adapter. Specifically, when starting the consumer from one organization and restoring it to another organization for the Agent Adapter File, users were unable to edit or stop the consumer of the Agent File Adapter after the restore. This issue has been resolved. Now, after the restore, the agent connection destination is removed, and the consumer of the Agent File Adapter is automatically stopped when restoring it to the other organization. Additionally, we have implemented a solution to prevent cloning an interface that is already linked to the Agent File Adapter during the start of the consumer process. ## Fixed Issue: Delete All Batch Basket and History Basket inside the Batch Control Board There is an issue when clicking the 'Delete All' button in the Batch Basket Control Board; the action also deletes all Bulk Baskets. This issue has been resolved by updating the function to delete all batch baskets without affecting the bulk baskets. Additionally, we have fixed the screen responsiveness for 'delete all history baskets' confirmation on the batch control board, which was previously unresponsive on the screen. ## Fixed Connection Name filter for Adapter Records on Agent Control Board The Connection Name filter in the Adapter Records section of the Adapter Tab on the Agent Control board shows the connection Name of the Old Agent Connection. This issue has been fixed by filtering only the New Agent Connection Name.  ## Fixed Filter Message on CDC Control Board The message in Message Monitoring on the CDC Control Board was not displayed in the 'All' mode when requesting and responding with CDC processing covered by the API Message. In such instances, filtering the message with all modes enabled on the CDC Control Board did not display the CDC message. This issue has been resolved by allowing the display of the CDC message under the API Message and showing only the CDC message covered by the API Request/Response Message. ## Fixed Issue: Select Baskets with Multi-Processing Type The message in Message Monitoring on the CDC Control Board was not displayed in the 'All' mode when requesting and responding with CDC processing covered by the API Message. In such instances, filtering the message with all modes enabled on the CDC Control Board did not display the CDC message. This issue has been resolved by allowing the display of the CDC message under the API Message and showing only the CDC message covered by the API Request/Response Message. ## Resolution of Cache Clearing Issue During Interface Switch From Agent to Non-Agent Adapter The associated cache was not cleared when the interface was switched from the Agent to a non-agent adapter. This issue has been resolved by removing the caches related to that interface within Salesforce and the agent, except for the Adapter, Properties, Integration, and Interface Group caches. ## Fixed Agent File Adapter Screen When Selecting 'Binary' as the File Type There was an issue when selecting the File Type as Binary, Binary File, Binary Folder, and Reference Field, along with properties inside the create and edit Agent File Adapter screen. This problem has been resolved by removing those properties from the screen, as they are not used when the Agent File Adapter is set as a Binary File Type. ## Remove Response Message When Request Does Not Find Any Records There was an issue encountered during the request and response processes with the Agent Database. Queries were executed in the request interface to fetch records, and the resulting responses were utilized for upserting, inserting, or updating in Salesforce. When no records were found in the request, a 'pending' response message was triggered due to asynchronous processing. However, in synchronous requests where no records were found, it would create a 'failed' message with the comment 'Please check response payload and inbound Interface!' was issued. This problem has been resolved by ensuring that if the interface request does not return any records after the query, the response interface will not generate any additional response messages. ## Resolved Missing Cache Issue in Request and Response Interfaces in Asynchronous Mode We have resolved the interface cache issue related to your request and response in asynchronous mode. If the interface cache is not sent in the correct order at the interface level chain, some sub-interfaces may be missed. This could impact processing when these caches are not available. ## Fixing Missing Initial Property in All Adapter Types There was an issue during the creation of the adapter where initial properties like Username, Certificate Name, OAuth 2.0 flow, or API Key Name were not displayed as expected. This problem has been resolved by adding back these properties. ## Resolved the Stored Procedure of Agent Database Processing Issue with Request and Response There was an issue encountered while processing the Agent database using the 'Stored Procedure' operation type with the request and response interface. After processing the response, the agent encountered an error with the root message being 'New' because no response was received after the request. This issue has been resolved by ensuring the response is processed correctly. ## Resolved Query Editor to Execute Records for Outbound Manual Process We encountered an issue where the user intended to perform Outbound Processing manually using the 'Manually select the sObject using the Query Builder?' option. When the user added an additional WHERE condition after executing the query statement by clicking the 'Execute SOQL' button, an error message was triggered, indicating an 'unexpected token' and 'Where' twice. This problem has been resolved by preventing the addition of an extra WHERE condition when executing the SOQL button. ## Resolved Issue: Reset Start Index to 0 When No Records in Response There is an issue with the Start Index not being set to 0 when requesting data with no records in response from Sage 100. Subsequently, when the scheduler runs again, the user is unable to retrieve the most recent update record and gets only the last Index record. To address this, we have implemented a fix where, after the last request and no records in the response, the 'Start Index' will be automatically set to 0. ## Resolved Issue: DoAlert Scheduler Limiting Selection of Failed Messages There is an issue when using the DoAlert feature to fetch failed messages for email alerts. This problem can occur when a significant number of failed messages are present, leading to an error in the apex job with the message: 'Scheduler: failed to execute scheduled job: jobId: xxxxxxxxxxxxxxx, class: common.apex.async.AsyncApexJobObject, reason: Apex heap size too large: xxxxxxx', consequently causing the scheduler to halt. To tackle this issue, the problem has been resolved by restricting the selection to only 1000 failed messages to avoid hitting the limit. ## Resolved Multiple Issues with Query Editor for Using V4/Query There are various fixed issues inside the Query Editor for use with V4/Query as follows: - Fixed the issue of not loading the sObject field while appending the tree node inside the Query Editor. - Resolved the problem of losing the sObject tree node and field when selecting the interface name inside the Query Editor. - An issue occurred when a query contained a parameter within the WHERE condition, for instance, Name = {!param}. Clicking the "Execute SOQL" or "Test SOQL / Count Records" button resulted in an error message stating "Error! Unexpected token." This problem has been addressed by introducing a dialog screen to provide a parameter value for executing the query. - Corrected the problem of saving the query statement in the incorrect location in the Database Query, rather than the Query field. It has now been rectified to save in the Query field. - A problem was identified in the Query Editor Tool for inbound V4/Query, where the WHERE condition did not consider the Where-Expression field of the Query Template from the message Type. However, it was retrieved from the sObject when using the query editor for the first time. This has been resolved by considering the field from the Where-Expression of the Query Template. - Fixed the issue of missing the query (Select field1, field2, xxxx From sObject) and only obtaining {!__SKYVVA__WHERE-Clause} in the Query Editor upon loading. The Query Editor now retrieves all query statement values when loading. ## Resolved Payload Issue in Agent Rest Adapter with sObject Structure Mapping In the previous version, during inbound processing or the Agent File and Agent Database Adapter with External Mapping involving flat mapping in Interface V3 design, mapping the root node of the sObject Structure was necessary. Failure to map this would result in processing errors. To address this, adjustments have been made to the flat mapping of the External Mapping in the Interface V3 design. Mapping the sObject root node is no longer required, except for use cases where mapping is hierarchical. It is important to note that the Agent Database supports only flat mapping with External Mapping. ## Fixed Issues in Manual Processing Across Various XXXX Control Boards When you have only one inbound or outbound interface selected and attempt to process it using the 'Manual Process' button, an alert message appears:  'Warning: You can not process Inbound and Outbound Interface at the same time. Please select only Inbound or Outbound Interfaces.'. This issue occurred across various XXXX Control Boards, such as the Amazon and Oracle Control Boards, and others. This issue has been resolved by removing the warning message when selecting the same direction for interface processing. Now, proceed by selecting only one direction, which is now functioning correctly. ## Resolved Issues: Scheduler Settings for Oracle and Amazon Control Boards The following issues have been fixed:  - There was an issue when accessing the Scheduler tab in the Oracle and Amazon Control Boards. An error message appeared: “Error: Attempt to de-reference a null object.” This issue has been resolved by generating the scheduler settings, and the error message no longer appears. - Additionally, an issue where the Scheduler in the Oracle and Amazon Control Boards did not work with the Scheduler per Integration and per Interface Group has also been fixed. ## Resolved Issues: Importing Database IStructure in the Create Interface Screen The following issues have been fixed:  - When the Agent Database Adapter was removed from the Adapter field, the Import Database IStructure button remained on the Create New Interface screen. This issue has been resolved, and the button is no longer displayed after the adapter is removed. - When canceling Import Database IStructure and returning to the ‘Create New Interface’ screen for the Outbound direction, the Source (Select or Enter) field no longer remains set. This issue has been resolved. - There is an issue when you use "Import Database IStructure" inside the Create New Interface Screen for the inbound interface. After import database Istructure, it will return to the “Create New Interface Screen, then the Operation Type of Interface will turn to defalut value and will not exist with the selection value. This issue has been fixed. ## Fixed Issue Where No Business Response Records Were Created for Agent Database Adapter There was an issue when performing an outbound request to query records from the database and processing the response for inbound handling. Although the database returned records, the response contained no records. As a result, failed messages were created for synchronous processing, and records were left pending for asynchronous processing without business message records. This issue has been resolved by ensuring that no messages are created when there are no business messages to return. ## Fixed Issue with Custom Format with Agent File Adapter with Non-Open Firewall There was an issue during outbound processing with the Agent File Adapter (Content Format = Custom and Custom Processing Class) in non-open firewall mode. It faced difficulties creating a custom message without a business message and an agent message. This problem has been resolved to prevent the duplication of root messages and ensure the creation of only a Custom Message to cover the business message. ## Resolved Issue: Invalid Type 'Report' and Message Monitor Accessibility with 'High Assurance Session Required' Enabled There is an issue related to the 'IExportController' class when calling the Skyvva API. Within the class, there is a variable named 'public IntegrationAdminTab admin'. Although the 'IntegrationAdminTab' class includes a method that queries the Report object, this method is never invoked during the integration process, and the user is also not able to access message monitoring. This limitation arises when the user enables the 'High Assurance Session Required' Salesforce feature. To address this issue, we have implemented solutions for both enabling and disabling the 'High Assurance Session Required' setting. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-10-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-10-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.10 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg0d](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg0d) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg0d](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg0d)
Release Date: 11-February-2026
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Info Slug: 2-51-10-patch-2-info URL: https://help.skyvva.com/#article/2-51-10-patch-2-info ================================================================================ # 2. Info ## Removal of ‘Operation Deleted’ from Interface During PushTopic Event Selection We would like to inform you that the 'Operation Deleted' field has been removed from the interface screen when selecting the PushTopic Event, as it is no longer in use. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Enhancement Slug: 2-51-10-patch-3-enhancement URL: https://help.skyvva.com/#article/2-51-10-patch-3-enhancement ================================================================================ # 3. Enhancement ## Job Monitor Added to Agent Control Board We have added the Job Monitor tab inside the Agent Control Board to monitor agent jobs and Salesforce jobs during execution. The Job Monitor also allows you to delete agent jobs if they become stuck due to unexpected processing or handling issues. This feature permits deletion when the status is IN_PROGRESS. Users will find it easier to gain a better view of job processing. ## Added the Adapter Type filter to the Interface filter We have various filters in the list interface within the Integration record view. It is difficult to find the interfaces associated with a specific adapter type. However, we have added a new Adapter Type filter to this interface list, allowing you to view only the interfaces that specify the selected adapter type. ## Allow Restoration of Message Type/Repository with Any Repository and Metadata Provider Currently, you can backup the repository and message type and restore them to the original Metadata Provider/Repository name. Restoring to a different Metadata Provider/Repository name is not possible. However, we have enhanced the functionality to allow restoration to any repository or metadata provider. ## Added Ping Connection for TransportRoute We have enhanced our TransportRoute by adding a Ping Connection button on the New and Edit TransportRoute screens. This button allows you to ping the credentials of the target organization to verify that the TransportRoute credentials are functioning properly. ## Redesign Agent Cache View of Agent Control Board Currently, the agent cache record display columns are arranged in alphabetical order. However, we have added an importance field on the far right side. It will help the user get information records faster and provide a better view. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 4. Bug Fixed Slug: 2-51-10-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-51-10-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed ## Fixed Agent SOAP Adapter without Response There was an issue with processing requests and responses using the Agent SOAP Adapter, resulting in the response not coming back. This issue has been resolved on the Salesforce side, specifically regarding the actionDoIntegrate being set to false during the request and response. In this case, you will receive an Agent message with a status of 'New' and a corresponding request business message marked as completed, without updating the Agent Message. The issue has been addressed by setting actionDoIntegrate to true; thus, the response interface will be executed, and both the request and response will be processed, allowing the message to update correctly. ## Fixed Cache Issue When Deleting Custom Interface Group There is an issue when you delete a custom group that contains an interface used with the New Agent. In this case, the cache for this interface group is not deleted, nor is the interface cache updated to link back to the default group. This can cause problems while processing the interface group. This issue has been resolved by deleting the interface group cache and updating the interface cache to link back to the default group when a custom group is deleted and is being processed with the new agent. ## Fixed Agent Rest Adapter without Response while Response Format is XML We encountered a problem when making requests in JSON format while receiving responses in XML format with the Agent REST Adapter. This issue has been resolved on the Salesforce side, specifically regarding the actionDoIntegrate being set to false during the request and response. You will not receive a response message, and the Agent Message will have a status of 'New,' while the Business Request message is marked as completed. This issue has been resolved by ensuring that the response is properly handled, creating the appropriate business response message, and updating the Agent correctly. ## Fixed Now() formula without format Currently, the Skyvva NOW() formula function supports both usages: * Without parameters, which uses the default format: dd.MM.YYYY HH:mm:ss. * With parameters, where the parameter explicitly defines the date/time format, for example: dd.MM.yyyy HH:mm:ss. The issue you encountered happens only when the function is used without parameters. In this case, the default format uses YYYY (ISO week-based year). During the last days of December, if a date falls into ISO week 1 of the following year (for example, between 29.12.2025 and 04.01.2026), YYYY will resolve to the next year, even though the calendar date is still in December. This issue has been fixed by using yyyy instead of YYYY. ## Fixed Remaining New Message Root When Workflow Sets 'Delete Message' on 'Action When All Conditions Are Not Met' There was an issue when the workflow was set to 'Delete Message' under 'Action When All Conditions Are Not Met.' When the business message did not meet all conditions of the workflow, it would be deleted; however, the root message covering the business message would remain in a 'New' status and would not be deleted. This issue has been resolved by including the deletion of the root message. ## Fixed Various Issues Regarding the Queue Monitor in Agent Control Board There are a few issues regarding the Queue Monitor in the Agent Control Board that have been fixed as follows:  - Fixed the issue where the text overlaps with the Queue Name freeze column while scrolling to view the queue records on the left side. - Resolved the issue that prevented the deletion of the selected queue due to the queue record ID not being passed for deletion. ## Fixed Various Issues Regarding the Interface Group Several issues related to the Interface Group have been fixed as follows:  - Fixed the issue where some interfaces linked with an adapter, while others were not linked or were in development. When performing Group Processing on the Interface Detail page, all interfaces would fail to execute. This issue has been resolved, allowing only interfaces linked with the adapter and in the deployed status to execute. - Resolved an issue with reordering interfaces within the Interface Group on the Detail page. Previously, after entering a value for the interface sequence and saving it, the sequence value was not retained. This issue has been addressed by redesigning the input method, enabling proper reordering of the interface sequence. ## Fixed Various Issues Regarding the Query Editor Tool Fixed a few issues related to the Query Editor as follows:  - There was an issue when using the Agent Database Adapter for inbound interfaces in a non-open firewall mode. Opening the Query Editor resulted in a continuous spinner. This issue has now been resolved by stopping the spinner and successfully loading the Query Editor Tool. - There was an issue when using the Agent Database Adapter for inbound interfaces in Initial Mode. After processing the data record from the Query Editor Tool, the Initial Mode was not unchecked. This issue has been resolved by ensuring that Initial Mode is unchecked after processing. ## Fixed Issue with Response Based on Interface Processing Mode When Using Dynamic Switch based on record size of Batch Mode An issue occurred when the “Batch Mode” flag and the Dynamic Switch based on record size were enabled. When the message size is less than the Record Size To Be Switched setting, and the messages are processed immediately, the response is returned in synchronous mode instead of reflecting the selected interface processing mode. This issue has been resolved by ensuring that the response is returned according to the specified interface processing mode (synchronous or asynchronous). ## Fixed Issue TransportRoute on MetaData Provider, Message Type, and Repository There were issues with the TransportRoute related to Metadata Provider, Repository, and Message Type records, which prevented you from sending these records to another organization via TransportRoute. This issue has now been resolved, enabling you to send these records through TransportRoute. ## Resolved IMessage Deletion Failure in Salesforce Inspector, Data Loader, and Developer Console Fixed an issue where deleting SKYVVA IMessage records using external Salesforce tools, such as Salesforce Inspector, Data Loader, or Developer Console, could fail with the following error: CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY: skyvvasolutions.trgIMessage: execution of BeforeDelete caused by: System.QueryException: unexpected token: 'IN' The issue occurred during the IMessage before-delete validation when SKYVVA checked related child messages. The message query string was corrected so the delete validation can run successfully. After this fix, deleting messages through Salesforce Inspector, Data Loader, Developer Console, and other direct Salesforce delete operations no longer fails with the SOQL “unexpected token: 'IN'” error. ## DoAlert with Scheduler does not run since xxxx has not been updated, while Next Run is updated bigger than Now There was an issue where the Agent was supposed to call and update the next run in the Interface Control Runtime record to monitor whether it is operational. However, the connection to your agent server is unstable, preventing the Agent from updating the interface control runtime within Salesforce. Consequently, doAlert will update the message comment to "Scheduler Not Run Since xxxx" and reflect the status on the Agent Scheduler in the Agent Control Board. Salesforce will assume that the Agent Scheduler is not running. If the next run time is earlier than the current time, the comment will be updated to "Scheduler Not Run Since xxxx," and the status icon will change accordingly. While the scheduler is running normally, it does not clear the old comment and status. We have resolved this issue, and the next run of doAlert will check the next run time. If the next run is later than the current time, doAlert will clear the comment from the status. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 1. Installation Link Slug: 2-50-31-patch-1-installation-link URL: https://help.skyvva.com/#article/2-50-31-patch-1-installation-link ================================================================================ # 1. Installation Link #### Here is the Installation Link for the SKYVVA Patch Version 2.50.31 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048gsy](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048gsy) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048gsy](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB0000048gsy) Release Date: 11-February-2026 ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Winter ’22 V2.50 Title: 2. Bug Fixed Slug: 2-50-31-patch-2-bug-fixed URL: https://help.skyvva.com/#article/2-50-31-patch-2-bug-fixed ================================================================================ # 2. Bug Fixed #### Fixed Reorder Interface sequence on Interface Group Detail Page Resolved an issue with reordering interfaces within the Interface Group on the Detail page. Previously, after entering a value for the interface sequence and saving it, the sequence value was not retained. This issue has been addressed by redesigning the input method, enabling proper reordering of the interface sequence. #### Fixed to Provide Information When Starting and Stopping Event Subscriptions on the Interface There was an issue when starting and stopping the subscription to the Event on the Interface with the New Agent. There was no indication of whether the subscription had started or stopped successfully. This has been resolved by adding a message alert to inform the user, enhancing clarity. #### Fixed Issue with Response Based on Interface Processing Mode When Using Dynamic Switch based on record size of Batch Mode An issue occurred when the “Batch Mode” flag and the Dynamic Switch based on record size were enabled. When the message size is less than the Record Size To Be Switched setting, and the messages are processed immediately, the response is returned in synchronous mode instead of reflecting the selected interface processing mode. This issue has been resolved by ensuring that the response is returned according to the specified interface processing mode (synchronous or asynchronous). #### Fixed REST and Sage 100 Adapter to Generate Request Payload When Using ‘GET’ Operation There was an issue when the user utilized the REST and Sage 100 adapter with the ‘GET’ operation, which generated a request payload during the callout. This issue has been resolved, and the request payload is no longer sent when using the ‘GET’ operation. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-11-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-11-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.11 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg2Z](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg2Z) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg2Z](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg2Z)
Release Date: 23-February-2026
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Enhancement Slug: 2-51-11-patch-2-enhancement URL: https://help.skyvva.com/#article/2-51-11-patch-2-enhancement ================================================================================ # 2. Enhancement ## Enhanced REST Adapter to Support Request and Response Formats with text/csv Payload In the previous version, the REST Adapter supported only request and response formats using application/xml and application/json payloads. We are excited to introduce an enhanced REST Adapter that now also supports text/csv payload formats. This improvement provides greater flexibility in data handling, allowing users to easily integrate their CSV data through our REST Adapter. With this enhancement, users can seamlessly process and exchange data in this widely used format, thereby improving interoperability and simplifying data manipulation. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Bug Fixed Slug: 2-51-11-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-51-11-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed ## Fixed Log Error Due to Absence of Inbound Response Interface in Outbound Requests We encountered an issue where some adapters required a response interface, leading to a log error: 'V3OutboundStepProcessing.executeInbound > Error: Response Interface is required! > Detail: (skyvvasolutions)'. For those response interfaces that are optional, it is acceptable if there is no response after the request has been made. This issue has been resolved by removing the error from the log. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 1. Installation Link Slug: 2-51-13-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-13-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.13 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg3S](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg3S) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg3S](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg3S)
Release Date: 02-March-2026
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 2. Enhancement Slug: 2-51-13-patch-2-enhancement URL: https://help.skyvva.com/#article/2-51-13-patch-2-enhancement ================================================================================ # 2. Enhancement ## A Few Enhancements for REST Adapter There are a few enhancements for the REST Adapter as follows:  - In the previous version, the REST Adapter did not support pagination. This has now been enhanced to support pagination, enabling the adapter to process large datasets returned by REST APIs. Two pagination methods are supported: Index + Offset and Next URL. These methods allow the adapter to automatically retrieve records across multiple pages until all data is processed. - Added Scheduler Last Run Date/Time logic to the REST Adapter, allowing users to include it in request headers, query parameters, or path parameters to retrieve results from external systems based on a specific datetime. By default, the value is set to 1800-01-01 00:00:00. For subsequent scheduler runs, the last run datetime is automatically retrieved from the interface control runtime stored in the background. To use this feature, specify __SKYVVA__Last_Run_Date_Time in the query parameters to pass the datetime value. For example: ?Datetime>={!__SKYVVA__Last_Run_Date_Time}. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: SKYVVA Summer ’24 V2.51 Title: 3. Bug Fixed Slug: 2-51-13-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-51-13-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed ## Fix: Transport Route Record Could Not Be Saved on Editor Screen After Ping from Transport Route List There was an issue where, after pinging the Transport Route record in the Transport Route list and then editing it, the record could not be saved. This issue has now been resolved, and the record can now be saved successfully after editing. ## Fix: Null Object Error in REST Adapter When Response Format Is Set to None An issue occurred when the Response Format was set to 'None' or when this property was removed from the REST Adapter API while making a request using Callout v3. In this case, the following error message was returned: ‘Message, 141, Attempt to de-reference a null object'. This issue has now been resolved, and requests can be processed normally. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: 13. Patch V2.51.14 Title: 1. Installation Link Slug: 2-51-14-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-14-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.14 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg3m](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg3m) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg3m](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tGB000003Jg3m)
Release Date: 27-March-2026
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: 13. Patch V2.51.14 Title: 2. Info Slug: 2-51-14-patch-2-info URL: https://help.skyvva.com/#article/2-51-14-patch-2-info ================================================================================ # 2. Info ## Change: Update Label Properties in SAP BTP Event Mesh Adapter As the SAP BTP Event Mesh Adapter does not support physical files, we propose updating the adapter properties by renaming the 'File Type' label to 'Content Types' and the 'Has File Header' label to 'Has Header'. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: 13. Patch V2.51.14 Title: 3. Enhancement Slug: 2-51-14-patch-3-enhancement URL: https://help.skyvva.com/#article/2-51-14-patch-3-enhancement ================================================================================ # 3. Enhancement ## Enhancement: Support Dynamic External ID Generation Using Formulas In previous versions, Skyvva did not support dynamic External ID generation using formulas for inbound processing. As a result, the following error message was returned: 'Using formula to build the External ID is not supported for CSV data processing'. This has now been enhanced to support External ID generation using formulas. ## Enhancement: Inbound Processing Supports CSV Files Without Headers In previous versions, inbound processing did not support the CSV payload without headers. This has now been enhanced to support the CSV payload without headers. To use this feature, users must define a Message Type, and the header structure will be determined based on the Sequence__c field of MsgTypeFieldEntry__c. ## Enhanced To GET Response While Request Asynchronous For SAP ERP Adapter Previously, the SAP ERP Adapter used asynchronous mode for outbound request processing and did not support inbound responses. This has now been enhanced to support inbound responses while processing in asynchronous mode. The Skyvva now creates a response message with a 'Pending' status and waits for a response from the SAP ERP system. ## Enhancement: Add Optional Separator Parameter to GETVALUEBYINDEX() Formula An optional `separator` parameter has been introduced to the `GETVALUEBYINDEX(text, index [, separator])` formula, allowing greater flexibility when parsing text values. The function returns the value at the specified index (0 to n-1) from a collection. If a separator is not provided, the default separator `";"` is used. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: 13. Patch V2.51.14 Title: 4. Bug Fixed Slug: 2-51-13-patch-4-bug-fixed URL: https://help.skyvva.com/#article/2-51-13-patch-4-bug-fixed ================================================================================ # 4. Bug Fixed ## Fixed Various Issues regarding the Query Editor of the Inbound Interface with the Agent Database **Some issues have been fixed with the Query Editor  as follows:** * Fixed an issue where, for inbound processing with the Agent Database, opening the Query Editor without a defined query in the interface resulted in the error: `status: 500, Index -1 out of bounds for length 0`. This issue has now been resolved. * There was an issue when opening the Query Editor for the inbound interface with the Agent Database adapter behind a non-open firewall. After loading, some entries did not have a table name or fields displayed. This issue has been fixed. * We identified an issue in which selecting a table twice caused the table to disappear and become unselectable. This defect has been fixed. * We identified an issue where, during query loading, a field included in the SQL statement was not marked (checked) in the selection box. This has been resolved: fields that appear in the statement are now automatically checked. * In the Query Editor, queries containing WHERE conditions did not render the WHERE clause correctly after loading. We have fixed the issue; incorrect WHERE clauses are no longer generated." * After executing the query, a 'SELECT TOP (...)' header was being added to column fields, causing incorrect query results. This issue has been resolved — the header is no longer generated, and the query now returns the database results correctly.  * While the Query Editor was open, the Execute SQL and Save SQL Query buttons became disabled. This issue has been fixed, and the buttons are now enabled. * When the Interface contains an empty query, and you open the Query Editor, select a table and paste the SQL statement manually. After executing the SQL and clicking Next page, the data is displayed with an incorrect header. ## Fixed Various Issues with the Formula Function **The following issues related to formula functions in mapping have been fixed:** * Fixed an issue where the `SPLIT(text, separator [, index])` formula returned an error when the input text was a ‘null’ value. For example, if a mapping passed a null value to accbillingcountry and used SPLIT(accbillingcountry, ",", 1), the formula returned the error 'Unable to evaluate expression!'. This issue has now been resolved, and the formula returns an empty value instead. * Fixed an issue where mapping records that generated NULL values were incorrectly included in the interface query statement. For example, with the following formula mapping: * AccountNumber => AccountNumber * Name => Name * BillingCountry => CASE(Country, 'Cambodia', 'KHM', 'India', 'IDN', NULL)The query was correctly generated in the interface sObject query field as SELECT Id, BillingCountry, AccountNumber, Name From Account. However, after removing the Name mapping, the query was incorrectly generated as SELECT BillingCountry, AccountNumber, Null From Account. This issue has now been fixed, and Null is no longer added to the query. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Title: 3. Deploy SKYVVA picklist via Workbench Slug: 3-deploy-skyvva-picklist-via-workbench-main-and-patch-2-51/ URL: https://help.skyvva.com/#article/3-deploy-skyvva-picklist-via-workbench-main-and-patch-2-51/ ================================================================================ # 3. Deploy SKYVVA picklist via Workbench

Deployment Guide: Deploy SKYVVA Picklist Values via Workbench for Version 2.51 and Patches

To simplify setup, SKYVVA picklist values can now be deployed in bulk via Workbench rather than manually.

Steps to Deploy

Step 1: Download the Deployment Package
Please use the following link to download the deployment package: skyvva-picklist-v2.51.zip👉 https://drive.google.com/file/d/1WPSaV6wKoFQDNwZ79I79RaPWcaiPyw_y/view

⚠️ Make sure the file is fully downloaded and saved locally before proceeding.

Step 2: Log in to Workbench

  • Enter your credentials and Login

  • Authorize access between Workbench and Salesforce by clicking the 'Allow' button.

Step 3: Navigate to Deployment

  • Go to Migration

  • Select Deploy

Step 4: Upload Deployment Package

  • Upload the provided skyvva-picklist-v2.51.zip file

  • Ensure the following options are selected:

    • Rollback On Error

    • Single Package

    • Test Level: RunSpecifiedTests
      • Enter the test class name on Run Tests
      • In this example, use: IntegrationControllerTest
      • If multiple test classes are required, separate them with commas (,) Example: IntegrationControllerTest,(OtherClassNameTobeRun)
  • Click Next

⚠️ Note: Theskyvva-picklist-v2.51.zip file is attached for this deployment.

Step 4: Deploy the Package

  • After clicking Next, a warning message may appear (this is expected)

  • Click Deploy to proceed

✅ Verification

  • Once the deployment is complete, check the result

  • If you see Success: trueThe deployment was successful

🎉 All missing SKYVVA picklist values should now be available in your Salesforce Org.

================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: 14. Patch V2.51.15 Title: 1. Installation Link Slug: 2-51-15-patch-1-installation-link URL: https://help.skyvva.com/#article/2-51-15-patch-1-installation-link ================================================================================ # 1. Installation Link ## Here is the Installation Link for the SKYVVA Patch Version 2.51.15 - Developer Edition Org: [https://login.salesforce.com/packaging/installPackage.apexp?p0=04tIj0000008ukf](https://login.salesforce.com/packaging/installPackage.apexp?p0=04tIj0000008ukf) - Sandbox Org: [https://test.salesforce.com/packaging/installPackage.apexp?p0=04tIj0000008ukf](https://test.salesforce.com/packaging/installPackage.apexp?p0=04tIj0000008ukf)
Release Date: 29-May-2026
================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: 14. Patch V2.51.15 Title: 2. Enhancement Slug: 2-51-15-patch-2-enhancement URL: https://help.skyvva.com/#article/2-51-15-patch-2-enhancement ================================================================================ # 2. Enhancement ## Enhanced V3 Inbound Mapping to Support the Inbound Copy Node Function We have enhanced **Inbound Mapping V3** to support the **Copy Node** function. Previously, Inbound Mapping V3 did not support copying nodes. With this enhancement, users can now copy nodes in the inbound mapping target structure, including copying multiple nodes with the same name. This functionality is useful when working with flat data that needs to be mapped into repeated child records. For example, one Account record may contain data for two Contact records, such as Contact 1 fields and Contact 2 fields in a flat table, flat JSON, or flat XML structure. In this case, users can copy the Contact node and map each set of Contact fields separately. This makes it easier to map one parent record to multiple child records in Inbound Mapping V3. After this enhancement: - The **Copy Node** function is supported in **Inbound Mapping V3**. - Users can copy one or multiple nodes as needed. - Users can create copied nodes with the same node name. - This provides more flexibility when configuring inbound mappings with repeated or similar node structures. ## Enhanced Workday Adapter to Support Limit + Offset Pagination We have enhanced the **Workday Adapter** to support **Limit \+ Offset pagination** when retrieving data from an API. Previously, the adapter did not provide pagination configuration. This made it difficult to retrieve large result sets from APIs that return data across multiple pages. With this enhancement, users can now enable **Pagination** in the adapter configuration and use the **Limit \+ Offset** pagination method. For **Limit \+ Offset** pagination, users can configure where the data retrieval should start and how many records should be retrieved per request. - **Offset Index** defines the starting position of the records. - **Limit Index** defines how many records should be retrieved per request. For example, if users want to retrieve **10 records**, they can set the **Limit Index** value to `10`. - **For Business Data Field Name** is an optional field. Use this field when the API response is JSON and users want to check whether a specific business data node contains records. Example: MyAccount. If users want to check whether the direct response body is empty, this field can be left blank. Pagination stops automatically when the expected business data node is missing or empty in the API response. ## Enhanced ServiceNow Adapter to Support Limit + Offset Pagination We have enhanced the **ServiceNow Adapter** to support **Limit \+ Offset pagination** when retrieving data from the ServiceNow API. Previously, the ServiceNow Adapter did not provide pagination configuration. This made it difficult to retrieve large result sets when the ServiceNow API returned data across multiple pages. With this enhancement, users can now enable **Pagination** in the ServiceNow Adapter configuration and use the **Limit \+ Offset** pagination method. The supported pagination method is: Limit \+ Offset. For Limit \+ Offset pagination, users can configure where the data retrieval should start and how many records should be retrieved per request. * **Offset Inde**x defines the starting position of the records. * **Limit Index** defines how many records should be retrieved per request. For example, if users want to retrieve 10 records, they can set the Limit Index value to 10\. * **Business Data Field Name** is optional. Use this field when the API response is JSON and users want to check whether a specific business data node contains records. Example: MyAccount. If users want to check whether the direct response body is empty, this field can be left blank. Pagination stops automatically when the expected business data node is missing or empty in the API response. ## Enhanced GraphQL Adapter to Support Pagination We have enhanced the **GraphQL Adapter** to support pagination when retrieving data from a GraphQL API. Previously, the GraphQL Adapter did not provide pagination configuration. This could make it difficult to retrieve large result sets from GraphQL APIs that return data in multiple pages. With this enhancement, users can now enable **Pagination** in the GraphQL Adapter and configure the pagination method. The GraphQL Adapter now supports the following pagination methods: - **Limit \+ Offset** - **Limit \+ Cursor** For **Index \+ Offset** pagination, users can configure where data retrieval should start and how many records to retrieve per request. - **Offset Index** defines the starting position of the records. - **Limit Index** defines how many records should be retrieved. For example, if users want to retrieve **10 records**, they can set the **Limit Index** value to `10`. For **Limit \+ Cursor** pagination, users can configure how many records should be retrieved per request and which response field should be used as the cursor for the next request. - **Limit Index** defines how many records should be retrieved. For example, if users want to retrieve **10 records**, they can set the **Limit Index** value to `10`. - **End Cursor Field Name** defines the response field that returns the cursor/token of the last record. After the first callout retrieves records **1 to 10**, the API response returns an `endCursor` value for the last record. The adapter uses this `endCursor` value in the next callout to retrieve the next set of records, such as records **11 to 20**. For **Business Data Field Name** is an optional field. Use this field when the API response is JSON and users want to check whether a specific node contains data. Example: data This enhancement allows the GraphQL Adapter to retrieve large datasets page by page instead of only processing a single response. It improves flexibility and supports GraphQL APIs that require paginated data retrieval. ## Enhanced SOAP Adapter to Support Pagination We have enhanced the **SOAP Adapter** to support pagination when retrieving data from an API. Previously, the adapter did not provide pagination configuration. This made it difficult to retrieve large result sets from APIs that return data in multiple pages. With this enhancement, users can now enable **Pagination** in the adapter and configure the pagination method according to the API requirements. The adapter now supports the following pagination methods: - **Limit \+ Offset** - **Page Size \+ Cursor** For **Limit \+ Offset** **pagination**, users can configure where the data retrieval should start and how many records should be retrieved per request. - **Offset Index** defines the starting position of the records. - **Limit Index** defines how many records should be retrieved per request. For example, if users want to retrieve **10 records**, they can set the **Limit Index** value to `10`. For **Page Size \+ Cursor pagination**, users can configure how many records should be retrieved per request and which response field should be used as the cursor for the next request. * **Page Size** defines how many records should be retrieved per request. * **End Cursor** Field Name defines the response field that returns the cursor/token of the last record. For example, if users want to retrieve 10 records, they can set the Page Size value to 10\. After the first callout retrieves records 1 to 10, the API response returns an endCursor value for the last record. The adapter uses this endCursor value in the next callout to retrieve the next set of records, such as records 11 to 20\. **The Business Data Field Name** is an optional field. Use this field when the API response is JSON and users want to check whether a specific response node contains data. Example: data. If users want to check whether the direct response body is empty or not, this field can be left blank. **Empty Response Handling** For pagination, the **SOAP** adapter can stop pagination when the response does not contain business data or when the business node is empty. For example, if the response does not return the expected business node or the node is empty, pagination will stop, and processing can be completed successfully instead of creating a failed response message. ## Enhanced Monday.com Adapter to Support Pagination We have enhanced the [**Monday.com**](http://Monday.com) **Adapter** to support pagination when retrieving data from a [Monday.com](http://Monday.com) API. Previously, the [Monday.com](http://Monday.com) Adapter did not provide pagination configuration. This could make it difficult to retrieve large result sets from [Monday.com](http://Monday.com) APIs that return data in multiple pages. With this enhancement, users can now enable **Pagination** in the [Monday.com](http://Monday.com) Adapter and configure the pagination method. The [Monday.com](http://Monday.com) Adapter now supports the following pagination methods: - **Limit \+ Offset** - **Limit \+ Cursor** For **Index \+ Offset** pagination, users can configure where data retrieval should start and how many records to retrieve per request. - **Offset Index** defines the starting position of the records. - **Limit Index** defines how many records should be retrieved. For example, if users want to retrieve **10 records**, they can set the **Limit Index** value to `10`. For **Limit \+ Cursor** pagination, users can configure how many records should be retrieved per request and which response field should be used as the cursor for the next request. - **Limit Index** defines how many records should be retrieved. For example, if users want to retrieve **10 records**, they can set the **Limit Index** value to `10`. - **End Cursor Field Name** defines the response field that returns the cursor/token of the last record. After the first callout retrieves records **1 to 10**, the API response returns an `endCursor` value for the last record. The adapter uses this `endCursor` value in the next callout to retrieve the next set of records, such as records **11 to 20**. For **Business Data Field Name** is an optional field. Use this field when the API response is JSON and users want to check whether a specific node contains data. Example: data This enhancement allows the [Monday.com](http://Monday.com) Adapter to retrieve large datasets page by page instead of only processing a single response. It improves flexibility and supports [Monday.com](http://Monday.com) APIs that require paginated data retrieval. ================================================================================ Book: SKYVVA Release Notes Section: SKYVVA Release Notes Subsection: 14. Patch V2.51.15 Title: 3. Bug Fixed Slug: 2-51-15-patch-3-bug-fixed URL: https://help.skyvva.com/#article/2-51-15-patch-3-bug-fixed ================================================================================ # 3. Bug Fixed ## Fixed Database Query Field: Incorrect Query Generated When Mapping Fields from Parent to Child We have fixed an issue that occurred when generating a database query for fields mapped from a parent object to a child object. Previously, when a parent field was mapped while querying the child object, the generated SQL statement could include the parent object field without the correct join/reference. This caused the database query execution to fail with the following error: “Failed to process message: Database query execution failed: PreparedStatementCallback; uncategorized SQLException for SQL [SELECT Account.accbillingcountry, lastName, acc_id, contact_id FROM Contact WHERE acc_id IN (?)]; SQL state [S0001]; error code [4104]; The multi-part identifier "Account.accbillingcountry" could not be bound; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: The multi-part identifier "Account.accbillingcountry" could not be bound. This issue has been resolved by updating the query generation logic. Parent fields are now removed from the child interface query statement. After this fix, the child interface query can be generated and executed successfully without the SQL multi-part identifier error. ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Overview of the Any Connect Title: 1. Overview of the Any Connect Slug: 1-overview-of-the-agent URL: https://help.skyvva.com/#article/1-overview-of-the-agent ================================================================================ # 1. Overview of the Any Connect #### Introduction - **Any connect** is an easy tool that helps users to get your data into Salesforce objects. - Any Connect can also be used to extract data from database objects into any of the destinations as per business requirements. - Similarly, Agent can use to perform bulk deletions by exporting the **ID** fields for the data we wish to delete and using that source to specify deletions through the Any Connect. - Many networks and server monitoring solutions use what are called “**Any Connect**” to get values from the machines they are monitoring. It is programs that run on the remote machines and communicate with the main monitoring system. Some merchants try to hide the fact that they use Any Connect. They will try to deliver things like they “deploy” to remote systems or use other words, but it all compresses to installing custom software on the remote machines. - We have available connectors like **Pulsar, Kafka, Database, File, ftp, ftps, sftp, SOAP,** **REST, ActiveMQ, RabitMQ, JMS, Agent SAP ERP **and** Google Drive** ![](../images/2020/04/image_2020_11_05T14_00_47_299Z.png) #### Any Connect? This is the first** kanban** tab. In this tab we create a new entry e.g. a new connection for the direction **Agent -> Salesforce or Salesforce -> Agent.** We can choose from an existing entry or create a new one. For creating the new one we just enter here the name of the connection. Then the user clicks on the button 'Continue' and moves to the next tab which is **Agent -> Salesforce**. If we don't create a new entry we can choose from an existing one. Where are those entries come from?  What are these entries?  To make it clear user needs two sections e.g. one for the direction **Agent -> Salesforce** and **Salesforce -> Agent**. For the section **'Salesforce -> Agent'** the entries in the dropdown list are coming from the table '**adapterInstance__c**' where we have to store the connection record to use for the direction **Salesforce -> Agent**. In the section '**Agent -> Salesforce**' we don't have the record in Salesforce but in the h2 database of the agent. Therefore user needs to read the entries from the section when the user wants to see the connection created for the direction **Agent -> Salesforce**. These entries are stored only in the h2 database and not in Salesforce. But why don't users keep the connection for this direction e.g. **Agent -> Salesforce** also in Salesforce in the table '**adapterInstance__c**'? Users can store on both sides e.g. in **Salesforce** and also in **Agent**. Thus we can select from the table '**adapterInstance__c**' only and don't need to make a call to the agent to get the connection entries for the direction **Agent -> Salesforce**. For the run-time, users don't need the connection for the direction **Agent -> Salesforce**. Users need to have on this screen only to chose the entry and then continue to the next tabs to ping the connection. For the direction **Agent -> Salesforce** the connection is only needed by the agent run-time. Salesforce side users don't need that. On the Salesforce side user need the connection for the direction **Salesforce -> Agent**. Therefore this connection is stored in the table '**adapterInstnace__c**'. ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 2. FTP, SFTP & FTPS Slug: ftp-sftp-ftps URL: https://help.skyvva.com/#article/ftp-sftp-ftps ================================================================================ # 2. FTP, SFTP & FTPS #### Agent File Adapter Protocol FTP, SFTP & FTPS Agent File Adapter for consumers means Inbound Agent File Adapter. We use Inbound Agent File adapter for reading using the new event-driven mode with the consumer. We have an event-driven listener who is a camel consumer. We don’t need a scheduler. We add the real-time and event-driven feature to pick up immediately. To use the Agent file for consumers, we need to configure the Agent Control Board, and we need to create an Agent File adapter. ![](../images/2020/04/image_2020_11_05T13_16_26_339Z.png) **Please hit the link below ↓** [–How to use FTP Adapter (FileZilla Client & Server) with Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use** FTP Protocol** (FileZilla Client & Server), Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board. **FTP Type (SFTP)** - **FTP** (SSH File Transfer Protocol) is a secure file transfer protocol. It runs over the SSH protocol. It supports the full security and authentication functionality of SSH. - **FTPS** has pretty much-replaced legacy FTP as a file transfer protocol and is quickly replacing FTP/S. It provides all the functionality offered by these protocols, but more securely and more reliably, with easier configuration. There is basically no reason to use legacy protocols anymore. - **SFTP** also protects against password sniffing and man-in-the-middle attacks. It protects the integrity of the data using encryption and cryptographic hash functions and authenticates both the server and the user. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]For Excel and CSV File, user can just do the same as XML File. But the user only needs to change the file Protocol, adapter, and its properties accordingly. - Select Type "**Agent File**" - File Extension*: insert your extension file - Max. in each file size around 5MB - For on extensions use (.CSV) - For few extensions use (.CSV, .xls, .xlsx, xml, json) - For many extension use (.*)[/su_box] **Protocol FTP** Adapter is used as a connector to transfer data from the **FTP** server to Salesforce and from Salesforce to the **FTP** server. The File Transfer Protocol (FTP) is a standard network protocol used for the transfer of computer files between a client and server on a computer network. #### Case 1 **Create Inbound Agent File Adapter for JSON format and Protocol: FTP** **Create Inbound Agent File Adapter for excel format** 1. Adapter Section: Choose Protocol (**FTP**) 2. Adapter Properties: - Name: any Name - Type: Agent File - Direction: Inbound - Protocol: **FTP** - Host: Public IP Address - Username: FTP Username - Password: FTP password - Port: FTP Server Port(21) - File Type: **JSON** - Folder: Sreymay/Inbound/Json - File Name: Final_json5.json - What to do with the file after Processing?: Delete File - Connection Destination: your destination name ![](../images/2020/12/d.png) You will get a success message when the route started successfully. - Here is a result of JSON in Message Monitor ![](../images/2020/12/d-6.png) #### Case 2 **Create Inbound Agent File Adapter for Excel format and Protocol: FTPs** **Create Inbound Agent File Adapter for excel format** **Fill all required field** - Name: any Name - Type: Agent File - Direction: Inbound - Protocol: **FTPs** - Host: Public IP Address - Username: FTPs Username - Password: FTPs password - Port: FTPs Server Port - File Type: **Excel** - Folder: Sreymay/Inbound2/Excel - File Name: MyAccount2.xlsx - What to do with the file after Processing?: Delete File - Connection Destination: your destination name ![](../images/2020/12/image_2020_12_03T07_31_55_375Z.png) You will get a success message when the route started successfully. - Here is the result of Excel in Message monitor ![](../images/2020/12/image_2020_12_03T07_47_29_990Z.png) #### Case 3 **Create Inbound Agent File Adapter for XML format and Protocol: SFTP** **Create Inbound Agent File Adapter for XML format** **Fill all required field** - Name: any Name - Type: Agent File - Direction: Inbound - Protocol: **SFTP** - Host: Public IP Address - Username: SFTP Username - Password: SFTP password - Port: SFTP Server Port - File Type: **XML** - Folder: SFTP/XML - File Name: Account-SB3.xml - What to do with the file after Processing?: Delete File - Connection Destination: your destination name ![](../images/2020/12/image_2020_12_03T07_56_27_975Z.png) You will get a success message when the route started successfully. - Here is the result of XML in the Message monitor ![](../images/2020/12/image_2020_12_03T08_15_45_256Z.png) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 3. Database Adapter Slug: database URL: https://help.skyvva.com/#article/database ================================================================================ # 3. Database Adapter #### Introduction The conceptualization of a new Database Adapter on Agent **V3** is the same as **JDBC** Adapter on the old Agent. It used as a connector to transfer data from Salesforce to Database and from Database to Salesforce. **Any Connect** or Agent **V3** currently supports many types of Databases such as **Oracle, Ms Access, SQL Server, MySQL, and PostgreSQL.** ![](../images/2020/07/coverDatabase-1.png) The user will learn how to send data in multiple objects from Salesforce to the multi-table in the database synchronously and asynchronously through Agent **V3** or **Any Connect**. The user will know about Transactional and Non-Transaction mode during processing. Creating an adapter, called Database Adapter within Internal Key Management for insert a record to the database. **MYSQL Database** is used for example below to Insert a record to the database and it located on **EC2 instance**. **Pre-required** - Create Integration and configuration on the new Agent Control Board - Create database adapter (for outbound and inbound) on new Agent Control Board - Create Metadata Provider, Repository and generate Message Type from the database - Create outbound Interface (Request) and inbound Interface (Response) - Checking Cache monitoring status - Callout **V3** to new Agent - Transactional and None-Transactional mode #### Case1 –  [How to do insert operation using a Synchronous and Asynchronous outbound interface?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Insert Operation, by hitting the upper link.           – [What is an Integration and How to create it?](#article/what-is-an-integration-and-how-to-create-it)   Since the user now completely understand; How to create Integration, by hitting the upper link. **Step2: ****Click on Agent Control Board Tab**   –[How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. **Step-3:** **Create an outbound Database Adapter on the new Agent Control Board** - Fill all required field Name: *any name* - Type: Agent Database - Direction: Outbound - Status: Active - Database Type: *MySQL* - Driver: *mysql.jdbc.Driver* - Username: (*your user name on database)* - Password: (*your password on the database)* - Hostname: *124.40.1949 (public ipv4 on EC2 AWS)* - Port: *3306(default)* - Database Name: your database name - Insert Operation Mode: *Internal Key Management* - Connection URI: *jdbc:mysql://3.124.40.194:3306/testdb (connection URL format is protocol//[hosts][/database])* - Connection Destination: *your destination name* *** on EC2, make sure you have allowed MYSQL port 3306 on Group Policy for connectivity from other systems. ![](../images/2020/07/4-1-Copy-Copy.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - There are two kinds of Insert Operation mode.** Internal Key management**, it will ignore the value for the field Primary Key and Foreign Key send from Salesforce. This key-value is generated automatically base on the Auto-Increment field define inside the database. In this case, Agent will return the value that it is the Primary key generated by the database to Salesforce. - For **External Key management**, the field Primary Key and Foreign Key in the database will use the value sent from Salesforce. In this case, we no need to define a response Interface because the Primary Key has been known. - **Internal Key or External Key management **is designed to work for database INSERT operation only. For other operations, this mode is no functionality. [/su_box] **Step-4** **Generate Message Type from the database** –  How to create a message type? Since the user now completely understand; How to create a message type, by hitting the upper link. - Fill all required field then click Retrieve Database to get the Table’s record Agent Instance: *your instance name* - Adapter Name: *your adapter name* - Object Type: Table, View, Procedure - Database Operation: Select* (database’s template will be generated based on operation*) - Choose Table’s name for creating Message Type - After that, we got the Message Type generated from the database - Here the example for the Table called: “**tbl_account_db_atn**” [su_box title="**For Insert operation, we have a template for generating Message Type for a single Table**" box_color="#2a8af0" title_color="#000000"] - Create a root Message Type with the prefix “**Database_**” + “**Table’s name**” within type as “*Database Table Template*” - Create two Message Type as a child of the root with the fixed name. The first one is “**Request**”, type as “*Database Request*”. And the other one is “**Response**”, type as “*Database Response*” - Under “**Request**”, create a Message Type as the child. The Table’s name is used for this Message Type within type as “*Database Table”. *i.e:*  tbl_account_db_atn. *In this Message Type, was generated the field name like on Table - Under “**Response**”, create a Message Type as the child with the fixed name “**records**” within type as “*Plain structure*” - Under “**records**”, create a Message Type as the child. The Table’s name is used for this Message Type within type as “*Plain structure*”. In this Message Type, was generated the fixed field name: “*Id*” and “*databaseRecordId”* [/su_box] ![](../images/2020/07/insertTemplate1.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Currently, we need to manually re-order Message Type as the parent and child following to Request and Response. As the example below, we have three Message Type refer to three Tables on the database. - Under “**Request”** we take “*tbl_account_db_*atn” as the parent of “*tbl_contact_db_atn*”* and *“*tbl_case_db_atn*” as the child of “*tbl_contact_db_atn”, these Message Type are Database Table type. On “**Response”**, and under “**records**” *we take “*tbl_account_db_*atn” as the parent of “*tbl_contact_db_atn*”* and *“*tbl_case_db_atn*” as the child of “*tbl_contact_db_atn”, these Message Type are Plain structure type.* [/su_box] ![](../images/2020/07/10-Copy-Copy.png) **Step-5 ****Setup Interface** - For creating the Interface need to follow this guide. [– What is an interface and how to create it?](#article/1-what-is-an-interface-and-how-to-create-it) Since the user now completely understand; How to create an Interface, by hitting the upper link. - **Define the request Interface** Create outbound Interface for Synchronous mode, operation(insert), choose Adapter, Metadata Provider, Repository, and Message Type (*Request*) - **Define the response Interface ** We need to define a response Interface because of INSERT operation within the Internal Key Management mode, the value of the Primary Key did not send from Salesforce, it is auto-generated by the database. In this case, Agent will return the Id (Primary Key) to Salesforce. The user can take this response to do Inbound V3. For example, the user can update the existing Account’s object to make sure the record on Salesforce and database, are the same. - Create inbound Interface with Synchronous mode, operation(update), choose Metadata Provider, Repository, and Message Type (*Response*) - In the example below, we use the response from Agent to update the existing sObject - Mapping **Adding Response Interface (Inbound) to Request Interface (Outbound)** - Go to the Request Interface details page then add Response Interface on-field Response Interface. In this example, the Request interface was named “*MYSQL_Database_InternalKEY_Insert_SYNC_multiple table*” and the Response interface is “*Response Insert SYNC*”![](../images/2020/07/repsoneInsert.png) **Step- 6: Checking Cache record to ensure it synchronized to new Agent.** Go to Agent control board then click Cache Monitor [– How to use Cache Monitoring on Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use Cache Monitoring , by hitting the upper link. ![](../images/2020/07/21-3.png)[su_box title="Note" box_color="#2a8af0" title_color="#000000"]We are using Cache on a new Agent for storing the SKYVVA object and its setting, so the new Agent will be looking to Cache record on its local database (H2 Database) to get the SKYVVA object’s setting before transfer data. It is different from the old Agent that is always read the SKYVVA object’s setting from Salesforce again and again that it makes too much time before transfer data. The Cache is built automatically when the Interface has linked to which Adapter has a connection destination. [/su_box] **Step-7:  Callout v3** - Navigate to Setup gear icon => Developer Console => Debug menu => Open Execute Anonymous Window then put sample code below and click the Execute button. [aux_code language="javascript" theme="tomorrow"  extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0014E00001C8fAwQAJ'};//Account Id skyvvasolutions.Iservices.invokeCalloutV3('Test MYSQL-Database Integration','MYSQL_Database_InternalKEY_Insert_SYNC_multiple table',ids,'SYNC',c); [/aux_code] - After callout, the record is inserted into the database then its response back to update the relevant object. As shown the result on Message Monitoring below: ![](../images/2020/07/23-1.png) - Checking the result on the database, the record has been inserted correctly on the **MYSQL** database In this example field “*DB_AccountId*” is the primary key of Table “*tbl_account_db_atn*” ![](../images/2020/07/24-2.png) - field “*DB_ContactId*” is primary key of Table “*tbl_contact_db_atn*” ![](../images/2020/07/25-3.png) - field “*DB_CaseId*” is primary key of Table “*tbl_case_db_atn*” ![](../images/2020/07/26-5.png) #### How to do insert operation using an Asynchronous outbound interface? In this example, we use the same Interface as we have practiced for the Synchronous scenario, just change the processing mode to Asynchronous on Interface then Callout v3. - **Request Interface** ![](../images/2020/07/52.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Asynchronous mode with Outbound Interface is a dependency on the field “Transfer Package Size” on the Interface. By default, this field is blank mean that the value “1”. The calculation of API call is depending on this field. For example, in case we are sending 3 records Account’s id: - If “Transfer Package Size=2”, it will execute 2 API call. - If “Transfer Package Size=1”, it will execute 3 API call. [/su_box] - **Response Interface** We create another inbound Database Adapter that connects to the database in as inbound direction then add it to the Response Interface ![](../images/2020/07/53.png) - **Callout v3** Navigate to Setup gear icon => Developer Console => Debug menu => Open Execute Anonymous Window then put code for update Account object then click the Execute button. [aux_code language="javascript" theme="tomorrow" extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011X00000hPU1iQAG'};//Account Id skyvvasolutions.Iservices.invokeCalloutV3('Test MYSQL-Database Integration','MYSQL_Database_InternalKEY_Insert_SYNC_multiple table',ids,'Auto',c); [/aux_code] [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If your data contain much more, so you cannot process it by Synchronous call due to the request time out error, we need an Asynchronous. In the Asynchronous call, multi-task does at the same time in the background job, the user no need to wait to see the response back. In this case, Agent will be responding to the update message Complete or Failed for a while. [/su_box] After callout, the record is inserted into the database then its response back to update the relevant object. As shown the result on Message Monitoring below: ![](../images/2020/07/InsertMonitoring_Async.png) #### Insert operation and Transactional mode Normally, when we creating a new Interface the field “isTransactional” is unchecked it means that Non-** **Transactional Mode. If that field is checked then it is Transactional mode. ![](../images/2020/07/27-3.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - **Transactional Mode**: If any error while insert of one message then the whole tree will be marked as Failed status. - Non-transactional Mode: If any error while insert of one message then the respective message will be marked as Failed status - These two modes are support both Interface processing Synchronous and Asynchronous.[/su_box] The example below has shown the Non-transactional Mode which is one message is failed to insert. ![](../images/2020/07/28-3.png) The example below is used the same message scenario for non-transactional Mode, it just switching to Transactional Mode. In Transactional Mode, when one message is unable to do any database operation then it makes another message which is complete to rollback and marked the whole tree as Failed status. - For Synchronous mode, the Agent will return only the root message status. ![](../images/2020/07/29-2.png) - For Asynchronous mode, the Agent will return the whole tree message status.![](../images/2020/07/asysnINSERT-Transaction.png) We explain here how to do **INSERT** operation using Synchronous and Asynchronous outbound interface. We have understood how to create a Database Adapter, generate Message Type from the database table, Primary Key and Foreign Key on Mapping too, Internal Key and External Key Management, response Interface, and callout **V3** to the Agent. #### Case2 [-How to do update operation using an Asynchronous / Synchronous outbound interface?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Update operation, by hitting the upper link. Users can use the same Database Adapter in the previous section as it used for **INSERT** operation. Now we use that Adapter for **UPDATE** operation. ![](../images/2020/07/update1-Copy.png) ![](../images/2020/07/updateMonitoring-2-Asysnc.png) We explain here how to do **UPDATE** operation using a Synchronous and Asynchronous outbound interface. We have understood about Message Type in WHERE-Clause, knowing about putting value in WHERE-Clause on mapping tool, and callout **V3** to Agent. And we also have known about Transactional Mode. #### Case3 [-How to do delete operation using an Asynchronous / Synchronous outbound interface?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use Delete operation, by hitting the upper link. Users can use the same Database Adapter in the previous section as it used for **INSERT** operation. Now we use that Adapter for **DELETE** operation. ![](../images/2020/10/deleet1-Copy.png) ![](../images/2020/10/deleteMonitoring-2Async.png) We explain here how to do **UPDATE** operation using a Synchronous and Asynchronous outbound interface. We have understood about message type in WHERE-Clause, knowing about putting value in WHERE-Clause on mapping tool, and callout **V3** to Agent. And we also have known about Transactional Mode. #### Case4 [-How to do Select operation using an Asynchronous / Synchronous outbound interface?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use Select opertaion, by hitting the upper link. Users can use the same Database Adapter in the previous section as it used for **INSERT** operation. Now we use that Adapter for **QUERY** operation. ![](../images/2020/10/select2-Copy.png) ![](../images/2020/10/SelectSYNC.png) We explain here how to do select operation **QUERY** using Synchronous and Asynchronous outbound interface. We have understood about Message Type in WHERE-Clause, knowing about putting value in **WHERE** condition in mapping tool, Database Query’s field, and callout **V3** to Agent. #### Case5 –  [ How to call Stored Procedure on a new Agent?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to call Stored Procedure, by hitting the upper link. Users can use the same Database Adapter in the previous section as it used for call **INSERT** Procedure. Now we use that Adapter for  **Stored** operation. ![](../images/2020/04/image_2021_01_07T09_19_44_961Z.png) ![](../images/2020/04/image_2021_01_07T09_44_40_000Z.png) A stored procedure is a set of SQL statements with an assigned name, which are stored in an RDBMS as a group, so it can be reused and shared by multiple programs. Stored procedures can access or modify data in a database, but it is not tied to a specific database or object, which offers a number of advantages. Users can use the **ORACLE** database as an example. In here, when we call the Stored Procedure to the Database to do any database operation, we have expected it will respond back the result to the Salesforce. In this case, we need to have the INPUT and OUTPUT parameters in the Stored Procedure and create a Request and Response Interface corresponding to those parameter types. The ORACLE database located on an **EC2** instance and the Stored Procedure was written to Insert new data if no record present on the Database and update data if the record exists. **Check the result on Message Monitoring** The Stored Procedure has been executed and response to Salesforce correctly ![](../images/2020/12/14.png) We call how to call Stored Procedure from Salesforce to the database, and respond to the Salesforce, we have known how the Message type structure generated from the Database. #### Case6 **Ms Access database** The users can create databases to store and organize large amounts of data in a structured manner. It offers various features such as tables, forms, queries, reports, and macros to facilitate data entry, manipulation, and analysis. Users can define relational and tween tables, enforce data integrity rules, and create user-friendly interfaces to interact with the data. **The Ms Access adapter detail** The MS Access adapter is a software component that facilitates the integration and communication between Microsoft Access with **SKYVVA** Agent databases. It acts as a bridge, allowing Access to connect with **SKYVVA** Agent, such as SQL servers, Oracle databases etc. The Ms Access Adapter provides a set of tools and functionality that enables users to import, export, and manipulate data between Access with **SKYVVA** Agent. It allows Access users to establish connections, retrieve data, perform queries, and update records in **SKYVVA** Agent. By using the MS Access adapter, users can leverage the features and capabilities of Access while seamlessly working with data from **SKYVVA** Agent. It simplifies data management tasks, enhances data sharing and collaboration, and expands the possibilities of Access by enabling integration with **SKYVVA** Agent. Ms Access is a relational database management system (RDBMS) developed by Microsoft. It allows users to store, manage, and manipulate data using a graphical user interface. SKYVVA Agent, on the other hand, is a data integration tool that enables seamless communication and integration between different systems. **Inbound Adapter** - In the context of integration **SKYVVA**, an inbound adapter is a component that allows data to be received from an external system and passed to the integration platform. The adapter acts as a bridge between the **SKYVVA **integration app and the Salesforce platform, ensuring seamless data flow. - Ms Access is a relational database management system (RDBMS) developed by Microsoft. It provides a user-friendly interface and **SKYVVA** integration app to manage and manipulate databases. Access is often used for smaller-scale projects, single-user or small team applications, and departmental solutions. It's commonly used to create desktop databases for handling data, queries, forms, and reports. - Configure target system integration define the integration settings for the target system where you want to send the data from Ms Access. This can include connection details, authentication, and any specific requirements or protocols supported by the target system. ![](../images/2023/07/image_2023_07_12T14_59_07_896Z.png) - [How to use Ms Access inbound adapter with operation type—INSERT ?](#article/how-to-use-ms-access-inbound-adapter-with-operation-type-insert) - [How to use Ms Access inbound adapter with operation type—UPSERT?](#article/how-to-use-ms-access-outbound-adapter-with-operation-type-upsert) - [How to use Ms Access inbound adapter with operation type—UPDATE?](#article/how-to-use-ms-access-inbound-adapter-with-operation-type-update) - [How to use Ms Access inbound adapter with operation type—DELETE?](#article/how-to-use-ms-access-inbound-adapter-with-operation-type-delete) **Outbound Adapter** - Outbound adapters are components or connectors used to send data from one **SKYVVA** integration app to Salesforce. **SKYVVA** integration app an integration platform or middleware that facilitates communication between different applications. The purpose of an outbound adapter is to format and transmit data in a way that the receiving system can understand and process it correctly. - Microsoft Access is a database management system (DBMS) that provides a simple and easy-to-use platform for creating and managing databases. It's often used for small-scale applications or data storage needs. Access databases can store structured data and support SQL queries. If you want to integrate Ms Access with **SKYVVA** integration app, user have a few options: - Direct Integration: If the other system you want to connect to supports ODBC  DB (Object Linking and Embedding Database) connections, user can use those drivers to directly access the data in the Ms Access database. - User can use middleware or integration platforms **SKYVVA** integration app if it supports Access to facilitate communication between Ms Access and other systems. These platforms often provide pre-built connectors or adapters for popular databases and applications, making it easier to establish the integration. ![](../images/2023/06/image_2023_06_29T14_39_44_648Z.png) - [How to use Ms Access outbound adapter with operation type—INSERT ?](#article/how-to-use-ms-access-outbound-adapter-with-operation-type-insert) - [How to use Ms Access outbound adapter with operation type—UPSERT?](#article/how-to-use-ms-access-inbound-adapter-with-operation-type-upsert) - [How to use Ms Access outbound adapter with operation type—UPDATE?](#article/how-to-use-ms-access-outbound-adapter-with-operation-type-update) - [How to use Ms Access outbound adapter with operation type—DELETE?](#article/how-to-use-ms-access-outbound-adapter-with-operation-type-delete) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Processing Mode Title: 1. Inbound Processing Slug: inbound-processing URL: https://help.skyvva.com/#article/inbound-processing ================================================================================ # 1. Inbound Processing #### Inbound Processing Within **Agent, Control Board **operations can be executed a number of ways, such as manually, automatically via an API call, or automatically via a schedule. This page covers setting up a schedule to run your operation automatically. Schedules contain information about when an operation will automatically be activated. **Agent Control Board** lets you define virtually any type of schedule you need, such as every Friday at 5 pm, the last Friday of each quarter, or every hour for one day. #### The functionality of Agent Scheduler These schedules are important. They play different roles. To know more detail about these schedulers, you can check them below: [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Schedulers is a type of scheduled job which runs regularly bases on-time setting. There are categories of Schedulers.[/su_box] - **Schedule per integration:** is a global scheduler process all interfaces on integration, it will skip either Interface group or interface that is running its scheduler. ![](../images/2020/04/image_2020_08_17T08_16_54_475Z.png) - **Schedule per-interface group:** process all interfaces in the group, if the scheduler has been started then all the schedule of the interface in this group will stop automatically. - **Schedule per interface:** it will process a specific interface. It cannot be started if its interface group scheduler has already started. ![](../images/2020/04/image_2020_08_17T08_13_56_246Z.png) - **Other: **Others are Scheduler which doesn't fit the above 3 categories which are per Integration, per Interface group, and per Interface. This Scheduler has come under the section **ilog__2** table using a Scheduler from Agent. **Prerequisite** Before setup the scheduler, there are some properties you must know: - **Schedule Mode →**There are two types of modes that you can choose. These modes are Processing and Reprocessing. - **Integration Name →**The name of your integration. - **Interface Name →**The name of your interface in an integration. - **Integration Mode →**The direction of integration.  **Inbound** - **Daily Frequency →** 1. **Run at→** If you check this button it means you want the scheduler to run once a day but at a specific time. 2.** Run every→** The scheduler will run every hour or minute depending on you who set them up. If you want to run every X hour then you have to choose Hours. However, you have to choose the starting time along with the ending time you want it to end. - **Weekly Frequency →** The default is all day is selected. It means the scheduler will run every day. But if you want to skip one day or more you can deselect that day. - **Monthly Frequency →** The function of this one is similar to the above. If you want the scheduler to skip then deselect the month you don’t want to run. - **Choose the schedule Mode →**Processing or Reprocessing - Choose Integration, Interface Name - **Select Integration Mode** **→Inbound** - Choose the one of Frequency you want to set for running - Click **Save**. ![](../images/2020/04/image_2020_07_20T12_27_50_089Z.png) **Agent Control Board Scheduler Inbound Processing** Agent Scheduler is one of the **SKYVVA** schedules which is used in agent for running integration service. You can set up the scheduler as your wish. To find Agent Scheduler If you want to know where Agent scheduler is, please see the steps below: ![](../images/2020/04/image_2020_07_20T12_24_37_296Z.png) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 4. Pulsar Adapter Slug: agent-pulsar URL: https://help.skyvva.com/#article/agent-pulsar ================================================================================ # 4. Pulsar Adapter #### Introduction: - The source of an event can be from internal or external inputs. Events can generate from a user, like a mouse click or keystroke, an external source, such as a sensor output, or come from the system, like loading a program. - This is the modern way of communication between different applications. It has two components: Publish and subscribe. For example, Netflix, youtube. - An event is any significant occurrence or change in state for system hardware or software. An event is not the same as an event notification, which is a message or notification sent by the system to notify another part of the system that an event has taken place. **Pulsar** **Adapter** is basically an Event-based communication. Event-based communication contains two main components: Publish (**Producer**) and Subscribe (**Consumer**). The work of a publisher is to publish messages into a queue or topic which is Kafka/Pulsar and the middleware tool like this will maintain the message, these adapters follow the principle of Publish and Subscribe. And they will deliver messages to the consumer. Then all the applications can subscribe. For example, Netflix plays the role of a publisher. and we play the role of the subscriber(**Consumer**). #### Event-based Communication: - An event-driven architecture can help organizations achieve a flexible system that can adapt to changes and make decisions in real-time. Real-time situational awareness means that business decisions, whether manual or automated, can be made using all of the available data that reflects the current state of your systems. - Events are captured as they occur from event sources such as Internet of Things (IoT) devices, applications, and networks, allowing event producers and event consumers to share status and response information in real-time. - Organizations can add event-driven architecture to their systems and applications to improve the scalability and responsiveness of applications and access to the data and context needed for better business decisions. - This is the modern way of communication between different applications. It has two components: Publish and subscribe. For example, Netflix, youtube. - We can see the picture given below for reference. The SAP is a producer who pushing messages and Kafka or Pulsar works here as middleware, and maintain messages. All other applications like Twitter, HubSpot, salesforce is a consumer or subscriber here. So SAP just needed to publish it one time, they don't need to send it to different applications individually. #### How does event-driven architecture work? **SKYVVA** Integration is a comprehensive set of integration and messaging technologies to connect applications and data across hybrid infrastructures. It is an agile, distributed, containerized, and **API**-centric solution. It provides service composition and orchestration, application connectivity and data transformation, real-time message streaming, change data capture, and API management—all combined with a cloud-native platform and toolchain to support the full spectrum of modern application development. - The event-driven architecture is made up of event producers and event consumers. An event producer detects or senses an event and represents the event as a message. It does not know the consumer of the event or the outcome of an event. - After an event has been detected, it is transmitted from the event producer to the event consumers through event channels, where an event processing platform processes the event **synchronously**. Event consumers need to be informed when an event has occurred. They might process the event or may only be impacted by it. - The event processing platform will execute the correct response to an event and send the activity downstream to the right consumers. This downstream activity is where the outcome of an event is seen ![](../images/2020/08/kafkaAd.png) - One more example for better understanding. We all use Netflix to watch movies. It uses the Queuing tool and streaming tool. Netflix here plays the role of producer and we play the role of the consumer. Netflix uploads Movie once and all others who are subscribers of Netflix can watch. They do not need to request again and again. To send it individually it takes so much time, here we just needed to upload once and all the subscribers will get it. ![](../images/2020/08/kafkaAd1.png) #### #### Event-Driven Technology Terminology: We have 5 main Event terminology. - Publish - Subscribe - Streaming - Producer - Consumer Check the picture below for a description. ![](../images/2020/08/kafkaAd2.png) #### Any Connect: - Any connect is an easy tool that helps users to get their data into Salesforce objects. - Any Connect can also be used to extract data from database objects into any of the destinations as per business requirements. - Similarly, Agent can use to perform bulk deletions by exporting the ID fields for the data we wish to delete and using that source to specify deletions through the Any Connect. - Many networks and server monitoring solutions use what are called “Any Connect” to get values from the machines they are monitoring. It is a program that runs on remote machines and communicates with the main monitoring system. Some merchants try to hide the fact that they use Any Connect. They will try to deliver things like they “deploy” to remote systems or use other words, but it all compresses to installing custom software on the remote machines. - We have available connectors like Pulsar, Kafka, Database, File, ftp, ftps, sftp, SOAP and REST. ![](../images/2020/10/Any-Connect.png) #### Pulsar Adapter: We have 2 Pulsar Adapter- - **Inbound/Consumer Pulsar Adapter:** We use an Inbound Pulsar Adapter when somebody pushes the topic into a topic customer on the Kafka side, then we are consuming. We have an event-driven listener who is a camel consumer. We don't need a scheduler. We can consume immediately. This is the Inbound process because we are receiving data here. - **Outbound/Producer Pulsar Adapter:** We need an Outbound Pulsar Adapter when we want to send data out from salesforce, here We need to create a topic first. From salesforce, we can send data messages to the API endpoint of our agent, and then we have a camel producer to publish into the topic invoice, which is on the Kafka side. This is the outbound process because we are sending data. Check the picture given below for reference. ![](../images/2020/10/pulsar1.png) #### Case 1 **How to use an Agent Pulsar adapter for consumers?** - Users will learn how the Agent **Pulsar** adapter works for Consumers. In simple words, an Agent pulsar adapter for Consumer means Inbound Pulsar Adapter. - Users use an Inbound Pulsar Adapter when somebody pushes the topic into a topic customer on the Kafka side, then we are consuming. We have an event-driven listener who is a camel consumer. We don't need a scheduler. We can consume immediately. - This is the Inbound process because we are receiving data here. It plays the role of the consumer. **Step1: ****Click on Agent Control Board Tab**   –[How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. - **Use Case for file type CSV** **Step2: Create Adapter:** - Add any name in Topic and the topic will automatically be created on the Pulsar server. - Select File Type. - Select Connection Destination which we have created recently. ![](../images/2020/10/pulsar4-1.png) ![](../images/2020/10/pulsar5-1.png) **Step3: Configure Interface page:** - Create Integration. - Create Interface. - Add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/10/pulsar3.png) - Add Inbound Adapter ![](../images/2020/10/pulsar6.png) **Step4: Start the route:** - We need to start the route. ![](../images/2020/10/pulsar12.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]First we need to add the Adapter in interface section. Otherwise we will get an error while starting route.[/su_box] **Step5: Do Mapping:** ![](../images/2020/10/pulsar7.png) **Step6: Callout to Pulsar Server:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Command: (User need to create CSV file and also need to put ****File on agent-tools-server) For example: /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_CSV_Inbound.csv and execute the below command on Ec2 new agent-tools-server command prompt.** **pulsar-client produce non-persistent://vip/skyvva/InboundCSVTopic -f /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_CSV_Inbound.csv ** **OR** **When Is Persistent checkbox is true inside adapter property then you need to use Persistent command:** **pulsar-client produce persistent://vip/skyvva/InboundCSVTopic -f /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_CSV_Inbound.csv** [/aux_code] ![](../images/2020/10/pulsar9.png) **Step7: Message Monitoring:** ![](../images/2020/10/pulsar8.png) - **Use Case for file type XML** **Step1: We need to do Agent control board configuration as we did in CSV. Don't need to create new.** **Step2: Create Adapter:** - Add any name in Topic and the topic will automatically be created on the Pulsar server. - Select File Type. - Select Connection Destination which we have created recently. ![](../images/2020/10/pulsar10-1.png) ![](../images/2020/10/pulsar11-1.png) **Step3: Configure Interface page:** - Create Integration. - Create Interface. - Add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/10/pulsar19.png) - Add Inbound Adapter ![](../images/2020/10/pulsar20.png) **Step4: Start the route:** - We need to start the route. ![](../images/2020/10/pulsar25.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]First we need to add the Adapter in interface section. Otherwise we will get an error while starting route.[/su_box] **Step5: Do Mapping:** ![](../images/2020/10/pulsar21.png) **Step6: Callout to Pulsar Server:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Callout: (You need to execute below command in Ec2 new Agent-tools-server command prompt and also need to past XML file in one line.** **1st Way: ** **Sample Data- In the Format we need to add namespace in the root.** Testing Pulsar InBound Account1 Testing Pulsar InBound Account1 Description. Testing Pulsar InBound Contact1 15.00 K_I_Asset001 Testing Pulsar InBound Asset1 Testing Pulsar InBound Contact2 15.00 K_I_Asset002 Testing Pulsar InBound Asset2 Testing Pulsar InBound Account2 Testing Pulsar InBound Account2 Description. Testing Pulsar InBound Contact3 15.00 K_I_Asset003 Testing Pulsar InBound Asset3 Testing Pulsar InBound Contact4 15.00 K_I_Asset004 Testing Pulsar InBound Asset4 **2nd Way: ** **Upload XML File on /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_XML_Inbound.xml** **Command: ** **pulsar-client produce non-persistent://vip/skyvva/InboundXMLTopic -f /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_XML_Inbound.xml** [/aux_code] ![](../images/2020/10/pulsar22.png) **Step7: Message Monitoring:** ![](../images/2020/10/pulsar23.png) - **Use Case for file type JSON** **Step1: We need to do Agent control board configuration as we did in CSV. Don't need to create new.** **Step2: Create Adapter:** - Add any name in Topic and the topic will automatically be created on the Pulsar server. - Select File Type. - Select Connection Destination which we have created recently. ![](../images/2020/10/json5.png) ![](../images/2020/10/json6.png) **Step3: Configure Interface page:** - Create Integration. - Create Interface. - Add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/10/json1.png) - Add Inbound Adapter ![](../images/2020/10/json2.png) **Step4: Start the route:** - We need to start the route. ![](../images/2020/10/pulsar25.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]First we need to add the Adapter in interface section. Otherwise we will get an error while starting route.[/su_box] **Step5: Do Mapping:** ![](../images/2020/10/json3.png) **Step6: Callout to Pulsar Server:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Callout: (You need to execute below command in Ec2 new Agent-tools-server command prompt.** **1st Way:** **Sample Data-** { "MyAccount":{ "Name":"Testing Pulsar InBound Account1", "Description":"Testing Pulsar InBound Account1 Description", "MyContact":{ "FirstName":"Testing", "LastName":"Pulsar InBound Contact1", "MyAsset":{ "Quantity":15.00, "SerialNumber":"K_I_Asset001", "Asset_Name":"Testing Pulsar InBound Asset1" } } } } **2nd Way:** ** Upload JSON File on /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_JSON_Inbound.json** **Command: ** **pulsar-client produce non-persistent://vip/skyvva/InboundJSONTopic -f /home/ec2-user/paras_agent_pulsar/Inbound/Pulsar_JSON_Inbound.json** [/aux_code] ![](../images/2020/10/json8.png) **Step7: Message Monitoring:** ![](../images/2020/10/json7.png) #### Case 2 **How to use an Agent Pulsar adapter for Producer?** - Users will learn how the Agent **Pulsar** adapter works for Producers. In simple words, an Agent pulsar adapter for Producer means Outbound Pulsar Adapter. - Users need an Outbound Pulsar Adapter when we want to send data out from salesforce, where users need to create a topic first. From salesforce, we can send data messages to the **API** endpoint of our agent, and then we have a camel producer to publish into the topic invoice, which is on the Kafka side. - This is the outbound process because we are sending data out here, It plays the role of Producer. **Step1: ****Click on Agent Control Board Tab**   –[How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. - **Use Case for file type CSV** **Step2: Create Adapter:** - Add any name in Topic and the topic will automatically be created on the Pulsar server. - Select Direction Outbound. - Select Type Agent Pulsar - Select File Type. - Select Connection Destination which we have created recently. ![](../images/2020/10/pulsarout4-1.png) ![](../images/2020/10/pulsarout5.png) **Step3: Configure Interface page:** - Create Integration. - Create Interface. - Add Metadata Provider, Istructure Repository, and Message type to the interface page as shown below. ![](../images/2020/10/pulsarout1.png) - Add Inbound Adapter ![](../images/2020/10/pulsarout2.png) **Step4: Do Mapping:** ![](../images/2020/10/pulsar7.png) **Step5: Callout:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0016E00001CHaYWQA1','0016E00001CHaYXQA1'}; **//Account Record Ids** List result = skyvvasolutions.Iservices.invokeCalloutV3('Agent_Pulsar_Adapter','Pulsar_CSV_Outbound',ids,'SYNC',c); [/aux_code] **Step6: Callout to pulsar server:** [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""] **Command :( You need to execute below command on ec2 new agent-tools-server command prompt). ** **pulsar-client consume -n 0 -s test non-persistent://vip/skyvva/OutboundCSVTopic** **Separator: Comma ( , ) OR Semi Colon ( ; ) OR Tab ( Tab ) OR Pipe ( | )** [/aux_code] ![](../images/2020/10/pulsarout6.png) **Step7: Message Monitoring:** ![](../images/2020/10/pulsarOut.png) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 5. Kafka Adapter Slug: agent-kafka URL: https://help.skyvva.com/#article/agent-kafka ================================================================================ # 5. Kafka Adapter #### Introduction: - The source of an event can be from internal or external inputs. Events can generate from a user, like a mouse click or keystroke, an external source, such as a sensor output, or come from the system, like loading a program. - This is the modern way of communication between different applications. It has two components: Publish and subscribe. For example, Netflix, youtube. - An event is any significant occurrence or change in state for system hardware or software. An event is not the same as an event notification, which is a message or notification sent by the system to notify another part of the system that an event has taken place. **Kafka Adapter** is basically an Event-based communication. Event-based communication contains two main components: Publish (Producer) and Subscribe (Consumer). The work of a publisher is to upload a message into a queue or topic, which is Kafka or Pulsar and the middleware tool like Kafka and Pulsar will maintain the message, they follow the principle of Publish and Subscribe. And they will deliver messages to the consumer. Then all the applications can subscribe. For example, Netflix plays the role of a publisher. and we play the role of the subscriber(Consumer). Same way Kafka Adapter which we will see in this tutorial. #### Event-based Communication: - An event-driven architecture can help organizations achieve a flexible system that can adapt to changes and make decisions in real-time. Real-time situational awareness means that business decisions, whether manual or automated, can be made using all of the available data that reflects the current state of your systems. - Events are captured as they occur from event sources such as Internet of Things (IoT) devices, applications, and networks, allowing event producers and event consumers to share status and response information in real-time. - Organizations can add event-driven architecture to their systems and applications to improve the scalability and responsiveness of applications and access to the data and context needed for better business decisions. - This is the modern way of communication between different applications. It has two components: Publish and subscribe—for example, Netflix, youtube. - We can see the picture given below for reference. The SAP is a producer who pushing messages and Kafka or Pulsar works here as middleware and maintains messages. All other applications like Twitter, HubSpot, salesforce is consumer or subscriber here. So SAP just needed to publish it one time, they don't need to send it to different applications individually. - This is the modern way of communication between different applications. It has two components: Publish and subscribe. For example, Netflix, youtube. - We can see the picture given below for reference. The SAP is a producer who pushing messages and Kafka or Pulsar works here as middleware and maintains messages. All other applications like Twitter, HubSpot, salesforce is consumer or subscriber here. So SAP just needed to publish it one time, they don't need to send it to different applications individually. #### How does event-driven architecture work? **SKYVVA** Integration is a comprehensive set of integration and messaging technologies to connect applications and data across hybrid infrastructures. It is an agile, distributed, containerized, and **API**-centric solution. It provides service composition and orchestration, application connectivity and data transformation, real-time message streaming, change data capture, and API management—all combined with a cloud-native platform and toolchain to support the full spectrum of modern application development. - The event-driven architecture is made up of event producers and event consumers. An event producer detects or senses an event and represents the event as a message. It does not know the consumer of the event or the outcome of an event. - After an event has been detected, it is transmitted from the event producer to the event consumers through event channels, where an event processing platform processes the event **synchronously**. Event consumers need to be informed when an event has occurred. They might process the event or may only be impacted by it. - The event processing platform will execute the correct response to an event and send the activity downstream to the right consumers. This downstream activity is where the outcome of an event is seen ![](../images/2020/08/kafkaAd.png) - One more example for better understanding. We all use Netflix to watch movies. It uses the Queuing tool and streaming tool. Netflix here plays the role of producer and we play the role of the consumer. Netflix uploads Movie once and all others who are subscribers of Netflix can watch. They do not need to request again and again. It takes so much time to send it individually, here we just needed to upload once and all the subscribers will get it. ![](../images/2020/08/kafkaAd1.png) #### Event-Driven Technology Terminology: We have 5 main Event terminology. - Publish - Subscribe - Streaming - Producer - Consumer Check the picture below for a description. ![](../images/2020/08/kafkaAd2.png) #### Kafka Adapter: ![](../images/2020/08/kafkaAd4.png) We have 2 Kafka Adapter- - **Inbound/Consumer Kafka Adapter:** We use Inbound Kafka Adapter when somebody pushes the topic into a topic customer on the Kafka side, then we are consuming. We have an event-driven listener who is a camel consumer. We don't need a scheduler. We can consume immediately. This is the Inbound process because we are receiving data here. It plays the role of the consumer. –  [How to use Agent Kafka adapter for Consumer?](#article/tutorial-v2-41-lightning) - Kafka consumer adapter detail and properties ![](../images/2020/10/4.png) - Check on the Message Board record inserted successfully ![](../images/2020/10/17-1.png) Agent Kafka Consumer uses reading data from Topic to Salesforce, which means we Send data from Topic in Kafka to Salesforce. In this adapter, we can do Inbound with CSV, XML, and JSON data records, but we need to make sure our Adapter is configurated to match the file type. - **Outbound/Producer Kafka Adapter:** We need Outbound Kafka Adapter when we want to send data out from salesforce, here We need to create a topic first. From salesforce, we can send data messages to our agent's API endpoint, and then we have a camel producer to publish into the topic invoice, which is on the Kafka side. This is the outbound process because we are sending data out here, It plays the role of Producer. –  [How to use the Agent Kafka Adapter for Producer?](#article/tutorial-v2-41-lightning) - Kafka Producer adapter Information ![](../images/2020/08/kafkaad20.png) - Check on the Message Board record inserted successfully ![](../images/2020/08/kafkajson5.png) Agent Kafka for Producer uses for writing data from Salesforce to the Topic in Kafka, meaning that we use outbound data from Salesforce to Kafka. In Agent Adapter for a producer can work with CSV, XML, and JSON data records, but we need to configure file type in Adapter too. Follow this guide to learning How to use Agent Kafka adapter for consumers ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Processing Mode Title: 2. Processing using the scheduler Slug: 4-3-processing-using-the-scheduler URL: https://help.skyvva.com/#article/4-3-processing-using-the-scheduler ================================================================================ # 2. Processing using the scheduler #### What is the SKYVVA Scheduler? **SKYVVA** scheduler helps users to create jobs that run in the cloud by declaratively describing actions. The service then automatically schedules and runs those actions. For example, users can call services inside and outside **SKYVVA**, such as calling **HTTP** or **HTTPS** endpoints and also post messages to **SKYVVA** Storage queues and SKYVVA Service Bus queues or topics. The user can run jobs immediately or at a later time. Scheduler easily supports complex schedules and advanced recurrence. Scheduler specifies when to run jobs, keeps a history of job results that users can review, and then predictably and reliably schedules workloads to run. Other **SKYVVA** scheduling capabilities also use Scheduler in the background, for example, **SKYVVA** web jobs, which is a Web Apps feature in **SKYVVA** App Service. The user can manage communication for these actions by using the Scheduler **Database**, which helps you manage the communication for these actions. – [How to run the inbound interface through the manual and scheduler?](#article/4-3-processing-using-the-scheduler) Here are some scenarios where Scheduler can help you: - **Daily Frequency ** 1. **Run at→** If you check this button it means you want the scheduler to run once a day but at a specific time. 2.** Run every→** The scheduler will run every hour or minute depending on you who set them up. If you want to run every **X** hour then you have to choose Hours. However, you have to choose the starting time along with the ending time you want it to end. - **Days Of Month Frequency →** The default is all day is selected. It means the scheduler will run every day. But if you want to skip one day or more you can deselect that day. - **Monthly Frequency →** The function of this one is similar to the above. If you want the scheduler to skip then deselect the month you don’t want to run. - **Connection Destination→ **is defined as the active connection destination. ![](../images/2020/07/image_2020_11_03T08_59_22_942Z.png) Although you can use Scheduler to create, maintain, and run scheduled workloads, Scheduler doesn't host the workloads or run code. The service only **invokes** the services or code hosted elsewhere, for example, in **SKYVVA**, on-premises, or with another provider. The scheduler can invoke through **HTTP, HTTPS,** **a Storage queue, a Service Bus queue, or a Service Bus topic.** To create, schedule, manage, update, or delete jobs and job collections, you can use code, the Scheduler **Database**, or the **SKYVVA** Scheduler. [su_box title="Note" box_color="#00d9a6" title_color="#000000"] - The scheduler will be generated when the user clicks on the Scheduler tab, after that, the cache will be created because of Interface scheduler is linked with the caching scheduler. - The Scheduler will be created when at least one Inbound Interface that links to Inbound Adapter. - Then it will create 4 types of the scheduler as default: Per Integration, Per InterfaceGroup, PerInterface, Other(AgentLogEntryTransfer)[/su_box] ![](../images/2020/07/image_2020_11_03T08_56_34_346Z.png) [su_box title="SKYVVA Schedulers is a type of scheduled job which runs regularly bases on-time setting. There are 4 categories of Schedulers." box_color="#00d9a6" title_color="#000000"] - **Schedule per integration:** is a global scheduler process all interfaces on integration, it will skip either the Interface group or interface that is running its scheduler. - **Schedule per-interface group:** process all interfaces in the group, if the scheduler has been started then all the schedule of the interface in this group will stop automatically. - **Schedule per interface:** it will process a specific interface. It cannot be started if its interface group scheduler has already started. - **Other:** it will process Agent Camel for **LogEntryTransfer**. [/su_box] - **Schedule per integration** ![](../images/2020/07/image_2020_11_03T09_23_12_988Z.png) - **Schedule per-interface group** ![](../images/2020/07/image_2020_11_03T09_18_15_337Z.png) - **Other: **The agent log will save into the ILOG2 table that uses by the Integration log too. So Agent log entry and Integration log will save into ILOG2 table – [ How to use Logs Tab?](#article/tutorial-v2-41-lightning) ![](../images/2020/07/image_2020_11_04T07_21_57_252Z.png) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Processing Mode Title: 3. Processing using event-based technique Slug: 3-processing-using-event-based-technique URL: https://help.skyvva.com/#article/3-processing-using-event-based-technique ================================================================================ # 3. Processing using event-based technique #### Event-based Technique - The source of an event can be from internal or external inputs. Events can generate from a user, like a mouse click or keystroke, an external source, such as a sensor output, or come from the system, like loading a program. - They do not need to request again and again. To send it individually it takes so much time, here we just needed to upload once and all the subscribers will get it. - This is the modern way of communication between different applications. It has two components: Publish and subscribe. For example, Netflix, youtube. - We all use Netflix to watch movies. It uses the Queuing tool and streaming tool. Netflix here plays the role of producer and we play the role of the consumer. Netflix uploads Movie once and all others who are subscribers of Netflix can watch. - An event is any significant occurrence or change in state for system hardware or software. An event is not the same as an event notification, which is a message or notification sent by the system to notify another part of the system that an event has taken place. #### Benefits of event-driven architecture - An event-driven architecture can help organizations achieve a flexible system that can adapt to changes and make decisions in real-time. Real-time situational awareness means that business decisions, whether manual or automated, can be made using all of the available data that reflects the current state of your systems. - Events are captured as they occur from event sources such as Internet of Things (IoT) devices, applications, and networks, allowing event producers and event consumers to share status and response information in real-time. - Organizations can add event-driven architecture to their systems and applications to improve the scalability and responsiveness of applications and access to the data and context needed for better business decisions. #### How does event-driven architecture work? **SKYVVA** Integration is a comprehensive set of integration and messaging technologies to connect applications and data across hybrid infrastructures. It is an agile, distributed, containerized, and **API**-centric solution. It provides service composition and orchestration, application connectivity and data transformation, real-time message streaming, change data capture, and API management—all combined with a cloud-native platform and toolchain to support the full spectrum of modern application development. - The event-driven architecture is made up of event producers and event consumers. An event producer detects or senses an event and represents the event as a message. It does not know the consumer of the event or the outcome of an event. - After an event has been detected, it is transmitted from the event producer to the event consumers through event channels, where an event processing platform processes the event **synchronously**. Event consumers need to be informed when an event has occurred. They might process the event or may only be impacted by it. - The event processing platform will execute the correct response to an event and send the activity downstream to the right consumers. This downstream activity is where the outcome of an event is seen We have 5 main Event terminology. - Publish - Subscribe - Streaming - Producer - Consumer Check the picture below for a description. ![](../images/2020/08/kafkaAd2.png) #### Pulsar Adapter **We have two Adapter supporting Processing using an event-based technique** Pulsar is basically an Event-based communication. Event-based communication contains two main components: Publish (Producer) and Subscribe (Consumer). The work of a publisher is to publish messages into a queue or topic which is Kafka or Pulsar and the middleware tool like Kafka and Pulsar will maintain the message, they follow the principle of Publish and Subscribe. And they will deliver messages to the consumer. Then all the applications can subscribe. For example, Netflix plays the role of a publisher. and we play the role of the subscriber(Consumer). - **Inbound/Consumer Pulsar Adapter:** We use Inbound Pulsar Adapter when somebody pushes the topic into a topic customer on the Kafka side, then we are consuming. We have an event-driven listener which is a camel consumer. We don't need a scheduler. We can consume immediately. This is the Inbound process because we are receiving data here. - **Outbound/Producer Pulsar Adapter:** We need an Outbound Pulsar Adapter when we want to send data out from salesforce, here We need to create a topic first. From salesforce, we can send data messages to the API endpoint of our agent, and then we have a camel producer to publish into the topic invoice, which is on the Kafka side. This is the outbound process because we are sending data. Check the picture given below for reference. –  [Agent Pulsar Adapter](#article/tutorial-v2-41-lightning) –  [How to use an Agent Pulsar adapter for consumers?](#article/tutorial-v2-41-lightning) –  [How to use an Agent Pulsar adapter for Producer?](#article/tutorial-v2-41-lightning) ![](../images/2020/10/pulsar1.png) #### Kafka Adapter - Kafka Adapter is a distributed data streaming platform that is a popular event processing choice. It can handle publishing, subscribing to, storing, and processing event streams in real-time. - Apache Kafka supports a range of use cases where high throughput and scalability are vital, and by minimizing the need for point-to-point integrations for data sharing in certain applications, it can reduce latency to milliseconds. **Kafka** is an Event-based communication. Event-based communication contains two main components: Publish (Producer) and Subscribe (Consumer). The work of a publisher is to upload a message into a queue or topic, which is Kafka or Pulsar, and the middleware tool like Kafka and Pulsar will maintain the news; they follow the principle of Publish and Subscribe. And they will deliver messages to the Consumer. Then all the applications can subscribe. For example, Netflix plays the role of a publisher. And we play the part of the subscriber(Consumer). **We have two Adapter supporting Processing using an event-based technique** - **Inbound Kafka Adapter:** We use Inbound Kafka Adapter when somebody pushes the topic into a topic customer on the Kafka side; then we are consuming. We have an event-driven listener, which is a camel consumer. We don't need a scheduler. We can consume immediately. This is the Inbound process because we are receiving data here. It plays the role of the Consumer. - **Outbound Kafka Adapter:** We need Outbound Kafka Adapter when we want to send data out from salesforce; here, We need to create a topic first. From salesforce, we can send data messages to the API endpoint of our Agent, and then we have a camel producer to publish into the topic invoice, which is on the Kafka side. This is the outbound process because we are sending data out here. It plays the role of Producer. Check the picture given below for reference. –  [Agent Kafka Adapter](#article/tutorial-v2-41-lightning) –  [How to use an Agent Kafka adapter for consumers?](#article/tutorial-v2-41-lightning) –  [How to use an Agent Kafka adapter for Producer?](#article/tutorial-v2-41-lightning) ![](../images/2020/08/kafkaAd4.png) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Processing Mode Title: 4. Manual Processing Slug: 4-manual-processing URL: https://help.skyvva.com/#article/4-manual-processing ================================================================================ # 4. Manual Processing #### Introduction In terms of real-time communication with Salesforce, it’s important to keep in mind that there are huge differences between how to handle inbound and outbound communication. Inbound communication is covered completely by the core **API**, which means that it’s also completely covered by **SKYVVA** **Agent** **Any Connect** for Salesforce. Salesforce limits the number of **API** calls you can execute per day according to this table. Due to this polling, it’s not a great option for getting data out of Salesforce. This is addressed by offering outbound messaging. #### Inbound The core **API** is the normal **SKYVVA** **API** that allows you to perform **CRUD-type** operations. **Any Connect** fully supports the Salesforce Core API. - This is useful when the user is interacting with **Any Connect** as part of an orchestration or automation process and you need to perform **CRUD-type** operations against **Any Connect**. For example, if you have a case in Agent that has been resolved in another system such as **SAP** and the case needs to be closed in Agent. - This might not be the best option when the user needs to update a large number of objects in one go. The core **API** only supports updates a few objects at a time. Also, if it doesn’t make sense to maintain duplicate data in Salesforce org. –  How to run the inbound interface group through them manual and scheduler? [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Manual processing can only use with inbound database processing. We don't need this function for file, Kafka, or Pulsar. Therefore, they have a consumer for inbound interface already. If the interfaces bind into the interface group, it will be possible to process it with the file adapter.[/su_box] #### Pe-required - Create Integration and configuration on the new Agent Control Board - Create database adapter (for inbound) on new Agent Control Board - Create Metadata Provider, Repository and generate Message Type from the database - Create an inbound Interface (Response) - Checking Cache monitoring status - Do manual process button ![](../images/2021/01/createdatabaseadapter.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] For Insert operation, we have a template for generating message type for a single table - Create a root message type with the prefix” Database_”+” Table’s name” within type as “Database table template” - Create two messages type as a child of the root with the fixed name. The first one is “Request”, and another one is “Response”. - Under request, create a message type as the child. The Table’s name is used for this Message Type within type as “Database Table”. - Under response, create a message type as a child that has the fixed name” record” within type as “Plain Structure”. - Under “record”, create message type as the child. the table’s name is used for this message type within type as “Plain structure”.(In this message type, was generated the field name like on the table)[/su_box] ![](../images/2021/01/scheduler.png) - Set the time to run every 1 minute ![](../images/2021/01/shedulerset.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] If the machine has small memory, We should not set the time for running every 1 minute because it will block another job. You have to run every 5 or 10 minutes or more is a good recommendation.[/su_box] ![](../images/2021/01/runningtime.png) - You need to check the message monitor tap to ensure that salesforce received data from the database is correct. ![](../images/2021/01/messagetypescheduler.png) [su_box title="SKYVVA Schedulers is a type of scheduled job which runs regularly bases on-time setting. There are 4 categories of Schedulers." box_color="#00d9a6" title_color="#000000"] - **Schedule per integration:** is a global scheduler process all interfaces on integration, it will skip either the Interface group or interface that is running its scheduler. - **Schedule per-interface group:** process all interfaces in the group, if the scheduler has been started then all the schedules of the interface in this group will stop automatically. - **Schedule per interface:** it will process a specific interface. It cannot be started if its interface group scheduler has already started. - **Other:** it will process Agent Camel for **LogEntryTransfer**. [/su_box] #### Outbound Any Connect outbound messaging is being configured as part of a workflow defined in Agent and it’s a callout to an external **SOAP** service defined by Agent. When configured in the package, a WSDL will be generated that is available for download. It’s then up to you to implement and expose a SOAP service that Salesforce can make the callout to. From **Any Connect's** perspective, the way to handle this is to implement that service using XML over HTTP. - This is useful when there is a transactional event in **SKYVVA** that needs to be processed, such as an opportunity being updated. The main benefit with outbound messages vs other options is that it has retries built-in; so if for some reason the receiving application is unavailable, **SKYVVA** will retry and report as an error if the defined retries have been exhausted. - This might not be the best option when you don’t have the ability to implement SOAP services. **SKYVVA** offers complete support for exposing SOAP services. However, if the event triggering the callout is more informational and does not require an acknowledgment or retries, then the streaming API might be easier to implement. –  [How to run the outbound interface through the manual or scheduler?](#article/129-how-to-run-the-outbound-interface-through-the-manually-or-scheduler) - Manual outbound processing is a manual process button on the interface tab in an Agent control board. We can use it instead of executing the InvokecalloutV3 apex code. For example, when the user selects fives interfaces, we are executing the interfaces in random order. There is no sequence to follow. - You can do the manual processing on the outbound interface of the new agent. To use this function, you need to select the "Manually select the sObject using the Query Builder or Use the SOQL statement interface to select the sObject" option. - For example, you use the "Manually select the sObject the Query Builder" option, you will able to query record base on the query builder. You will able to select the records from the execute query result to processing the callout. If, you use the "SOQL statement on the interface to selects the sObject" option. You can select the record from the SOQL Query for the filter sObject base on record id. Pre-require: - Create Integration - Configuration Agent control board - Create adapter agent rest - Create inbound interface ![](../images/2021/03/o8.png) - Agent scheduler will be generated after the user clicks the scheduler tab. ![](../images/2021/03/r5.png) - The scheduler is starting ![](../images/2021/03/r10.png) - Go to check the result on the monitor tab. ![](../images/2021/03/r11.png) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 6. SOAP Adapter Slug: soap-adapter URL: https://help.skyvva.com/#article/soap-adapter ================================================================================ # 6. SOAP Adapter #### Introduction Agent **SOAP** Adapter is a feature like **SOAP** Adapter, but it has more power than the **SOAP** Adapter. **SOAP** Adapter needs the System to have Public **API** to call out **API**, but Agent **SOAP** Adapter can callout **API** with Systems that have Public API and Local **API**. So it is useful for users who want to keep data in the local System. To use Agent **SOAP** Adapter, we need to have an Agent application to store in the local machine meaning that Agent **SOAP** Adapter is like a bright to connection Salesforce to the Agent machine and the Agent machine connects to Backend applications. **Example:** In a Real business scenario, we want to make our data secure, so we need to use a local network zone to install Agent machine and Backend applications such as** SAP or Oracle**. We do like this because we don't want any systems to access our System, and it is the technique to protect our data from being safe. #### The processing of Agent SOAP Adapter Here's the picture of the processing of Agent **SOAP** Adapter. ![](../images/2020/10/2-1.png) In this picture, we can see Salesforce and **SKYVVA** are in the Internet zone where Agent Machine and Backend applications are in the Local network zone. So when we callout from Salesforce to Backend applications, it will access Agent Machine and Agent Machine send data to Backend applications. The agent is responsible for making connections with the inside enterprise and then connecting with Salesforce (Internet zone). This Adapter is really helpful for users to send data to salesforce to local backend applications. #### How to create a SOAP interface using the Agent SOAP Adapter? How to use Agent **SOAP** Adapter for callout data from salesforce.  We also learn about how to callout data and get a response message and we will learn how to use fault Interface when the other system has a fault message. #### Case 1 **Handle API message without Response Interface.** Pre-require - Create or Upload Message Type SOAP. - Configuration Agent control board. - Create Adapter Agent SOAP. - Create Integration and Outbound Interface. **Step 1**:  Create or Upload Message Type SOAP. - Go to Metadata-> click button Import MetaData Provider. ![](../images/2020/10/1-2.png) - Click upload files (Put metadata and click OK) ![](../images/2020/10/2-2.png) - Here’s SOAP Message Type. Click this to download. –  [SOAPVersion2_skyvvasolutions__MetaDataProvider__c (5)](../images/2020/10/SOAPVersion2_skyvvasolutions__MetaDataProvider__c-5.txt) ![](../images/2020/10/3-1.png) **Step 2**: Create integration and outbound Interface. - Create an outbound Interface link with Message Type. ![](../images/2020/10/4-1.png) - Do mapping ![](../images/2020/10/5-1.png) **Step 3**: Configuration Agent Control Board. - Go to Integration detail => click AGENT Control Board. ![](../images/2020/10/6-1.png) - **Click on Agent Control Board Tab** –[How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board now follows below on Salesforce org. **Step4**: Create Adapter Agent **SOAP** - Click adapter tap on Agent Control Board. ![](../images/2020/10/10-1.png) - Click New button ![](../images/2020/10/11-1.png) - Configure an Agent Adapter Soap Fill name, choose Type =Agent Soap, Direction= outbound, choose XML payload, Operation= POST, fill username and password, and choose Adapter_instance. - Here’s an example. ![](../images/2020/10/12-1.png) **Step 5**: put the adapter into Interface. ![](../images/2020/10/14-2.png) **Step 6**: Callout v3 with Apex code. - Here’s code callout. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011x000015BR30AAG'}; skyvvasolutions.Iservices.invokeCalloutV3('IntegrationName','InterfaceName',ids,'SYNC',c); - Go to deveoper console => Debug => Open Execute Anonymous Window =>  copy the code abouve and click Execute. ![](../images/2020/10/15-2.png) - Go to Monitor to see the result ![](../images/2020/10/16-2.png) #### Case 2 **Handle API Message with Response Interface.** In this case, we just need to create a Response Interface using Soap Message Type. Pre requires - Create or Upload Message Type SOAP. (We have configured in case1) - Configuration Agent control board. (We have configured in case1) - Create Adapter Agent SOAP. (We have configured in case1) - Create Integration and outbound Interface. (We have configured in case1) - Create Inbound Interface **How to Handle API message with Response Interface?** In this case, we just need Inbound Interface one more for do response. Because of Case 1, we have configuration some pre-required already. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Make sure that Message Type Reponses Interface is matching with payload Reponses of other request System or server.[/su_box] **Step 1**: Create inbound Interface and link Message Type Response - Here’s the response Interface. ![](../images/2020/10/17-2.png) - Do mapping. ![](../images/2020/10/18-1.png) **Step 2**: Go to Interface Request and put the Response Interface in the field’s response Interface. - Go to Interface Request. ![](../images/2020/10/19-1.png) - Scroll down to see the field’s request Interface. Click this pencil. ![](../images/2020/10/20-1.png) - Put response Interface in it, Example below. Click the save button. ![](../images/2020/10/21-1.png) **Step 3**: Callout v3 with Apex code with Request Interface. - Here's code callout. skyvvasolutions.CallOutControl c = new skyvvasolutions.CallOutControl(); c.returnJSONComplete=true; c.actionDoIntegrate=true; c.isCreateMessage=true; String[] ids= new String[]{'0011x000015BR30AAG'}; skyvvasolutions.Iservices.invokeCalloutV3('IntegrationName','InterfaceName',ids,'SYNC',c); - Here’s example. ![](../images/2020/10/15-3.png) - Go to Monitor to check the result. ![](../images/2020/10/22-1.png) #### Case 3 **Handler Over Fault Response.** - In this case, we use two Interfaces like Inbound Interface for Response and Outbound Interface for Request. The process of these cases is to put the Response Interface, which is fault Message Type, into the Request Interface. - **Example**. We have an outbound Interface and put the fault Interface that has message Type fault_SystemError in the outbound Interface. When the callout **V3** is met the situation, System Error, so the Inbound Interface will respond to the fault message to tell the user that the Callout has a problem with the system Error. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Make sure that Adapter has fault response. [/su_box] Pre requires - Create or Upload Message Type **SOAP** with Fault Message Type. (We have configured in case1) - Configuration Agent control board. (We have configured in case1) - Create Adapter Agent **SOAP**. (We have configured in case1) - Create Integration and outbound Interface. (We have configured in case1) - Create Inbound Interface as a fault Interface. **Step1**: create Inbound Interface as fault Interface. - Go to Integration => create Interface. ![](../images/2020/10/23-1.png) - Here’s the Inbound fault Interface. ![](../images/2020/10/24-2.png) - Do mapping ![](../images/2020/10/25-1.png) **Step 2**: put fault interface in request interface. - Go back to request Interface (Normal case) ![](../images/2020/10/26.png) - Scroll down to find the fault Interface field. ![](../images/2020/10/27-1.png) - Put the fault Interface in this field. ![](../images/2020/10/28.png) **Step 3**: callout with apex code. - Here’s an example. ![](../images/2020/10/29.png) - Go to monitor to check results. ![](../images/2020/10/30.png) #### Case 4 **Handle multiple different fault messages** [su_box title="Note" box_color="#2a8af0" title_color="#000000"]When we use Multiple different fault messages, we don’t need to put fault Interface in the Request Interface because the field of fault Interface is a priority than related fault Interfaces. If we put Interface in field fault Interface, it will do only with field fault Interface and the related Interface will not do.[/su_box]. **Pre-require:  ** - Create or Upload Message Type **SOAP** with Fault Message Type. (We have configured in case1) - Configuration Agent control board. (We have configured in case1) - Create Adapter Agent **SOAP**. (We have configured in case1) - Create Integration and outbound Interface. (We have configured in case1) - Create two Inbound Interfaces for fault interfaces. We have created a Fault Interface system error already so now we need to create two more fault Interfaces. **Step1**: Go to Integration and create Fault interfaces. - Create Inbound fault Interface and linked with fault_AdminBlockException and click button save. ![](../images/2020/10/31.png) - Do mapping. ![](../images/2020/10/32.png) **Step2**: Put Outbound Interface Name in fault Interface of Every Response Interfaces. - Make sure that the request Interface doesn’t have a fault interface in their field. - Here’s the request Interface. ![](../images/2020/10/33.png) - Scroll down to make sure that this interface doesn’t have a fault Interface. ![](../images/2020/10/35.png) - Here’s Response System Error Interface. (That we have created above) ![](../images/2020/10/36.png) - Scroll down to put request interface in field fault Interface. ![](../images/2020/10/38.png) We need to other Response fault Interface like the same way. - Here’s AdminblockException fault Interface. ![](../images/2020/10/39.png) - Scroll down to put the request interface in the field fault interface. ![](../images/2020/10/40.png) **Step 3**:  Go to Request Interface to see response fault Interfaces related. - Go to Related Interface of request Interface. ![](../images/2020/10/41.png) - Scroll down to see both fault Interfaces have related to this request Interface. ![](../images/2020/10/42.png) **Step4**: callout with apex code. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] Make sure that **API** has faults Message.[/su_box] ![](../images/2020/10/43.png) - Go to the message monitor to check the result. ![](../images/2020/10/44.png) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Administration of the Agent using the Agent Control Board Title: 1. Administration of the Agent using the Agent Control Board Slug: administration-of-the-agent-using-the-agent-control-board URL: https://help.skyvva.com/#article/administration-of-the-agent-using-the-agent-control-board ================================================================================ # 1. Administration of the Agent using the Agent Control Board #### Introduction The new agent control board is a component which can connect different application system. Besides the component connect that we build on salesforce already.  But some protocol we cannot build on salesforce which technically not possible. That’s why we build a new component called “Any Connect” which is based on apache camel is open source around the world. #### Screen Configuration: **Kanban TAB Salesforce** **-> Agent** This is the second Kanban tab. On this tab, we define a new connection for the direction Salesforce -> Agent. If the user selects an existing connection then we will display the configuration and the user can, for example, do a ping test. In a new creation mode, he will enter the properties needed for the connection from Salesforce to Agent. - Host - Port - Endpoint - Username - Password - Reverse Proxy setting: - Proxy Host HTTP - Proxy Port HTTP - Proxy Host HTTPS - Proxy PortHTTPS - Proxy User - Proxy Password After entering the data the user can click on the button '**ping**' to make a ping test. If success he can save the setting to the table '**adapterInstance__c**' where the field direction is set to '**SF2A**'. The record is only saved into the Salesforce table and not to the H2 database on the agent. Caching this record is not needed. In this screen, the user can create the connection to different agent instances and for each instance, we will create a record in the table '**adapterInstance__c**'. **Screen Configuration:** **Kanban TAB Agent -> Salesforce** This is the third kanban tab. This tab is the '**Agent -> Salesforce**' tab where we can display the connection entry for the direction **Agent -> Salesforce** and do the ping test or create a new connection. We need to specify the credential to log in to Salesforce from the Agent. We need different fields for authentication. For the basic authentication, we need the following fields are - Username - Password - Instance URL - Security Token - Server Environment e.g. Sandbox or Production/Development - Proxy setting: - Proxy Host HTTP - Proxy Port HTTP - Proxy Host HTTPS - Proxy PortHTTPS - Proxy User - Proxy Password - OAuth 2.0 setting: - Client-Id - Client-Secret These Articles provide users a cosmetic overview of the Administration part to maintain our **SKYVVA** Any Connect. Articles also explain to the user, How to install **SKYVVA** Any Connect, features, and working. **Follow the Reference link for more understanding** [- How to use the Agent Control Board?](#article/tutorial-v2-41-lightning) Since the user now completely understand; How to use the Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board to follow below: ![](../images/2020/11/image_2023_09_18T04_43_38_358Z.png) #### Connections save successfully To ensure that your system's cache after performing a system refresh. It appears that the cache was up-to-date after using the "**Save**" button, which uses an updated connection that includes the correct client-id and client-secret. To ensure that the cache remains synchronized with the **SKYVVA** Integration Agent app, it is necessary to perform the "**Save**" step after every system refresh. This is important because the new object **Id’s** need to be synced to the agent again. If user skip this step, the cache will continue to contain the old object Ids from before the system refresh. By following this process consistently, user can maintain an accurate and updated cache that reflects the current state of the system. If the connected app was deleted after a system refresh and user are unable to restore the connection using the function on the configuration tab, updating the connection manually would indeed be the correct way to proceed. Since the connected app is no longer available, user cannot rely on automated restoration methods. To update the connection manually in Salesforce, user will need to follow these general steps: - **Recreate the connected app:** First, user need to recreate the connected app in Salesforce. This involves defining the necessary OAuth settings, permissions, and any other configurations required for the app to connect with **SKYVVA** Integration Agent . - **Update the connection settings**: Once the connected app is recreated, user need to update the connection settings in your Salesforce configuration. This typically involves providing the new client ID, client secret, and any other authentication or authorization details associated with the connected app. - **Test the connection:** After updating the connection settings, it's important to test the connection to ensure it's functioning as expected. User may need to perform some manual steps or run specific tests to verify that the connection is established successfully. By updating the connection manually, user can reestablish the integration between your Salesforce instance and the **SKYVVA** Integration Agent app that was previously connected. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Once user have completed these steps, the **SKYVVA** Integration Agent app should be ready to use the new client-id and client-secret for the updated connection. The cache should be rebuilt with the updated data, and all adapters should be linked to the correct connection. [/su_box] To carry out the steps you provided after a system refresh, follow these instructions: - **Change the Connection:** Obtain the new client-id and client-secret required for the updated connection. - Identify the configuration file or settings where the client-id and client-secret are stored. - Update the client-id and client-secret with the new values in the appropriate configuration file or settings. Ensure user use the correct format and syntax for the configuration file. - Save the changes to the configuration file. - **Rebuild the Cache:** Identify the cache or caching mechanism used in your system. - Determine the process or commands needed to rebuild or refresh the cache. This could involve running specific scripts or commands in backend. - Execute the necessary commands or scripts to rebuild the cache in backend. - Monitor the process to ensure it completes successfully. - **Verify Adapters:** Review the adapters in user system that rely on the connection you updated in step 1. - Locate the configuration files or settings for each adapter. - Update the connection details for each adapter, replacing the old connection with the updated one. - Save the changes to the adapter configuration files. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]During setup, the **SKYVVA** Integration Agent will establish a connection destination, which refers to the target location where it will send the updated cache record. This connection destination could be an API endpoint. The agent will configure the necessary parameters such as the endpoint URL. [/su_box] - Additionally, the **SKYVVA** Integration Agent will create a cache record, which contains the relevant information that needs to be stored and shared. This record may include data such as the event status. The agent will update this cache record with the latest information before publishing it to the connection destination. - Once the cache record is updated and ready, the agent will publish an event to notify the UI. This event serves as a signal to stop the spinner, indicating that the relevant task or process has been completed. The UI can then react accordingly based on the received event and update its display to reflect the current status. - Salesforce  update the agent setting and agent property in the Salesforce database. Once the update is done, an event is published to the **SKYVVA** Integration Agent. - The **SKYVVA** Integration Agent performs a task and publishes an event back to the UI. During this process, the UI needs to show a spinner to block user actions for a maximum of **120** seconds. When the UI receives the event from the agent, it should stop the spinner and update the current action status. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - Scheduler, Log Configuration, Logs, Cache Monitor, Adapter Monitor, Agent Cache, System Information tabs are dependent on Integration. - Interface, Interface Group, Adapter, Import Metadata tabs are not dependent on Integration. [/su_box] **Agent Control Board has these Tabs** **Configuration Tab** **—** In which user has to Provide all information under the : **PROPERTIES FILE Tab** - Name - Property File Name, Example: **integration.properties** **AGENT Server Credential under Salesforce–> AGENT Tab user has to provide the info.** - Username - Hostname/Public IP - Password - Port/Port forwarding - Ping Agent Connection **Salesforce Credential under Agent-> Salesforce Tab user has to provide the info.** - Username - Security Token - Password - Server Environment - Client Id - Client Secret - Ping Salesforce Connection **User has to provide all such information then the only user has to play with Agent Control Board** **Interface Tab** **— **Through which the user has to select Interface which is already linked (child) of Integration and further process into Salesforce respectively ![](../images/2020/04/image_2020_10_12T06_33_56_490Z.png) **Interface Group — **There are two types are Interface Group - **Skyvva_DefaultIG_Outbound —** Through which the user can get all related Outbound Integration Name - **Skyvva_DefaultIG —** Through which the user can see all related Inbound Integration Name Users can easily Edit, Delete, and create new information on **Interface Group Name** with the help of radio button options. ![](../images/2020/04/image_2020_10_12T06_36_16_995Z.png) **Adapter Tab — **Through which the user can get all Inbound and Outbound Adapter type which is already linked with the related list on Interface detail page called **Inbound Setup & Outbound Setup. **Users can easily create, edit update and delete Adapter. ![](../images/2020/04/image_2020_10_12T06_40_40_700Z.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] - This is a must to the user always create Adapter inside Agent Control Board [/su_box] **Schedulers — **Through which the user can get all **Inbound and Outbound Schedulers** related to Integration  Schedulers is a type of scheduled job which runs regularly bases on-time setting. ![](../images/2020/04/image_2020_10_16T11_20_43_513Z.png) **Cache Monitor — **Monitor is used to checking the integration result after processing the **Inbound or Outbound** interface. The integration result includes Pending, Failed, Completed, Cancelled status, and the reason why it failed. Additionally, we can know the real sObject is integrated successfully with completed status. [–  How to use Cache Monitoring?](#article/tutorial-v2-41-lightning) ![](../images/2020/10/image_2020_10_08T09_26_53_374Z.png) **Logs — **The log tab is used to show the log file from the Agent. The physical log file is created and kept in the local folder of the Agent and we need to view the file in Salesforce because we don't want to get into the Agent Server. Sometimes we don't have any access from the customer to access the Agent-Server and thus it is not possible to read the log file to analyze the error. Therefore we want to have the possibility to get the log file and show it on the Log tab in Salesforce. - **Log file**— In the section Logs, we store the error line from the log file into the **ilog2** table. The button Refresh means that we re-read the data from the table to see the new entries which were pushed from the Agent on a regularly based through a scheduler. The Agent push using the REST api to insert new entries into the table **ilog2__c** and thus we need to do the Refresh to see new content. The button 'Re-read from Agent' is to actively read the new log entries without waiting for the scheduler. This is needed when we urgently need to see the latest log entries and cannot or don't want to wait until the scheduler push the new entries into the table **ilog2__c**. ![](../images/2020/09/image_2020_09_23T06_41_05_353Z.png) **Log Configuration — **We're using Logback as the controlling framework for Logs. Logs will be segregated in mainly 2 categories are - **System Logs** **—** Log file name is going to be SYSTEM-LOG.txt and it will include all the system maintenance API, framework logs. - **Business API Logs** **—** Log file name would be formed with this format -.txt. These logs will include the details about the Business APIs. At any point in time, we can update the Logging configuration through the APIs build in the system. There will be a default Logging setting which will remain active in case of any starts or restarts of the Agent service. This Logging is not present in the DB rather in the logback.xml. At any point, if we want to create a logging profile, we can do so using the APIs built and described below. Then to activate we need to use activate API.           –  [How to use Log and Log Configuration Tab on Agent Control Board?](#article/tutorial-v2-41-lightning) ![](../images/2020/09/image_2020_10_21T06_39_36_195Z.png) **Import MetaData— **The new agent control board is a component which can connect different application system. Besides the component connect that we build on salesforce already.  But some protocols we cannot build on salesforce which technically not possible. That’s why we build a new component called “Any Connect” which is based on apache camel is open source around the world. –  [How to Import Metadata from Agent Control Board?](#article/tutorial-v2-41-lightning) ![](../images/2020/10/image_2020_10_02T11_21_16_034Z-1.png) **Agent Cache— **This tab shows us the table content e.g the cache on the h2 database in the Agent. We have to control and verify the content if it is caching down to the Agent and if the content is correct. Getting this possibility we do not need to ask the customer for the access to h2 database on their installation. We can do it the right way as **SKYVVA** support to find the inconsistency regarding the cache in between Salesforce and Agent. This simplifies our support life later in production use to the Agent. - Currently, we are using the h2 database browser we need the user and password to the database browser to verify the content. - We can look directly to the h2 cache table using the username and password which is configured with the 'Configuration' tab.            –  [How to use Agent Cache on Agent Control Board?](#article/104-how-to-use-agent-cache) ![](../images/2020/04/image_2020_08_25T05_55_45_098Z.png) **Adapter Monitor— **This function allows the user to monitor the adapter. We provide only the monitor the file adapter to see files in the folder that users have to specify in the adapter property at the moment. This helps user to see, if we have too many files and thus it reaches a critical situation eg. we have stuck. Kafka and pulsar adapter could make sense to see the message in the queue/topic. But we have not found any function which allows user to look into the queue without consuming the content and thus remove it automatically after the view. Therefore it makes sense from the business requirement but technically we cannot do that. ![](../images/2020/04/image_2020_08_25T06_02_15_342Z-1.png) #### System Information - Through which the user can get all information about **System Information** **AGENT** #### **Operating System ** **Memory** ![](../images/2020/04/image_2020_07_16T08_45_32_912Z.png) ![](../images/2020/04/image_2020_07_16T08_48_24_485Z.png) ![](../images/2020/04/image_2020_07_16T08_53_35_503Z.png) - **AGENT Runtime**Agent Instance Version : 3.0.0Instance Timezone: UTCHost Country Code: USInstance Home Directory : /home/ec2-userHost Language Code: enHost Username: ec2-userInstance Installation Directory : /home/ec2-userInstance Process ID: 3846System Hostname : ip-172-20-63-98.eu-central-1.compute.internal - **DATABASE_RUNTIME**Database Status: RunningDatabase URL : jdbc:h2:~/skyvvaDatabase Schema: PUBLICDatabase Vendor Name: H2Database Product Version: 1.4.200 (2019-10-14)Database Driver Name: H2 JDBC DriverDatabase Driver Version: 1.4.200 (2019-10-14)Database Username: SKYVVA@12Database Max Connections : 0 - **JAVA_RUNTIME**Java Version : 14Java Encoding : UTF-8Java Vendor: Azul Systems, Inc.Java Vendor Url: http://www.azulsystems.com/Java Specification Vendor: Oracle CorporationJava Home Path : /usr/lib/jvm/zulu-14JDK Vendor Version: Zulu14.29+23-CAJava Runtime Version : 14.0.2+12Java Runtime Name: OpenJDK Runtime EnvironmentJava VM Name : OpenJDK 64-Bit Server VMJava Vendor Url Bug: http://www.azulsystems.com/support/Java VM Version : 14.0.2+12Java Compiler Version: 58.0JVM Free Memory: 30 MBTotal JVM Memory: 85 MB - **OS_RUNTIME** :Operating System Name: LinuxSystem File Separator: /System Line Separator :System Path Separator: :Operating System Version : 4.14.186-146.268.amzn2.x86_64System File Encoding: UTF-8Operating System Architecture: amd64Available Processor Cores: 1Total System Memory: 2088 MBFile System Root Path: /Total Disk Space: 21462 MBTotal Free Disk Space: 10232MBTotal Usable Disk Space: 10232 MB - Init:134217728(131072K) - Used:22849712(22314K) - Committed:128974848(125952K) - Max:1908932608(1864192K) ![](../images/2020/04/image_2020_09_30T05_41_19_066Z.png) ![](../images/2020/04/image_2020_09_30T05_41_50_724Z.png) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Processing Mode Title: 5. Outbound Processing Slug: 5-outbound-processing URL: https://help.skyvva.com/#article/5-outbound-processing ================================================================================ # 5. Outbound Processing #### Introduction A detailed description of Message Control can be found in the Agent Library by choosing Cross-Application Components Application Functions **->** Message Control.  - Message Determination: the conditions under which a message is to be found are stored in condition tables. These tables are read in an access sequence. - The condition tables also contain the key fields for the application, that is to say, the fields which the Agent uses to access the condition records (for example the "purchasing organization" and "vendor" application fields in Purchasing). - The condition tables are assigned to an output type. The output types are combined in Procedures, which are assigned to the Agent. - This organizational structure allows message determination to run in a structured manner and under complex conditions. The output types and tables and the access sequences and procedures are already defined in Customizing for the relevant application. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]The output type is sometimes also referred to as the condition type.[/su_box] - Outbound messaging uses the [notifications()](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_om_outboundmessaging_wsdl.htm#i1473596) call to send **SOAP** messages over HTTP(S) to a designated endpoint when triggered by a workflow rule. - After you set up outbound messaging, when a triggering event occurs, a message is sent to the specified endpoint URL. The message contains the fields specified when you created the outbound message. Once the endpoint URL receives the message, it can take the information from the message and process it. To do that, you need to examine the outbound messaging WSDL. #### How to use it? It’s possible to create circular changes with outbound messaging. For example, if a user is performing integrations that trigger a workflow, and the workflow actions trigger account updates, those account updates trigger a new workflow, and so on. To prevent these circular changes, you can disable a user’s ability to send outbound messages. Here’s another example of a circular change scenario. - A change in a contact record triggers an outbound message from the specified user, with the [sessionId](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_calls_login_loginresult.htm#i1429237) to your outbound message listener. - Your outbound message listener calls the Lightning Platform API and updates the same contact record which triggered the outbound message. - The update triggers an outbound message. - Your outbound message listener updates the record. - The update triggers an outbound message. - Your outbound message listener updates the record. To enable outbound message notifications for a user, select **Send Outbound Messages** in the user’s [profile](https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_profile.htm#topic-title). #### The Outbound processing of Agent SOAP Adapter **Example:** In a Real business scenario, we want to make our data secure, so we need to use a local network zone to install Agent machine and Backend applications such as** SAP or Oracle**. We do like this because we don't want any systems to access our System, and it is the technique to protect our data from being safe. **Handle API message without Response Interface.** ![](../images/2020/10/4-1.png) –  [How to create a SOAP interface using the Agent SOAP Adapter?](#article/tutorial-v2-41-lightning) So it is useful for users who want to keep data in the local System. To use Agent **SOAP** Adapter, we need to have an Agent application to store in the local machine meaning that Agent **SOAP** Adapter is like a bright to connection Salesforce to the Agent machine and the Agent machine connects to Backend applications ![](../images/2020/10/16-2.png) **Message Monitor shows the result.** #### The Outbound processing of Agent REST Adapter **Example:** In a Real business scenario, we want to make our data secure, so we need to use a local network zone to install Agent machine and Backend applications such as** SAP or Oracle**. We do like this because we don't want any systems to access our System, and it is the technique to protect our data from being safe. **Handle API message without Response Interface.** ![](../images/2020/10/4-1.png) [–  How to create a REST interface using the Agent REST Adapter?](#article/tutorial-v2-41-lightning) So it is useful for users who want to keep data in the local System. To use Agent **REST** Adapter, we need to have an Agent application to store in the local machine meaning that Agent **REST** Adapter is like a bright to connection Salesforce to the Agent machine and the Agent machine connects to Backend applications. ![](../images/2020/10/16-2.png) **Message Monitor shows the result.** #### The Outbound (Producer) processing of Agent Pulsar Adapter Agent pulsar adapter for Producer means Outbound Pulsar Adapter. We need an Outbound Pulsar Adapter when we want to send data out from salesforce, here We need to create a topic first. From salesforce, we can send data messages to the API endpoint of our agent, and then we have a camel producer to publish into the topic invoice, which is on the Kafka side. This is the outbound process because we are sending data out here, It plays the role of Producer. ![](../images/2020/10/pulsarout1.png) [–  How to use Agent Pulsar adapter for Producer?](#article/tutorial-v2-41-lightning) #### Event-based Communication: - An event-driven architecture can help organizations achieve a flexible system that can adapt to changes and make decisions in real-time. Real-time situational awareness means that business decisions, whether manual or automated, can be made using all of the available data that reflects the current state of your systems. - Events are captured as they occur from event sources such as Internet of Things (IoT) devices, applications, and networks, allowing event producers and event consumers to share status and response information in real-time. - Organizations can add event-driven architecture to their systems and applications to improve the scalability and responsiveness of applications and access to the data and context needed for better business decisions. - This is the modern way of communication between different applications. It has two components: Publish and subscribe. For example, Netflix, youtube. - We can see the picture given below for reference. The SAP is a producer who pushing messages and Kafka or Pulsar works here as middleware, and maintain messages. All other applications like Twitter, HubSpot, salesforce is a consumer or subscriber here. So SAP just needed to publish it one time, they don't need to send it to different applications individually. ![](../images/2020/10/pulsarOut.png) **Message Monitor shows the result.** #### The Outbound (Producer) processing of Agent Kafka Adapter We need Outbound Kafka Adapter when we want to send data out from salesforce, here We need to create a topic first. From salesforce, we can send data messages to our agent's API endpoint, and then we have a camel producer to publish into the topic invoice, which is on the Kafka side. This is the outbound process because we are sending data out here, It plays the role of Producer. ![](../images/2020/10/58.png) [–  How to use the Agent Kafka Adapter for Producer?](#article/tutorial-v2-41-lightning) ![](../images/2020/08/kafkajson5.png) **Message Monitor shows the result.** #### How to use Agent File Adapter Producer We need an outbound Agent file adapter when we want to send data out from salesforce. To use the agent file for the Producer, we need to configure the Agent Control Board, and we need to create an Agent File adapter. #### Event-driven mode The Agent file adapter will have a new mode e.g. event-driven mode to read files from the folder whenever new files arrive. The old File adapter support only the scheduling mode where we need to define the time and frequency when the file gets to pick up and process. With this new model, we add the real-time and event-driven feature to pick up immediately when they are there. We support this mode in addition to the existing scheduled mode. The consumer can be started only for the inbound interface. [ –  How to use Agent File Adapter for Producer?](#article/tutorial-v2-41-lightning) **We have 4 protocol of Agent File adapter in Agent:** - Local - FTP - FTPs - SFTP ![](../images/2020/12/h8.png) - CSV  File: ![](../images/2020/12/h17.png) **Outbound Agent File Adapter for Excel format and Protocol: Local.** ![](../images/2020/12/h19.png) Excel file: ![](../images/2020/12/h24.png) **Outbound Agent File Adapter for CSV format and Protocol: FTP** ![](../images/2020/12/h26.png) CSV: ![](../images/2020/12/h31.png) –  [How to use File Adapter (FileZilla Client & Server) with Agent Control Board for Producer?](#article/tutorial-v2-41-lightning) **Outbound Agent File Adapter for CSV format and Protocol: SFTP** ![](../images/2020/12/h33.png) CSV: ![](../images/2020/12/h38.png) Agent File Adapter works for the Producer. Agent File adapter for producer uses for writing a file from salesforce to file. Agent file adapter for Producer means outbound Agent File Adapter. To use the Agent File adapter for Producer, we need to configure the Agent Control Board, and we need to create an Agent File Adapter. In this chapter, we will learn how to use the Agent File adapter for the producer, and we will know how to do outbound with CSV, Excel file type. #### How to use Database Adapter Outbound - Conceptually of new Database Adapter on Agent v3 is the same as JDBC Adapter on the old Agent. It used as a connector to transfer data from Salesforce to Database and from Database to Salesforce. Any Connect or Agent V3 currently supports many types of Databases such as Oracle, SQL Server, MySQL, and PostgreSQL. - **Any Connect** uses a protocol-specific adapter to connect to an external system and access its data. When you define an external data source in your organization, you specify the adapter in the Type field. #### Built-in Caching **Any Connect** can implement a client-side data cache for improved performance. For maximum flexibility, the driver caches data on a per-table basis, as opposed to results from specific queries. Caching data on a table-level allows the caches to be queried, filtered, and sorted in other queries. Once a cache is created, its use is transparent to the application. #### Performance Tuning **Any Connect **Progress DataDirect management of packet-based network communication provides unsurpassed packet transport, network round trips, and data buffering optimization. (socket management). Includes performance methodology for throughput and resource utilization (CPU/memory) –  [How to do insert operation using Synchronous and Asynchronous outbound interface?](#article/tutorial-v2-41-lightning) We use the same Interface as we have practiced for the Synchronous scenario, just change the processing mode to Asynchronous on Interface then Callout v3. - **Request Interface** ![](../images/2020/07/51.png) #### Insert operation and Transactional mode Normally, when we creating a new Interface the field “isTransactional” is unchecked it means that Non-Transactional Mode. If that field is checked then it is Transactional mode. ![](../images/2020/07/28-3.png) –  [How to do update operation using Synchronous and Asynchronous outbound interface?](#article/tutorial-v2-41-lightning) This will guide you on how to send data in multiple objects from Salesforce to the multi-table in the database synchronously and asynchronously through Agent V3 or Any Connect. We will know about Transactional and Non-Transaction mode during processing, Using mapping in WHERE condition. MYSQL Database is used for example to modify the existing records in the database and it located on EC2 instance. ![](../images/2020/07/update1-Copy.png) We explain here how to do **UPDATE** operation using a Synchronous and Asynchronous outbound interface. We have understood about Message Type in WHERE-Clause, knowing about putting value in WHERE-Clause on mapping tool, and callout **V3** to Agent. And we also have known about Transactional Mode. ![](../images/2020/07/updateMonitoring-2-Asysnc.png)         [-How to do delete operation using an Asynchronous / Synchronous outbound interface?](#article/tutorial-v2-41-lightning) We use the same Database Adapter in the previous section as it used for INSERT operation. Now we use that Adapter with **DELETE** operation. ![](../images/2020/10/deleet1-Copy.png) We explain here how to do **UPDATE** operation using a Synchronous and Asynchronous outbound interface. We have understood about message type in WHERE-Clause, knowing about putting value in WHERE-Clause on mapping tool, and callout **V3** to Agent. And we also have known about Transactional Mode. ![](../images/2020/10/deleteMonitoring-2Async.png) [-How to do Select operation using an Asynchronous / Synchronous outbound interface?](#article/tutorial-v2-41-lightning) Users can use the same Database Adapter in the previous section as it used for **INSERT** operation. Now we use that Adapter for **QUERY** operation. ![](../images/2020/10/select2-Copy.png) We explain here how to do select operation **QUERY** using Synchronous and Asynchronous outbound interface. We have understood about Message Type in WHERE-Clause, knowing about putting value in **WHERE** condition in mapping tool, Database Query’s field, and callout **V3** to Agent. ![](../images/2020/10/SelectSYNC.png) #### Streaming API with PushTopic In this case, we have to set the flag 'Streaming, CDC, and Platform Event' to indicate that the interface operates as an event interface. To distinguish this type from the CDC and Platform Event we have to check the field 'Source/Target' that contains the sObject. If it is a sObject and the flag is checked then we know that this interface operates in the mode 'Streaming API with 'PushTopic'. In the message type, we define the external message type structure for example the database structure when we want to send data triggered by the event to the database. We can do the mapping from the sObject (source) to the message type (target) side. This mapping is needed to build the transformation logic on the Agent to the external message type structure for example to send to the database. We have a table in the Agent where we store the interface-id, status, and some other event-related data. This table is created or updated when the user clicks on the button 'Subscribe' of the interface on the Agent Control Board. This table is used for internal logic processing inside the agent for the event-driven interface processing. Based on this table we can find the interface and related mapping when an event occurred and the cometD client in the Agent catch this event. With the cometD capability in the Agent, it can subscribe to the event from Salesforce. When the event gets received we need to find the interface and its related mapping. Knowing this we can transform the data that we received as an event to the external message type structure and send it to the database. A mapping is mandatory in order to do this transformation from the event data to the external data structure based on the message type. In the Agent we have to check and if there is no mapping we have to raise an error in the log. When we receive the event data we create a message of type 'Event Message' in our message table. Doing this way we can provide a kind of event monitoring in Salesforce pushing out to the Agent. We can also do a reprocessing if needed. In this case, we will republish the event again based on the event data in the message. Note that this function is only available for the event type 'Platform Event' and not for 'PushTopic' and 'CDC' event. –  [How to use push topic?](#article/112-what-is-streaming-api-for-the-new-agent) **Streaming API** is a feature used in Agents for real-time data change scenarios. When there is a new record inserted or a record updated on the Salesforce side, it automatically changes the data on the client-side. Use Streaming API to receive notifications for changes to Salesforce data that match a SOQL query you define. ![](../images/2020/12/Untitled6.png)**Notification For Operation:** - **Create →** Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is created. - **Delete → **Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is deleted. - **Undelete → **Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is undeleted. - **Update →** Uncheck this parameter if you want to change the default behavior. The default behavior is set to true which means that you will get a notification in case the record is updated. - **Soft Deleted →** Just deletes sObject from the salesforce database but Agent is not deleted record from the local database. - **Hard Deleted →** Just deletes sObject from the salesforce database and the Agent will delete records from the local database too. ![](../images/2020/12/screencapture-flow-ruby-9911-dev-ed-lightning-force-lightning-r-skyvvasolutions-Interfaces-c-a0a1j000003ZxKdAAK-view-2020-12-23-17_38_35.png) **Replay Option**: This option indicates how the client, subscribed to the PushTopic, read the missing data in case it is online again after a failure. **For detailed information:   ** [–  Salesforce Basic Streaming API Modules](https://trailhead.salesforce.com/en/modules/api_basics/units/api_basics_streaming) Change a Salesforce record and you will see the record is pushed to your external system. You can check the message monitoring to see the result. ![](../images/2020/12/image2.png) In your external system, you get a file. ![](../images/2020/12/image3.png) #### CDC Event In this case, we don't have a SQL to select which data is needed to be sent. All changed data will be automatically sent as events to the Agent. For the CDC event, we just need to set the flag, select the xxxChangeEvent object in the interface on the field 'Source/Target' field, for example, AccountChangeEvent, or LeadChangeEvent, OpportunityChangeEvent, etc. In the message type again we put the external message type. Then we can do the mapping from the sObject field to the external message type. The flow is the same that when the user change, insert, delete, or undelete data an event is created and the Agent will receive all the field that has been changed. In Agent, we are checking the mapping and transform the event data to the external structure based on the mapping. This means that when there is no mapping we need to raise an error and write it into the log. We don't need to select the operation 'Insert', 'Update', 'Delete' and 'Undelete'. This operation is pre-selected by default setting when the CDC event is used. Therefore there is no need to configure this operation as we do for the CDC Event trigger with apex. Like case (1) we also create a message for the monitoring. Also, this kind of message cannot be reprocessed by the reprocessing job. –  [How to use Streaming API with CDC events?](#article/112-what-is-streaming-api-for-the-new-agent) ![](../images/2019/10/change2.png) ![](../images/2020/12/cdc-evtSp2.png) Change a Salesforce record and you will see the record is pushed to your external system. You can check the message monitoring to see the result. ![](../images/2020/12/Untitled4-2.png) Test.csv file is generated in your system. ##### ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: How to install the Agent? Title: Install Agent for Windows Slug: 3-1-install-agent-for-windows URL: https://help.skyvva.com/#article/3-1-install-agent-for-windows ================================================================================ # Install Agent for Windows #### System Requirements ![](../images/2020/04/image_2020_11_23T06_37_45_906Z.png) #### Approach - User/Admin has bought a valid **SSL** certificate from the trusted vendors of Salesforce. –  [Outbound Messaging SSL CA Certificates](https://login.salesforce.com/cacerts.jsp) - User/Admin has got the deployment package and transferred it to the deployment server. #### Installation Procedure 1. Once we have the Skyvva Integration Agent setup file available. We can execute it by double-clicking on it. ![](../images/2020/11/image_2021_04_27T09_54_03_726Z.png) 2. Hit Next, it will ask you to accept the License Agreement. Read the agreement and accept it. This is mandatory to proceed further with the installation. ![](../images/2020/11/image_2021_04_27T09_57_54_487Z.png) 3. Hit **I Agree**, it will take you to Choose the installation directory. By default, it will be C:\Program Files\Skyvva Integration Agent\ You can update it or leave it as is. ![](../images/2020/11/image_2021_04_27T10_00_40_313Z.png) Then click Next. 4. It will take you to choose the Start Menu Folder name, by default it will be Skyvva Integration Agent. Again you can change the name or leave it as is. ![](../images/2020/11/image_2021_04_27T10_02_56_217Z.png) Then click Install. ![](../images/2020/11/image_2021_04_27T10_04_26_602Z.png) 5. Once you click Finish, it will install the Agent as service and start it. 6. We can find out the installed artifacts in the installation directory. ![](../images/2020/11/image_2021_04_27T10_08_04_281Z.png) **In the installation directory, we will have a few executables, out of which we can use 2 namely** SkyvvaIntegrationAgent-Start.exe SkyvvaIntegrationAgent-Stop.exe **As their names say, they will be used to start or stop the agent. If you had already chosen to run the agent while installing, it will be running right now.** 7. In case if we wanted to update the configuration for an agent, we could stop the services by executing the SkyvvaIntegrationAgent-Stop.exe executable and following the procedure described below. 8. Now once we have all the artifacts available and extracted in the deployment directory, we can update the configuration in the config\skyvva_application.properties file. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]User/Admins must only change the following mentioned attributes in the property file.[/su_box] - server.port=9055 The above property will set the port on which the Skyvva Agent will listen. - skyvva.h2.db.port=9099 The above property will set the port on which the Skyvva Agent Internal database web console will be available. - skyvva.agent.username=skyvva skyvva.agent.password=skyvva@12! - The above 2 properties will enable the basic authentication on the Skyvva Agent service. **9. Test the agent with our standard URL after installation.** `http://localhost:9055/application/systemInfo/getSystemInfo` ![](../images/2020/11/image_2023_02_17T14_37_10_325Z.png) - Username=skyvva - Password=skyvva@12! - Click on the Sign button ![](../images/2020/11/image_2023_02_17T14_38_03_187Z.png) This XML shows Agent installation is installed and running successfully **10. In case the user wants to change the standard password and port** - Go to the **SKYVVA** Integration Agent Program file - Click on the config folder ![](../images/2020/11/image_2023_02_17T14_40_21_906Z.png) - Further click on ***skyvva_application.properties*** ![](../images/2020/11/image_2023_02_17T14_41_18_540Z.png) - Users can change their username, password, and port name too as per their convenience ![](../images/2020/11/image_2023_02_17T14_42_59_057Z.png) - This will save inside config folder #### Upgrade Procedure 1. In case we want to upgrade Skyvva Integration Agent to a new patch, then all we have to do is just install the new upgrade file. 2. While upgrading, the installer will not touch the database file, so we don’t have to bother about that file at all. #### Uninstall Procedure 1. Go to the installation directory, if it was not changed then it will be as follows C:\Program Files\Skyvva Integration Agent ![](../images/2020/11/image_2021_04_27T10_19_23_358Z.png) 2. Look for the uninstall.exe, and execute it by double-clicking on it. ![](../images/2020/11/image_2021_04_27T10_22_04_029Z.png) 3. Hit Uninstall, this will stop the running service and delete everything from the installation directory. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Once you uninstall, database file will also be removed. In case if you do not want to loose the database file for any purpose, then make sure that you move the file with name skyvva.mv.db from the agent-db folder before starting uninstall procedure.[/su_box] #### SSL Setup Procedure There are two parts to setting up **SSL**. - The first part is where we enable **SSL** for the Agent instances so that all the services/endpoints exposed by **SKYVVA** Agent middleware can be access using **SSL** over **http** i.e. **https protocol**. - In the second part, we need to ensure that **SKYVVA** Agent middleware can access the Salesforce org using **https**. In order to do that we will have to trust the Salesforce **SSL** certificate by adding the **Root CA** certificate of Salesforce org to Agent’s trusted keystore. #### Setup SSL for Agent Instance [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We need a valid **SSL** certificate in .p12 or .pfx format available to setup **SSL** for Agent Instance. Please check out the list of available trusted vendors ([Outbound Messaging SSL CA Certificates](https://cs32.salesforce.com/cacerts.jsp)) from which you can purchase an **SSL** certificate.[/su_box] **1.** Copy the new valid SSL certificate to the deployment directory i.e. C:\skyvva-agent **2.** Once we have copied the new **SSL** certificate to the deployment directory, we need to change the property file so that the Agent Instance can pick up the **SSL** certificate. Open the property file with the name skyvva_application.properties and look for the properties mentioned below. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]# ================================== # Agent SSL Properties # ================================== # Change this to true, if SSL has to be enabled skyvva.h2.db.ssl.enabled=false # Uncomment the following properties to enable SSL for Agent Services #server.ssl.key-store-type=PKCS12 #server.ssl.key-store=C:\\skyvva-agent\\ssl-certificate.p12 #server.ssl.key-store-password=Skyvva@12! #server.ssl.key-alias=1 #security.require-ssl=true[/aux_code] **3.** As we can see above, all the properties except one have been commented out (which means starts with ‘**#**’). We will have to uncomment them i.e. remove ‘**#**’ from the starting of the lines. Once done it will look like as shown below. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]# ================================== # Agent SSL Properties # ================================== # Change this to true, if SSL has to be enabled skyvva.h2.db.ssl.enabled=false # Uncomment the following properties to enable SSL for Agent Services server.ssl.key-store-type=PKCS12 server.ssl.key-store=C:\\skyvva-agent\\ssl-certificate.p12 server.ssl.key-store-password=Skyvva@12! server.ssl.key-alias=1 security.require-ssl=true [/aux_code] **4.** Now we will have to change only 4 properties to enable the **SSL** for **SKYVVA** Agent. Those 4 properties are as follows. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvva.h2.db.ssl.enabled=true server.ssl.key-store=C:\\skyvva-agent\\Add the name of the new SSL certificate file server.ssl.key-store-password=SSL certificate store password server.ssl.key-alias=Alias of the SSL certificate [/aux_code] **Once we have replaced the highlighted values with the right possible values, we can restart the Agent Instance.** #### Setup SSL for Outbound Flow In this section, we will see how to trust a **Root** **CA certificate** so that we can connect to any system like **Salesforce, Kafka, SAP,** etc using **SSL** through **SKYVVA** Agent middleware. Normally all the standard **CA certificates** are already present in the Trust Store file used by the **JDK**(which is embedded inside the Agent Deployable Package), but in rare scenarios where it's not available, we can import it as a trusted certificate. #### Procedure [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Before we start the procedure, we need to download the other system or web site’s SSL certificate. To download any website’s certificate using the browser, please check the next section.[/su_box] **1.** Open the command prompt. ![](../images/2020/04/image_2020_11_24T07_54_26_031Z.png) **2.** Go to the Agent deployment directory using the command below. cd C:\skyvva-agent\zulu14\bin\ ![](../images/2020/04/image_2020_11_24T07_55_53_350Z.png) **3.** Use the command described below to import the certificate file as a trusted certificate. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]keytool.exe -importcert -alias certificate-alias-name -file path_to_certificate_file -keystore C:\skyvvaagent\zulu14\lib\security\cacerts -storepass changeit -trustcacerts [/aux_code] ![](../images/2020/04/image_2020_11_24T08_03_07_281Z.png) **Make sure that you replace the highlighted parts with the actual values before executing the above command. Once done, restart the Agent Instance.** #### Procedure to Download on SSL certificate #### Google Chrome **Export the SSL certificate of a website using Google Chrome:** **1.**Click the ***Secure*** button (a padlock) in an address bar. ![](../images/2020/04/image_2020_11_24T08_10_05_352Z.png) **2.** Click the ***Certificate(Valid).*** ![](../images/2020/04/image_2020_11_24T08_12_02_007Z.png) **3.** Go to the ***Details*** tab ![](../images/2020/04/image_2020_11_24T08_13_26_069Z.png) **4.**Click the ***Copy to File***… button **5**.Click the ***Next*** button. **6**.Select the “Base-64 encoded X.509 (.CER)” format and click the ***Next*** button. ![](../images/2020/04/image_2020_11_24T08_14_57_214Z.png) **7**.Specify the name of the file you want to save the SSL certificate to **8**.Click the ***Next*** and the ***Finish*** button #### Mozilla Firefox **Export the SSL certificate of a website using Mozilla Firefox:** **1**.Click the ***Site Identity*** button (a padlock) in an address bar. ![](../images/2020/04/image_2020_11_24T08_18_30_757Z.png) **2**.Click the ***Show connection details*** arrow **3**.Click the ***More Information*** button ![](../images/2020/04/image_2020_11_24T08_20_07_607Z.png) **4**.Click the ***View Certificate*** button **5**.Go to the ***Details*** tab ![](../images/2020/04/image_2020_11_24T08_21_33_498Z.png) **6**.Click the ***Export*** button **7**.Specify the name of the file you want to save the SSL certificate to, keep the “**X.509 Certificate (PEM)**” format and click the ***Save*** button #### Internet Explorer **Download and save the SSL certificate of a website using Internet Explorer:** **1**.Click the ***Security report*** button (a padlock) in an address bar ![](../images/2020/04/image_2020_11_24T08_24_40_313Z.png) **2**.Click the View Certificate button ![](../images/2020/04/image_2020_11_24T08_26_13_628Z.png) **3**.Go to the ***Details*** tab **4**.Click the ***Copy to File***… button **5**.Click the ***Next*** button **6**.Select the “**Base-64 encoded X.509 (.CER)**” format and click the ***Next*** button **7**.Specify the name of the file you want to save the **SSL** certificate to **8**.Click the ***Next*** and the ***Finish*** buttons ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: How to install the Agent? Title: Install Agent for Linux Slug: 1-install-agent-for-linux URL: https://help.skyvva.com/#article/1-install-agent-for-linux ================================================================================ # Install Agent for Linux #### System Requirements ![](../images/2020/11/image_2020_11_25T08_00_22_504Z.png) #### Approach - User/Admin has bought a valid **SSL** certificate from the trusted vendors of Salesforce. –  Outbound Messaging SSL CA Certificates - User/Admin has got the deployment package and transferred it to the deployment server. - User/Admin has exported the deployment package to the following directory. /opt/skyvva-agent **If the above directory doesn’t exist already then create it using the following command.** mkdir –p /opt/skyvva-agent/{agent-db,logs} ![](../images/2020/11/image_2020_11_25T07_36_18_212Z.png) - Extract the deployment package using the following command. tar –xvzf Skyvva-Agent-Deployment-Package.tgz -C /opt/skyvva-agent/ [aux_highlight style="aux-highlight-blue" extra_classes=""][root@ip-172-20-63-98~]# tar -xvzf Skyvva-Agent-Deployment-Package.tgz -C/opt/skyvva-agent/[/aux_highlight] #### Deployment Procedure **1.** Once we extract the deployment package to the above-mentioned directory, we should be able to find the following artifacts in the above directory. - **Skyvva-Agent-3.0.0.jar** - **quartz.properties** - **skyvva_application.properties** - **startup.sh** - **stop-agent.sh** - **zulu14** ![](../images/2020/11/image_2020_11_25T07_50_29_247Z.png) **2**. Now once we have all the artifacts available and extracted in the deployment directory, we can update the configuration in the skyvva_application.properties file. [su_box title="Note" box_color="#2a8af0" title_color="#000000"] User/Admins must only change the following mentioned attributes in the property file. • server.port=9055 The above property will set the port on which the Skyvva Agent will listen. • skyvva.h2.db.port=9056 The above property will set the port on which the Skyvva Agent Internal database web console will be available. • skyvva.agent.username=skyvva • skyvva.agent.password=skyvva@12![/su_box] **The above 2 properties will enable the basic authentication on the Skyvva Agent service.** **3.** After completing all the above steps, we can safely start the agent by executing the startup script. • start-agent.sh #### SSL Setup Procedure There are two parts to setting up **SSL**. - The first part is where we enable **SSL** for the Agent instances so that all the services/endpoints exposed by **SKYVVA** Agent middleware can be access using **SSL** over **http** i.e. **https protocol**. - In the second part, we need to ensure that **SKYVVA** Agent middleware can access the Salesforce org using **https**. In order to do that we will have to trust the Salesforce **SSL** certificate by adding the **Root CA** certificate of Salesforce org to Agent’s trusted keystore. #### Setup SSL for Agent Instance [su_box title="Note" box_color="#2a8af0" title_color="#000000"]We need a valid **SSL** certificate in .p12 or .pfx format available to setup **SSL** for Agent Instance. Please check out the list of available trusted vendors ([Outbound Messaging SSL CA Certificates](https://cs32.salesforce.com/cacerts.jsp)) from which you can purchase an **SSL** certificate.[/su_box] **1.** Copy the new valid SSL certificate to the deployment directory i.e. C:\skyvva-agent **2.** Once we have copied the new **SSL** certificate to the deployment directory, we need to change the property file so that the Agent Instance can pick up the **SSL** certificate. Open the property file with the name skyvva_application.properties and look for the properties mentioned below. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]# ================================== # Agent SSL Properties # ================================== # Change this to true, if SSL has to be enabled skyvva.h2.db.ssl.enabled=false # Uncomment the following properties to enable SSL for Agent Services #server.ssl.key-store-type=PKCS12 #server.ssl.key-store=/opt/skyvva-agent/ssl-certificate.p12 #server.ssl.key-store-password=Skyvva@12! #server.ssl.key-alias=1 #security.require-ssl=true[/aux_code] **3.** As we can see above, all the properties except one have been commented out (which means starts with ‘**#**’). We will have to uncomment them i.e. remove ‘**#**’ from the starting of the lines. Once done it will look like as shown below. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]# ================================== # Agent SSL Properties # ================================== # Change this to true, if SSL has to be enabled skyvva.h2.db.ssl.enabled=false # Uncomment the following properties to enable SSL for Agent Services server.ssl.key-store-type=PKCS12 server.ssl.key-store=/opt/skyvva-agent/ssl-certificate.p12 server.ssl.key-store-password=Skyvva@12! server.ssl.key-alias=1 security.require-ssl=true [/aux_code] **4.** Now we will have to change only 4 properties to enable the **SSL** for **SKYVVA** Agent. Those 4 properties are as follows. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]skyvva.h2.db.ssl.enabled=true server.ssl.key-store=/opt/skyvva-agent/Add the name of the new SSL certificate file server.ssl.key-store-password=SSL certificate store password server.ssl.key-alias=Alias of the SSL certificate [/aux_code] **Once we have replaced the highlighted values with the right possible values, we can restart the Agent Instance.** #### Setup SSL for Outbound Flow In this section, we will see how to trust a **Root** **CA certificate** so that we can connect to any system like **Salesforce, Kafka, SAP,** etc using **SSL** through **SKYVVA** Agent middleware. Normally all the standard **CA certificates** are already present in the Trust Store file used by the **JDK**(which is embedded inside the Agent Deployable Package), but in rare scenarios where it's not available, we can import it as a trusted certificate. #### Procedure [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Before we start the procedure, we need to download the other system or web site’s SSL certificate. To download any website’s certificate using the browser, please check the next section.[/su_box] **1**. Go to the jdk directory inside the deployment directory using the following command. cd /opt/skyvva-agent/zulu14/bin ![](../images/2020/11/image_2020_11_25T08_28_53_259Z.png) **2**. Use the command described below to import the certificate file as a trusted certificate. [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]keytool.exe -importcert -alias certificate-alias-name -file path_to_downloaded-certificate-der-file -keystore /opt/skyvva-agent/zulu14/lib/security/cacerts -storepass changeit -trustcacerts [/aux_code] ![](../images/2020/11/image_2020_11_25T08_42_21_961Z.png) **Make sure that you replace the highlighted parts with the actual values before executing the above command. Once done, restart the Agent Instance.** #### Procedure to Download on SSL certificate #### Google Chrome **Export the SSL certificate of a website using Google Chrome:** **1**.Click the ***Secure*** button (a padlock) in an address bar. ![](../images/2020/04/image_2020_11_24T08_10_05_352Z.png) **2**. Click the ***Certificate(Valid).*** ![](../images/2020/04/image_2020_11_24T08_12_02_007Z.png) **3**. Go to the ***Details*** tab ![](../images/2020/04/image_2020_11_24T08_13_26_069Z.png) **4**.Click the ***Copy to File***… button **5**.Click the ***Next*** button. **6**.Select the “Base-64 encoded X.509 (.CER)” format and click the ***Next*** button. ![](../images/2020/04/image_2020_11_24T08_14_57_214Z.png) **7**.Specify the name of the file you want to save the SSL certificate to **8**.Click the ***Next*** and the ***Finish*** button #### Mozilla Firefox **Export the SSL certificate of a website using Mozilla Firefox:** **1**.Click the ***Site Identity*** button (a padlock) in an address bar. ![](../images/2020/04/image_2020_11_24T08_18_30_757Z.png) **2**.Click the ***Show connection details*** arrow **3**.Click the ***More Information*** button ![](../images/2020/04/image_2020_11_24T08_20_07_607Z.png) **4**.Click the ***View Certificate*** button **5**.Go to the ***Details*** tab ![](../images/2020/04/image_2020_11_24T08_21_33_498Z.png) **6**.Click the ***Export*** button **7**.Specify the name of the file you want to save the SSL certificate to, keep the “**X.509 Certificate (PEM)**” format and click the ***Save*** button #### Internet Explorer **Download and save the SSL certificate of a website using Internet Explorer:** **1**.Click the ***Security report*** button (a padlock) in an address bar ![](../images/2020/04/image_2020_11_24T08_24_40_313Z.png) **2**.Click the View Certificate button ![](../images/2020/04/image_2020_11_24T08_26_13_628Z.png) **3**.Go to the ***Details*** tab **4**.Click the ***Copy to File***… button **5**.Click the ***Next*** button **6**.Select the “**Base-64 encoded X.509 (.CER)**” format and click the ***Next*** button **7**.Specify the name of the file you want to save the **SSL** certificate to **8**.Click the ***Next*** and the ***Finish*** buttons ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 8. ActiveMQ Adapter Slug: activemq-adapter URL: https://help.skyvva.com/#article/activemq-adapter ================================================================================ # 8. ActiveMQ Adapter #### Introduction Apache ActiveMQ is a popular open-source messaging provider which is easy to integrate with **SKYVVA**. ActiveMQ supports the JMS 1.1 and J2EE 1.4 specifications and is released under the Apache 2.0 License. For ActiveMQ versions starting with 5.12.2 or 5.13.0, depending on your flow and use case, you may need to set the new org. apache.ActiveMQ.SERIALIZABLE_PACKAGES system property to define which packages are allowed to be serialized in an object message. You can pass the system property through the command line when starting **SKYVVA**. ![](../images/2021/02/image_2021_03_02T07_36_49_749Z-1.png) Integration with application servers is a common scenario in the enterprise Java world, especially when it comes to messaging. ActiveMQ is a JMS 1.1 compliant, open-source, Apache Licensed, message-oriented middleware (MOM) with many, many features far beyond the JMS specification. ActiveMQ offers many different points of connectivity, many cross-language clients, and many pluggable transport protocols including integration with any J2EE 1.4 application server. One of the application servers in the world is **SKYVVA**. A very common requirement is to configure ActiveMQ as the messaging infrastructure within **SKYVVA**. Although there is a bit of documentation on this integration, this guide seeks to provide much more detail and explanation. So if users have a need to integrate ActiveMQ with **SKYVVA**, this guide is for you. This guide explains how to configure **SKYVVA** to start up ActiveMQ as part of its lifecycle and how to configure the ActiveMQ resource adapter to handle the messaging and transactionality between ActiveMQ and **SKYVVA**. ActiveMQ adapter is used to send messages. Messages are just what they sound like, payloads of data that can be shipped between various systems. These payloads can have headers and properties associated with them This adapter supports 3 types of data formats i.e. **CSV**, **XML,** and **JSON.** ## Adapter Modes The adapter supports the following modes of operation. **Mode** **Description** Subscribe Send a message from **SKYVVA** to ActiveMQ Publish Publish a message from ActiveMQ to **SKYVVA** #### Connector Overview Following are mandatory properties: **host** - Specify the activemq host server domain name/ip address e.g. localhost **port** - Specify the activemq port, default or standard port is 61616 **destinationType** - This is a pick list, it can only have the following values i.e. queue or topic. **destinationName** - This is the name of the queue or topic e.g. test-queue, test-topic1 etc. filetype These are optional common properties. **clientId** - String value to specify an id for the client. **durableSubscriptionName** - String value to describe the subscription name **username** - String value to denote the username used to authenticate to ActiveMQ **password** - String value to denote the password for ActiveMQ authentication. **isSSLRequired** - boolean value to denote whether connection has to be configured with SSL or not. separator has_file_header has_quotes adapter_instance ![](../images/2021/02/Capture1-6.png) –  [How to use ActiveMQ Inbound Adapter with CSV Payload?](#article/125-1-how-to-use-activemq-inbound-adapter-with-csv-payload) –  [How to use ActiveMQ Inbound Adapter with XML Payload?](#article/125-2-how-to-use-activemq-inbound-adapter-with-xml-payload) –  [How to use ActiveMQ Inbound Adapter with JSON Payload?](#article/125-3-how-to-use-activemq-inbound-adapter-with-json-payload) –  [How to use ActiveMQ Outbound Adapter with CSV Payload?](#article/126-1-how-to-use-activemq-outbound-adapter-with-csv-payload) What has been demonstrated here is the integration of ActiveMQ with the **SKYVVA** application. This integration is quite common and performed by many enterprises. I hope that this was helpful to readers interested in the integration of ActiveMQ with the **SKYVVA** application. ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 9. RabitMQ Adapter Slug: rabitmq-adapter URL: https://help.skyvva.com/#article/rabitmq-adapter ================================================================================ # 9. RabitMQ Adapter #### Summary The Any Connect RabbitMQ Adapter provides an interface for entering user-provided input such as credentials to create an authenticated RabbitMQ connection. That connection provides the foundation to configure associated RabbitMQ activities that interact with the connection. #### Supported API Versions and Prerequisites The RabbitMQ Adapter uses the RabbitMQ Java Client v5.8.0. Refer to the RabbitMQ documentation for information on the schema fields. The RabbitMQ connector requires the use of an Agent version 10.1 or later. These agent versions automatically download the latest version of the connector when required. ![](../images/2021/02/Screenshot-882-2.png) #### Connector Overview This connector is used to first configure a RabbitMQ connection, establishing access to RabbitMQ, and then used to configure one or more RabbitMQ activities associated with that connection as a source or target within an operation: - **[Get](https://success.jitterbit.com/display/CS/rabbitmq+get+activity):** Gets a message at a RabbitMQ endpoint and is intended to be used as a source in an operation. - **[Get Bulk](https://success.jitterbit.com/display/CS/rabbitmq+get+bulk+activity):** Gets messages at a RabbitMQ endpoint and is intended to be used as a source in an operation. - **[Acknowledge](https://success.jitterbit.com/display/CS/rabbitmq+acknowledge+activity):** Sends an acknowledgement to a RabbitMQ endpoint and is intended to be used as a target in an operation. - **[Publish](https://success.jitterbit.com/display/CS/rabbitmq+publish+activity):** Publishes a message to a RabbitMQ endpoint and is intended to be used as a target in an operation. - **[Publish Bulk](https://success.jitterbit.com/display/CS/rabbitmq+publish+bulk+activity):** Publishes messages to a RabbitMQ endpoint and is intended to be used as a target in an operation. Together, a specific RabbitMQ connection and its activities are referred to as a RabbitMQ endpoint. ### Mandatory Properties - exchangeType - Pick List consisting of 4 values i.e. direct, topic, headers, fanOut. direct will be the default value. Its a String type value. - exchangeName - Name of the exchange. It's a String-type property. - host- String type. Denotes the IP address of the Rabbit MQ server. - port- String type. Denotes the port number of the Rabbit MQ server. - routingKey - String type. Denotes the key with which an Exchange will bind in order to deliver or consume a message. ### Common Properties - username - String type. Contains the connection username. - password - String type. Contains the connection password. - isSSLRequired - Boolean. Default is false. Denotes whether to use SSL to connect to Message Broker. - filetype - Pick List. Should contain CSV, XML, JSON, Binary & EXCEL - separator - Picklist. Should contain following values , ; | Tab - has_file_header - Boolean - has_quotes - Boolean - xmlRootTag- String type. –  [How to use RabbitMQ Outbound Adapter for CSV Payload format?](#article/123-1-how-to-use-rabbitmq-csv-outbound-adapter) –  [How to use RabbitMQ Inbound Adapter with CSV Payload?](#article/124-1-how-to-use-rabbitmq-outbound-adapter-with-xml-payload) **[su_box title="Note" box_color="#2a8af0" title_color="#000000"] In Inbound direction we don't need to execute any callout logic because you are sending data RabbitMQ server to Salesforce side. You just need to start route example: go to adapter tab => All adapter will display in the list view and you just need to click on the start button and your route will be started automatically or you can change adapter status inactive to active and it also starts route automatically. ****If you will make any changes inside the adapter property then you need to stop the route and start again after your changes will reflect server.[/su_box]** **After data sent successfully, you will get Message Published notification on the web page.** ![](../images/2021/02/Capture11-1.png) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 10. JMS Adapter Slug: jms-adapter URL: https://help.skyvva.com/#article/jms-adapter ================================================================================ # 10. JMS Adapter #### Introduction **SKYVVA** JMS Adapter provides a new level of standards-based control over your data, making it easy to extend the power of any JMS-compliant system by performing sophisticated data transformations, conducting in-depth analysis, or applying diagnostics, including error handling, logging, notification, and reporting. ![](../images/2021/02/image_2021_03_02T07_36_49_749Z-2.png) The **SKYVVA**  JMS  Adapter can be used to obtain messages from a remote JMS queue and inject those messages. At the moment, UltraESB supports JMS specification 1.0.2+ and if users are using any proprietary JMS server it MUST be compatible with the 1.0.2+ specification. When users in obtaining a message from the queue you can use a transaction to make sure, that no message is lost. The sample use cases below depict the two integration flows with transactions. ## All standard JMS operations are supported - Send data to a queue or topic and receive confirmation responses - Listen for messages to process data in real-time - Browse  from a queue to get information - Publish a topic for subscribers - Transform data as needed with any operation **SKYVVA** JMS Adapter helps achieve asynchronous communication between loosely coupled systems quickly, with the added benefit of data transformations. Using the **SKYVVA** JMS Adapter, users can easily push data to a topic or queue and perform operations on a schedule or process urgent messages immediately. Gain a way to build new analytics and reporting capabilities that will lead to important company insights, or use diagnostics to help streamline day-to-day business operations. You can apply priority processing to specific records in queues and topics. –  [Inbound JMS Adapter](#article/127-1-inbound-jms-adpater) –  [Outbound JMS Adapter](#article/127-2-outbound-jms-adapter) ![](../images/2021/03/jms32.png) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 11. Agent SAP ERP Adapter Slug: agent-sap-erp-adapter URL: https://help.skyvva.com/#article/agent-sap-erp-adapter ================================================================================ # 11. Agent SAP ERP Adapter #### Overview **Any Connect** integration with your SAP ERP system is becoming a lot easier with the Agent SAP ERP Adapter for SAP PI/PO. The Agent SAP ERP Adapter enables the user to read data from **Any Connect** and to update your Agent SAP ERP  data with information from your SAP backend systems. The Agent SAP ERP Adapter is tightly integrated with the Any Connect **API** and Security Framework, freeing users from these basic tasks like schema generation, code integration, and authentication. Agent SAP ERP Adapter supports BULK, SOAP, and Streaming API for fast and real-time data retrieval and upload. ![](../images/2021/02/image_2021_02_18T08_58_58_423Z.png) #### Key features - Full integration with SAP PI Adapter Framework, Alert Framework, and Monitoring. - The Adapter manages sessionid for authentication purposes. - Supports Read/Create/Update/Delete operations to Salesforce objects - Insert or Update (Upsert) a Record Using an External ID - Supports subscription to Salesforce push topics (Streaming API) - Supports custom objects/fields - XML/CSV data format supported for data updates - Multiple parameters provided in queries for precise data selection - Support Relationship Queries (joins of related objects) - Handle QueryLocator to create one single PI message - Deleting objects based on External ID or field value. - Adjust communication method dynamically based on data volume to achieve the best performance - Workbench for Schema generation and Query validation. - SAP Certified Adapter for SAP PI/PO - Available for SAP PI 7.10, 7,11, 7.30, 7.31, 7.4 - Support TLS 1.1 and TLS 1.2 #### Key advantages - Significantly reduces implementation effort for integration with Salesforce. - Easy configuration and setup Fully integrated with SAP PI/PO without need for external tools. - Easy configuration and setup Fully integrated with SAP PI/PO without need for external tools. –  [How to invoke IDOC XML using Agent SAP ERP Adapter?]((link not available)) **Posting IDOC XML to SAP ERP over Skyvva SAP ERP Adapter** Agent SAP ERP Adapter supports both Linux and Windows Server. In SAP ERP we have to do the following settings Transaction: **SRTIDOC** - Execute with the default values in the transaction with the option “**Register Service**” selected - Registration should be successful with the message “Registration Successful” - If this service has already been registered, you may get the error message – “Access Address already used for Web service”. In such a case, this step can be ignored as the SOAP Service is already registered and running. Transaction: **SICF** Hierarchy Type: **SERVICE** & Execute Navigate to **Default Host –> sap –> bc –> srt –> IDoc**. Right Click & **Test Service** Note the URL that comes in your browser. - This is the generic endpoint for idoc XML posting to SAP. - [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]http://host:port/sap/bc/srt/idoc?sap-client=.[/aux_code] - The following is the endpoint for our SAP system ID7 with client 800 - [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]"http://195.201.104.232:16080/sapid7/sap/bc/srt/idoc?sap-client=800"[/aux_code] - This endpoint we will use while creating the SAP ERP adapter in **SKYVVA** - Importing IDOC from Import SAP metadata ![](../images/2020/10/Untitled-10.png) Here we need to select the **SAP** Connection through the Agent and select the Adapter type which we created earlier in the Agent Control Board and Select the Application Data type IDOC and then Select create message type to call IDOC in **SAP**. **Creating an Outbound interface:** - Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter, and the SQL statement - Mapping to the Agent H2 table. - We have also a Copy node function in **SKYVVA**. Copy node is used to duplicate the segment if needed. ![](../images/2020/10/Untitled-56.png) ![](../images/2020/10/Untitled-58.png) This is the functionality of the **SKYVVA** copy node. –[  How to invoke BAPI XML using Agent SAP ERP Adapter?]((link not available)) **Posting BAPI XML to SAP ERP over Skyvva Agent SAP ERP Adapter** In SAP ERP we have to do the following settings **Calling RFC-enabled Function Modules over HTTP from external application** As a prerequisite, go to transaction SICF and locate the following service: **sap -> bc -> soap -> rfc.** Its description gives you some more details about the functionality: SOAP HTTP HANDLER FOR RFC-CAPABLE FUNCTION MODULES. Now, right-click on that service and choose Test Service, and make sure that you allow SAP to open your web browser (in a popup that appears). Make note of the URL that is opened in the browser. Generally, this URL would look as follows: [aux_code language="javascript" theme="tomorrow" title="" extra_classes=""]http://[hostname]:[SICF port]/sap/bc/soap/rfc?sap-client=[client][/aux_code] It’s a central endpoint for all BAPI’s. Now that we know the communication URL use an HTTP client to communicate with SAP. In this example, I will use the SOAP UI tool for this purpose, but it can be any application. Importing BAPI/RFC's from Import SAP metadata To Import SAP metadata first, we need to create SAP Connection in skyvva as shown below ![](../images/2020/12/Untitled-30.png) **Creating an Outbound Request interface:** Provide the Name, sObject type, Description, Processing mode, Status, Metadata provider, Repository, Message type, outbound adapter, and the SQL statement as shown in the screenshots below In the message type, we have to select the root message type then it will automatically point to Request in the request interface and point to Response in the response interface. **Now we can see the message in the message monitor:** ![](../images/2020/10/Untitled-55.png) ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 12. Google Drive Adapter Slug: google-drive-adapter URL: https://help.skyvva.com/#article/google-drive-adapter ================================================================================ # 12. Google Drive Adapter #### Introduction **SKYVVA** Google Drive Adapter is used to first configure a Google Drive connection, establishing access to an account on the Google Drive server, and then used to configure one or more Google Drive activities associated with that connection as either a source or target within an operation: **Get File:** Retrieves a file from a Google Drive connection and is used as a source in an operation. **Create File:** Creates a file in a Google Drive connection and is used as a target in an operation. **Update File:** Updates a file in a Google Drive connection and is used as a target in an operation. **Delete File:** Deletes a file in a Google Drive connection and is used as a target in an operation. ![](../images/2021/05/drive.png) #### How Google Drive Works **Google drive** is a platform which can store piles of data on the cloud. It is very reliable and user-friendly. Since Salesforce needs data to analyze and generate reports, thus integration of Salesforce with **Google drive** is the requirement of many organization. Files Connect is an application which helps in integration of Salesforce with Google Drive in a simple and efficient way. Files Connect can be used to integrate Salesforce with other applications like Google Apps, SharePoint App, OneDrive, etc. - **Endpoint Name:** Enter a name to use to identify the Google Drive connection. The name must be unique for each Google Drive connection and must not contain forward slashes (/) or colons (:). - **Project ID:** Enter the Google Drive Service Account Project ID–  Google Drive Registration - **Client Email:** Enter the Google Drive Service Account Client Email–  Google Drive Registration - **Private Key String:** Enter the Google Drive Service Account Private Key String–  Google Drive Registration - **Test:** Click this button to verify the connection. The server will check only that the specified user can make a connection. - **Save Changes:** Click this button to save and close the connection configuration. - **Discard Changes:** After making changes to a new or existing configuration, click **Discard Changes** to close the configuration without saving. A message will ask you to confirm that you want to discard changes. - **Delete:** After opening an existing connection configuration, click **Delete** to permanently delete the connection from the project and close the configuration ( Component Dependencies, Deletion, and Removal). #### Prerequisites - The user has to assign a **SkyvvaAllPermissions** set to the current user. - The user has to add **skyvvasolutions namespace** inside callout logic. - Supports **Asynchronous** mode, Asynchronous mode is a switching technique used by **SKYVVA** that uses asynchronous time-division multiplexing to encode data into small, fixed-sized cells.  An **Asynchronous** mode is working as when you make a request and whatever the result. Whether you failed or succeed just call the function **SKYVVA** gonna give you a call back code. So **Asynchronous** never waits for a call to come back in order to execute the rest of the code. **Cache** →** Object Name → Integration Name → Filter → Push → Developer Console → Execute** 1. Adapter Section: Choose Adapter Type (**File**) **→** Name Adapter. 2. Adapter Properties: - **FileProtocol → **Local - **Content_Format → **Text - **Filetype → **CSV - **Folder → **File - **filename → **File.csv - **upload_mode →** Override - **adapter_instance → **akashtest-integrationORG2 - **Separator → (,),(;),(Tab),(I)** 3. Click “**Ping Source Connection”** to test the connection to the specified folder and file. 4. Click **Save**. ![](../images/2021/05/image_2021_06_07T13_50_57_076Z.png) Please hit these links→ - [How to save data from Salesforce to Google Drive ?](#article/tutorial-v2-41-lightning) - [How to read data from Google drive and push to Salesforce ?](#article/147-2-how-to-read-data-from-google-drive-and-push-to-salesforce) - [How to get Token for OAuth2 ?](#article/147-3-how-to-get-token-for-oauth2) **Google Drive** is a cloud storage service that allows users to save files and access them from anywhere. From SKYVVA v2.48, we have the capability to allow the users to back up their data directly from Salesforce to keep on Google Drive. Besides sending data to google drive we can also read data from Google drive back to Salesforce. The user can transform their data to any file format such as CSV, XML, or JSON. They can save their data to Google Drive manually or automatically from our Control Board. ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: How to install the Agent? Title: Install on Windows PC or Laptop Slug: 2-3-install-on-windows-pc-or-laptop URL: https://help.skyvva.com/#article/2-3-install-on-windows-pc-or-laptop ================================================================================ # Install on Windows PC or Laptop #### Overview In this chapter we will see the procedure to create the installer for Windows operating systems. This installer can be delivered to the customer as a single file, which will install everything required to start the **SKYVVA **Integration Agent as a windows service. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]This setup is prepared and available on our Windows EC2 instance with the following details[/su_box] Instance Name: agent-app-windows Instance DNS Name: ec2-18-158-217-193.eu-central1.compute.amazonaws.com Username: Administrator Password: -erQPsqriMDG9Y.%n*B@mk%N-?4@suXF #### Pre-requisites In order to create the installer we need to have the template location available in the following directory. This location will hold all the files which we will be packaged together to create the installer. *C:\Skyvva-Installer\Skyvva Integration Agent - Installation Template* ![](../images/2021/11/image_2021_11_23T07_41_53_361Z.png) - In the above directory, we can see that Skyvva-Agent.jar file exists. Whenever we are delivering a new patch to customer, we need to replace this Jar file with the new one. - A new jar file may have the version number in its name, so ensure that you remove it and the name must become Skyvva-Agent.jar only. - Ensure that another folder with the path as mentioned below exists. *C:\Skyvva-Installer\Installer-Setup-Output* ![](../images/2021/11/image_2021_11_23T07_46_10_733Z.png) Ignore the existing files, for now. - **NSIS** must be installed already. - CreateAgentWindowsInstaller.nsi script is available at the following location. *C:\Skyvva-Installer* ![](../images/2021/11/image_2021_11_23T07_48_29_488Z.png) #### Procedure 1. Open command prompt and go to the NSIS installation directory cd C:\Program Files (x86)\NSIS\Bin ![](../images/2021/11/image_2021_11_23T07_50_50_798Z.png) 2. Execute the following command makensis.exe C:\Skyvva-Installer\CreateAgentWindowsInstaller.nsi ![](../images/2021/11/image_2021_11_23T07_52_55_692Z.png) 3. You will see the following output ![](../images/2021/11/image_2021_11_23T07_54_23_987Z.png) Post the execution of the above command, we can find out the newly created installer at the following location. C:\Skyvva-Installer\Installer-Setup-Output **Pre-required** - Create Salesforce connected app - Create Remote Site - Create Connection name on Agent Control Board **Step -1: Create Connected app on Salesforce           ** - Navigate to the search box and just type “**app…**” for finding the **App Manager** menu then click New Connected App to create a new connection on Salesforce ![](../images/2020/08/Untitled1-2.png) - Fill required information ![](../images/2020/08/Untitled2-2.png) - After that click button Save ![](../images/2020/08/Untitled3.png) - Click continue ![](../images/2020/08/Untitled4.png) - Here is the Client-Id (Consumer Key) and Client-Secret (Consumer Secret). But we cannot use those keys immediately as Salesforce has a display of a warning in the red line ![](../images/2020/08/Untitled5.png) **Step -2: CreateRemote Site ** ** ** We need to create a new Remote Site for allowed Salesforce access to your external system. Put host URL and Agent port number Example: *http://18.158.217.193:9055* ![](../images/2020/08/Untitled6.png) **Step -3:Create new Connection name** - Provide the credential to Connection Destination **Destination**→New **Name**→*any name* **Description**→ (*optional*) **Type** →any type, for example, Agent Database. If we work with Database, so Type is “Agent Database”. We need to create a connection type depends on the working target. ![](../images/2020/08/Untitled7.png) Then click on the **Continue** button - Second, provide the credential of Agent for ping connection from Salesforce to AGENT **Host URL**→ http://18.158.217.193 **Port Forward**→ 9055 (default) **Username**→skyvva (default) **Password**→skyvva@12! (default) ![](../images/2020/08/2-3.png) Then click on the **Ping Agent Connection** button - Third, provide the credential of Salesforce for ping connection from AGENT to Salesforce **Username**→ username of your org **Password**→ password of your org **Security Token**→optional, but if the org has been generated the Security Token we need to put it **Server Environment**→Sandbox/Production **Consumer Key** and **Consumer Secret** users get from the connected app from the Salesforce side ![](../images/2020/08/Untitled8.png) Then Click on the **Ping Salesforce Connection **button After we ping successfully then we can save the connection name. And then we can use any Tab on the Agent Control Board, like checking system information of the Agent server ![](../images/2020/08/Untitled9.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] 1. Users have to open the firewall for their region, If the firewall does not open ping connection will not work. 2. Please follow the link to understand how it works. [Salesforce IP Addresses and Domains to Allow](https://help.salesforce.com/s/articleView?id=000384438&type=1) [/su_box] ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: How to install the Agent? Title: SSL Configuration Slug: 2-4-ssl-configuration URL: https://help.skyvva.com/#article/2-4-ssl-configuration ================================================================================ # SSL Configuration #### Introduction In this chapter we will set up **SSL** certificates to be able to communicate to and from Agent securely through **SSL** protocol. We will see the procedure to setup **SSL** certificate of Agent and other peripherals. How to buy an SSL server certificate from a vendor for example DigiCert. We need to buy a certificate so that we can use SSL for the communication from Salesforce to the agent meaning that we make the callout from the Salesforce (client) to the agent (server). #### Setup Agent SSL Certificate **Prerequisites** 1. Agent deployable package should be available and the contents are supposed to extract to a directory. 2. A valid SSL certificate with a private key is available. **Procedure** 1. Go to the extracted directory I.e. Skyvva-Agent-Deployment-Pack. 2. Use the existing SSL certificate and private key to generate a PKCS12 key store by executing the following command. `./openssl/openssl pkcs12 -export -in .pem -inkey .pem-name > agent-ssl.p12` 3. Once we have the agent-ssl.p12 file created, we’re good to start the Agent and it will use the currently created SSL keystore. #### Import Peripheral System Certificates - The following procedure describes the way to trust the certificates used by the peripheral systems which we want to integrate with Agent. - Normally all the standard CA certificates are already present in the Trust Store file used by the JDK( which is embedded inside the Agent Deployable Package), but in rare scenarios where its not available we can import it as a trusted certificate. **Procedure** 1. Go to the Agent Deployable directory, created by extracting the deployable package file. 2. Use the command described below to import the certificate file as a trusted certificate. `./zulu14/bin/keytool -importcert -alias -file path_to_certificate_file -keystore ./zulu14/lib/security/cacerts -storepass changeit -trustcacerts` #### Approach - The user/Admin has bought a valid **SSL** certificate from the trusted vendors of Salesforce. –  [Outbound Messaging SSL CA Certificates](https://login.salesforce.com/cacerts.jsp) - The user/Admin has got the deployment package and transferred it to the deployment server. #### Salesforce to Agent In this scenario where Salesforce (client) calls the agent (server), we don't need to import any root certificate of the certificate issue because it is already trusted by Salesforce. ### Procedure to create the CSR using OpenSSL - In order to request an SSL Certificate we need to create CSR and the private key file. This can be done very easily by using the OpenSSL utility. Use the following command and we will have both files created in a single shot. winpty openssl req -newkey rsa:2048 -keyout agent.skyvva.com.key -out agent.skyvva.com.csr - The above command will prompt for the PEM pass phrase. Please type "changeit" and hit enter, then again confirm the same passphrase. - Post that it will start the creation of the CSR and for that, it will ask the details. They provide the following details. - **Country**: XYZ - **State**: 123 - **Locality**: Sample - **Organization Name**: ABC - **OU**: example Agent - **Common Name**: example.sample.com - **Email Address**: [exampleEmail.com](mailto:lyna.phu@apsara-consulting.com) 4. Then provide the challenge phrase as "changeit". It will generate 2 files i.e. a Private key file and another CSR file. We will then use the CSR to get the certificate issued by a CA. ![](../images/2021/11/clipboard-202110282327-3miiq.png) ### Creation of PFX/P12 Certificate Keystore for Agent Once we have submitted the CSR to the CA, it will sign the CSR and will deliver generally 2 files back to us. One file will be the Certificate with an extension of .crt or .cer etc and another file will be the Certificate Chain. We will have to use these 2 files and the Key file generated in the previous step to create the PFX/P12 Keystore file. This file can then be used to configure the Agent with the Certificate. Once you have transferred the ZIP file delivered by the CA, it should look as shown in the screenshot below. The key file generated in the previous step is an encrypted key. We need to convert it to decrypted key to use it further for Keystore generation. This can be done by executing the following command. **Common Name**: example.sample.com `winpty openssl rsa -in agent.skyvva.com.key -out agent-decrypted.skyvva.com.key` `` Once we execute the above command, it will prompt for a pass phrase. Please provide the passphrase which was set in the first step. If you have followed the first part then we set it as **"changeit"**. Once we give the passphrase it will generate a new key file which will be decrypted as shown below. After the successful execution of the above command, we will do something like this as shown below. Please note that we have a new file with the name **"agent-decrypted.skyvva.com.key"** Now we have to use another command to generate the SSL certificate keystore file. ![](../images/2021/11/clipboard-202110300259-gnbnm.png) `winpty openssl pkcs12 -export -out agent.skyvva.com.p12 -inkey agent-decrypted.skyvva.com.key -in agent_skyvva_com.crt -certfile agent_skyvva_com.ca-bundle` **DO NOT PROVIDE ANY EXPORT PASSWORD and Hit Enter twice** The above command will generate the keystore file which will then be used to setup the SSL configuration in Agent. #### Approach [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Before we start the procedure, we need to download the other system or web site’s SSL certificate. To download any website’s certificate using the browser, please check the next section.[/su_box] #### Agent to Salesforce In this section, we will see how to trust a **Root** **CA certificate** so that we can connect to any system like **Salesforce, Kafka, SAP,** etc. using **SSL** through **SKYVVA** Agent middleware. In this case, the agent is the client and Salesforce is the server. The server has to prove its identity and therefore send its **SSL** server certificate to the agent while the **SSL** handshake phase. The agent has to verify the server identity by using the root CA certificate who has issue the **SSL** certificate of Salesforce. This is the CA Digicert and we can easily see it in the browser. Call [https://salesforce.com](https://salesforce.com/) and click on the key icon. #### Setup SSL for Outbound Flow Normally all the standard **CA certificates** are already present in the Trust Store file used by the **JDK**(which is embedded inside the Agent Deployable Package), but in rare scenarios where it's not available, we can import it as a trusted certificate. **1.** Open the command prompt. ![](../images/2020/04/image_2020_11_24T07_54_26_031Z.png) **2.** Go to the Agent deployment directory using the command below. cd C:\skyvva-agent\zulu14\bin\ ![](../images/2020/04/image_2020_11_24T07_55_53_350Z.png) **3.** Use the command described below to import the certificate file as a trusted certificate. `keytool.exe -importcert -alias certificate-alias-name -file path_to_certificate_file -keystore C:\skyvvaagent\zulu14\lib\security\cacerts -storepass changeit -trustcacerts` ![](../images/2020/04/image_2020_11_24T08_03_07_281Z.png) **Make sure that you replace the highlighted parts with the actual values before executing the above command. Once done, restart the Agent Instance.** #### Procedure to Download an SSL certificate #### Google Chrome **Export the SSL certificate of a website using Google Chrome:** **1.**Click the ***Secure*** button (a padlock) in an address bar. ![](../images/2021/11/image_2021_11_23T06_35_51_803Z.png) **2.** Click the ***Certificate(Valid).*** ![](../images/2021/11/image_2021_11_23T06_37_58_280Z.png) **3.** Go to the ***Certification Path*** tab ![](../images/2021/11/clipboard-202009022045-vexat.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"]Salesforce (client) calls the agent (server), we don't need to import any root certificate of the certificate issue because it is already trusted by Salesforce.[/su_box] ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Connector supported by the Agent Title: 1. File Slug: file URL: https://help.skyvva.com/#article/file ================================================================================ # 1. File #### File Adapter **Agent File adapter** uses to integrate data from file to **SFDC** and from Salesforce to file. The **File** type that Agent support is CSV, XML, and Excel that can be integrated with their content. A File Adapter is an object used to manage file-based information through Clarify. File Adapters aid in the management of file-based resources: they can create, edit, delete, read, or write files on the local file system or on mapped network drives. #### How Agent File Works Business Processes use **Agent File Adapter** to perform file-based operations on data. Writing data immediately after transformation activity is the most common use of File Adapter. In addition to the data, Business Processes can supply runtime directions to the adapter. For example, a user may want to supply the name of a file to be written to the local file system. The Business Process can supply the file name (and other common runtime values) to the File write Adapter. #### Prerequisites - The user has to assign a **SkyvvaAllPermissions** set to the current user. - The user has to add **skyvvasolutions namespace** inside callout logic. - Supports **Asynchronous** mode, Asynchronous mode is a switching technique used by **SKYVVA** that uses asynchronous time-division multiplexing to encode data into small, fixed-sized cells.  An **Asynchronous** mode is working as when you make a request and whatever the result. Whether you failed or succeed just call the function **SKYVVA** gonna give you a call back code. So **Asynchronous** never waits for a call to come back in order to execute the rest of the code. #### ![](../images/2020/04/image_2020_11_05T13_21_04_268Z-1.png) **Cache** →** Object Name → Integration Name → Filter → Push → Developer Console → Execute** 1. Adapter Section: Choose Adapter Type (**File**) **→** Name Adapter. 2. Adapter Properties: - **FileProtocol → **Local - **Content_Format → **Text - **Filetype → **CSV - **Folder → **File - **filename → **File.csv - **upload_mode →** Override - **adapter_instance → **akashtest-integrationORG2 - **Separator → (,),(;),(Tab),(I)** 3. Click “**Ping Source Connection”** to test the connection to the specified folder and file. 4. Click **Save**. [–How to use Agent File Adapter For Producer?](https://apsara-consulting.com/docs/tutorial-v2-41-lightning/110-agent-file-adapter/110-2-agent-file-adapter-for-producer/) #### Introduction Agent File Adapter For Producer, we will learn how Agent File Adapter works for Producer. Agent File adapter for producer uses for writing a file from salesforce to file. Agent file adapter for Producer means outbound Agent File Adapter. To use the Agent File adapter for Producer, we need to configure the Agent Control Board, and we need to create an Agent File Adapter. In this chapter, we will learn how to use the Agent File adapter for the producer, and we will know how to do outbound with CSV, Excel file type. #### Prerequisites Firstly, you need to have some required step before you can use the Agent File adapter: - Create Metadata Provider, Istructure Repository - Create Integration and Configure a new agent control board - Create Agent File Adapter (Outbound) on new Agent Control Board - Create an Outbound interface - Checking Cache monitoring status - Callout  to new Agent Since the user now completely understand; How to use the File Adapter For Producer, Agent Control Board, by hitting the upper link, now we understand the Architect of the Agent Control Board. `For Excel and CSV File, user can just do the same as XML File. But the user only needs to change the file types, adapter, and its properties accordingly.` ![](../images/2020/04/image_2020_08_20T07_07_38_951Z.png) ![](../images/2020/04/image_2020_08_20T07_09_49_153Z.png) ![](../images/2020/04/image_2020_08_20T07_11_23_653Z.png) ![](../images/2020/04/image_2020_08_20T07_13_47_629Z.png) ![](../images/2020/04/image_2020_08_20T07_14_50_518Z.png) **Namespace in an XML file is used to validate the schema** `xsi:schemaLocation="http://schema.infor.com/InforOAGIS/2 http://schema.infor.com/2.12.x/InforOAGIS/BODs/SyncCustomerPartyMaster.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schema.infor.com/InforOAGIS/2">` [su_box title="Note" box_color="#2a8af0" title_color="#000000"] XML file generation is not done completely and also message will not update from the agent side with success status when you generate XML file but the XML file should be generated on the server successfully.[/su_box] ![](../images/2020/04/image_2020_08_20T07_16_56_686Z.png) [–How to use Agent File Adapter For Consumer?](https://apsara-consulting.com/docs/tutorial-v2-41-lightning/110-agent-file-adapter/110-1-agent-file-adapter-for-consumer/) #### Introduction Agent File Adapter For Consumer, we will learn how Agent File Adapter works for consumer. Agent File Adapter for consumer means **Inbound** Agent File Adapter. We use Inbound Agent File adapter for reading using the new event-driven mode with the consumer. We have an event-driven listener who is a camel consumer. We don’t need a scheduler. We add the real-time and event-driven feature to pick up immediately. To use the agent file for consumer, we need to configure the Agent Control Board, and we need to create an Agent File adapter. #### Prerequisites Firstly, you need to have some required step before you can use the Agent File adapter: - Create Metadata Provider, Istructure Repository - Create Integration and Configure a new agent control board - Create Agent File Adapter(inbound) on new Agent Control Board - Create Inbound interface - Checking Cache monitoring status Upload CSV file on consumer folder. Example: MyAccount.csv ![](../images/2020/12/b11.png) [su_box title="Note" box_color="#2a8af0" title_color="#000000"] you need to link the inbound adapter with the inbound interface otherwise route will not start.[/su_box] ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: Scheduler Title: Scheduler Slug: scheduler-2 URL: https://help.skyvva.com/#article/scheduler-2 ================================================================================ # Scheduler #### Introduction This chapter explains the Scheduler on Agent Control Board. The scheduler is a program that starts and handles a job automatically. The user can get all inbound and outbound schedulers related to integration. The scheduler is a type of scheduled job which runs regularly based on time settings. You can set up the scheduler as your wish. [su_box title="Note" box_color="#2a8af0" title_color="#000000" radius="1"]To invoke Apex classes to run at specific times, first implement the Schedulable interface for the class, then specify the schedule using either the Schedule tab in the **SKYVVA** app user interface [/su_box] **SKYVVA** schedules the class for execution at the specified time sometimes. Actual execution can be delayed based on service availability. The following are the values for the expression: Name Values Seconds 0–59 Minutes 0–59 Hours 0–23 Day of month frequency 1–31 Month Frequency 1–12 or the following: - JAN - FEB - MAR - APR - MAY - JUN - JUL - AUG - SEP - OCT - NOV - DEC Day of week 1–7 or the following: - SUN - MON - TUE - WED - THU - FRI - SAT Connection Destination Web services eg. AWS, Google Cloud, Alibaba, etc. - **Daily:** The schedule will activate the operation every day, or every few days. When this option is selected, the following become available to configure: **Every [#] Day(s):** Enter a number of days in between operation runs. - **Weekly:** The schedule will activate the operation during a specified set of days of the week. When this option is selected, the following become available to configure: **Every [#] Week(s):** Enter a number of weeks in between operation runs. - **[Sun, Mon, Tue, Wed, Thu, Fri, Sat]:** Check the boxes next to the day(s) of the week on which you want the operation to run. - **Monthly:** The schedule will activate the operation on a monthly basis. When this option is selected, choose one of two options that become available to configure: **Day [#] of Every [#] Month(s):** Enter the day of the month and number of the month in between operation runs. - **The [1st, 2nd, 3rd, 4th, or Last] [Day of Week] of Every [#] Month:** Use the dropdowns to select which day of the month and enter the number of months in between operation runs. - **Daily Frequency:** Select one of two options for the times at which the schedule should kick off the operation on the days that it runs: **Occurs once at [hh: mm] [AM/PM]:** The schedule will activate the operation only once at the specified time. Use the dropdowns to select the hour(s), minute(s), and time of day at which you want the operation to run. - **Occurs every [#] [Minute(s)/Hour(s)] Starting at [hh:mm] [AM/PM] and Ending at [hh:mm] [AM/PM]:** The schedule will repeatedly reactivate the operation for the specified period of time throughout the day. Enter a number to correspond with the dropdown selection of minute(s) or hour(s) at which you want the operation to run, along with dropdown selections of any times throughout the day that you want to limit the operation to run within. **NOTE:  **Time zones are discussed below in [Operation Time Zones](https://success.jitterbit.com/display/DOC/Schedules#Schedules-time-zones). - **Duration:** Configure the dates of duration for the schedule. **Starting at:** By default, the current date will be selected. If you want to specify a different start date, click the calendar icon to open a calendar date picker and select the desired date. - **Ending at:** By default, the operation(s) on which the schedule is assigned will run indefinitely per the schedule. If you want to specify an end date, click the calendar icon to open a calendar date picker to select the desired date. **SKYVVA** Schedulers is a type of scheduled job which runs regularly bases on-time settings. There are three categories of Schedulers. - **Schedule per integration:** a global scheduler process all interfaces on integration, it will skip either the Interface group or interface that is running its scheduler. Scheduler name **AgentProcessPerIntegration** - **Schedule per-interface group:** process all interfaces in the group, if the scheduler has been started then all the schedules of the interface in this group will stop automatically. Scheduler name **AgentProcessPerInterfaceGroup** - **Schedule per interface:** it will process a specific interface. It cannot be started if its interface group scheduler has already started. Scheduler name **AgentProcessPerInterface** - **Other:** This is a scheduler per integration only. It is responsible to upload the Agent logs generated for that integration into the iLog2c table** AgentLogEntryTransfer** #### To find a scheduler on Agent Control Board - Login to salesforce and enter the Integration page detail - Click on Agent Control Board ![](../images/2022/07/image_2023_04_25T13_25_42_465Z.png) - You can find this page on the Agent Control Board page with the tab name “Scheduler” ![](../images/2022/07/image_2023_04_25T13_47_49_383Z.png) **Scheduler Page contains the following fields: ** - **Category of Scheduler:** There are many categories of schedulers **Schedulers per Integration**: you can choose which scheduler per Integration you want to start. There are two types of schedulers: - Inbound - Outbound ![](../images/2022/07/image_2023_04_25T13_50_36_663Z.png) - **Scheduler per Interface Group**: you can choose which scheduler per Interface group you want to start. There are two types of schedulers per- interface group: - **Skyvva_DefaultIG_Outbound:** you can get all outbound related to integration. - **Skyvva_DefaultIG:** you can get all inbound related to integration. ![](../images/2022/07/image_2023_04_25T13_52_57_494Z.png) - **Scheduler per Interface:** you can choose which scheduler per interface you want to start. ![](../images/2022/07/image_2023_04_25T13_56_23_803Z.png) - **Interface**: You can search for schedules with a single interface or with all interfaces. - **Interface Group**: You can search for schedules with all interface group - **Status:** There are 2 types of status that you can search. These statuses are Running - Stopped #### Prerequisite Before setup the scheduler, there are some properties you must know: - **Daily Frequency: ** - **Run at:** If you choose this it means you want the scheduler to run once a day but at a specific time. - **Run every:** The scheduler will run every hour or minute depending on you who set them up. If you want to run every X hour then you have to choose Hours. However, you have to choose the starting time along with the ending time you want it to end. - **Days of Frequency: ** - **Days of Week:** The default is all day is selected. It means the scheduler will run every day. But if you want to skip one day or more you can deselect that day. - **Days of Month:** The function of this one is similar to the above. If you want the scheduler to skip then deselect the month you don’t want to run. ![](../images/2022/07/image_2023_04_25T13_59_54_548Z.png) –  [How to use Scheduler on Agent Control Board](https://apsara-consulting.com/docs/tutorial-v2-41-lightning/174-scheduler-on-agent-control-board/) ![](../images/2022/07/image_2023_04_26T12_43_25_420Z.png) - Before you run the schedule you make sure your interface group, Adapter, Integration, Interface, mapping, Ichain, Workflow, is cache retrieved correctly. ![](../images/2022/07/image_2023_04_26T12_43_25_420Z.png) - The agent will be generated scheduler after you click the scheduler tab - Set the time to Run At (You can choose the one Frequency you want to set for running) - Navigate to the message monitor tab to check the result ![](../images/2022/07/image_2023_04_26T12_51_19_544Z.png) - Users can run tasks manually or you can use schedules to run them at a specific time or interval such as hourly, daily, or weekly. To use a schedule, you associate the task with a schedule when you configure the task. You can use an existing schedule or create a new schedule. If you want to create a schedule, you can create the schedule from the task's Schedule Tab during task configuration. - When the user creates a schedule, then specify the date and time. You can configure a schedule to run associated assets throughout the day between 12:00 a.m. and 11:55 p.m. **SKYVVA** Agent Services might add a small schedule offset to the start time, and all other time configurations. As a result, scheduled tasks and task flows might start later than expected. - For example, the user configures a schedule to run hourly until noon, and the schedule your Salesforce organization by **SKYVVA** Agent Services. - Extends the end time for the schedule to 12:00:10 p.m., and the last hourly task or task flow starts at 12:00:10 p.m. - Users can monitor scheduled tasks from the All Jobs page in Monitor. Scheduled tasks do not appear on the Scheduler Tab. - When users copy a task that includes a schedule, the schedule is not associated with the new task. To associate a schedule with the new task, edit the task. - If the user removes a task from a schedule as the task runs, the job completes. Data Integration cancels any additional runs associated with the schedule. Users will get a success message when data have been sent to salesforce correctly. This chapter guides us on how to find and how set the schedule on the agent control board. ================================================================================ Book: Agent Guide Section: Agent Guide Subsection: How to install the Agent? Title: Introduction Slug: install-the-agent URL: https://help.skyvva.com/#article/install-the-agent ================================================================================ # Introduction #### Introduction Users can install any combination of monitoring agents on a managed system. For example, if the user installs the Monitoring Agent for MySQL for monitoring MySQL servers, the user might want to also install the Response Time Monitoring Agent to gather more response time information for your cloud applications. Users might also want to install the Monitoring Agent for Windows OS to monitor other aspects of their system, such as the overall CPU, memory, and disk. Open a terminal shell session on the Red Hat Enterprise Linux system. The agents must be installed on the system where the application that you want to monitor is installed. If needed, transfer the installation archive file to the system to be monitored. The archive file contains the agents and installation script. [su_box title="Note" box_color="#2a8af0" title_color="#000000"]On the  Agent machine, if the user installs third-party tools that utilize the Java Virtual Machine (JVM) agents for byte code injection, you might encounter issues. **SKYVVA** will not provide support for such issues that arise due to the usage of third-party tools.[/su_box] ================================================================================ Book: SKYVVA Bulk Data Loader Release Note Section: SKYVVA Bulk Data Loader Release Note Subsection: Main Release Note 1.1.0 Title: 1. Installation Link Slug: skyvva-bulk-data-loader-v-1-1-0-main-release-note-1-installation-link URL: https://help.skyvva.com/#article/skyvva-bulk-data-loader-v-1-1-0-main-release-note-1-installation-link ================================================================================ # 1. Installation Link ## Coming Soon.... ================================================================================ Book: SKYVVA Bulk Data Loader Release Note Section: SKYVVA Bulk Data Loader Release Note Subsection: Main Release Note 1.1.0 Title: 2. New Feature Slug: skyvva-bulk-data-loader-v-1-1-0-main-release-note-2-new-feature URL: https://help.skyvva.com/#article/skyvva-bulk-data-loader-v-1-1-0-main-release-note-2-new-feature ================================================================================ # 2. New Feature ## New SKYVVA Bulk Data Loader The SKYVVA Bulk Data Loader is a free, Java-based application for Windows and macOS that enables fast and efficient import and export of millions of records in Salesforce using Bulk API v2.0. It works in conjunction with the SKYVVA APP installed in Salesforce, where users can configure mapping and interface settings. With support for multiple file formats (CSV, XML, JSON) and an intuitive mapping tool, users can easily transform and align their data without the need for custom development. During file import, messages are automatically generated to provide clear visibility into processing status, enabling effective monitoring, error tracking, and greater control over large-scale data operations.