Skip to main content

Tables

Reference for all tables in the Aptean Mesh SDUI framework. These tables store the configuration, runtime state, and audit data that drive the mobile application.


Mobile App Bundle 220FDW

Table 73167873 -- The top-level configuration entity for an Aptean Mesh mobile deployment.

  • Namespace: Aptean.Mesh.SDUI
  • Caption: Mobile App Bundle
  • Data Classification: CustomerContent

Fields

No.NameTypeDescription
1IDGuidUnique identifier for the bundle. Auto-generated on insert.
11CodeCode[20]Human-readable code for the bundle. Must not be blank.
12DescriptionText[50]Short description of the bundle.
13VersionIntegerVersion number (starts at 1, read-only).
14PublisherText[30]Publisher of the bundle (read-only).
15LockedBooleanWhether this is a system bundle that cannot be modified or deleted (read-only).
16StatusEnum AppBundleStatus220FDWLifecycle status: Dev, Test, Production, or Archive. Only one Production bundle may exist at a time.
17Root Page IDCode[50]The initial page to render when the mobile app loads this bundle. References MobilePage220FDW."Page ID".
18Mobile Page CountIntegerFlowField -- count of mobile pages in this bundle.
19Workflow CountIntegerFlowField -- count of workflows in this bundle.
20Service Setup CountIntegerFlowField -- count of service registrations in this bundle.
21Dependency CountIntegerFlowField -- count of dependencies for this bundle.
22Min Client VersionIntegerMinimum mobile client VERSION_CODE required. 0 allows all versions.

Keys

NameFieldsProperties
PKIDClustered
PublisherVersionPublisher, Version
UniqueBundleCode, Publisher, VersionUnique

Purpose

The app bundle is the root container for all mobile configuration -- pages, workflows, service registrations, and dependencies. Aptean Mesh resolves which bundle to serve at runtime:

  1. If the current user has a User Assignment pointing to a Dev or Test bundle, that bundle is used.
  2. Otherwise, the single Production bundle is used.

Developers typically work with Dev bundles during development, promote to Test for validation, and finally set the status to Production for go-live. Locked bundles (shipped by Aptean) cannot be modified directly -- copy them to create a customizable version.


Mobile App Dependency 220FDW

Table 73167874 -- Tracks BC app dependencies required by a mobile app bundle.

  • Namespace: Aptean.Mesh.SDUI
  • Caption: Mobile App Dependency
  • Data Classification: CustomerContent

Fields

No.NameTypeDescription
1App Bundle IDGuidThe parent app bundle. References Mobile App Bundle 220FDW.ID.
2Dependency App IDGuidUnique identifier of the dependent BC app.
11Dependency App NameText[250]Name of the dependent BC app.
12Dependency PublisherText[250]Publisher of the dependent BC app.
13Min VersionText[50]Minimum required version of the dependent app.

Keys

NameFieldsProperties
PKApp Bundle ID, Dependency App IDClustered

Purpose

Records which BC extensions a bundle depends on. This allows the mobile infrastructure to verify that all required extensions are installed before serving a bundle to a mobile client.


MobilePage220FDW

Table 73167875 -- Defines a single page within a mobile app bundle.

  • Namespace: Aptean.Mesh.SDUI
  • Caption: Mobile Page
  • Data Classification: CustomerContent

Fields

No.NameTypeDescription
1App Bundle IDGuidThe parent app bundle. References Mobile App Bundle 220FDW.ID.
2Page IDCode[50]Unique identifier for this page within the bundle. Must not be blank.
11App Bundle CodeCode[20]FlowField -- code of the parent bundle.
12DescriptionText[100]Description of this mobile page.
13Page JsonBlobThe SDUI JSON definition that describes the page layout and behavior.
14ServiceCode[50]The mobile service code that handles RPC calls for this page. References Mobile Service Registry 220FDW.
15WorkflowCode[20]The workflow code for guided scan flows on this page. References Mobile Workflow 220FDW.

Keys

NameFieldsProperties
PKApp Bundle ID, Page IDClustered

Purpose

Each mobile page stores its UI definition as a JSON blob in the Page Json field. The SDUI (Server-Driven UI) JSON is sent to the mobile client, which renders the page dynamically. Pages are linked to a service (for RPC handling) and optionally to a workflow (for guided scan flows). Developers typically edit the page JSON through the Mobile Page Card page in Business Central, which provides a JSON editor control add-in.


Mobile Setup 220FDW

Table 73167871 -- Singleton configuration table for global Aptean Mesh mobile settings.

  • Namespace: Aptean.Mesh.SDUI
  • Caption: Mobile Setup
  • Data Classification: CustomerContent

Fields

No.NameTypeDescription
1Primary KeyCode[10]Singleton key (always blank).
11Enable Request LoggingBooleanWhether RPC request/response logging is enabled.
12Tenant IDText[250]Azure AD tenant identifier. Auto-populated for SaaS environments (read-only).
13Client IDText[250]Azure AD application (client) ID for OAuth2 authentication. References AAD Application.
14Telemetry Connection StringText[250]Azure Application Insights connection string for mobile telemetry.

Keys

NameFieldsProperties
PKPrimary KeyClustered

Purpose

This is a singleton setup table (one record per company) that stores global mobile configuration. It provides:

  • Authentication settings -- Tenant ID and Client ID used by the mobile app for OAuth2 login.
  • Logging toggle -- Enables or disables RPC request/response logging to the Mobile Request Log.
  • Telemetry -- Connection string for Azure Application Insights to track mobile app usage and errors.
  • API URL generation -- Internal methods build the BC API and RPC endpoint URLs dynamically from the current environment.

Administrators configure these values through the Mobile Setup page in Business Central.


Mobile User Assignment 220FDW

Table 73167879 -- Assigns a specific user to a Dev or Test app bundle for development and testing.

  • Namespace: Aptean.Mesh.SDUI
  • Caption: Mobile User Assignment
  • Data Classification: CustomerContent

Fields

No.NameTypeDescription
1User IDCode[50]The assigned user. References User."User Name". Must not be blank.
2App Bundle IDGuidThe assigned Dev or Test bundle. References Mobile App Bundle 220FDW.ID (filtered to Dev/Test status).
3Language CodeCode[10]BC Language Code that overrides the user's BC UI language for translation purposes. Set this to control which XLIFF translations the mobile client receives for this user. Resolved by MobileLocalization220FDW.GetUserCultureTag().
11App Bundle CodeCode[20]FlowField -- code of the assigned bundle.
12App Bundle VersionIntegerFlowField -- version of the assigned bundle.

Keys

NameFieldsProperties
PKUser IDClustered

Purpose

User assignments allow individual users to be routed to a specific Dev or Test bundle instead of the Production bundle. This is how developers test their changes in isolation -- only assigned users see the non-production bundle, while all other users continue to use Production.


MobileRequestLog220FDW

Table 73167876 -- Audit log of all RPC requests and responses between the mobile app and Business Central.

  • Namespace: Aptean.Mesh.SDUI
  • Caption: Mobile Request Log
  • Data Classification: CustomerContent

Fields

No.NameTypeDescription
1Entry No.BigIntegerAuto-incrementing unique identifier.
11Request Date/TimeDateTimeWhen the RPC request was received.
12Response Date/TimeDateTimeWhen the RPC response was sent.
13App Bundle IDGuidThe bundle that handled the request.
14App Bundle CodeCode[50]FlowField -- code of the handling bundle.
15Mobile Service CodeCode[50]The service that handled the request.
16Rpc MethodText[50]The RPC method that was called.
17Request JsonBlobFull JSON request received from the mobile app.
18Response JsonBlobFull JSON response sent to the mobile app.
19Error MessageText[2048]Error message if the RPC call failed.
20Error Call StackBlobFull error call stack for debugging.

Keys

NameFieldsProperties
PKEntry No.Clustered
SK2App Bundle ID, Mobile Service Code

Purpose

When request logging is enabled in Mobile Setup, every RPC call between the mobile app and BC is recorded here. This is invaluable for debugging -- you can see the exact JSON sent by the mobile client, the response returned by BC, and any error details. Log entries can be configured for automatic cleanup using the standard BC data retention framework with the custom 2-day retention period.


BCRPC220FDW

Table 73167870 -- Internal API table that serves as the RPC entry point for mobile-to-BC communication.

  • Namespace: Aptean.Mesh.SDUI
  • Data Classification: CustomerContent

Fields

No.NameTypeDescription
1IDIntegerAuto-incrementing identifier.
2ResponseBlob (Json)The JSON response blob returned to the mobile client.
3IsDirtyBooleanFlag indicating whether the response has been updated.

Keys

NameFieldsProperties
PKIDClustered

Purpose

This is a system-internal table exposed through the BC API page BCRPC220FDW. The mobile client calls the CallRPC method on this table, passing a JSON request string. The table dispatches the request to the appropriate service codeunit via MobileRPCRegistry220FDW, captures the JSON response, and stores it in the Response blob for the API to return. Developers do not interact with this table directly -- it is the plumbing behind the RPC mechanism.


Mobile Service Registry 220FDW

Table 73167878 -- Maps mobile service codes to AL codeunits that handle them.

  • Namespace: Aptean.Mesh.SDUI
  • Caption: Mobile Service Registry
  • Data Classification: CustomerContent

Fields

No.NameTypeDescription
1App Bundle IDGuidThe parent app bundle. References Mobile App Bundle 220FDW.ID.
2Mobile Service CodeCode[50]Unique key sent by the mobile app to trigger this service (e.g., RECEIVE). Must not be blank.
11Codeunit IdIntegerThe AL codeunit that handles this service. Must implement the IBCRPC220FDW interface.
12Handler NameCode[250]FlowField -- name of the handler codeunit.
13App Bundle CodeCode[20]FlowField -- code of the parent bundle.

Keys

NameFieldsProperties
PKApp Bundle ID, Mobile Service CodeClustered

Purpose

The service registry is the routing table for RPC calls. When the mobile app sends a request with a service code (e.g., RECEIVE), the MobileRPCRegistry220FDW codeunit looks up the registry to find which codeunit should handle the request. The handler codeunit must implement the IBCRPC220FDW interface.


Mobile Scan Entry 220FDW

Table 73167900 -- Stores individual scan entries captured by mobile warehouse operations.

  • Namespace: Aptean.Mesh.SDUI
  • Caption: Mobile Scan Entry
  • Data Classification: CustomerContent

Fields

No.NameTypeDescription
1Entry No.BigIntegerAuto-incrementing unique identifier.
15StatusEnum Scan Entry Status 220FDWCurrent status of the scan entry (Pending, Transferred, Deleted, Overwritten).
20Item No.Code[20]Scanned item number. References Item.
25Location CodeCode[10]Warehouse location code. References Location.
30Variant CodeCode[10]Item variant code. References Item Variant.
35Bin CodeCode[20]Warehouse bin code. References Bin.
50Source TypeIntegerSource document table ID (e.g., Database::"Warehouse Activity Line").
55Source SubtypeIntegerSource document subtype.
60Source IDCode[20]Source document number.
65Source Batch NameCode[20]Source batch name.
70Source Prod. Order LineIntegerSource production order line number.
75Source Ref. No.IntegerSource reference line number.
100Lot No.Code[50]Lot/batch number.
105Serial No.Code[50]Serial number.
110Expiration DateDateExpiration date for item tracking.
150QuantityDecimalScanned quantity in the specified unit of measure.
155Quantity (Base)DecimalQuantity converted to base unit of measure (read-only, auto-calculated).
160Unit of Measure CodeCode[10]Unit of measure for the scanned quantity. References Item Unit of Measure.
165Qty. per Unit of MeasureDecimalConversion factor from UOM to base (read-only, auto-calculated).

Keys

NameFieldsProperties
PKEntry No.Clustered
Key1Source ID, Source Ref. No., Source Type, Source Subtype, Source Batch Name, Source Prod. Order Line, Status, Lot No., Serial No., Variant CodeSumIndexFields: Quantity, Quantity (Base)
Key2Item No.
Key3Location Code, Bin Code, Item No., Variant Code, Lot No., Serial No., Source Type, StatusSumIndexFields: Quantity, Quantity (Base)

Purpose

Scan entries are the core data records created during mobile warehouse operations. Each time a user completes a scan workflow (e.g., scanning an item, entering a quantity), a scan entry is created in Pending status. The ScanEntryMgt220FDW codeunit provides all CRUD and query operations for these records. Once the warehouse activity line is registered, the entry is marked as Transferred. The SumIndexFields on Key1 and Key3 enable efficient quantity aggregation without reading individual records.


ParsedBarcodeData220FDW

Table 73167872 -- Temporary table for holding parsed GS1 barcode data.

  • Namespace: Aptean.Mesh.SDUI
  • Caption: Parsed Barcode Data
  • Table Type: Temporary

Fields

No.NameTypeDescription
1AICode[30]GS1 Application Identifier (e.g., 01 for GTIN, 10 for Lot, 17 for Expiration Date).
11ValueText[100]The parsed value for the application identifier.

Keys

NameFieldsProperties
PKAIClustered

Purpose

This temporary table is populated by the FromJson method when the mobile client sends parsed GS1 barcode data. The mobile app parses GS1-128 or DataMatrix barcodes on-device and sends the extracted application identifier/value pairs as a JSON array. The FromJson method deserializes this array into temporary records that workflow step handlers can then query to extract item numbers, lot numbers, expiration dates, and other encoded data.


Mobile Workflow 220FDW

Table 73167880 -- Defines a guided scan workflow within an app bundle.

  • Namespace: Aptean.Mesh.SDUI
  • Caption: Mobile Workflow
  • Data Classification: CustomerContent

Fields

No.NameTypeDescription
1App Bundle IDGuidThe parent app bundle. References Mobile App Bundle 220FDW.ID.
2Workflow CodeCode[20]Unique identifier for the workflow within the bundle. Must not be blank.
11App Bundle CodeCode[20]FlowField -- code of the parent bundle.
12DescriptionText[100]Description of the workflow purpose.
13Resolver Codeunit IDIntegerThe codeunit that handles all step logic. Must implement IStepHandler220FDW.
14Resolver NameText[249]FlowField -- name of the resolver codeunit.

Keys

NameFieldsProperties
PKApp Bundle ID, Workflow CodeClustered

Purpose

A workflow is a sequence of steps that guide a mobile user through a warehouse operation (e.g., receiving, picking, put-away). Each workflow has a resolver codeunit that implements the IStepHandler220FDW interface and contains the business logic for validating input at each step, determining the next step, and finalizing the operation. Deleting a workflow cascades to delete all its steps.


Mobile Workflow Step 220FDW

Table 73167881 -- Defines a single step within a mobile workflow.

  • Namespace: Aptean.Mesh.SDUI
  • Caption: Mobile Workflow Step
  • Data Classification: CustomerContent

Fields

No.NameTypeDescription
1App Bundle IDGuidThe parent app bundle. References Mobile Workflow 220FDW.
2Workflow CodeCode[20]The parent workflow. References Mobile Workflow 220FDW."Workflow Code".
3SequenceIntegerExecution order within the workflow. Lower numbers execute first. Auto-assigned in increments of 10 if not specified.
11App Bundle CodeCode[20]FlowField -- code of the parent bundle.
12Step TypeEnum StepType220FDWThe type of data to capture (Bin, Item, LicensePlate, Quantity, etc.).
13Step Input TypeEnum StepInputType220FDWThe input control to display (Barcode, Numeric, DatePicker, Choice, etc.).
14InstructionText[50]The instruction text shown to the user on the mobile device.
15GS1 AICode[30]GS1 Application Identifiers for barcode parsing, separated by semicolons (e.g., 01;10).

Keys

NameFieldsProperties
PKApp Bundle ID, Workflow Code, SequenceClustered
StepTypeApp Bundle ID, Workflow Code, Step Type

Public Methods

SetWorkflowFilters

procedure SetWorkflowFilters(BundleId: Guid; WorkflowCode: Code[20])

Sets filters to retrieve all steps for a specific workflow. Call FindSet() or FindFirst() after this to iterate steps.

GetFirstSequence

procedure GetFirstSequence(): Integer

Returns the first (lowest) sequence number in the currently filtered workflow. Raises an error if no steps are configured.

FindByStepType

procedure FindByStepType(StepType: Enum StepType220FDW): Boolean

Finds the step matching the given step type within the current filters. Returns true if found, with the record positioned on that step.

Purpose

Workflow steps define the sequence of user interactions in a mobile workflow. Each step specifies what data to capture (Step Type), how to capture it (Step Input Type), and what instruction to show the user. The GS1 AI field enables automatic extraction of values from GS1 barcodes -- when a user scans a GS1 barcode at a step with GS1 AIs configured, the system automatically extracts the matching values and can auto-advance through subsequent steps.

Example: Receipt Workflow Steps

SequenceStep TypeInput TypeInstruction
10Init----
20ItemBarcodeScan item
30LotNumberBarcodeScan lot number
40ExpirationDateDatePickerEnter expiration date
50QuantityNumericEnter quantity
60Completed----

MobileLabelRequest220FDW

Table 73167882 -- Temporary table that carries all data for a single label print request to the active IMobileLabelProvider220FDW implementation.

  • Namespace: Aptean.Mesh.Services
  • Caption: Mobile Label Request
  • Table Type: Temporary
  • Data Classification: SystemMetadata

Fields

No.NameTypeDescription
1Entry No.IntegerUnique identifier for this label request entry.
2Document TypeIntegerSource document type (e.g., Database::"Purchase Line").
3Document No.Code[20]Source document number (e.g., purchase order number).
4Document Line No.IntegerLine number on the source document.
5Source TypeEnum SourceTypeCustomLabelFDWType of the source party: Vendor, Customer, or None.
6Source No.Code[20]Vendor or customer number from the source document.
7Item No.Code[20]Item number to be labelled.
8DescriptionText[100]Item description, captured from the warehouse receipt line before posting.
9Variant CodeCode[10]Item variant code.
10Location CodeCode[10]Warehouse location where the item is stored.
11Bin CodeCode[20]Bin within the warehouse location.
12Lot No.Code[50]Lot number. When populated, a lot tag label is printed instead of a receiving label.
13Expiration DateDateLot expiration date.
14Quantity (Base)DecimalTotal quantity for the item or lot in the base unit of measure.
15No. of LabelsIntegerNumber of label copies to print.

Keys

NameFieldsProperties
PKEntry No.Clustered

Purpose

This temporary table is the data contract passed to IMobileLabelProvider220FDW.PrintLabel(). It is populated by MobileLabelMgt220FDW -- either from a posted warehouse receipt line (PrintReceiptLabel) or from warehouse location/lot data (PrintBinLotLabel) -- then passed into a background StartSession() call. The background session constructs the management codeunit with this record as Rec and calls PrintLabel on the resolved provider.

Providers should be defensive: not all fields are guaranteed to be populated. For example, Lot No. is blank for plain receiving labels and populated for lot tag labels. Source No. and Source Type are populated only when the receipt line originates from a purchase or sales order.

See Label Printing Extensibility for the full provider implementation guide.