Skip to content

Developing in a Local Docker Container

This page describes the steps required to connect an Android device to a local Docker container for development and testing.

You will need:

  • A Docker host machine

  • An Android device running the Warehouse app – installed either from the Google Play store or from a .apk file

  • The host and the Android device must be connected to the same network – usually a wireless network

  • The navcontainerhelper PowerShell module

  • This can be acquired from the PowerShell Gallery by running Install-Module navcontainerhelper in an elevated PowerShell prompt

Create the Container

Use the New-NavContainer function to create a new Business Central container. Use the additionalParameters parameter with a value of -P. This tells Docker to expose the ports that are used by the container to random ports on the Docker host e.g.

New-NavContainer test -accept_eula -imageName mcr.microsoft.com/businesscentral/sandbox -additionalParameters ‘-P’

(you will need to provide more parameters than these to create a new container, see https://freddysblog.com/category/navcontainerhelper/ for more information)

Install Apps

You will need Clever Config, Clever Handheld Framework and Clever Handheld for Warehousing apps installed into the container to connect the Android device.

Setup

IP Address

Run ipconfig in a command prompt and make a note of the IP Address that the host machine has been given. The host may have multiple IP Addresses be sure to note the address from the network that the Android device is connected to. For example:

Ethernet adapter vEthernet (Marvell AVASTAR Wireless-AC Network Controller Virtual Switch):

Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::4dd:ac87:5936:217d%5
IPv4 Address. . . . . . . . . . . : 10.231.59.183
Subnet Mask . . . . . . . . . . . : 255.255.248.0
Default Gateway . . . . . . . . . : 10.231.56.254

Web Service Port

Business Central hosts web services on port 7047 inside the container. Using the -P parameter (see above) causes Docker to map that port to a random port on the host. Run docker ps to see which port 7047 has been mapped to e.g.

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS

NAMES

69994422af0d mcr.microsoft.com/businesscentral/sandbox:latest-ltsc2019 "powershell -Command…" 5 hours ago Up 5 hours (healthy) 0.0.0.0:62696->80/tcp, 0.0.0.0:62695->443/tcp, 0.0.0.0:62694->1433/tcp, 0.0.0.0:62693->7045/tcp, 0.0.0.0:62692->7046/tcp, 0.0.0.0:62691->7047/tcp, 0.0.0.0:62690->7048/tcp, 0.0.0.0:62689->7049/tcp, 0.0.0.0:62688->8080/tcp bc

Indicates that port 7047 inside the container has been mapped to port 62691 on the host.

Handheld Whse. Setup

Once the apps are installed navigate to the Handheld Whse. Setup page. Apply the default configuration from the action bar. Expand the bottom Registration Setting tab and populate the fields with the following details:

  • Web Service URL: browse to the Web Services page and find the entry for Codeunit 9059253 (Web Service CHHFTMN). Copy the SOAP URL value and paste into the Web Service URL field in Handheld Whse. Setup e.g. http://bc:7047/NAV/WS/My%20Company/Codeunit/HandheldFramework

  • Replace the host name (bc in this example) with the IP address noted above

  • Replace port 7047 with the host port noted above

  • In this example the URL should read http://10.231.59.183:62691/NAV/WS/My%20Company/Codeunit/HandheldFramework

  • Domain, User, Password – the credentials that should be used to authenticate with the web service

  • This is user that all Handheld activity will be posted in Business Central as

  • This user will require sufficient permissions in Business Central to post the different types of transaction

  • It is good practice to generate a Web Service Access Key on the User Card and copy this into the password field as this can be expired and regenerated separately to the user’s password

Token

After populating these fields with the correct values you are ready to connect the Warehouse app. Click on the Connect Device App. action on the Handheld Whse. Setup page.

Follow the instructions on the page that pops up to scan the token in the Warehouse app. The settings entered above will be downloaded to the app and used to connect to the web service.

Note: the token will expire after 30 minutes. Further tokens can be generated in the same way if required.