Customer, billing and ship-to dossier — Pro
Contacts, distinct current billing details, native commercial defaults and on-demand ship-to addresses.
UNOFFICIAL — NOT VALIDATED ON A REAL ERP INSTALLATION. Documentary and synthetic validation only. Microsoft explicitly registers Customer and SOAddress as Dynamics SL source tables and supplies corresponding migration staging fields and logical keys at commit e7ed235bc979c0283306e9639ff7cd22ce78341d. AL types/keys are not installed SQL DDL. No real Dynamics SL/SQL Server deployment, release, owner, indexes, execution plan or ERP permissions have been tested. Map the authorised source and complete the import read/compatibility test.
For customer service, sales, billing teams, delivery coordination and managers: choose a customer class, find a customer by name or business code, inspect contact details, distinct master and billing addresses, and native commercial settings. Open the customer's ship-to addresses only when needed, then inspect each location's own contact, address and shipping settings.
Why Cifru? Adapt configurations to the way you work. Choose the fields, filters and details you need, and bring information to your phone that may not be available in your business software’s own mobile app. Available options depend on the data exposed by your authorized source and your Cifru plan.
Pro: one source, two lists, one lazy related button and explicit read-only SQL. The 34 selected customer fields plus three explanatory contexts and 20 selected ship-to fields plus a scope explanation are grouped in complete same-row Details. Each read is capped at 1,000 rows, with no automatic refresh, balance aggregation or preloading of every address. A capped list is not a complete company total. Identity checks may scan beyond the visible row cap; test performance on the installed database and narrow the authorised source where necessary.
Customer business codes preserve leading zeroes and internal characters; right-padding is removed only from row keys. A ship-to row is identified by both CustId and ShipToId. Duplicate, blank or oversized identities fail closed rather than choosing the first row. Ambiguous ship-to IDs block that related read, not valid customers. The related query rechecks the full selected parent snapshot; refresh the customer list if the source changed after it was loaded.
Current billing fields and ship-to master records are not historical invoice addresses. Customer status I is documented as inactive; other customer codes and every ship-to status remain native values, not invented Active/Blocked labels. Class, terms, salesperson, territory, price, language, site, freight and currency settings remain business codes. No lookup descriptions, discount formulas, credit availability, currency conversions, balance or permissions are guessed. Names remain exactly as stored, including legacy name ordering; the migration NameFlip transform is not silently applied. NULL/empty fields stay empty.
Use the authorised Dynamics SL business database, not the Business Central migration destination or SL system database. dbo is the proposed owner and must be verified. Do not invent a CpnyID column on these two masters from transaction tables or treat the migration Data Per Company setting as a source row-security rule. An administrator must provide a separate least-privilege reporting login with SELECT only on permitted data. Direct SQL does not inherit the ERP session, company restrictions or role permissions. UI filters and hidden keys are not access control. Never copy migration sysadmin/db_owner requirements to the Cifru reporting account.
The package contains no host, username, password, live rows, bank/card or technical audit fields. Source commercial contacts can nevertheless be confidential. Native screenshots use wholly fictional DEMO rows and synthetic transport, not a live SL connection. Unofficial and not endorsed by Microsoft. Dynamics SL is a distinct legacy installed-base product, not Dynamics GP, AX or Business Central. Check the installed edition and lifecycle; Microsoft currently lists extended support ending in July 2028. No current top-three market ranking or absence of a native mobile offering is claimed.
Source registration: https://github.com/microsoft/ALAppExtensions/blob/e7ed235bc979c0283306e9639ff7cd22ce78341d/Apps/W1/HybridSL/app/src/codeunits/SLHybridWizard.Codeunit.al
Customer fields: https://github.com/microsoft/ALAppExtensions/blob/e7ed235bc979c0283306e9639ff7cd22ce78341d/Apps/W1/HybridSL/app/src/Migration/Customers/SLCustomer.Table.al
Ship-to fields and logical key: https://github.com/microsoft/ALAppExtensions/blob/e7ed235bc979c0283306e9639ff7cd22ce78341d/Apps/W1/HybridSL/app/src/Migration/Customers/SLSOAddress.Table.al
Documented customer / shipping binding: https://github.com/microsoft/ALAppExtensions/blob/e7ed235bc979c0283306e9639ff7cd22ce78341d/Apps/W1/HybridSL/app/src/Migration/Customers/SLCustomerMigrator.Codeunit.al
Functional context: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/migrate-dynamics-sl
Lifecycle: https://learn.microsoft.com/en-us/lifecycle/products/dynamics-sl-2018
Screenshots
What this package creates
- Home: Customers
- Details: Ship-to addresses
- Sub-button: Ship-to addresses
Sources are mapped locally and verified before applying.
Custom queriesPRO2 SQL
Custom queries are a PRO feature. Cifru repeats read-only validation against the local source before execution.
$.components.workspaceSelection.datasets.0.sqlQuerySELECT RTRIM(CAST(m.CustId AS nvarchar(max))) AS CustId,m.Name AS Name,m.ClassId AS ClassId,m.Status AS Status,m.Attn AS Attn,m.Phone AS Phone,m.Fax AS Fax,m.EMailAddr AS EMailAddr,m.Addr1 AS Addr1,m.Addr2 AS Addr2,m.City AS City,m.State AS State,m.Zip AS Zip,m.Country AS Country,m.BillName AS BillName,m.BillAttn AS BillAttn,m.BillPhone AS BillPhone,m.BillFax AS BillFax,m.BillAddr1 AS BillAddr1,m.BillAddr2 AS BillAddr2,m.BillCity AS BillCity,m.BillState AS BillState,m.BillZip AS BillZip,m.BillCountry AS BillCountry,m.DfltShipToId AS DfltShipToId,m.SlsperId AS SlsperId,m.Territory AS Territory,m.Terms AS Terms,m.CuryId AS CuryId,m.CuryRateType AS CuryRateType,m.PrcLvlId AS PrcLvlId,m.PriceClassID AS PriceClassID,m.LanguageID AS LanguageID,m.StmtCycleId AS StmtCycleId,CONCAT(CASE WHEN m.CustId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CustId AS nvarchar(max))),N':',CAST(m.CustId AS nvarchar(max)),N';') END,CASE WHEN m.Name IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Name AS nvarchar(max))),N':',CAST(m.Name AS nvarchar(max)),N';') END,CASE WHEN m.ClassId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.ClassId AS nvarchar(max))),N':',CAST(m.ClassId AS nvarchar(max)),N';') END,CASE WHEN m.Status IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Status AS nvarchar(max))),N':',CAST(m.Status AS nvarchar(max)),N';') END,CASE WHEN m.Attn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Attn AS nvarchar(max))),N':',CAST(m.Attn AS nvarchar(max)),N';') END,CASE WHEN m.Phone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Phone AS nvarchar(max))),N':',CAST(m.Phone AS nvarchar(max)),N';') END,CASE WHEN m.Fax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Fax AS nvarchar(max))),N':',CAST(m.Fax AS nvarchar(max)),N';') END,CASE WHEN m.EMailAddr IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.EMailAddr AS nvarchar(max))),N':',CAST(m.EMailAddr AS nvarchar(max)),N';') END,CASE WHEN m.Addr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr1 AS nvarchar(max))),N':',CAST(m.Addr1 AS nvarchar(max)),N';') END,CASE WHEN m.Addr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr2 AS nvarchar(max))),N':',CAST(m.Addr2 AS nvarchar(max)),N';') END,CASE WHEN m.City IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.City AS nvarchar(max))),N':',CAST(m.City AS nvarchar(max)),N';') END,CASE WHEN m.State IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.State AS nvarchar(max))),N':',CAST(m.State AS nvarchar(max)),N';') END,CASE WHEN m.Zip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Zip AS nvarchar(max))),N':',CAST(m.Zip AS nvarchar(max)),N';') END,CASE WHEN m.Country IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Country AS nvarchar(max))),N':',CAST(m.Country AS nvarchar(max)),N';') END,CASE WHEN m.BillName IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillName AS nvarchar(max))),N':',CAST(m.BillName AS nvarchar(max)),N';') END,CASE WHEN m.BillAttn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAttn AS nvarchar(max))),N':',CAST(m.BillAttn AS nvarchar(max)),N';') END,CASE WHEN m.BillPhone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillPhone AS nvarchar(max))),N':',CAST(m.BillPhone AS nvarchar(max)),N';') END,CASE WHEN m.BillFax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillFax AS nvarchar(max))),N':',CAST(m.BillFax AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr1 AS nvarchar(max))),N':',CAST(m.BillAddr1 AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr2 AS nvarchar(max))),N':',CAST(m.BillAddr2 AS nvarchar(max)),N';') END,CASE WHEN m.BillCity IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCity AS nvarchar(max))),N':',CAST(m.BillCity AS nvarchar(max)),N';') END,CASE WHEN m.BillState IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillState AS nvarchar(max))),N':',CAST(m.BillState AS nvarchar(max)),N';') END,CASE WHEN m.BillZip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillZip AS nvarchar(max))),N':',CAST(m.BillZip AS nvarchar(max)),N';') END,CASE WHEN m.BillCountry IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCountry AS nvarchar(max))),N':',CAST(m.BillCountry AS nvarchar(max)),N';') END,CASE WHEN m.DfltShipToId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.DfltShipToId AS nvarchar(max))),N':',CAST(m.DfltShipToId AS nvarchar(max)),N';') END,CASE WHEN m.SlsperId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.SlsperId AS nvarchar(max))),N':',CAST(m.SlsperId AS nvarchar(max)),N';') END,CASE WHEN m.Territory IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Territory AS nvarchar(max))),N':',CAST(m.Territory AS nvarchar(max)),N';') END,CASE WHEN m.Terms IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Terms AS nvarchar(max))),N':',CAST(m.Terms AS nvarchar(max)),N';') END,CASE WHEN m.CuryId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryId AS nvarchar(max))),N':',CAST(m.CuryId AS nvarchar(max)),N';') END,CASE WHEN m.CuryRateType IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryRateType AS nvarchar(max))),N':',CAST(m.CuryRateType AS nvarchar(max)),N';') END,CASE WHEN m.PrcLvlId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PrcLvlId AS nvarchar(max))),N':',CAST(m.PrcLvlId AS nvarchar(max)),N';') END,CASE WHEN m.PriceClassID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PriceClassID AS nvarchar(max))),N':',CAST(m.PriceClassID AS nvarchar(max)),N';') END,CASE WHEN m.LanguageID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.LanguageID AS nvarchar(max))),N':',CAST(m.LanguageID AS nvarchar(max)),N';') END,CASE WHEN m.StmtCycleId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.StmtCycleId AS nvarchar(max))),N':',CAST(m.StmtCycleId AS nvarchar(max)),N';') END) AS CustomerContext,CASE WHEN (RTRIM(CAST(m.Status AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=N'I' COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(m.Status AS nvarchar(max))))=DATALENGTH(N'I')) THEN N'Inactive (stored I)' ELSE N'Other stored code — see Details' END AS CustomerStatusContext,CASE WHEN NOT (NOT EXISTS (SELECT 1 FROM dbo.SOAddress bad WHERE (RTRIM(CAST(bad.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(m.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(m.CustId AS nvarchar(max))))) AND ((bad.CustId IS NULL OR RTRIM(CAST(bad.CustId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))>30) OR (bad.ShipToId IS NULL OR RTRIM(CAST(bad.ShipToId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.ShipToId AS nvarchar(max))))>20))) AND NOT EXISTS (SELECT 1 FROM dbo.SOAddress bad WHERE (RTRIM(CAST(bad.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(m.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(m.CustId AS nvarchar(max))))) GROUP BY CAST(RTRIM(CAST(bad.ShipToId AS nvarchar(max))) AS nvarchar(10)) COLLATE Latin1_General_100_BIN2,DATALENGTH(RTRIM(CAST(bad.ShipToId AS nvarchar(max)))) HAVING COUNT(1)<>1)) THEN N'Ambiguous / invalid ship-to IDs' WHEN EXISTS (SELECT 1 FROM dbo.SOAddress a WHERE (RTRIM(CAST(a.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(m.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(a.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(m.CustId AS nvarchar(max)))))) THEN N'Available on demand' ELSE N'No stored ship-to addresses' END AS ShipToAvailability,N'Current customer and billing defaults; not a historical invoice snapshot' AS MasterScope FROM dbo.Customer m WHERE NOT EXISTS (SELECT 1 FROM dbo.Customer bad WHERE (bad.CustId IS NULL OR RTRIM(CAST(bad.CustId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))>30)) AND NOT EXISTS (SELECT 1 FROM dbo.Customer bad GROUP BY CAST(RTRIM(CAST(bad.CustId AS nvarchar(max))) AS nvarchar(15)) COLLATE Latin1_General_100_BIN2,DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max)))) HAVING COUNT(1)<>1)
static read-only checks passed
$.components.workspaceSelection.datasets.1.sqlQuerySELECT CONCAT(CASE WHEN RTRIM(CAST(a.CustId AS nvarchar(max))) IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(RTRIM(CAST(a.CustId AS nvarchar(max))) AS nvarchar(max))),N':',CAST(RTRIM(CAST(a.CustId AS nvarchar(max))) AS nvarchar(max)),N';') END,CASE WHEN RTRIM(CAST(a.ShipToId AS nvarchar(max))) IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(RTRIM(CAST(a.ShipToId AS nvarchar(max))) AS nvarchar(max))),N':',CAST(RTRIM(CAST(a.ShipToId AS nvarchar(max))) AS nvarchar(max)),N';') END) AS ShipToKey,:customerContext AS CustomerContext,RTRIM(CAST(a.CustId AS nvarchar(max))) AS CustId,RTRIM(CAST(a.ShipToId AS nvarchar(max))) AS ShipToId,a.Name AS Name,a.Descr AS Descr,a.Attn AS Attn,a.Phone AS Phone,a.Fax AS Fax,a.EMailAddr AS EMailAddr,a.Addr1 AS Addr1,a.Addr2 AS Addr2,a.City AS City,a.State AS State,a.Zip AS Zip,a.Country AS Country,a.ShipViaID AS ShipViaID,a.SiteID AS SiteID,a.SlsPerID AS SlsPerID,a.FOB AS FOB,a.FrtTermsID AS FrtTermsID,a.Status AS Status,N'Current ship-to master; not an address stored on a past document' AS ShipToScope FROM dbo.SOAddress a WHERE (RTRIM(CAST(a.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(:customer AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(a.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(:customer AS nvarchar(max))))) AND NOT EXISTS (SELECT 1 FROM dbo.SOAddress bad WHERE (RTRIM(CAST(bad.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(:customer AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(:customer AS nvarchar(max))))) AND ((bad.CustId IS NULL OR RTRIM(CAST(bad.CustId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))>30) OR (bad.ShipToId IS NULL OR RTRIM(CAST(bad.ShipToId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.ShipToId AS nvarchar(max))))>20))) AND NOT EXISTS (SELECT 1 FROM dbo.SOAddress bad WHERE (RTRIM(CAST(bad.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(:customer AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(:customer AS nvarchar(max))))) GROUP BY CAST(RTRIM(CAST(bad.ShipToId AS nvarchar(max))) AS nvarchar(10)) COLLATE Latin1_General_100_BIN2,DATALENGTH(RTRIM(CAST(bad.ShipToId AS nvarchar(max)))) HAVING COUNT(1)<>1) AND EXISTS (SELECT 1 FROM dbo.Customer m WHERE NOT EXISTS (SELECT 1 FROM dbo.Customer bad WHERE (bad.CustId IS NULL OR RTRIM(CAST(bad.CustId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))>30)) AND NOT EXISTS (SELECT 1 FROM dbo.Customer bad GROUP BY CAST(RTRIM(CAST(bad.CustId AS nvarchar(max))) AS nvarchar(15)) COLLATE Latin1_General_100_BIN2,DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max)))) HAVING COUNT(1)<>1) AND (RTRIM(CAST(m.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(:customer AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(m.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(:customer AS nvarchar(max))))) AND (CONCAT(CASE WHEN m.CustId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CustId AS nvarchar(max))),N':',CAST(m.CustId AS nvarchar(max)),N';') END,CASE WHEN m.Name IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Name AS nvarchar(max))),N':',CAST(m.Name AS nvarchar(max)),N';') END,CASE WHEN m.ClassId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.ClassId AS nvarchar(max))),N':',CAST(m.ClassId AS nvarchar(max)),N';') END,CASE WHEN m.Status IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Status AS nvarchar(max))),N':',CAST(m.Status AS nvarchar(max)),N';') END,CASE WHEN m.Attn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Attn AS nvarchar(max))),N':',CAST(m.Attn AS nvarchar(max)),N';') END,CASE WHEN m.Phone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Phone AS nvarchar(max))),N':',CAST(m.Phone AS nvarchar(max)),N';') END,CASE WHEN m.Fax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Fax AS nvarchar(max))),N':',CAST(m.Fax AS nvarchar(max)),N';') END,CASE WHEN m.EMailAddr IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.EMailAddr AS nvarchar(max))),N':',CAST(m.EMailAddr AS nvarchar(max)),N';') END,CASE WHEN m.Addr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr1 AS nvarchar(max))),N':',CAST(m.Addr1 AS nvarchar(max)),N';') END,CASE WHEN m.Addr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr2 AS nvarchar(max))),N':',CAST(m.Addr2 AS nvarchar(max)),N';') END,CASE WHEN m.City IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.City AS nvarchar(max))),N':',CAST(m.City AS nvarchar(max)),N';') END,CASE WHEN m.State IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.State AS nvarchar(max))),N':',CAST(m.State AS nvarchar(max)),N';') END,CASE WHEN m.Zip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Zip AS nvarchar(max))),N':',CAST(m.Zip AS nvarchar(max)),N';') END,CASE WHEN m.Country IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Country AS nvarchar(max))),N':',CAST(m.Country AS nvarchar(max)),N';') END,CASE WHEN m.BillName IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillName AS nvarchar(max))),N':',CAST(m.BillName AS nvarchar(max)),N';') END,CASE WHEN m.BillAttn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAttn AS nvarchar(max))),N':',CAST(m.BillAttn AS nvarchar(max)),N';') END,CASE WHEN m.BillPhone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillPhone AS nvarchar(max))),N':',CAST(m.BillPhone AS nvarchar(max)),N';') END,CASE WHEN m.BillFax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillFax AS nvarchar(max))),N':',CAST(m.BillFax AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr1 AS nvarchar(max))),N':',CAST(m.BillAddr1 AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr2 AS nvarchar(max))),N':',CAST(m.BillAddr2 AS nvarchar(max)),N';') END,CASE WHEN m.BillCity IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCity AS nvarchar(max))),N':',CAST(m.BillCity AS nvarchar(max)),N';') END,CASE WHEN m.BillState IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillState AS nvarchar(max))),N':',CAST(m.BillState AS nvarchar(max)),N';') END,CASE WHEN m.BillZip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillZip AS nvarchar(max))),N':',CAST(m.BillZip AS nvarchar(max)),N';') END,CASE WHEN m.BillCountry IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCountry AS nvarchar(max))),N':',CAST(m.BillCountry AS nvarchar(max)),N';') END,CASE WHEN m.DfltShipToId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.DfltShipToId AS nvarchar(max))),N':',CAST(m.DfltShipToId AS nvarchar(max)),N';') END,CASE WHEN m.SlsperId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.SlsperId AS nvarchar(max))),N':',CAST(m.SlsperId AS nvarchar(max)),N';') END,CASE WHEN m.Territory IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Territory AS nvarchar(max))),N':',CAST(m.Territory AS nvarchar(max)),N';') END,CASE WHEN m.Terms IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Terms AS nvarchar(max))),N':',CAST(m.Terms AS nvarchar(max)),N';') END,CASE WHEN m.CuryId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryId AS nvarchar(max))),N':',CAST(m.CuryId AS nvarchar(max)),N';') END,CASE WHEN m.CuryRateType IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryRateType AS nvarchar(max))),N':',CAST(m.CuryRateType AS nvarchar(max)),N';') END,CASE WHEN m.PrcLvlId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PrcLvlId AS nvarchar(max))),N':',CAST(m.PrcLvlId AS nvarchar(max)),N';') END,CASE WHEN m.PriceClassID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PriceClassID AS nvarchar(max))),N':',CAST(m.PriceClassID AS nvarchar(max)),N';') END,CASE WHEN m.LanguageID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.LanguageID AS nvarchar(max))),N':',CAST(m.LanguageID AS nvarchar(max)),N';') END,CASE WHEN m.StmtCycleId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.StmtCycleId AS nvarchar(max))),N':',CAST(m.StmtCycleId AS nvarchar(max)),N';') END) COLLATE Latin1_General_100_BIN2=:customerContext COLLATE Latin1_General_100_BIN2 AND DATALENGTH(CONCAT(CASE WHEN m.CustId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CustId AS nvarchar(max))),N':',CAST(m.CustId AS nvarchar(max)),N';') END,CASE WHEN m.Name IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Name AS nvarchar(max))),N':',CAST(m.Name AS nvarchar(max)),N';') END,CASE WHEN m.ClassId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.ClassId AS nvarchar(max))),N':',CAST(m.ClassId AS nvarchar(max)),N';') END,CASE WHEN m.Status IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Status AS nvarchar(max))),N':',CAST(m.Status AS nvarchar(max)),N';') END,CASE WHEN m.Attn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Attn AS nvarchar(max))),N':',CAST(m.Attn AS nvarchar(max)),N';') END,CASE WHEN m.Phone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Phone AS nvarchar(max))),N':',CAST(m.Phone AS nvarchar(max)),N';') END,CASE WHEN m.Fax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Fax AS nvarchar(max))),N':',CAST(m.Fax AS nvarchar(max)),N';') END,CASE WHEN m.EMailAddr IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.EMailAddr AS nvarchar(max))),N':',CAST(m.EMailAddr AS nvarchar(max)),N';') END,CASE WHEN m.Addr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr1 AS nvarchar(max))),N':',CAST(m.Addr1 AS nvarchar(max)),N';') END,CASE WHEN m.Addr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr2 AS nvarchar(max))),N':',CAST(m.Addr2 AS nvarchar(max)),N';') END,CASE WHEN m.City IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.City AS nvarchar(max))),N':',CAST(m.City AS nvarchar(max)),N';') END,CASE WHEN m.State IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.State AS nvarchar(max))),N':',CAST(m.State AS nvarchar(max)),N';') END,CASE WHEN m.Zip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Zip AS nvarchar(max))),N':',CAST(m.Zip AS nvarchar(max)),N';') END,CASE WHEN m.Country IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Country AS nvarchar(max))),N':',CAST(m.Country AS nvarchar(max)),N';') END,CASE WHEN m.BillName IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillName AS nvarchar(max))),N':',CAST(m.BillName AS nvarchar(max)),N';') END,CASE WHEN m.BillAttn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAttn AS nvarchar(max))),N':',CAST(m.BillAttn AS nvarchar(max)),N';') END,CASE WHEN m.BillPhone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillPhone AS nvarchar(max))),N':',CAST(m.BillPhone AS nvarchar(max)),N';') END,CASE WHEN m.BillFax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillFax AS nvarchar(max))),N':',CAST(m.BillFax AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr1 AS nvarchar(max))),N':',CAST(m.BillAddr1 AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr2 AS nvarchar(max))),N':',CAST(m.BillAddr2 AS nvarchar(max)),N';') END,CASE WHEN m.BillCity IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCity AS nvarchar(max))),N':',CAST(m.BillCity AS nvarchar(max)),N';') END,CASE WHEN m.BillState IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillState AS nvarchar(max))),N':',CAST(m.BillState AS nvarchar(max)),N';') END,CASE WHEN m.BillZip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillZip AS nvarchar(max))),N':',CAST(m.BillZip AS nvarchar(max)),N';') END,CASE WHEN m.BillCountry IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCountry AS nvarchar(max))),N':',CAST(m.BillCountry AS nvarchar(max)),N';') END,CASE WHEN m.DfltShipToId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.DfltShipToId AS nvarchar(max))),N':',CAST(m.DfltShipToId AS nvarchar(max)),N';') END,CASE WHEN m.SlsperId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.SlsperId AS nvarchar(max))),N':',CAST(m.SlsperId AS nvarchar(max)),N';') END,CASE WHEN m.Territory IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Territory AS nvarchar(max))),N':',CAST(m.Territory AS nvarchar(max)),N';') END,CASE WHEN m.Terms IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Terms AS nvarchar(max))),N':',CAST(m.Terms AS nvarchar(max)),N';') END,CASE WHEN m.CuryId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryId AS nvarchar(max))),N':',CAST(m.CuryId AS nvarchar(max)),N';') END,CASE WHEN m.CuryRateType IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryRateType AS nvarchar(max))),N':',CAST(m.CuryRateType AS nvarchar(max)),N';') END,CASE WHEN m.PrcLvlId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PrcLvlId AS nvarchar(max))),N':',CAST(m.PrcLvlId AS nvarchar(max)),N';') END,CASE WHEN m.PriceClassID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PriceClassID AS nvarchar(max))),N':',CAST(m.PriceClassID AS nvarchar(max)),N';') END,CASE WHEN m.LanguageID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.LanguageID AS nvarchar(max))),N':',CAST(m.LanguageID AS nvarchar(max)),N';') END,CASE WHEN m.StmtCycleId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.StmtCycleId AS nvarchar(max))),N':',CAST(m.StmtCycleId AS nvarchar(max)),N';') END))=DATALENGTH(:customerContext)))
static read-only checks passed
View the JSON being importedcollapsed by default
{
"components": {
"sourceSlots": [
{
"displayName": "Dynamics SL — authorised SQL business database",
"id": "B6DAD58E-AF43-5510-805A-BB9C14A92203",
"kind": "sqlServer",
"requiredObjects": [
"dbo.Customer",
"dbo.SOAddress"
],
"requiresCustomSQL": false
}
],
"workspaceSelection": {
"commonFields": [],
"datasets": [
{
"cacheMode": "live",
"calculatedFields": [],
"customQueryIntegrationName": "",
"endpointPath": "",
"fetchSortRules": [
{
"direction": "ascending",
"id": "F5704292-0D46-53B6-A7FA-C8450E931C6B",
"key": "Name",
"type": "text"
},
{
"direction": "ascending",
"id": "DF6EE06C-FA4C-580B-B97B-21F935C06FEF",
"key": "CustId",
"type": "text"
}
],
"id": "B91160DF-6BBA-5DF7-B2FE-23FC50F4EF88",
"mappings": [
{
"commonFieldKey": "",
"key": "CustomerContext",
"label": "Internal complete source-row context",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "CustomerContext",
"type": "text",
"visibleInDetail": false,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "CustId",
"label": "Customer business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "CustId",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Name",
"label": "Customer name — original stored format",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Name",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "ClassId",
"label": "Customer class code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "ClassId",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "Status",
"label": "Stored customer status code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Status",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Attn",
"label": "Primary contact",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Attn",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "Phone",
"label": "Primary phone",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Phone",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "Fax",
"label": "Primary fax",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Fax",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "EMailAddr",
"label": "Primary email",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "EMailAddr",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "Addr1",
"label": "Master address line 1",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Addr1",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Addr2",
"label": "Master address line 2",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Addr2",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "City",
"label": "Master city",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "City",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "State",
"label": "Master state / region",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "State",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Zip",
"label": "Master postal code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Zip",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Country",
"label": "Master country code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Country",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "BillName",
"label": "Billing name — original stored format",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "BillName",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "BillAttn",
"label": "Billing contact",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "BillAttn",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "BillPhone",
"label": "Billing phone",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "BillPhone",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "BillFax",
"label": "Billing fax",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "BillFax",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "BillAddr1",
"label": "Billing address line 1",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "BillAddr1",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "BillAddr2",
"label": "Billing address line 2",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "BillAddr2",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "BillCity",
"label": "Billing city",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "BillCity",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "BillState",
"label": "Billing state / region",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "BillState",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "BillZip",
"label": "Billing postal code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "BillZip",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "BillCountry",
"label": "Billing country code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "BillCountry",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "DfltShipToId",
"label": "Default ship-to business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "DfltShipToId",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "SlsperId",
"label": "Salesperson code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "SlsperId",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Territory",
"label": "Sales territory code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Territory",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Terms",
"label": "Payment terms code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Terms",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "CuryId",
"label": "Native customer currency setting",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "CuryId",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "CuryRateType",
"label": "Exchange-rate type code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "CuryRateType",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "PrcLvlId",
"label": "Price level code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "PrcLvlId",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "PriceClassID",
"label": "Price class code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "PriceClassID",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "LanguageID",
"label": "Customer language code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "LanguageID",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "StmtCycleId",
"label": "Statement cycle code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "StmtCycleId",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "CustomerStatusContext",
"label": "Documented inactive context",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "CustomerStatusContext",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "ShipToAvailability",
"label": "Ship-to identity availability",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "ShipToAvailability",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "MasterScope",
"label": "Current master / billing scope",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "MasterScope",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
}
],
"maxRows": 1000,
"name": "Customer and billing dossier",
"primaryKey": "CustId",
"queryParameters": [],
"refreshPolicy": {
"enabled": false,
"intervalMinutes": 60
},
"rootArrayPath": "",
"rowLimitEnabled": true,
"searchKeys": [
"CustId",
"Name",
"ClassId",
"Status",
"Attn",
"Phone",
"Fax",
"EMailAddr",
"Addr1",
"Addr2",
"City",
"State",
"Zip",
"Country",
"BillName",
"BillAttn",
"BillPhone",
"BillFax",
"BillAddr1",
"BillAddr2",
"BillCity",
"BillState",
"BillZip",
"BillCountry",
"DfltShipToId",
"SlsperId",
"Territory",
"Terms",
"CuryId",
"CuryRateType",
"PrcLvlId",
"PriceClassID",
"LanguageID",
"StmtCycleId",
"CustomerStatusContext",
"ShipToAvailability",
"MasterScope"
],
"sourceID": "B6DAD58E-AF43-5510-805A-BB9C14A92203",
"sqlQuery": "SELECT RTRIM(CAST(m.CustId AS nvarchar(max))) AS CustId,m.Name AS Name,m.ClassId AS ClassId,m.Status AS Status,m.Attn AS Attn,m.Phone AS Phone,m.Fax AS Fax,m.EMailAddr AS EMailAddr,m.Addr1 AS Addr1,m.Addr2 AS Addr2,m.City AS City,m.State AS State,m.Zip AS Zip,m.Country AS Country,m.BillName AS BillName,m.BillAttn AS BillAttn,m.BillPhone AS BillPhone,m.BillFax AS BillFax,m.BillAddr1 AS BillAddr1,m.BillAddr2 AS BillAddr2,m.BillCity AS BillCity,m.BillState AS BillState,m.BillZip AS BillZip,m.BillCountry AS BillCountry,m.DfltShipToId AS DfltShipToId,m.SlsperId AS SlsperId,m.Territory AS Territory,m.Terms AS Terms,m.CuryId AS CuryId,m.CuryRateType AS CuryRateType,m.PrcLvlId AS PrcLvlId,m.PriceClassID AS PriceClassID,m.LanguageID AS LanguageID,m.StmtCycleId AS StmtCycleId,CONCAT(CASE WHEN m.CustId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CustId AS nvarchar(max))),N':',CAST(m.CustId AS nvarchar(max)),N';') END,CASE WHEN m.Name IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Name AS nvarchar(max))),N':',CAST(m.Name AS nvarchar(max)),N';') END,CASE WHEN m.ClassId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.ClassId AS nvarchar(max))),N':',CAST(m.ClassId AS nvarchar(max)),N';') END,CASE WHEN m.Status IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Status AS nvarchar(max))),N':',CAST(m.Status AS nvarchar(max)),N';') END,CASE WHEN m.Attn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Attn AS nvarchar(max))),N':',CAST(m.Attn AS nvarchar(max)),N';') END,CASE WHEN m.Phone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Phone AS nvarchar(max))),N':',CAST(m.Phone AS nvarchar(max)),N';') END,CASE WHEN m.Fax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Fax AS nvarchar(max))),N':',CAST(m.Fax AS nvarchar(max)),N';') END,CASE WHEN m.EMailAddr IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.EMailAddr AS nvarchar(max))),N':',CAST(m.EMailAddr AS nvarchar(max)),N';') END,CASE WHEN m.Addr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr1 AS nvarchar(max))),N':',CAST(m.Addr1 AS nvarchar(max)),N';') END,CASE WHEN m.Addr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr2 AS nvarchar(max))),N':',CAST(m.Addr2 AS nvarchar(max)),N';') END,CASE WHEN m.City IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.City AS nvarchar(max))),N':',CAST(m.City AS nvarchar(max)),N';') END,CASE WHEN m.State IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.State AS nvarchar(max))),N':',CAST(m.State AS nvarchar(max)),N';') END,CASE WHEN m.Zip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Zip AS nvarchar(max))),N':',CAST(m.Zip AS nvarchar(max)),N';') END,CASE WHEN m.Country IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Country AS nvarchar(max))),N':',CAST(m.Country AS nvarchar(max)),N';') END,CASE WHEN m.BillName IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillName AS nvarchar(max))),N':',CAST(m.BillName AS nvarchar(max)),N';') END,CASE WHEN m.BillAttn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAttn AS nvarchar(max))),N':',CAST(m.BillAttn AS nvarchar(max)),N';') END,CASE WHEN m.BillPhone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillPhone AS nvarchar(max))),N':',CAST(m.BillPhone AS nvarchar(max)),N';') END,CASE WHEN m.BillFax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillFax AS nvarchar(max))),N':',CAST(m.BillFax AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr1 AS nvarchar(max))),N':',CAST(m.BillAddr1 AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr2 AS nvarchar(max))),N':',CAST(m.BillAddr2 AS nvarchar(max)),N';') END,CASE WHEN m.BillCity IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCity AS nvarchar(max))),N':',CAST(m.BillCity AS nvarchar(max)),N';') END,CASE WHEN m.BillState IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillState AS nvarchar(max))),N':',CAST(m.BillState AS nvarchar(max)),N';') END,CASE WHEN m.BillZip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillZip AS nvarchar(max))),N':',CAST(m.BillZip AS nvarchar(max)),N';') END,CASE WHEN m.BillCountry IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCountry AS nvarchar(max))),N':',CAST(m.BillCountry AS nvarchar(max)),N';') END,CASE WHEN m.DfltShipToId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.DfltShipToId AS nvarchar(max))),N':',CAST(m.DfltShipToId AS nvarchar(max)),N';') END,CASE WHEN m.SlsperId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.SlsperId AS nvarchar(max))),N':',CAST(m.SlsperId AS nvarchar(max)),N';') END,CASE WHEN m.Territory IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Territory AS nvarchar(max))),N':',CAST(m.Territory AS nvarchar(max)),N';') END,CASE WHEN m.Terms IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Terms AS nvarchar(max))),N':',CAST(m.Terms AS nvarchar(max)),N';') END,CASE WHEN m.CuryId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryId AS nvarchar(max))),N':',CAST(m.CuryId AS nvarchar(max)),N';') END,CASE WHEN m.CuryRateType IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryRateType AS nvarchar(max))),N':',CAST(m.CuryRateType AS nvarchar(max)),N';') END,CASE WHEN m.PrcLvlId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PrcLvlId AS nvarchar(max))),N':',CAST(m.PrcLvlId AS nvarchar(max)),N';') END,CASE WHEN m.PriceClassID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PriceClassID AS nvarchar(max))),N':',CAST(m.PriceClassID AS nvarchar(max)),N';') END,CASE WHEN m.LanguageID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.LanguageID AS nvarchar(max))),N':',CAST(m.LanguageID AS nvarchar(max)),N';') END,CASE WHEN m.StmtCycleId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.StmtCycleId AS nvarchar(max))),N':',CAST(m.StmtCycleId AS nvarchar(max)),N';') END) AS CustomerContext,CASE WHEN (RTRIM(CAST(m.Status AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=N'I' COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(m.Status AS nvarchar(max))))=DATALENGTH(N'I')) THEN N'Inactive (stored I)' ELSE N'Other stored code — see Details' END AS CustomerStatusContext,CASE WHEN NOT (NOT EXISTS (SELECT 1 FROM dbo.SOAddress bad WHERE (RTRIM(CAST(bad.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(m.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(m.CustId AS nvarchar(max))))) AND ((bad.CustId IS NULL OR RTRIM(CAST(bad.CustId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))>30) OR (bad.ShipToId IS NULL OR RTRIM(CAST(bad.ShipToId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.ShipToId AS nvarchar(max))))>20))) AND NOT EXISTS (SELECT 1 FROM dbo.SOAddress bad WHERE (RTRIM(CAST(bad.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(m.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(m.CustId AS nvarchar(max))))) GROUP BY CAST(RTRIM(CAST(bad.ShipToId AS nvarchar(max))) AS nvarchar(10)) COLLATE Latin1_General_100_BIN2,DATALENGTH(RTRIM(CAST(bad.ShipToId AS nvarchar(max)))) HAVING COUNT(1)<>1)) THEN N'Ambiguous / invalid ship-to IDs' WHEN EXISTS (SELECT 1 FROM dbo.SOAddress a WHERE (RTRIM(CAST(a.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(m.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(a.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(m.CustId AS nvarchar(max)))))) THEN N'Available on demand' ELSE N'No stored ship-to addresses' END AS ShipToAvailability,N'Current customer and billing defaults; not a historical invoice snapshot' AS MasterScope FROM dbo.Customer m WHERE NOT EXISTS (SELECT 1 FROM dbo.Customer bad WHERE (bad.CustId IS NULL OR RTRIM(CAST(bad.CustId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))>30)) AND NOT EXISTS (SELECT 1 FROM dbo.Customer bad GROUP BY CAST(RTRIM(CAST(bad.CustId AS nvarchar(max))) AS nvarchar(15)) COLLATE Latin1_General_100_BIN2,DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max)))) HAVING COUNT(1)<>1)",
"tableName": ""
},
{
"cacheMode": "live",
"calculatedFields": [],
"customQueryIntegrationName": "",
"endpointPath": "",
"fetchSortRules": [
{
"direction": "ascending",
"id": "9FCEF77C-CF5F-5F19-AB88-1AEB337ED45B",
"key": "ShipToId",
"type": "text"
}
],
"id": "9DF9D77B-4633-5499-B919-80CDFDD7F070",
"mappings": [
{
"commonFieldKey": "",
"key": "ShipToKey",
"label": "Internal complete source-row context",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "ShipToKey",
"type": "text",
"visibleInDetail": false,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "CustomerContext",
"label": "Internal complete source-row context",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "CustomerContext",
"type": "text",
"visibleInDetail": false,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "CustId",
"label": "Customer business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "CustId",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "ShipToId",
"label": "Ship-to business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "ShipToId",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Name",
"label": "Stored ship-to name",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Name",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Descr",
"label": "Ship-to description",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Descr",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Attn",
"label": "Ship-to contact",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Attn",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "Phone",
"label": "Ship-to phone",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Phone",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "Fax",
"label": "Ship-to fax",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Fax",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "EMailAddr",
"label": "Ship-to email",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "EMailAddr",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Addr1",
"label": "Ship-to address line 1",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Addr1",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "Addr2",
"label": "Ship-to address line 2",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Addr2",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "City",
"label": "Ship-to city",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "City",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "State",
"label": "Ship-to state / region",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "State",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Zip",
"label": "Ship-to postal code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Zip",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "Country",
"label": "Ship-to country code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Country",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "ShipViaID",
"label": "Ship-via business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "ShipViaID",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "SiteID",
"label": "Default site business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "SiteID",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "SlsPerID",
"label": "Ship-to salesperson code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "SlsPerID",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "FOB",
"label": "Native FOB setting",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "FOB",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "FrtTermsID",
"label": "Freight terms code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "FrtTermsID",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
},
{
"commonFieldKey": "",
"key": "Status",
"label": "Stored ship-to status code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "Status",
"type": "text",
"visibleInDetail": true,
"visibleInList": true
},
{
"commonFieldKey": "",
"key": "ShipToScope",
"label": "Current shipping-address scope",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text",
"sourceColumn": "ShipToScope",
"type": "text",
"visibleInDetail": true,
"visibleInList": false
}
],
"maxRows": 1000,
"name": "Customer ship-to addresses",
"primaryKey": "ShipToKey",
"queryParameters": [
{
"constantValue": "",
"dayOffset": 0,
"fieldKey": "CustId",
"id": "C7E8850C-B5DB-514E-B7A2-FE9915619D9F",
"name": "customer",
"source": "parentField",
"type": "text"
},
{
"constantValue": "",
"dayOffset": 0,
"fieldKey": "CustomerContext",
"id": "892A35DA-E160-54B5-957F-F517FC25B028",
"name": "customerContext",
"source": "parentField",
"type": "text"
}
],
"refreshPolicy": {
"enabled": false,
"intervalMinutes": 60
},
"rootArrayPath": "",
"rowLimitEnabled": true,
"searchKeys": [
"CustId",
"ShipToId",
"Name",
"Descr",
"Attn",
"Phone",
"Fax",
"EMailAddr",
"Addr1",
"Addr2",
"City",
"State",
"Zip",
"Country",
"ShipViaID",
"SiteID",
"SlsPerID",
"FOB",
"FrtTermsID",
"Status",
"ShipToScope"
],
"sourceID": "B6DAD58E-AF43-5510-805A-BB9C14A92203",
"sqlQuery": "SELECT CONCAT(CASE WHEN RTRIM(CAST(a.CustId AS nvarchar(max))) IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(RTRIM(CAST(a.CustId AS nvarchar(max))) AS nvarchar(max))),N':',CAST(RTRIM(CAST(a.CustId AS nvarchar(max))) AS nvarchar(max)),N';') END,CASE WHEN RTRIM(CAST(a.ShipToId AS nvarchar(max))) IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(RTRIM(CAST(a.ShipToId AS nvarchar(max))) AS nvarchar(max))),N':',CAST(RTRIM(CAST(a.ShipToId AS nvarchar(max))) AS nvarchar(max)),N';') END) AS ShipToKey,:customerContext AS CustomerContext,RTRIM(CAST(a.CustId AS nvarchar(max))) AS CustId,RTRIM(CAST(a.ShipToId AS nvarchar(max))) AS ShipToId,a.Name AS Name,a.Descr AS Descr,a.Attn AS Attn,a.Phone AS Phone,a.Fax AS Fax,a.EMailAddr AS EMailAddr,a.Addr1 AS Addr1,a.Addr2 AS Addr2,a.City AS City,a.State AS State,a.Zip AS Zip,a.Country AS Country,a.ShipViaID AS ShipViaID,a.SiteID AS SiteID,a.SlsPerID AS SlsPerID,a.FOB AS FOB,a.FrtTermsID AS FrtTermsID,a.Status AS Status,N'Current ship-to master; not an address stored on a past document' AS ShipToScope FROM dbo.SOAddress a WHERE (RTRIM(CAST(a.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(:customer AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(a.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(:customer AS nvarchar(max))))) AND NOT EXISTS (SELECT 1 FROM dbo.SOAddress bad WHERE (RTRIM(CAST(bad.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(:customer AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(:customer AS nvarchar(max))))) AND ((bad.CustId IS NULL OR RTRIM(CAST(bad.CustId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))>30) OR (bad.ShipToId IS NULL OR RTRIM(CAST(bad.ShipToId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.ShipToId AS nvarchar(max))))>20))) AND NOT EXISTS (SELECT 1 FROM dbo.SOAddress bad WHERE (RTRIM(CAST(bad.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(:customer AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(:customer AS nvarchar(max))))) GROUP BY CAST(RTRIM(CAST(bad.ShipToId AS nvarchar(max))) AS nvarchar(10)) COLLATE Latin1_General_100_BIN2,DATALENGTH(RTRIM(CAST(bad.ShipToId AS nvarchar(max)))) HAVING COUNT(1)<>1) AND EXISTS (SELECT 1 FROM dbo.Customer m WHERE NOT EXISTS (SELECT 1 FROM dbo.Customer bad WHERE (bad.CustId IS NULL OR RTRIM(CAST(bad.CustId AS nvarchar(max)))=N'' OR DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max))))>30)) AND NOT EXISTS (SELECT 1 FROM dbo.Customer bad GROUP BY CAST(RTRIM(CAST(bad.CustId AS nvarchar(max))) AS nvarchar(15)) COLLATE Latin1_General_100_BIN2,DATALENGTH(RTRIM(CAST(bad.CustId AS nvarchar(max)))) HAVING COUNT(1)<>1) AND (RTRIM(CAST(m.CustId AS nvarchar(max))) COLLATE Latin1_General_100_BIN2=RTRIM(CAST(:customer AS nvarchar(max))) COLLATE Latin1_General_100_BIN2 AND DATALENGTH(RTRIM(CAST(m.CustId AS nvarchar(max))))=DATALENGTH(RTRIM(CAST(:customer AS nvarchar(max))))) AND (CONCAT(CASE WHEN m.CustId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CustId AS nvarchar(max))),N':',CAST(m.CustId AS nvarchar(max)),N';') END,CASE WHEN m.Name IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Name AS nvarchar(max))),N':',CAST(m.Name AS nvarchar(max)),N';') END,CASE WHEN m.ClassId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.ClassId AS nvarchar(max))),N':',CAST(m.ClassId AS nvarchar(max)),N';') END,CASE WHEN m.Status IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Status AS nvarchar(max))),N':',CAST(m.Status AS nvarchar(max)),N';') END,CASE WHEN m.Attn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Attn AS nvarchar(max))),N':',CAST(m.Attn AS nvarchar(max)),N';') END,CASE WHEN m.Phone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Phone AS nvarchar(max))),N':',CAST(m.Phone AS nvarchar(max)),N';') END,CASE WHEN m.Fax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Fax AS nvarchar(max))),N':',CAST(m.Fax AS nvarchar(max)),N';') END,CASE WHEN m.EMailAddr IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.EMailAddr AS nvarchar(max))),N':',CAST(m.EMailAddr AS nvarchar(max)),N';') END,CASE WHEN m.Addr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr1 AS nvarchar(max))),N':',CAST(m.Addr1 AS nvarchar(max)),N';') END,CASE WHEN m.Addr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr2 AS nvarchar(max))),N':',CAST(m.Addr2 AS nvarchar(max)),N';') END,CASE WHEN m.City IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.City AS nvarchar(max))),N':',CAST(m.City AS nvarchar(max)),N';') END,CASE WHEN m.State IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.State AS nvarchar(max))),N':',CAST(m.State AS nvarchar(max)),N';') END,CASE WHEN m.Zip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Zip AS nvarchar(max))),N':',CAST(m.Zip AS nvarchar(max)),N';') END,CASE WHEN m.Country IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Country AS nvarchar(max))),N':',CAST(m.Country AS nvarchar(max)),N';') END,CASE WHEN m.BillName IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillName AS nvarchar(max))),N':',CAST(m.BillName AS nvarchar(max)),N';') END,CASE WHEN m.BillAttn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAttn AS nvarchar(max))),N':',CAST(m.BillAttn AS nvarchar(max)),N';') END,CASE WHEN m.BillPhone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillPhone AS nvarchar(max))),N':',CAST(m.BillPhone AS nvarchar(max)),N';') END,CASE WHEN m.BillFax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillFax AS nvarchar(max))),N':',CAST(m.BillFax AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr1 AS nvarchar(max))),N':',CAST(m.BillAddr1 AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr2 AS nvarchar(max))),N':',CAST(m.BillAddr2 AS nvarchar(max)),N';') END,CASE WHEN m.BillCity IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCity AS nvarchar(max))),N':',CAST(m.BillCity AS nvarchar(max)),N';') END,CASE WHEN m.BillState IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillState AS nvarchar(max))),N':',CAST(m.BillState AS nvarchar(max)),N';') END,CASE WHEN m.BillZip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillZip AS nvarchar(max))),N':',CAST(m.BillZip AS nvarchar(max)),N';') END,CASE WHEN m.BillCountry IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCountry AS nvarchar(max))),N':',CAST(m.BillCountry AS nvarchar(max)),N';') END,CASE WHEN m.DfltShipToId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.DfltShipToId AS nvarchar(max))),N':',CAST(m.DfltShipToId AS nvarchar(max)),N';') END,CASE WHEN m.SlsperId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.SlsperId AS nvarchar(max))),N':',CAST(m.SlsperId AS nvarchar(max)),N';') END,CASE WHEN m.Territory IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Territory AS nvarchar(max))),N':',CAST(m.Territory AS nvarchar(max)),N';') END,CASE WHEN m.Terms IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Terms AS nvarchar(max))),N':',CAST(m.Terms AS nvarchar(max)),N';') END,CASE WHEN m.CuryId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryId AS nvarchar(max))),N':',CAST(m.CuryId AS nvarchar(max)),N';') END,CASE WHEN m.CuryRateType IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryRateType AS nvarchar(max))),N':',CAST(m.CuryRateType AS nvarchar(max)),N';') END,CASE WHEN m.PrcLvlId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PrcLvlId AS nvarchar(max))),N':',CAST(m.PrcLvlId AS nvarchar(max)),N';') END,CASE WHEN m.PriceClassID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PriceClassID AS nvarchar(max))),N':',CAST(m.PriceClassID AS nvarchar(max)),N';') END,CASE WHEN m.LanguageID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.LanguageID AS nvarchar(max))),N':',CAST(m.LanguageID AS nvarchar(max)),N';') END,CASE WHEN m.StmtCycleId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.StmtCycleId AS nvarchar(max))),N':',CAST(m.StmtCycleId AS nvarchar(max)),N';') END) COLLATE Latin1_General_100_BIN2=:customerContext COLLATE Latin1_General_100_BIN2 AND DATALENGTH(CONCAT(CASE WHEN m.CustId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CustId AS nvarchar(max))),N':',CAST(m.CustId AS nvarchar(max)),N';') END,CASE WHEN m.Name IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Name AS nvarchar(max))),N':',CAST(m.Name AS nvarchar(max)),N';') END,CASE WHEN m.ClassId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.ClassId AS nvarchar(max))),N':',CAST(m.ClassId AS nvarchar(max)),N';') END,CASE WHEN m.Status IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Status AS nvarchar(max))),N':',CAST(m.Status AS nvarchar(max)),N';') END,CASE WHEN m.Attn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Attn AS nvarchar(max))),N':',CAST(m.Attn AS nvarchar(max)),N';') END,CASE WHEN m.Phone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Phone AS nvarchar(max))),N':',CAST(m.Phone AS nvarchar(max)),N';') END,CASE WHEN m.Fax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Fax AS nvarchar(max))),N':',CAST(m.Fax AS nvarchar(max)),N';') END,CASE WHEN m.EMailAddr IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.EMailAddr AS nvarchar(max))),N':',CAST(m.EMailAddr AS nvarchar(max)),N';') END,CASE WHEN m.Addr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr1 AS nvarchar(max))),N':',CAST(m.Addr1 AS nvarchar(max)),N';') END,CASE WHEN m.Addr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Addr2 AS nvarchar(max))),N':',CAST(m.Addr2 AS nvarchar(max)),N';') END,CASE WHEN m.City IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.City AS nvarchar(max))),N':',CAST(m.City AS nvarchar(max)),N';') END,CASE WHEN m.State IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.State AS nvarchar(max))),N':',CAST(m.State AS nvarchar(max)),N';') END,CASE WHEN m.Zip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Zip AS nvarchar(max))),N':',CAST(m.Zip AS nvarchar(max)),N';') END,CASE WHEN m.Country IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Country AS nvarchar(max))),N':',CAST(m.Country AS nvarchar(max)),N';') END,CASE WHEN m.BillName IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillName AS nvarchar(max))),N':',CAST(m.BillName AS nvarchar(max)),N';') END,CASE WHEN m.BillAttn IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAttn AS nvarchar(max))),N':',CAST(m.BillAttn AS nvarchar(max)),N';') END,CASE WHEN m.BillPhone IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillPhone AS nvarchar(max))),N':',CAST(m.BillPhone AS nvarchar(max)),N';') END,CASE WHEN m.BillFax IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillFax AS nvarchar(max))),N':',CAST(m.BillFax AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr1 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr1 AS nvarchar(max))),N':',CAST(m.BillAddr1 AS nvarchar(max)),N';') END,CASE WHEN m.BillAddr2 IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillAddr2 AS nvarchar(max))),N':',CAST(m.BillAddr2 AS nvarchar(max)),N';') END,CASE WHEN m.BillCity IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCity AS nvarchar(max))),N':',CAST(m.BillCity AS nvarchar(max)),N';') END,CASE WHEN m.BillState IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillState AS nvarchar(max))),N':',CAST(m.BillState AS nvarchar(max)),N';') END,CASE WHEN m.BillZip IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillZip AS nvarchar(max))),N':',CAST(m.BillZip AS nvarchar(max)),N';') END,CASE WHEN m.BillCountry IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.BillCountry AS nvarchar(max))),N':',CAST(m.BillCountry AS nvarchar(max)),N';') END,CASE WHEN m.DfltShipToId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.DfltShipToId AS nvarchar(max))),N':',CAST(m.DfltShipToId AS nvarchar(max)),N';') END,CASE WHEN m.SlsperId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.SlsperId AS nvarchar(max))),N':',CAST(m.SlsperId AS nvarchar(max)),N';') END,CASE WHEN m.Territory IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Territory AS nvarchar(max))),N':',CAST(m.Territory AS nvarchar(max)),N';') END,CASE WHEN m.Terms IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.Terms AS nvarchar(max))),N':',CAST(m.Terms AS nvarchar(max)),N';') END,CASE WHEN m.CuryId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryId AS nvarchar(max))),N':',CAST(m.CuryId AS nvarchar(max)),N';') END,CASE WHEN m.CuryRateType IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.CuryRateType AS nvarchar(max))),N':',CAST(m.CuryRateType AS nvarchar(max)),N';') END,CASE WHEN m.PrcLvlId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PrcLvlId AS nvarchar(max))),N':',CAST(m.PrcLvlId AS nvarchar(max)),N';') END,CASE WHEN m.PriceClassID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.PriceClassID AS nvarchar(max))),N':',CAST(m.PriceClassID AS nvarchar(max)),N';') END,CASE WHEN m.LanguageID IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.LanguageID AS nvarchar(max))),N':',CAST(m.LanguageID AS nvarchar(max)),N';') END,CASE WHEN m.StmtCycleId IS NULL THEN CAST(N'~;' AS nvarchar(max)) ELSE CONCAT(N'=',DATALENGTH(CAST(m.StmtCycleId AS nvarchar(max))),N':',CAST(m.StmtCycleId AS nvarchar(max)),N';') END))=DATALENGTH(:customerContext)))",
"tableName": ""
}
],
"pages": [
{
"actions": [
{
"id": "ECA85355-C3C8-55EA-ABC6-CD9B715E004F",
"kind": "showRelated",
"relatedInitiallyExpanded": false,
"relatedPresentation": "separate",
"relatedPreviewLimit": 12,
"relatedRowStyle": "cards",
"relatedShowsCount": true,
"relationID": "211E09E3-6EE4-541E-AD3F-38EBB49975F3",
"systemImage": "list.bullet.rectangle",
"targetDatasetID": "9DF9D77B-4633-5499-B919-80CDFDD7F070",
"title": "Ship-to addresses",
"urlKey": ""
}
],
"badgeKey": "",
"cardEnrichments": [],
"cardFieldLayout": [
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "Attn",
"label": "Contact",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "Phone",
"label": "Phone",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "EMailAddr",
"label": "Email",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "City",
"label": "City",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "ClassId",
"label": "Class",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "Terms",
"label": "Terms code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "CustomerStatusContext",
"label": "Customer status",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "ShipToAvailability",
"label": "Ship-to addresses",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
}
],
"datasetID": "B91160DF-6BBA-5DF7-B2FE-23FC50F4EF88",
"dateFilterKey": "",
"dateFilterLastDays": 7,
"dateFilterPreset": "none",
"detailFieldLayout": [
{
"detailGroup": "Customer identity",
"detailRole": "information",
"isVisible": true,
"key": "Name",
"label": "Customer name — original stored format",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Customer identity",
"detailRole": "information",
"isVisible": true,
"key": "CustId",
"label": "Customer business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Customer identity",
"detailRole": "information",
"isVisible": true,
"key": "ClassId",
"label": "Customer class code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Customer identity",
"detailRole": "information",
"isVisible": true,
"key": "Status",
"label": "Stored customer status code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Customer identity",
"detailRole": "information",
"isVisible": true,
"key": "CustomerStatusContext",
"label": "Documented inactive context",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Primary contact",
"detailRole": "information",
"isVisible": true,
"key": "Attn",
"label": "Primary contact",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Primary contact",
"detailRole": "information",
"isVisible": true,
"key": "Phone",
"label": "Primary phone",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Primary contact",
"detailRole": "information",
"isVisible": true,
"key": "Fax",
"label": "Primary fax",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Primary contact",
"detailRole": "information",
"isVisible": true,
"key": "EMailAddr",
"label": "Primary email",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current master address",
"detailRole": "information",
"isVisible": true,
"key": "Addr1",
"label": "Master address line 1",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current master address",
"detailRole": "information",
"isVisible": true,
"key": "Addr2",
"label": "Master address line 2",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current master address",
"detailRole": "information",
"isVisible": true,
"key": "City",
"label": "Master city",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current master address",
"detailRole": "information",
"isVisible": true,
"key": "State",
"label": "Master state / region",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current master address",
"detailRole": "information",
"isVisible": true,
"key": "Zip",
"label": "Master postal code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current master address",
"detailRole": "information",
"isVisible": true,
"key": "Country",
"label": "Master country code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current billing identity and contact",
"detailRole": "information",
"isVisible": true,
"key": "BillName",
"label": "Billing name — original stored format",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current billing identity and contact",
"detailRole": "information",
"isVisible": true,
"key": "BillAttn",
"label": "Billing contact",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current billing identity and contact",
"detailRole": "information",
"isVisible": true,
"key": "BillPhone",
"label": "Billing phone",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current billing identity and contact",
"detailRole": "information",
"isVisible": true,
"key": "BillFax",
"label": "Billing fax",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current billing address",
"detailRole": "information",
"isVisible": true,
"key": "BillAddr1",
"label": "Billing address line 1",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current billing address",
"detailRole": "information",
"isVisible": true,
"key": "BillAddr2",
"label": "Billing address line 2",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current billing address",
"detailRole": "information",
"isVisible": true,
"key": "BillCity",
"label": "Billing city",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current billing address",
"detailRole": "information",
"isVisible": true,
"key": "BillState",
"label": "Billing state / region",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current billing address",
"detailRole": "information",
"isVisible": true,
"key": "BillZip",
"label": "Billing postal code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current billing address",
"detailRole": "information",
"isVisible": true,
"key": "BillCountry",
"label": "Billing country code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Commercial defaults — native codes",
"detailRole": "information",
"isVisible": true,
"key": "SlsperId",
"label": "Salesperson code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Commercial defaults — native codes",
"detailRole": "information",
"isVisible": true,
"key": "Territory",
"label": "Sales territory code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Commercial defaults — native codes",
"detailRole": "information",
"isVisible": true,
"key": "Terms",
"label": "Payment terms code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Commercial defaults — native codes",
"detailRole": "information",
"isVisible": true,
"key": "CuryId",
"label": "Native customer currency setting",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Commercial defaults — native codes",
"detailRole": "information",
"isVisible": true,
"key": "CuryRateType",
"label": "Exchange-rate type code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Commercial defaults — native codes",
"detailRole": "information",
"isVisible": true,
"key": "PrcLvlId",
"label": "Price level code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Commercial defaults — native codes",
"detailRole": "information",
"isVisible": true,
"key": "PriceClassID",
"label": "Price class code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Commercial defaults — native codes",
"detailRole": "information",
"isVisible": true,
"key": "LanguageID",
"label": "Customer language code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Commercial defaults — native codes",
"detailRole": "information",
"isVisible": true,
"key": "StmtCycleId",
"label": "Statement cycle code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current shipping and scope",
"detailRole": "information",
"isVisible": true,
"key": "DfltShipToId",
"label": "Default ship-to business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current shipping and scope",
"detailRole": "information",
"isVisible": true,
"key": "ShipToAvailability",
"label": "Ship-to identity availability",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current shipping and scope",
"detailRole": "information",
"isVisible": true,
"key": "MasterScope",
"label": "Current master / billing scope",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
}
],
"detailLiveRefreshSeconds": 0,
"fixedFilters": [],
"id": "D1AB7EF8-C976-5CD7-B80F-F4009F516F52",
"openFilters": [
{
"id": "07A08D70-9C2A-52EC-A291-3981F33C366C",
"includeAllOption": true,
"key": "ClassId",
"title": "Customer class",
"type": "text"
}
],
"pageSize": 100,
"requiresOpeningFilterSelection": true,
"showOnHome": true,
"sortRules": [
{
"direction": "ascending",
"id": "F5704292-0D46-53B6-A7FA-C8450E931C6B",
"key": "Name",
"type": "text"
},
{
"direction": "ascending",
"id": "DF6EE06C-FA4C-580B-B97B-21F935C06FEF",
"key": "CustId",
"type": "text"
}
],
"subtitle": "",
"subtitleKey": "CustId",
"systemImage": "person.2",
"title": "Customers",
"titleKey": "Name"
},
{
"actions": [],
"badgeKey": "",
"cardEnrichments": [],
"cardFieldLayout": [
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "Attn",
"label": "Contact",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "Phone",
"label": "Phone",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "Addr1",
"label": "Address",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "City",
"label": "City",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "Zip",
"label": "Postal code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "Country",
"label": "Country code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "ShipViaID",
"label": "Ship via",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "",
"detailRole": "information",
"isVisible": true,
"key": "Status",
"label": "Stored status",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
}
],
"datasetID": "9DF9D77B-4633-5499-B919-80CDFDD7F070",
"dateFilterKey": "",
"dateFilterLastDays": 7,
"dateFilterPreset": "none",
"detailFieldLayout": [
{
"detailGroup": "Shipping business identity",
"detailRole": "information",
"isVisible": true,
"key": "Name",
"label": "Stored ship-to name",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping business identity",
"detailRole": "information",
"isVisible": true,
"key": "Descr",
"label": "Ship-to description",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping business identity",
"detailRole": "information",
"isVisible": true,
"key": "CustId",
"label": "Customer business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping business identity",
"detailRole": "information",
"isVisible": true,
"key": "ShipToId",
"label": "Ship-to business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping business identity",
"detailRole": "information",
"isVisible": true,
"key": "Status",
"label": "Stored ship-to status code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping contact",
"detailRole": "information",
"isVisible": true,
"key": "Attn",
"label": "Ship-to contact",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping contact",
"detailRole": "information",
"isVisible": true,
"key": "Phone",
"label": "Ship-to phone",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping contact",
"detailRole": "information",
"isVisible": true,
"key": "Fax",
"label": "Ship-to fax",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping contact",
"detailRole": "information",
"isVisible": true,
"key": "EMailAddr",
"label": "Ship-to email",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current shipping address",
"detailRole": "information",
"isVisible": true,
"key": "Addr1",
"label": "Ship-to address line 1",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current shipping address",
"detailRole": "information",
"isVisible": true,
"key": "Addr2",
"label": "Ship-to address line 2",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current shipping address",
"detailRole": "information",
"isVisible": true,
"key": "City",
"label": "Ship-to city",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current shipping address",
"detailRole": "information",
"isVisible": true,
"key": "State",
"label": "Ship-to state / region",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current shipping address",
"detailRole": "information",
"isVisible": true,
"key": "Zip",
"label": "Ship-to postal code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Current shipping address",
"detailRole": "information",
"isVisible": true,
"key": "Country",
"label": "Ship-to country code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping defaults — native values",
"detailRole": "information",
"isVisible": true,
"key": "ShipViaID",
"label": "Ship-via business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping defaults — native values",
"detailRole": "information",
"isVisible": true,
"key": "SiteID",
"label": "Default site business code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping defaults — native values",
"detailRole": "information",
"isVisible": true,
"key": "SlsPerID",
"label": "Ship-to salesperson code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping defaults — native values",
"detailRole": "information",
"isVisible": true,
"key": "FOB",
"label": "Native FOB setting",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Shipping defaults — native values",
"detailRole": "information",
"isVisible": true,
"key": "FrtTermsID",
"label": "Freight terms code",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
},
{
"detailGroup": "Scope",
"detailRole": "information",
"isVisible": true,
"key": "ShipToScope",
"label": "Current shipping-address scope",
"locationLabelKey": "",
"locationLongitudeKey": "",
"presentation": "text"
}
],
"detailLiveRefreshSeconds": 0,
"fixedFilters": [],
"id": "9ADEC0B4-9C73-58A8-9B38-D9F39B36C030",
"openFilters": [],
"pageSize": 100,
"requiresOpeningFilterSelection": false,
"showOnHome": false,
"sortRules": [
{
"direction": "ascending",
"id": "9FCEF77C-CF5F-5F19-AB88-1AEB337ED45B",
"key": "ShipToId",
"type": "text"
}
],
"subtitle": "",
"subtitleKey": "ShipToId",
"systemImage": "map",
"title": "Ship-to addresses",
"titleKey": "Name"
}
],
"relations": [
{
"childDatasetID": "9DF9D77B-4633-5499-B919-80CDFDD7F070",
"childKey": "CustId",
"id": "211E09E3-6EE4-541E-AD3F-38EBB49975F3",
"name": "Ship-to addresses",
"parentDatasetID": "B91160DF-6BBA-5DF7-B2FE-23FC50F4EF88",
"parentKey": "CustId"
}
],
"widgets": []
}
},
"format": "cifru-configuration-package",
"formatVersion": 1,
"manifest": {
"applicationName": "Microsoft Dynamics SL",
"configurationLanguages": [
"en"
],
"countries": [
"US"
],
"createdAt": "2026-10-10T00:00:00Z",
"description": "UNOFFICIAL — NOT VALIDATED ON A REAL ERP INSTALLATION. Documentary and synthetic validation only. Microsoft explicitly registers Customer and SOAddress as Dynamics SL source tables and supplies corresponding migration staging fields and logical keys at commit e7ed235bc979c0283306e9639ff7cd22ce78341d. AL types/keys are not installed SQL DDL. No real Dynamics SL/SQL Server deployment, release, owner, indexes, execution plan or ERP permissions have been tested. Map the authorised source and complete the import read/compatibility test.\n\nFor customer service, sales, billing teams, delivery coordination and managers: choose a customer class, find a customer by name or business code, inspect contact details, distinct master and billing addresses, and native commercial settings. Open the customer's ship-to addresses only when needed, then inspect each location's own contact, address and shipping settings.\n\nWhy Cifru? Adapt configurations to the way you work. Choose the fields, filters and details you need, and bring information to your phone that may not be available in your business software’s own mobile app. Available options depend on the data exposed by your authorized source and your Cifru plan.\n\nPro: one source, two lists, one lazy related button and explicit read-only SQL. The 34 selected customer fields plus three explanatory contexts and 20 selected ship-to fields plus a scope explanation are grouped in complete same-row Details. Each read is capped at 1,000 rows, with no automatic refresh, balance aggregation or preloading of every address. A capped list is not a complete company total. Identity checks may scan beyond the visible row cap; test performance on the installed database and narrow the authorised source where necessary.\n\nCustomer business codes preserve leading zeroes and internal characters; right-padding is removed only from row keys. A ship-to row is identified by both CustId and ShipToId. Duplicate, blank or oversized identities fail closed rather than choosing the first row. Ambiguous ship-to IDs block that related read, not valid customers. The related query rechecks the full selected parent snapshot; refresh the customer list if the source changed after it was loaded.\n\nCurrent billing fields and ship-to master records are not historical invoice addresses. Customer status I is documented as inactive; other customer codes and every ship-to status remain native values, not invented Active/Blocked labels. Class, terms, salesperson, territory, price, language, site, freight and currency settings remain business codes. No lookup descriptions, discount formulas, credit availability, currency conversions, balance or permissions are guessed. Names remain exactly as stored, including legacy name ordering; the migration NameFlip transform is not silently applied. NULL/empty fields stay empty.\n\nUse the authorised Dynamics SL business database, not the Business Central migration destination or SL system database. dbo is the proposed owner and must be verified. Do not invent a CpnyID column on these two masters from transaction tables or treat the migration Data Per Company setting as a source row-security rule. An administrator must provide a separate least-privilege reporting login with SELECT only on permitted data. Direct SQL does not inherit the ERP session, company restrictions or role permissions. UI filters and hidden keys are not access control. Never copy migration sysadmin/db_owner requirements to the Cifru reporting account.\n\nThe package contains no host, username, password, live rows, bank/card or technical audit fields. Source commercial contacts can nevertheless be confidential. Native screenshots use wholly fictional DEMO rows and synthetic transport, not a live SL connection. Unofficial and not endorsed by Microsoft. Dynamics SL is a distinct legacy installed-base product, not Dynamics GP, AX or Business Central. Check the installed edition and lifecycle; Microsoft currently lists extended support ending in July 2028. No current top-three market ranking or absence of a native mobile offering is claimed.\n\nSource registration: https://github.com/microsoft/ALAppExtensions/blob/e7ed235bc979c0283306e9639ff7cd22ce78341d/Apps/W1/HybridSL/app/src/codeunits/SLHybridWizard.Codeunit.al\nCustomer fields: https://github.com/microsoft/ALAppExtensions/blob/e7ed235bc979c0283306e9639ff7cd22ce78341d/Apps/W1/HybridSL/app/src/Migration/Customers/SLCustomer.Table.al\nShip-to fields and logical key: https://github.com/microsoft/ALAppExtensions/blob/e7ed235bc979c0283306e9639ff7cd22ce78341d/Apps/W1/HybridSL/app/src/Migration/Customers/SLSOAddress.Table.al\nDocumented customer / shipping binding: https://github.com/microsoft/ALAppExtensions/blob/e7ed235bc979c0283306e9639ff7cd22ce78341d/Apps/W1/HybridSL/app/src/Migration/Customers/SLCustomerMigrator.Codeunit.al\nFunctional context: https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/migrate-dynamics-sl\nLifecycle: https://learn.microsoft.com/en-us/lifecycle/products/dynamics-sl-2018",
"licenseCode": "Cifru-Community-1.0",
"minimumCifruVersion": "1.1.0",
"minimumPlan": "pro",
"packageID": "A51E0103-0E7E-5568-BB77-CD084AD406A0",
"rootButtonCount": 1,
"summary": "Contacts, distinct current billing details, native commercial defaults and on-demand ship-to addresses.",
"tags": [
"Dynamics SL",
"SQL Server",
"Customers",
"Billing",
"Shipping",
"Customer service",
"Pro"
],
"title": "Customer, billing and ship-to dossier — Pro"
}
}