Additional D&B Direct+ Services

Dun & Bradstreet’s Direct+ API supports many different products for matching and enriching. For the standard integrations with Identity Resolution (Cleanse and Match) and Company Profile with Executives, Linkage, and Financials (CMPELF), you can configure STEP to leverage these additional Direct+ products. Achieving this will require manual configuration of D&B setup within STEP; therefore, Stibo Systems recommends you follow the steps defined in the D&B Integration Configuration and Easy Setup topic in the Data Integration documentation (here), which provides the system with base D&B configurations to build upon.

For a list of all available D&B Direct+ products and corresponding documentation, refer to the D&B Direct+ API Products topic in the Data Integration documentation here.

Note: You must have commercial licensing to obtain access to Direct+ products. Contact your Stibo Systems account manager or partner manager, or your D&B Account Representative for more information.

Data Model for a New Enrichment Service

Prior to configuring STEP to support new Direct+ products, it is important to evaluate and determine which product contains the desired data to bring into STEP. Once this is determined, Stibo Systems recommends you analyze which D&B fields must be mapped and accounted for in the supporting data model within STEP. This is a manual exercise and is not supported by Easy Set-up. It is possible that there will be existing overlapping attributes in the data model for Identity Resolution and CMPELF; in such cases, existing data containers and/or attributes should be extended to support the new Direct+ product.

New Enrichment Service Configuration

The following example will illustrate how to configure STEP to integrate with Analytics Assessment Material Change (AASMCU). This will leverage the default data mappings deployed by ‘Easy Set-up.'

Integration attributes

You must manually create the following new integration attributes for AASMCU. These attributes must be valid for the D&B Organization entity type as indicated in the D&B component model.

  1. Integration Status

    • Attribute ID: IntegrationStatusAASMCU

    • Attribute name: Integration Status (AASMCU)

  2. Integration Error Code

    • Attribute ID: IntegrationErrorCodeAASMCU

    • Attribute name: Integration Error Code (AASMCU)

  3. Integration Error Description

    • Attribute ID: IntegrationErrorDescriptionAASMCU

    • Attribute name: Integration Error Description (AASMCU)

  4. Integration JSON Data

    • Attribute ID: DnBJSONEnrichmentDataAASMCU

    • Attribute name: D&B JSON Enrichment Data (AASMCU)

Operation configuration

You must create a new D&B operation configuration for AASMCU to contain mappings to the new integration attributes.

JavaScript business action enrichment

To initiate the API transaction for AASMCU, create a new JavaScript business action to retrieve AASMCU data and map to STEP.

  • Business Action ID: DnBEnrichRequestAASMCU

  • Business action Name: D&B Enrich Request (AASMCU)

Input the following binds to your new business action:

Variable Name

Binds To

Parameter

currentObject

Current Object

 

dnbIntegrationContext

D&B Integration Context

 

DnBJSONCompanyProfile

Attribute

D&B JSON Enrichment Data (DnBJSONEnrichmentDataAASMCU)

dnbGateway

Gateway Integration Endpoint

D&B REST Gateway (DnBRESTGateway)

Copy
dnbIntegrationContext.performDefaultEnrichingValidation(currentObject);
 if (dnbIntegrationContext.getIntegrationResult().getIntegrationException()) {
  return;
 }
 queryParams = new java.util.HashMap();
 queryParams.put("productId", "aasmcu");
 queryParams.put("versionId", "v1");
 var dnbOrg = currentObject.getDnbOrganization();
 const dunsNumberSingleValue = dnbOrg.getValue("DnBDUNSNumber");
var dunsNumber = dunsNumberSingleValue.getValue();
 for(i=dunsNumber.length(); i<9; i++) {
  dunsNumber = "0" + dunsNumber;
 }
 var operationConfiguration = currentObject.getManager().getHome(com.stibo.core.domain.setupentity.SetupEntityHome).getSetupEntityByID('DnBEnrichConfigAASMCU');
 var get = dnbGateway.rest().get();
 get.path("/v1/data/duns/" + dunsNumber);
 get.pathQuery(queryParams);
 get.header("Content-Type", "application/json");
dnbIntegrationContext.setOperationConfiguration(operationConfiguration);
 jsonResult = get.invoke();

 dnbOrg.setSimpleValue(DnBJSONCompanyProfileAASMCU, jsonResult);
 var responseObject = JSON.parse(jsonResult);
 dnbOrg.setSimpleValue(riskSegmentAttribute, responseObject.organization.dnbAssessment.materialChange.riskSegment.description); 

Business action wrapper for asynchronous integration

For asynchronous integration with AASMCU, create a new JavaScript business action wrapper to execute the enrichment business action and handle exceptions. Alternatively, you may update the existing D&B Enrich Request Async Wrapper that the Easy Set-Up provides.

  • Business Action ID: DnBEnrichRequestAsyncWrapperManual

  • Business Action Name: D&B Enrich Request Async Wrapper (CMPELF & AASMCU)

Input the following binds to your new business action:

Variable Name

Binds To

Parameter

currentNode

Current Object

 

dnbManager

D&B Integration Manager

 

dnbEnrichRequestCMPELF

Business Action

D&B Enrich Request (CMPELF) (DnBEnrichRequest)

dnbEnrichRequestAASMCU

Business Action

D&B Enrich Request (AASMCU) (DnBEnrichRequestAASMCU)

Copy
var resCMPELF = dnbManager.enableRetries().executeBusinessActionWithDnbIntegrationContext(dnbEnrichRequestCMPELF);
var resAASMCU = dnbManager.enableRetries().executeBusinessActionWithDnbIntegrationContext(dnbEnrichRequestAASMCU);
if(resCMPELF.anyMatchIntegrationStatus(['DNB_THROTTLING_ERROR_QUOTA','DNB_INVALID_LICENSE','DNB_INVALID_REQUEST_FORMAT','STEP_NO_DNB_LICENSE'])) {
if (resCMPELF.getIntegrationException())
  throw new com.stibo.core.domain.eventprocessor.exception.EventProcessorInterruptedException(resCMPELF.getIntegrationException());
  else
  throw new com.stibo.core.domain.eventprocessor.exception.EventProcessorInterruptedException('D&B CMPELF Enrichment failed');
} else if(resAASMCU.anyMatchIntegrationStatus(['DNB_THROTTLING_ERROR_QUOTA','DNB_INVALID_LICENSE','DNB_INVALID_REQUEST_FORMAT','STEP_NO_DNB_LICENSE'])) {
if (resAASMCU.getIntegrationException())
  throw new com.stibo.core.domain.eventprocessor.exception.EventProcessorInterruptedException(resAASMCU.getIntegrationException());
  else
  throw new com.stibo.core.domain.eventprocessor.exception.EventProcessorInterruptedException('D&B AASMCU Enrichment failed');
} else if(resCMPELF.anyMatchIntegrationStatus(['SUCCESS','DNB_SUCCESS_LIMITED_RESULT']) && resAASMCU.anyMatchIntegrationStatus(['SUCCESS','DNB_SUCCESS_LIMITED_RESULT'])) {
currentNode.getTaskByID('DnBCompanyProfile', 'PerformProfiling').triggerByID('Submit', '');

else {
  if (resCMPELF.getIntegrationException())
  currentNode.getTaskByID('DnBCompanyProfile', 'PerformProfiling').triggerByID('GoError', 'Unexpected error: ' + resCMPELF.getIntegrationException().getMessage());
  else if (resAASMCU.getIntegrationException())
  currentNode.getTaskByID('DnBCompanyProfile', 'PerformProfiling').triggerByID('GoError', 'Unexpected error: ' + resAASMCU.getIntegrationException().getMessage());
  else
  currentNode.getTaskByID('DnBCompanyProfile', 'PerformProfiling').triggerByID('GoError', 'Unexpected error. No Integration Exception');
}

Business action wrapper for synchronous integration

For synchronous integration with AASMCU, create a new JavaScript business action wrapper to execute the enrichment business action and handle exceptions. Alternatively, you may update the existing D&B Enrich Request Sync Wrapper that is provided by the Easy Set-Up.

  • Business Action ID: DnBEnrichRequestSyncWrapper

  • Business Action Name: D&B Enrich Request Sync Wrapper (CMPELF & AASMCU)

In order to test the synchronous business action, you must test using the business action wrapper rather than the enrichment request business action.

Input the following binds to your new business action:

Variable Name

Binds To

Parameter

currentNode

Current Object

 

dnbManager

D&B Integration Manager

 

dataIssuesReport

Data Issues Report

 

dnbEnrichRequestCMPELF

Business Action

D&B Enrich Request (CMPELF) (DnBEnrichRequest)

dnbEnrichRequestAASMCU

Business Action

D&B Enrich Request (AASMCU) (DnBEnrichRequestAASMCU)

enrichIntegrationStatusAttributeCMPELF

Attribute

D&B Enrich Request (CMPELF) (DnBEnrichRequest)

enrichIntegrationStatusAttributeAASMCU

Attribute

D&B Enrich Request (AASMCU) (DnBEnrichRequestAASMCU)

Copy
var dnbResultCMPELF = dnbManager.executeBusinessActionWithDnbIntegrationContext(dnbEnrichRequestCMPELF);
if (dnbResultCMPELF.getIntegrationException()) {
dataIssuesReport.addError(dnbResultCMPELF.getIntegrationException().getMessage(), currentObject, enrichIntegrationStatusAttributeCMPELF);
} else {
var dnbResultAASMCU = dnbManager.executeBusinessActionWithDnbIntegrationContext(dnbEnrichRequestAASMCU);
if (dnbResultAASMCU.getIntegrationException()) {
dataIssuesReport.addError(dnbResultAASMCU.getIntegrationException().getMessage(), currentObject, enrichIntegrationStatusAttributeAASMCU);
}
}
return dataIssuesReport;