Page History
HTML |
---|
<style> .release-box { height: 30px; width: 100px; padding-top: 8px; text-align: center; border-radius: 5px; font-weight: bold; background-color: #8efeb3; border-color: #FCE28A; } .release-box:hover { cursor: hand; cursor: pointer; opacity: .9; } </style> <meta name="robots" content="noindex"> <div class="release-box"> <a href="https://docs.perspectium.com/display/krypton" style="text-decoration: none; color: #FFFFFF; display: block;"> Krypton </a> </div> |
After following the steps to configure your Salesforce integration and bond Salesforce with ServiceNow or another ITSM appPerspectium DataSync application for sharing, there are additional settings available for you to configure that can tools available on the Tools tab to help make your integration more robust and tailored to your organization's needs.
Monitoring
title | View receipts of your integration |
---|
style | background: white |
---|
Receipts are automatically generated in your Salesforce org for your integration. Receipts indicate the delivery status for records that have been shared from your ServiceNow instance to your Salesforce org, allowing you to quickly identify successfully synced records as well as any records that have not yet been synced. Receipt delivery statuses include:
Success Your records were synced successfully
Pending Your Salesforce org is still processing the records shared out from your ServiceNow instance
Error Your records were not synced successfully
To view the receipts generated in your Salesforce org for data being shared out by ServiceNow, follow these steps:
Log into your Salesforce organization and click the icon in the upper left-hand corner of the screen. Then, click the Perspectium Replicator app.In the navigation bar near the top of the screen, click Receipts. Then, on the resulting page, click into the receipt that you want to view. Note that the receipt's delivery status will be listed as the value in the Batch Type field for the receipt.
NOTE: Keep in mind that receipts generated within Salesforce are receipts for data coming into Salesforce (inbound data). To view information for receipts for data coming out of ServiceNow (outbound data), see ServiceNow messages & receipts.
title | Change Salesforce receipt default size |
---|
The following options are available:
Jobs
View the scheduled jobs that process inbound and outbound data to the Perspectium Integration Mesh. There are two job types:
MultiOutput Processing - The job that will run to process messages with a status of Ready in the Outbound Messages table and send them to the specified shared queues in the Integration Mesh.
Replicator Subscriber - The job that will consume messages from the specified subscribed queues in the Integration Mesh. The messages will be consumed and processed by the Perspectium application and saved into the Inbound Messages table in the app so you have the messages for reference.
When creating a new job, you have the following options available:
Description - A description to give the job for your reference (this isn't used). If no description is entered, the job type is used along with the datetime it will run or be aborted i.e. MultiOutput Processing Scheduled at 2024-02-08 14:24:15.036.
Job Type - The type of job as mentioned above. NOTE: It is recommended to have only one job for each job type to avoid race conditions where the same messages are sent out twice.
Job Interval - How often the job should run.
Job Delay Interval - An interval to delay the job and try again if the maximum number of Salesforce jobs running has been exceeded and the job cannot be executed. For example, if the job tries to run and it cannot execute and you have the delay set to 5 minutes, it will try again in 5 minutes. If not set, it will try again at the job interval which may fail again if the maximum number is still exceeded. This option is a way to give Salesforce time to complete executing other jobs without continuing trying to run again.
Email User - A user to email if the job has connectivity issues connecting to the Perspectium Integration Mesh.
Email Interval - How long we should email about connectivity issues for. If the issue is ongoing until you fix it (such as bad Integration Mesh credentials), you will only be notified for the time specified here at which point it will no longer email even if the issue is still occurring.
UI Expand | ||
---|---|---|
|
style | background: white |
---|
By default, Salesforce receipts will be generated for every 1,000 ServiceNow messages. However, you can change this default value within the Replicator Settings for your Salesforce org.
Log into your sandbox Salesforce organization and click the icon in the top right-hand corner of the screen. Then, click Setup.In the Quick Find window on the left side of the screen, type and then click Custom Settings (under Custom Code).
Locate the ReplicatorSettings label from the list of Custom Settings. Then, under the Action column, click Manage for ReplicatorSettings.
On the resulting ReplicatorSettings page, click Edit. Then, modify the values for the Batch Ack Size and Batch Error Size fields to be the number of messages (as a batch) that will trigger the generation of a receipt within Salesforce for inbound data.
Dynamic Share
UI Expand | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||
| |||||||||||||||||||||
UI Expand | |||||||||||||||||||||
| |||||||||||||||||||||
Divbox | |||||||||||||||||||||
|
Code Block | ||||
---|---|---|---|---|
| ||||
@isTest(SeeAllData=true)
global class PSPContractTriggerTest {
private static testmethod void TestPSPContractTrigger() {
List<persp__psp_replicate_conf__c> shares = [select Id,persp__create__c,persp__update__c,persp__delete__c,persp__table__c from persp__psp_replicate_conf__c where persp__table__c='Contract'];
System.debug('Found Share: ' + shares.size());
for(persp__psp_replicate_conf__c share : shares){
System.debug('processing table: ' + share.persp__table__c);
SObject shareObj = Schema.getGlobalDescribe().get(share.persp__table__c).newSObject() ;
//Account object is required to create a Contract
Account testAccount = new Account(name='PSP_Test Account');
insert testAccount;
String testName = 'PSP_Test';
List<Contract> contractList = new List<Contract>();
for(Integer i = 0; i <= 200; i++){
Contract testContract = new Contract(
AccountId = testAccount.id,
Name = testName + i,
Short_Description__c = testName,
StartDate = System.today() + 1,
EndDate = System.today() + 3,
Preferred_Completion_Date__c = System.today() + 2,
Status = 'Draft',
Contract_Type__c = 'Other'
);
contractList.add(testContract);
}
insert contractList;
if(share.persp__update__c){
String q = 'select Id, Status from ' + share.persp__table__c + ' WHERE Short_Description__c =: testName LIMIT 1';
List<Contract> sobjList = Database.query(q);
if (sobjList.size() == 0)
continue;
System.debug('returned: ' + sobjList.size());
System.assertEquals(sobjList.size(), 1);
for(Contract o : sobjList){
o.Status = 'In Progress';
update o;
String body1='x';
Blob b = Blob.valueOf(body1);
Attachment attach1= new Attachment();
attach1.Name = 'Test Attachment';
attach1.ParentId = o.Id;
attach1.Body = b;
insert attach1;
attach1.Name = 'Updates Test Attachment';
update attach1;
System.assertEquals(attach1.Name, 'Updates Test Attachment');
delete attach1;
//ContentDocumentLink Test
ContentVersion contentVersion = new ContentVersion(
Title = 'Test',
PathOnClient = 'Test',
VersionData = Blob.valueOf('Test Content'),
IsMajorVersion = true
);
insert contentVersion;
List<ContentDocument> documents = [SELECT Id, Title, LatestPublishedVersionId FROM ContentDocument];
//create ContentDocumentLink record
ContentDocumentLink cdl = New ContentDocumentLink();
cdl.LinkedEntityId = o.id;
cdl.ContentDocumentId = documents[0].Id;
cdl.shareType = 'V';
insert cdl;
cdl.shareType = 'I';
update cdl;
try {
Delete cdl;
} catch (Exception e) {
System.debug('Error deleting ContentDocumentLink');
}
} // end for(Contract o : sobjList){
} // end if(share.persp__update__c){
} // end for(persp__psp_replicate_conf__c share : shares)
} // end testmethod()
}
|
title | Bypass users |
---|
Divbox | ||
---|---|---|
| ||
This feature allows you to limit unnecessary users from triggering a dynamic share. This is especially useful for Salesforce users that are loading large records via Data Loader and subsequently do not want the records to be dynamically shared. This feature is located within the Dynamic Share Trigger Builder Properties page. To use the trigger bypass, enter the email of the user you want to exclude in the Bypass Users field. Once the properties page is saved, it will take effect immediately and all Dynamic Shares will be bypasses for the users specified. |
title | Include child records |
---|
Divbox | ||
---|---|---|
| ||
The Include Child Records option provides a way to share out child records of a parent record. This is done by creating Apex triggers so as to capture events on those child tables, and filtering to only share out child records related to the parent record. After selecting the parent table on a dynamic share form, the Include Child Records option will populate with child tables that support Apex triggers. Select those tables where you want to share child records from. For example, if you select the Case table for the dynamic share and want to share out comments on Case records, select the CaseComment table in the Include Child Records option: Like attachments, this option currently only supports sharing out all fields of the child tables. As is the case with the Apex trigger created for the parent table specified in the share, any triggers created for the child tables will be set to blank when the dynamic share is set as inactive and/or you remove a child table from the selected list (i.e. if you first select the CaseComment table in the Include Child Records option, and create a trigger for it, and then later you decide to remove the CaseComment table from the selected list). This is done to be consistent with the approach of not deleting Apex Triggers, since Apex triggers can only be created in sub-prod orgs and moved over to prod orgs. (i.e. once you delete an Apex trigger in production you can't recreate it without going through the process of doing it in a sub-prod). Apex triggers on the child tables can be deleted but when the Apex trigger is deleted on the parent table, notably when the dynamic share itself is deleted. |
Bulk Share
| |||||
UI Expand | |||||
---|---|---|---|---|---|
| |||||
Divbox | |||||
| |||||
UI Expand | |||||
| |||||
|
UI Expand | |||||
---|---|---|---|---|---|
| |||||
|
|
UI Expand | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||||||||||
|
Other
UI Expand | |||||||
---|---|---|---|---|---|---|---|
| |||||||
|
UI Expand | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||
|
UI Expand | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||
|
UI Expand | |||||
---|---|---|---|---|---|
| |||||
|
UI Expand | |||||||
---|---|---|---|---|---|---|---|
| |||||||
|
UI Expand | |||||
---|---|---|---|---|---|
| |||||
|
UI Expand | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||||||||||||||||||
|