Interface ExecutionStrategy

Execution strategies are customer-configurable plans on how to process a specific case.

interface ExecutionStrategy {
    XLSXFileUploads?: {
        active?: boolean;
        sheetName?: string;
        strategy?: "asLineItemList" | "asPDF";
    };
    alias?: string;
    automated?: boolean;
    customerId?: string;
    customs?: {
        GRN?: string;
        GRNAccessCode?: string;
        LRN?: string;
        declarantRepresentative?: StakeholderModel;
    };
    dakosySubmission?: {
        active?: boolean;
    };
    dataExtraction?: {
        active?: boolean;
        annotationRemarks?: string;
        classification?: {
            automateMinConfidence?: number;
            automateOnMinConfidence?: boolean;
        };
        engine?: "default" | "dexter_experimental";
        engineSpecification?: string;
        exportOnConfirmedStrategy?: boolean;
        overrideQueues?: {
            documentType: string;
            queue: number;
        }[];
        promptRemarks?: string;
        queueMapping?: {
            documentType: DigicustDocumentType;
            queueId: string;
        }[];
        requireHumanAnnotation?: boolean;
        requireManualClassification?: boolean;
        rossumExportOnConfirmed?: boolean;
    };
    dataIntegration?: {
        active?: boolean;
        createNewCustomsCaseForEveryXItems?: {
            active?: boolean;
            aggregated?: boolean;
            threshold?: number;
        };
        createNewCustomsCaseForInvoice?: {
            active?: boolean;
        };
        createNewCustomsCasesAsMentionedInEmail?: {
            active?: boolean;
        };
        requireUserInput?: "false" | "true" | "masterDataOrUserInput";
    };
    dataNormalization?: {
        active?: boolean;
        additionalCostsStrategy?: "ignore" | "equalDistribution" | "addToFirstItem" | "splitToAllItems" | "splitToAllItemsByNetWeight" | "splitToAllItemsByTotalValue";
        allowDateInOrderNumber?: boolean;
        alwaysAssumeThreeDigitDecimalForWeights?: boolean;
        assumeOriginFromHead?: boolean;
        calculateLineItemWeight?: "byQuantity" | "byTotalValue";
        checkTradePreferenceForWording?: boolean;
        customsTariffNumberMappingJsonAta?: string;
        customsTariffNumberNormalizationSettings?: CustomsTariffNumberNormalizationSettings;
        defaultInvoiceType?: "tax_invoice" | "proforma";
        defaultLicensePlate?: false | "german";
        descriptionFormatString?: string;
        descriptionFormatStringJsonAta?: string;
        doNotAssumeOriginFromPreference?: boolean;
        documentCodeEnrichment?: {
            addNegativeCodings?: boolean;
            blacklistCodes?: string[];
            noLineItemDocumentCodes?: boolean;
        };
        eliminateArticleNumberFromDescription?: boolean;
        enforcePackageType?: PackageType;
        forceInvoiceNumberToLRN?: boolean;
        forceInvoiceNumberToReferenceNumberUCR?: boolean;
        forceInvoiceNumberToRegistrationNumberExternal?: boolean;
        foreignFreightCostRate?: number;
        freightCostCalculation?: {
            active?: boolean;
            packagePrice?: Money;
            priority?: "fallback" | "override";
            strategy?: "default" | "austriaWeightDependent" | "packageDependent" | "distanceDependent";
        };
        guaranteeValueCalculation?: "includeVAT19%" | "excludeVAT";
        guaranteeValueStrategy?: "headerFromInvoices" | "headerFromInvoiceHeader" | "lineItems";
        ignoreLineItemsFromInvoice?: boolean;
        ignoreLineItemsWithoutInvoice?: boolean;
        lineItemGrossWeightStrategy?: "default" | "forceToFirstLineItem";
        normalizeEmailDocuments?: boolean;
        preferWeightFromHead?: boolean;
        removeStakeholderContactInformation?: {
            active?: boolean;
        };
        statisticalValueRounding?: "noRounding" | "roundOff" | "roundUp" | "roundToNearest";
        translateLineItemDescriptions?: {
            active?: boolean;
            destinationLanguage?: string;
        };
        useQuantityAsPackageCount?: boolean;
        useSpecializedDescriptionAggregation?: boolean;
        waybillCodePreference?: "singleCode" | "seperateCodes";
    };
    dataValidation?: {
        active?: boolean;
        fraudDetection?: boolean;
    };
    defaultClassification?: DigicustDocumentType;
    defaultProcedureMode?: ProcedureMode;
    doNotSendProcessedNotification?: boolean;
    doNotSendUploadNotification?: boolean;
    events?: Event[];
    flags?: {
        [key: string]: string;
    };
    forceReference?: false | "invoiceNumber";
    forceReferenceJSONata?: string;
    handleXLSXFileUploads?: boolean;
    hsClassification?: {
        active?: boolean;
        research?: boolean;
    };
    id?: string;
    importViaSFTP?: {
        active?: boolean;
        sftp-dns-name?: string;
        sftp-inbound?: string;
        sftp-login-name?: string;
        sftp-outbound?: string;
        sftp-password?: string;
        sftp-port?: string;
    };
    isCondensed?: boolean;
    isProcessWithDextor?: boolean;
    matchingEngine?: {
        materialMatching?: {
            disableMaterialNumberMatching?: boolean;
            disableTariffNumberMatching?: boolean;
            disabled?: boolean;
            sendMasterDataDescriptionOnly?: boolean;
            sendMasterDataTariffNumberOnly?: boolean;
            tariffNumberMatchingConfiguration?: {
                matchShipperCountry?: boolean;
                stakeholderFilters?: ("shipper" | "carrier" | "recipient" | "consignee" | "beneficiary" | "applicant" | "declarant" | "importer" | "exporter" | "buyer" | "agent" | "broker" | "warehouse" | "obligater")[];
            };
        };
    };
    mergeMultipleUploads?: boolean;
    moduleId?: string;
    procedureCode?: string;
    projectId?: string;
    pseudonymization?: {
        active?: boolean;
        interval?: number;
        time?: number;
    };
    rules?: Rule[];
    submission?: Submission;
    subscriptionId?: string;
    uploadWidgets?: UploadWidget[];
    whitelistedImportEmails?: string[];
}

Properties

XLSXFileUploads?: {
    active?: boolean;
    sheetName?: string;
    strategy?: "asLineItemList" | "asPDF";
}

Type declaration

  • Optional active?: boolean
  • Optional sheetName?: string
  • Optional strategy?: "asLineItemList" | "asPDF"
alias?: string
automated?: boolean
customerId?: string
customs?: {
    GRN?: string;
    GRNAccessCode?: string;
    LRN?: string;
    declarantRepresentative?: StakeholderModel;
}

Type declaration

  • Optional GRN?: string
  • Optional GRNAccessCode?: string
  • Optional LRN?: string
  • Optional declarantRepresentative?: StakeholderModel
dakosySubmission?: {
    active?: boolean;
}

Type declaration

  • Optional active?: boolean

Deprecated

dataExtraction?: {
    active?: boolean;
    annotationRemarks?: string;
    classification?: {
        automateMinConfidence?: number;
        automateOnMinConfidence?: boolean;
    };
    engine?: "default" | "dexter_experimental";
    engineSpecification?: string;
    exportOnConfirmedStrategy?: boolean;
    overrideQueues?: {
        documentType: string;
        queue: number;
    }[];
    promptRemarks?: string;
    queueMapping?: {
        documentType: DigicustDocumentType;
        queueId: string;
    }[];
    requireHumanAnnotation?: boolean;
    requireManualClassification?: boolean;
    rossumExportOnConfirmed?: boolean;
}

Type declaration

  • Optional active?: boolean
  • Optional annotationRemarks?: string
  • Optional classification?: {
        automateMinConfidence?: number;
        automateOnMinConfidence?: boolean;
    }
    • Optional automateMinConfidence?: number

      Value between 1 (very confident) to 0 (no confidence)

    • Optional automateOnMinConfidence?: boolean

      Defines whether a classification shall be assumed correct if a specific confidence level is reached

  • Optional engine?: "default" | "dexter_experimental"
  • Optional engineSpecification?: string
  • Optional exportOnConfirmedStrategy?: boolean
  • Optional overrideQueues?: {
        documentType: string;
        queue: number;
    }[]

    for rossum

  • Optional promptRemarks?: string
  • Optional queueMapping?: {
        documentType: DigicustDocumentType;
        queueId: string;
    }[]
  • Optional requireHumanAnnotation?: boolean
  • Optional requireManualClassification?: boolean
  • Optional rossumExportOnConfirmed?: boolean

    Deprecated

dataIntegration?: {
    active?: boolean;
    createNewCustomsCaseForEveryXItems?: {
        active?: boolean;
        aggregated?: boolean;
        threshold?: number;
    };
    createNewCustomsCaseForInvoice?: {
        active?: boolean;
    };
    createNewCustomsCasesAsMentionedInEmail?: {
        active?: boolean;
    };
    requireUserInput?: "false" | "true" | "masterDataOrUserInput";
}

Type declaration

  • Optional active?: boolean
  • Optional createNewCustomsCaseForEveryXItems?: {
        active?: boolean;
        aggregated?: boolean;
        threshold?: number;
    }
    • Optional active?: boolean
    • Optional aggregated?: boolean
    • Optional threshold?: number
  • Optional createNewCustomsCaseForInvoice?: {
        active?: boolean;
    }
    • Optional active?: boolean
  • Optional createNewCustomsCasesAsMentionedInEmail?: {
        active?: boolean;
    }
    • Optional active?: boolean
  • Optional requireUserInput?: "false" | "true" | "masterDataOrUserInput"
dataNormalization?: {
    active?: boolean;
    additionalCostsStrategy?: "ignore" | "equalDistribution" | "addToFirstItem" | "splitToAllItems" | "splitToAllItemsByNetWeight" | "splitToAllItemsByTotalValue";
    allowDateInOrderNumber?: boolean;
    alwaysAssumeThreeDigitDecimalForWeights?: boolean;
    assumeOriginFromHead?: boolean;
    calculateLineItemWeight?: "byQuantity" | "byTotalValue";
    checkTradePreferenceForWording?: boolean;
    customsTariffNumberMappingJsonAta?: string;
    customsTariffNumberNormalizationSettings?: CustomsTariffNumberNormalizationSettings;
    defaultInvoiceType?: "tax_invoice" | "proforma";
    defaultLicensePlate?: false | "german";
    descriptionFormatString?: string;
    descriptionFormatStringJsonAta?: string;
    doNotAssumeOriginFromPreference?: boolean;
    documentCodeEnrichment?: {
        addNegativeCodings?: boolean;
        blacklistCodes?: string[];
        noLineItemDocumentCodes?: boolean;
    };
    eliminateArticleNumberFromDescription?: boolean;
    enforcePackageType?: PackageType;
    forceInvoiceNumberToLRN?: boolean;
    forceInvoiceNumberToReferenceNumberUCR?: boolean;
    forceInvoiceNumberToRegistrationNumberExternal?: boolean;
    foreignFreightCostRate?: number;
    freightCostCalculation?: {
        active?: boolean;
        packagePrice?: Money;
        priority?: "fallback" | "override";
        strategy?: "default" | "austriaWeightDependent" | "packageDependent" | "distanceDependent";
    };
    guaranteeValueCalculation?: "includeVAT19%" | "excludeVAT";
    guaranteeValueStrategy?: "headerFromInvoices" | "headerFromInvoiceHeader" | "lineItems";
    ignoreLineItemsFromInvoice?: boolean;
    ignoreLineItemsWithoutInvoice?: boolean;
    lineItemGrossWeightStrategy?: "default" | "forceToFirstLineItem";
    normalizeEmailDocuments?: boolean;
    preferWeightFromHead?: boolean;
    removeStakeholderContactInformation?: {
        active?: boolean;
    };
    statisticalValueRounding?: "noRounding" | "roundOff" | "roundUp" | "roundToNearest";
    translateLineItemDescriptions?: {
        active?: boolean;
        destinationLanguage?: string;
    };
    useQuantityAsPackageCount?: boolean;
    useSpecializedDescriptionAggregation?: boolean;
    waybillCodePreference?: "singleCode" | "seperateCodes";
}

Type declaration

  • Optional active?: boolean
  • Optional additionalCostsStrategy?: "ignore" | "equalDistribution" | "addToFirstItem" | "splitToAllItems" | "splitToAllItemsByNetWeight" | "splitToAllItemsByTotalValue"

    Determines how to deal with additional costs like shipping costs, packing, ...

  • Optional allowDateInOrderNumber?: boolean
  • Optional alwaysAssumeThreeDigitDecimalForWeights?: boolean
  • Optional assumeOriginFromHead?: boolean
  • Optional calculateLineItemWeight?: "byQuantity" | "byTotalValue"
  • Optional checkTradePreferenceForWording?: boolean

    Determines whether trade preference shall be invalidated if wording or spelling is wrong

  • Optional customsTariffNumberMappingJsonAta?: string

    Custom formatting for transforming the (autofixed) customs tariff number into a new tariff number. Default to empty (no mapping used).

    The input JSON object has the same structure as the descriptionFormatStringJsonAta:

    { "tariffNumber": "1234567890", "quantity": 1234, "tariffNumberDescription": "Einrichtungen, Maschinen, Apparate und Geräte zur Kälteerzeugung", "lineItemDescription": "Orsiro Mission 2.5/9 PTCA-Stents ", "lineItemDescriptionShort": "Orsiro Mission PTCA-Stents ", "materialDescription": "PCTA-Stents", "enrichedDescription": "PCTA-Stents", "enrichedDescriptionShort": "Stents", "preferMaterialMasterData": false, "materialMatched": true, "useCustomsTariffNumberDescription": true, "useLineItemDescriptionShortening": true, "materialMatchedByTariffNumber": true, "materialMatchedByMaterialNr": false }

  • Optional customsTariffNumberNormalizationSettings?: CustomsTariffNumberNormalizationSettings
  • Optional defaultInvoiceType?: "tax_invoice" | "proforma"
  • Optional defaultLicensePlate?: false | "german"
  • Optional descriptionFormatString?: string

    Custom formattings for the resulting description of line items. For more complex conditional formattings, use the JSONAta property instead.

    Possible variables are:

    • {line-item-description} - The normalized line-item-description from the document. Should always contain a value.
    • {line-item-description-short} - The GPT shortened line-item-description. Shortening is only applied if the line-item-description contains more than 4 words, otherwise it will be the original line-item-description
    • {material-description} - The material-description from the matched material masterdata (either by material-nr or tariff-nr). Empty if no material is matched, or matching is disabled.
    • {enriched-description} - Contains the material-description if it is not empty, or the line-item-description as a fallback value.
    • {enriched-description-short} - Contains the material-description if it is not empty, or the shortened-line-item-description as a fallback value.
    • {tariff-number-description} - The description of the matched tariff number. If no tariff number is matched or matching is disabled this will be empty.

    All these variables can be combined with an optional separator to include after the variable. This separator will only be printed if the variable is not empty. Format: {variable}[separator]

    Examples: {tariff-number-description}[ - ]{enriched-description} {tariff-number-description}[ - ]{enriched-description-short} {tariff-number-description}[ - ]{line-item-description} {material-description}[ - ]{line-item-description} {enriched-description-short}

  • Optional descriptionFormatStringJsonAta?: string

    Custom formattings for the resulting description of line items as a JSONAta query. The result must be a string, not an object. The "simpler" descriptionFormatString will be ignored if this is set.

    The input JSON object looks like this:

    { "tariffNumber": "1234567890", "quantity": 1234, "tariffNumberDescription": "Einrichtungen, Maschinen, Apparate und Geräte zur Kälteerzeugung", "lineItemDescription": "Orsiro Mission 2.5/9 PTCA-Stents ", "lineItemDescriptionShort": "Orsiro Mission PTCA-Stents ", "materialDescription": "PCTA-Stents", "enrichedDescription": "PCTA-Stents", "enrichedDescriptionShort": "Stents", "preferMaterialMasterData": false, "materialMatched": true, "useCustomsTariffNumberDescription": true, "useLineItemDescriptionShortening": true, "materialMatchedByTariffNumber": true, "materialMatchedByMaterialNr": false }

    Examples:

    • Built-In Standard formatting depending on various state variables: useCustomsTariffNumberDescription and ( preferMaterialMasterData = false or materialMatched = false ) and $exists(tariffNumberDescription) and $string(tariffNumberDescription) != "" ? tariffNumberDescription & " - " & ( useLineItemDescriptionShortening = true and materialMatched = false ? (($exists(lineItemDescriptionShort) and $string(lineItemDescriptionShort) != "") ? lineItemDescriptionShort: lineItemDescription) : ( materialMatched = true ? materialDescription : ( useLineItemDescriptionShortening = true ? lineItemDescriptionShort : lineItemDescription ) ) ) : enrichedDescription

      Example Result with JSON input from above: "Einrichtungen, Maschinen, Apparate und Geräte zur Kälteerzeugung - PCTA-Stents"

    • Static formatting for customer preferring combined material and line-item descriptions: $exists(materialDescription) and $string(materialDescription) != "" ? materialDescription & ' - ' & lineItemDescription : lineItemDescription

      Example Result with JSON input from above: "PCTA-Stents - Orsiro Mission 2.5/9 PTCA-Stents"

  • Optional doNotAssumeOriginFromPreference?: boolean

    Default: Assume origin from preference. Set to true to mitigate this behavior

  • Optional documentCodeEnrichment?: {
        addNegativeCodings?: boolean;
        blacklistCodes?: string[];
        noLineItemDocumentCodes?: boolean;
    }
    • Optional addNegativeCodings?: boolean
    • Optional blacklistCodes?: string[]
    • Optional noLineItemDocumentCodes?: boolean
  • Optional eliminateArticleNumberFromDescription?: boolean
  • Optional enforcePackageType?: PackageType
  • Optional forceInvoiceNumberToLRN?: boolean
  • Optional forceInvoiceNumberToReferenceNumberUCR?: boolean
  • Optional forceInvoiceNumberToRegistrationNumberExternal?: boolean
  • Optional foreignFreightCostRate?: number

    Between 0 and 1

  • Optional freightCostCalculation?: {
        active?: boolean;
        packagePrice?: Money;
        priority?: "fallback" | "override";
        strategy?: "default" | "austriaWeightDependent" | "packageDependent" | "distanceDependent";
    }
    • Optional active?: boolean
    • Optional packagePrice?: Money

      if strategy = packageDependent

    • Optional priority?: "fallback" | "override"
    • Optional strategy?: "default" | "austriaWeightDependent" | "packageDependent" | "distanceDependent"
  • Optional guaranteeValueCalculation?: "includeVAT19%" | "excludeVAT"
  • Optional guaranteeValueStrategy?: "headerFromInvoices" | "headerFromInvoiceHeader" | "lineItems"
  • Optional ignoreLineItemsFromInvoice?: boolean
  • Optional ignoreLineItemsWithoutInvoice?: boolean
  • Optional lineItemGrossWeightStrategy?: "default" | "forceToFirstLineItem"
  • Optional normalizeEmailDocuments?: boolean

    Determines whether or not data from incoming emails are extracted and normalized.

    Default

    false
    
  • Optional preferWeightFromHead?: boolean
  • Optional removeStakeholderContactInformation?: {
        active?: boolean;
    }
    • Optional active?: boolean
  • Optional statisticalValueRounding?: "noRounding" | "roundOff" | "roundUp" | "roundToNearest"
  • Optional translateLineItemDescriptions?: {
        active?: boolean;
        destinationLanguage?: string;
    }
    • Optional active?: boolean
    • Optional destinationLanguage?: string
  • Optional useQuantityAsPackageCount?: boolean
  • Optional useSpecializedDescriptionAggregation?: boolean

    Enables experimental feature to use specialized description aggregation for line items, summing up quantities and concatenating lineItemDescriptions with "-" in the special "aggregated.aggregatedDescriptions" map (otherwise this property will remain empty or undefined).

  • Optional waybillCodePreference?: "singleCode" | "seperateCodes"
dataValidation?: {
    active?: boolean;
    fraudDetection?: boolean;
}

Type declaration

  • Optional active?: boolean
  • Optional fraudDetection?: boolean
defaultClassification?: DigicustDocumentType
defaultProcedureMode?: ProcedureMode
doNotSendProcessedNotification?: boolean
doNotSendUploadNotification?: boolean
events?: Event[]
flags?: {
    [key: string]: string;
}

Type declaration

  • [key: string]: string
forceReference?: false | "invoiceNumber"
forceReferenceJSONata?: string
handleXLSXFileUploads?: boolean
hsClassification?: {
    active?: boolean;
    research?: boolean;
}

Type declaration

  • Optional active?: boolean
  • Optional research?: boolean
id?: string
importViaSFTP?: {
    active?: boolean;
    sftp-dns-name?: string;
    sftp-inbound?: string;
    sftp-login-name?: string;
    sftp-outbound?: string;
    sftp-password?: string;
    sftp-port?: string;
}

Type declaration

  • Optional active?: boolean
  • Optional sftp-dns-name?: string
  • Optional sftp-inbound?: string
  • Optional sftp-login-name?: string
  • Optional sftp-outbound?: string
  • Optional sftp-password?: string
  • Optional sftp-port?: string
isCondensed?: boolean
isProcessWithDextor?: boolean

Deprecated

matchingEngine?: {
    materialMatching?: {
        disableMaterialNumberMatching?: boolean;
        disableTariffNumberMatching?: boolean;
        disabled?: boolean;
        sendMasterDataDescriptionOnly?: boolean;
        sendMasterDataTariffNumberOnly?: boolean;
        tariffNumberMatchingConfiguration?: {
            matchShipperCountry?: boolean;
            stakeholderFilters?: ("shipper" | "carrier" | "recipient" | "consignee" | "beneficiary" | "applicant" | "declarant" | "importer" | "exporter" | "buyer" | "agent" | "broker" | "warehouse" | "obligater")[];
        };
    };
}

Type declaration

  • Optional materialMatching?: {
        disableMaterialNumberMatching?: boolean;
        disableTariffNumberMatching?: boolean;
        disabled?: boolean;
        sendMasterDataDescriptionOnly?: boolean;
        sendMasterDataTariffNumberOnly?: boolean;
        tariffNumberMatchingConfiguration?: {
            matchShipperCountry?: boolean;
            stakeholderFilters?: ("shipper" | "carrier" | "recipient" | "consignee" | "beneficiary" | "applicant" | "declarant" | "importer" | "exporter" | "buyer" | "agent" | "broker" | "warehouse" | "obligater")[];
        };
    }
    • Optional disableMaterialNumberMatching?: boolean
    • Optional disableTariffNumberMatching?: boolean
    • Optional disabled?: boolean
    • Optional sendMasterDataDescriptionOnly?: boolean
    • Optional sendMasterDataTariffNumberOnly?: boolean
    • Optional tariffNumberMatchingConfiguration?: {
          matchShipperCountry?: boolean;
          stakeholderFilters?: ("shipper" | "carrier" | "recipient" | "consignee" | "beneficiary" | "applicant" | "declarant" | "importer" | "exporter" | "buyer" | "agent" | "broker" | "warehouse" | "obligater")[];
      }
      • Optional matchShipperCountry?: boolean
      • Optional stakeholderFilters?: ("shipper" | "carrier" | "recipient" | "consignee" | "beneficiary" | "applicant" | "declarant" | "importer" | "exporter" | "buyer" | "agent" | "broker" | "warehouse" | "obligater")[]
mergeMultipleUploads?: boolean
moduleId?: string
procedureCode?: string
projectId?: string
pseudonymization?: {
    active?: boolean;
    interval?: number;
    time?: number;
}

Type declaration

  • Optional active?: boolean
  • Optional interval?: number
  • Optional time?: number
rules?: Rule[]
submission?: Submission
subscriptionId?: string
uploadWidgets?: UploadWidget[]
whitelistedImportEmails?: string[]