slide1 n.
Skip this Video
Loading SlideShow in 5 Seconds..
Mobile Affairs PowerPoint Presentation
Download Presentation
Mobile Affairs

Loading in 2 Seconds...

play fullscreen
1 / 30

Mobile Affairs - PowerPoint PPT Presentation

  • Uploaded on

Mobile Affairs. Doing business anywhere!. Agenda. Solution Architecture Solution Components Actors Developer Story NAVmobile SDK (mobile development) Dynamics NAV Development. Solution architecture. Other sources. Mobile Sync Services. Solution Components. Mobile Application

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

Mobile Affairs

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

Mobile Affairs

Doing business anywhere!

  • Solution Architecture
  • Solution Components
  • Actors
  • Developer Story
  • NAVmobile SDK (mobile development)
  • Dynamics NAV Development
solution architecture
Solution architecture

Other sources

Mobile Sync Services

solution components
Solution Components
  • Mobile Application
    • Mobile Core
    • Mobile Modules
  • Synchronization Server (a.k.a. NAVmobile Services)
  • NAVmobile Addon for Microsoft Dynamics NAV
  • Mobile Developer
    • Uses the NAVmobile SDK and Visual Studio 2008
  • Dynamics NAV (C/AL) Developer
    • Uses the Dynamics NAV Development Environment and NAVmobile objects
  • Mobile user
    • Uses the NAVmobile Mobile Application (and mobile device)
  • System Administrator
    • Uses the NAVmobile Services Web Admin Console
    • Uses Dynamics NAV Client
  • System Vendor ( Partner )
    • Uses the NAVmobile Services Web Admin Console
    • Uses Dynamics NAV Client
developer story
Developer story

The mobile developers can:

  • develop mobile modules using NAVmobile SDK/.NET CF
  • upload new module versions in test status
  • upload new module versions in production status
  • configure devices and roles in test or production status
developer story1
Developer story

The NAV developers can:

  • modify the NAV synchronization process using C/AL
    • Define new types of inbound and outbound data
    • Create/modify business logic for inbound data
    • Create/modify business logic for outbound data
    • Partition outbound data by device, device roles and others
    • Introduce new forms/tables/fields
administrator story
Administrator story

The administrators can perform the following (remote):

  • Upload new module versions on the server per device role
  • Install new NAVmobile mobile modules
  • Configure the mobile modules per device or role
  • Provision devices through OMA Client Provisioning
  • Deploy new files on the device
  • Install third party apps on the device
  • Sending a text message to the device*
  • Monitor and analyze the system behavior
  • Review device information ( device logs, server logs)
  • Assign device roles, block devices
navmobile sdk overview
NAVmobile SDK - overview

MODULE: set of business objects, views (User Interface), business logic components and tasks






Remote Storage (SQL)

Live Data Link

NAVmobile Services

BackEnd Agent




Mobile Device


Mobile Database

Data Access

Data Synchronization




User Module

Configuration Storage

Config API

User Experience

User Workflow

Microsoft .NET Compact Framework

sdk overview
SDK Overview

A set of .NET CF classes providing the following services:

  • User Experience
  • Data Access ( off-line and on-line support)
  • Automatic bi-directional data synchronization
  • Configuration
  • Logging
  • Template based printing
  • Barcode scanner support
  • Automatic module version update
  • Device Provisioning
user experience
User Experience

Task : mini workflow containing steps (User Controls) and routes (user interactions/events). User interactions causes the system to navigate to the another step by following specific route.

user experience1
User Experience

Any .NET CF UI Library can be used

Step title

Click event

can be


to route NEXT

Step options

Mapped to NEXT route

Mapped to PRIOR route

user experience2
User Experience
  • User Interface based on ‘tasks’.
  • Each task is a mini workflow containing steps and routes
  • Task workflow is defined in a special XML file (IT.WF.xml)
  • Each step defined in the workflow corresponds to .NET CF User Control inherited from a special ‘ViewBase’ class
  • The ‘ViewBase’ class has a well defined life cycle to allow the framework to balance between performance and memory load
  • Third party CF.NET User interface libraries are welcome
  • Developer can navigate between steps by using ‘routes’UIProcessManager.Navigate(‘scan’);
navmobile sdk data access
NAVmobile SDK – Data Access
  • The mobile application provides the following data access options
    • Local (on-device ) data access through ORM style API
    • Local (on-device ) data access through ADO.NET and SQL
    • Remote data access through ORM style API (Live Data Link )
    • Any other .NET CF supported data access options can be used

Mobile Storage

User Code

Remote Storage

Sync Server

(Live Data Link)

navmobile sdk local data access
NAVmobile SDK – Local Data Access
  • The mobile app provides mobile ‘SQL’ storage
  • Developer defines a business object by inherit from ‘BusinessObjectBase’ class.
  • Developer describe the business object in a special xml file ( IT.BO.xml) including unique version number.
  • The system automatically provision the mobile db based on the business object descriptions(database schema update )
  • Data is automatically synchronized with NAV based on the business object descriptions and NAV table mappings

IList<Customer> cust= BusinessObjectBase.Find<Customer>('[CreditLimit]>100');

data syncrhonization
Data Syncrhonization

Sync Log

Sync Packet


Device Roles

Sync Packet



Sync Packet



Mobile Modules

Sync Packet

Sync Packet



Sync Packet


Sync Packet

NAVmobile Services




data syncrhonization1
Data Syncrhonization


Device Roles

Sync Log

Sync Packet


Sync Packet


Sync Packet



Sync Packet

Sync Packet

Sync Packet

Sync Packet

Dynamics NAV

data syncrhonization2
Data Syncrhonization
  • The Data Synchronization feature allows the device to automatically extract data from NAV and store it locally for use through the local data access APIs. The device also sends data to NAV.
  • The NAVmobile Services implement store-and-forward pattern around the NAVmobile Services SyncLog:
    • SyncLog stores SyncPacket based messages from devices and NAV
    • Extracts data from NAV and store it in the SyncLog (message queue)
    • Extracts data from the devices during the sync sessions and store it in the SyncLog
    • Send stored data to devices and NAV, based on ‘rules’ (a.k.a. Sync Policy)
  • The user can launch manually the Sync process
  • NAVmobile Device Agent can launch the Sync process
remote data access
Remote Data Access
  • NAVmobile Services exposes HTTP/SOAP service called Live Data Link to allow devices to query MS SQL Server Databases
  • NAVmobile SDK provides ORM style API for easier Live Data Link access.
  • Developer defines a business object by inherit from ‘BusinessObjectBase’ class.
  • Developer describe the business object in a special xml file including unique version number
  • Developer/admin uploads the latest module on the server

IList<Customer> cust= LiveDataLinkService.Find<Customer>('[CreditLimit]>100');

remote data access1
Remote Data Access
  • Devices can send any business object to the NAV SyncLog for processing by NAS

//fetch business object from NAV database by primary keyPutAwayHeader pa = LiveDataLinkService.FetchEntity<PutAway>(‘233’);

//modify the PuAwaybusines object instance in memory…//create XML SyncPacket from the business objectStringBuilderpacket = new StringBuilder();SyncTableDAO.BeginSyncPacket(context, packet); SyncTableDAO.EmbedEntityToSyncPacket(context, packet, pa);SyncTableDAO.EndSyncPacket(context, packet);//sending the SyncPacket for NAS processingLiveDataLinkServices.PostToSyncLog(packet);

configuration api
Configuration API
  • Mobile modules behavior can be adjusted through settings:



  • The settings and the corresponding behavior is designed by the developer
  • The settings can be defined by the admin from the server console per device or device role
  • The developer can also store settings locally on device


logging api
Logging API
  • Mobile modules behavior can log events on the device:

LogManager.Instance.LogInfo(“data fetch completed"); // log information in the log fileLogManager.Instance.LogError(“error occured"); //log error in the log file

LogManager.Instance.LogDebug(“debug messages are not included in Release mode");

LogManager.Instance.StartCounter(“My high-precisions timer");//start a high-precision timer

LogManager.Instance.StopCounter();//emit the time between Start and Stop in miliseconds

LogManager.Instance.LogMemory(“Launching my special routine"); // emit the text and current memory load

  • The events are stored in text files on the device
  • The log files are sent to NAVmobile Services on each sync session
  • The log files can be sent to NAVmobile Services in background from the NAVmobile Device Agent
  • The log files can be reviewed from the NAVmobile Services Admin Console
printing api
Printing API
  • Developer can use the NAVmobile Template Language to create document templates (invoices ,receipts, reports ,etc.)
  • Different templates can be sent to devices depending on their role
  • Templates can :
    • Consume local and remote data
    • Calculate formulas
    • Format output (fonts, alignments, data formatting, padding , etc)
    • Pass special commands to printers (EPSON, IBM or other emulation)
  • Developers can implement special interface ‘INAVmobilePrinter‘ to implement more complicated printer protocolsASCIIPrinterHelper.PrintCustom("mytemplate.tmpl",null);
barcode scanner api
Barcode scanner API
  • NAVmobile provide out-of-the box support for Motorola Devices equipped with barcode scanners
  • Developer can implement ‘IBarcodeScanner’ interface to implement utilize specific barcode scanner interface
  • The new implementation is setup from the server console through a special setting called ‘barcodescanner’ which specifies the actual class name

//developers can switch on the scanner by calling:BarcodeScannerManager.BarcodeScanner.Start(ScanHandler)//implement barodescan handling methodprotected voidScanHandler(objectsender,BarcodeScnnerEvent e)


if (e.Data==“12345678”)MessageBox.Show(“Scanned!”);

if (e.Barcodes[0].Name==“PickBarcode” && e.Barcodes[0].Segments[“quantity”].ToFloat()>0)


e.Barcodes[0].Segments[“quantity”].ToFloat() );


//and turn it off by calling:


module version update
Module Version Update
  • NAVmobile provide out-of-the box automatic update for mobile modules
  • The update is performed (if needed) on each synchronization session started from the mobile user
  • Update can be performed in background from the NAVmobile Device Agent
  • The developer only needs to maintain the version number of the module
  • Modules can be updated/deployed on the devices depending on their roles
notification services
Notification Services
  • NAVmobile Services expose a special set of operations part of the Live Data Link engine known as Notification Services
    • The NAVmobile Services maintains a notification message queue
    • Devices can receive notifications through a message push based approach via HTTP/HTTPS
    • Notifications can alert the device for available updates, data changes, new module versions and others
    • Developers can define and use their custom notifications
    • NAV C/AL can prepare SyncPackets containing notification messages to devices
    • Device Agent uses Notification Services in order to receive interesting events.

string payload = LiveDataLinkService.ReceiveNotifications();XmlDocument doc = newXmlDocument();doc.LoadXml(payload);XmlNodeListnodes = doc.SelectNodes("notifications/notification");foreach (XmlNode node in nodes){


device agent
Device Agent
  • NAVmobile Device Agent operates in background on the device to provide:
    • Downloading and installing of new module versions
    • Fetching of new configuration settings from NAVmobile Services
    • Receiving and displaying of user messages on the device screen
    • Background data sending (when the data was not sent due to limited connectivity)

NOTE:The Device Agent is notified for interesting events (new data, new module versions, etc.) via the NAVmobile Device Notification Services in order to perform alert push alike feature for the devices.

nav side
NAV Side
  • NAVmobileAddon
    • NAV Tables to Mobile Business Objects Mapping
    • Handlers (C/AL) for bi-directional synchronization based on XML messages – a.k.a. SyncPackets hosted in NAS
    • Filtering of the extracted data per device and/or device role
    • Queue based transactional mechanism for SyncPacket processing
    • Support for multiple companies and databases
thank you for your time

Thank you for your time