Articles by "Navision Developer"

Showing posts with label Navision Developer. Show all posts

How to Setup Business Central Development Environment?

Hope you have installed the Business Central via Docker. If not then recommended you to read Dynamics  365 Business Central Install using Docker post.

In this post I would like to share the following details related to Visual Studio Code setup to start the development for Business Central with AL coding.
Visual Studio Code is the open source coding editor from Microsoft. By the help of this software we can start coding for any language by the help of extensions.  This software will work on Operating systems like Windows, Linux and Mac OS. It support features like syntax highlighting, intelligent code completion, snippets, code refactoring and Git hub connection etc.
Visual Studio Code
Visual Studio Code

You can download the Visual studio code from Microsoft Visual Studio Code Free Download

Step 2 : Download Certificate and Install

After installing the Visual studio code and download the Certificate from the path specified on docker run command result like follows.
Certificate Path
Certificate Path
Copy the path specified on your docker run command and paste it on a browser to download the same. Check the same file on download folder with extension ".cer". 
Congrats now you are having self signed certificate to install

Install Certificate

Now we will see how to install this certificate using following following steps and Images

  • Step 1 : Locate the file and right click. Click on Install  Certificate option
  • Step 2 : Select Local Machine option and click on Next button
  • Step 3 : Choose Trusted Certificate and press Next to Import the same.
  • Step 4 : Well done Certificate Installation completed

Certificate Install step1 and 2
Certificate Install Step 1 and Step 2


Step 3 - Trusted Certificate Assign
Certificate Install Step 3 - Trusted Certificate Assign 

Step 3 : Install AL Extension

So the next steps is to install the AL Extension on Visual Studio Code interface. For doing the same follows below steps
  • Open Visual Studio Code
  • Click on Extensions or press (Ctrl + Shift + X)
  • After that search for "AL Language"
  • Press Install button to install the same
AL Extension Installation on Visual Studio Code
AL Extension Installation

Step 4 : Install VSIX Extension


VSIX Installations steps explained as follows
  • Download the VSIX file from docker run command result
vsix file path
vsix file path 

  • Open Visual Studio Code
  • Open command Palette (view -> Command Palatte or Ctrl + Shift + P)
  • Enter command as "Extension:Install from VSIX"
  • Select the VSIX file downloaded via first step of this activity
  • Press "Install"   to complete the same
Congrats you have now successfully complete VSIX file install. Lets continue with next step

Step 5 : launch.json Settings

Now you have to update the connection settings details on Visual studio code to connect both Business Central and Visual studio code together. For that please follow below steps

  • Copy the Docker run command result with "Dev. Server : " value
  • Open Visual Studio Code
  • Locate "launch.json" file 
  • Update the "Server" parameter settings
  • replace the existing path with new path and save
launch.json file setup to connect business central
launch.json file Setup
Congrats now to you have completed the launch.json file setup. Let us continue with last step in this series

Step 6 : Download Symbols


Download symbols steps required to download the object reference details to compile the objects you are going to develop.
Following are the steps to complete the same

  • Open Visual Studio Code
  • Open command Palette (view -> Command Palatte or Ctrl + Shift + P)
  • Enter "AL:Download Symbols" to download the symbols
  • When system asked for credentials , Enter the User ID = Admin and Password: (this is the password available on Docker run command result, please copy the same and paste it here"
  • After successfully verified the authorization system will download the symbols.
After successfully Download Symbols can able to confirm Alpackages
After successfully Downloaded Symbols can able to confirm Alpackages

After successfully Downloaded Symbols can able to confirm Alpackages mentioned on the above image.

Congrats now you are ready to start the extension development for Business Central. Cheers !!

How to Find which user is locking a table?

When you want to make a changes or post something and the following messeage come out:

"table is Locked by another user"

Orginal error message will came on Purchase Line table as follows


The operation could not complete because a record in the Purchase Line table was locked by another user. Please retry the activity.

This means that another user is also modifying data in the same table. Navision has locked the table for the user to modify so that no other users can modify the same data at the same time. Any other user who wants to modify the same data must wait until the user who locked the table to finish his/her changes first. Once the user has finish modifying the data, Navision will release the table lock for other users to use.

All the 2 tier architecture versions of Microsoft Dynamics NAV ( Business Solution 3.0 to 5.0 versions ) facing this error. 

Navision allow you to check which user is locking other users via following steps.

Find Locking User Details

  • 1) Go to File-->Database-->Information.
  • 2) Select the Sessions tab.
  • 3) Drill down to the current sessions.
  • 4) Check on the Blocking user id column to find out who is locking other people.
Dynamics NAV session with locking details
NAV Session

Please note locking user session will show at the time of Locking initialized only. So if you are checking the details after some time then you will not receive those details. Also note that you will get the visibility of locking session when you have sufficient permission set assigned on SQL server. That means administration permission required to find the user creating locking.

You overcome this issue by scheduling posting users different departments.

For example, Tell Purchase invoice team to post the transaction between 10 AM to 2 PM for one set of user. And other set of users to assign other time etc. Make sure 2 users will not post the same transaction at same moment.

You can also kill the session of other user to over comethis. For doing this select the user session and press delete button.  Then on popup message select yes to kill the user session.

Strongly recommended,  all to get over this by upgrade your ERP solution to latest versions.

If you are still having issue then do raise one comment over here. We are Happy to Help U.

I have seen several persons who have more than 10 years experiences not aware about the Microsoft Dynamics NAV ( Navison) Standard numbering system for the Objects. When we are following proper Numbering system for a project development then the next person who reviewing codes even after the years also can easily identify the codes as well as Objects. This helps for further developments against the older objects. Also all the codes and Tables look similarity for the Single company. 
All the Objects on  C/ SIDE  are grouped under following manner

Object number interval  and Description as follows
  • 1 - 9,999    :  Base application design area
  • 10,000 - 49,999  : Country/region design area
  • 50,000 - 99,999 : Customer design area
  • 100,000 - 999,999,999 : Microsoft Certified Partner design area
Following table shows the fields numbering formats 

Table number Field numbers Description
1 - 9,999 1 - 9,999 Base application design area
1 - 9,999 10,000 - 49,000  Country/region design area
1 - 9,999 50,0000 - 99,999 Customer design area
1 - 9,999 100,000 - 999,999,999 Microsoft Certified Partner design area
10,000 - 49,999 1 - 49,999 Country/region design area
10,000 - 49,999 50,000 - 99,999 Customer design area
10,000 - 49,999 100,000 - 999,999,999 Microsoft Certified Partner design area
50,000 - 99,999 1 - 999,999,999 Customer design area
100,000 - 99,999,999 1 - 9,999 Microsoft Certified Partner design area
100,000 - 99,999,999 10,000 - 49,999 Country/region design area
100,000 - 99,999,999 50,000 - 99,999 Customer design area
100,000 - 99,999,999 100,000 - 999,999,999 Microsoft Certified Partner design area

How to use Developer Toolkit?

For comparing a simple database object you have to follow the following steps
  1. Open the Developer Tool Kit
  2. Go to File - Import option to open the Import Version Card
  3. Fill details of the Import Version Card
  4. Import txt file – to import the Object txt file make sure you have select proper file path in the Import Tab of the Import Version Card
  5. Press Import button to import the Object text to the Developer’s tool kit.
  6. One pop up window will come. Once the process over it will display how much it taken and how many objects imported
Related Post:-

Installation Steps Of Developer Toolkit - Microsoft Dynamics NAV
After downloading or accrue the DVD of the developers toll kit you have to follow below mentioned steps

  1. Run the Developer Toolkit Setup
  2. Follow the Screen display instruction like Disclaimer accept etc
  3. Choose the installation location. Preferably you have to install the same under C:\Program Files\Microsoft Dynamics NAV \ Developer’s Toolkit
  4. Copy fin.flf – Navision License file and fin.stx file available under the Microsoft Dynamics NAV
  5. Start actual Installation and provides message finish.
  6. Create a blank Navision database, from File -> Database -> New place the same under our installed location C:\Program Files\Microsoft Dynamics NAV \ Developer’s Toolkit
  7. Import the DevTool.fob object to this newly created database
  8. Create one or more companies for the analysis
You can also refer the training manual pdf file available under the setup folder.

Now the installation is completed

Related Post:- 

What is Developer's Toolkit?
The Developer's Toolkit for Microsoft Dynamics NAV can be a very useful tool in helping developers work with their objects and object structure in the Microsoft Dynamics NAV database. The Developer’s Toolkit is designed to help you analyze, customize and update Microsoft Dynamics NAV applications. Regardless of whether you are working as a project manager, developer, supporter, trainer or sales person, having the ability to look behind the application is a vital part of being able to create and work with the optimal design.

Features
  • Analyze the Structure of a Database in detail to find the relationship between Objects, codes and properties etc.
  • Easy handling of Customized databases
  • Synchronize the Customized Object to Live Database
  • Object Merging
  • Version Management

Related Post:-



RoleTailored Architecture (RTC)
RoleTailored architecture components are new with Microsoft Dynamics NAV 2009. They work together to make the product more flexible, efficient, scalable, and secure, while also improving the user experience.

The Three Tiers of the RoleTailored Architecture
The RoleTailored architecture is a three-tiered architecture which contains the following levels:

  • Presentation level (RoleTailored client)

  • Business logic and communication level (Microsoft Dynamics NAV Server)

  • Data level (SQL Server database)

The different tiers can be installed on different computers. You can have multiple instances of any of the components (though usually not on the same computer): multiple clients, multiple servers, and multiple database servers.
Here's a simple installation with two SQL Server database computers, each associated with a single Microsoft Dynamics NAV Server computer, each of which in turn supports two Microsoft Dynamics NAV RoleTailored clients:




RoleTailored Architecture Components
The components that make up the RoleTailored architecture in Microsoft Dynamics NAV 2009 are:

  • RoleTailored Client

  • Microsoft Dynamics NAV Server

  • Database Components and SQL Server

RoleTailored Client

Microsoft Dynamics NAV 2009 provides an intuitive and customizable user interface called the RoleTailored client, which developers, partners, administrators, and super users can customize to support the job functions of different work roles in an organization.
For each role within an organization, the Microsoft Certified Partner or developer creates a customizable Role Center that displays key information required for relevant employees and makes their day-to-day tasks easier to complete. Users run the RoleTailored client to find the information and data entry points their jobs require.
For example, partners and developers can customize the sales order processor Role Center to display an interactive list of customers, daily activities, and sales information, and also give users easy access to their Microsoft Office Outlook e-mail, tasks, and calendar, all within the RoleTailored client.
The RoleTailored client is installed when you select either the Client Option or the Developer Environment Option in Microsoft Dynamics NAV Setup.

Microsoft Dynamics NAV Server
Microsoft Dynamics NAV Server is a .NET-based Windows Service application that works exclusively with SQL Server databases. It uses the Windows Communication Framework as the communication protocol for RoleTailored clients and for Web services. It can execute multiple client requests in parallel and serve other clients by providing Web service access to authenticated clients.
A key difference between the two-tier architecture with the Classic client and three-tier architecture with the RoleTailored client and Microsoft Dynamics NAV Server is that business logic runs on the server instead of the client in the three-tier architecture. A simple example is the FILE.CREATE function. In previous versions of Microsoft Dynamics NAV, files are created on the client when code is run. With the RoleTailored architecture, the files are created on the service itself.
Microsoft Dynamics NAV Server provides an additional layer of security between the clients and the database. It leverages the authentication features of the Windows Communications Framework to provide another layer of user authentication and uses impersonation to ensure that business logic is executed in a process that has been instantiated by the user who submitted the request. Authorization and logging of user requests is still performed on a per-user basis. This ensures that all Windows authentication and Microsoft Dynamics NAV roles and permissions that have been granted to the user are correct. It also ensures that business logic–level auditing is still performed.
Microsoft Dynamics NAV Server is installed when you select either the Server Installation Option or the Developer Environment Installation Option in Microsoft Dynamics NAV Setup.

Database Components
The Database Components installation option in Setup installs the software that configures the Microsoft SQL Server database to work with Microsoft Dynamics NAV 2009.
If SQL Server is not present on the computer where you install the database components, Setup installs SQL Server Express 2005, which is an appropriate database option for prototyping and testing, but will likely prove inadequate for all but the smallest production environments.
Database components are installed when you select the Database Components Installation Option in Microsoft Dynamics NAV Setup.

Let us take a simple report with customer and Cust. Ledger Entry as dataitems. Cust. Ledger Entry is linked to Customer using Customer No. Suppose there are only two records in the Ledger Entry table.



  • OnInitReport

  • OnPreReport

  • Dataitem--> Customer--> OnPreDataitem

  • Dataitem--> Customer--> onAfterGetRecord

  • Section--> Customer Header --> OnPreSection

  • Section-->Customer Header --> OnPostSection

  • Section-->Customer Body --> OnPreSection

  • Section-->Customer Body --> OnPostSection

  • Dataitem--> Cust.Ledger Entry --> OnPreDataitem

  • Dataitem-->Cust.Ledger Entry --> onAfterGetRecord

  • Section--> Cust.Ledger Entry header--> OnPreSection

  • Section--> Cust.Ledger Entry header--> OnPostSection

  • Section--> Cust.Ledger Entry body --> OnPreSection

  • Section--> Cust.Ledger Entry body --> OnPostSection

  • Dataitem --> Cust.Ledger Entry --> onAfterGetRecord

  • Section --> Cust.Ledger Entry body --> OnPreSection

  • Section --> Cust.Ledger Entry body --> OnPostSection

  • Dataitem--> Cust.Ledger Entry --> OnPostDataitem

  • Dataitem--> Customer --> OnPostDataitem

  • OnPostReport

What is Navision Application Server(NAS)?

Navision Application Server is a middle-tier server that runs as a service. It is designed to provide access from external clients to the Navision database. Navision Application Server can do this because it runs key components of the business logic of Microsoft Business Solutions–Navision, so it is able to initiate processes to produce refined results in the same way as if one were requesting information from a Navision client.




The key role of the application server is in the e-business solutions. For example, Navision Application Server provides connectivity between a Web client (such as Navision Commerce Portal) and Navision Database Server; between an external application (such as Microsoft Business Solutions–Axapta) or a Navision client and the database; and between third-party devices (such as Automatic Data Capture System) and Navision. The application server can also serve the Navision client itself, with automated posting and printing.

Introduction
The MenuSuite object contains the main menu content that is displayed in the Navigation Pane and in the Navigation Pane Designer. A menu suite is a set of menus. Each menu contains content for a specific departmental area, for example, Finance or Manufacturing.
Creating and Designing MenuSuite Objects
To create a new MenuSuite object or design an existing one, you click the MenuSuite button in the Object Designer, and then click New or Design.
Clicking New
This opens a dialog asking you to specify which design level you want to create an object for. If you have already created a MenuSuite object for all the levels you have permission to, a message appears informing you of this. Once you have made a selection, the Navigation Pane Designer opens. The MenuSuite object level that you are working on is shown in the header section of the Navigation Pane Designer.
Selecting a MenuSuite Object and then Clicking Design
This opens the Navigation Pane Designer with the chosen menu suite content displayed. The MenuSuite object level that you have selected is shown in the header section of the Navigation Pane Designer.
You also have the following options:
  • You can select the FILE→IMPORT/EXPORT and TOOLS→TRANSLATE→ IMPORT/EXPORT OPTIONS.
  • You can compile MenuSuite objects (F11 or TOOLS→COMPILE). It is the object references that are compiled. If the MenuSuite object contains a reference to a nonexistent form, report, batch job, dataport or codeunit, a compilation error occurs.

The रन button in the Object Designer is disabled when you click the MenuSuite button because a MenuSuite object cannot be run.

Implementing Mandatory Fields In Navision


Probably this is the feature most missing from Navision. As a record is instantly saved when it's primary key is populated, it's almost impossible to make fields mandatory. There are simply no perfect solutions for this problem. Some of the wrong ones I managed to come up with are discussed here.

Managerial control

Set important fields red. Create a report that shows records that have missing fields, f.e. :
(OnPreSection trigger)
Global variables:
ShowRecord - Boolean
ErrorText: Text - 1024
Global Text Constants:
Text001: "is missing."
Code:

If Description='' then begin
ShowRec:=TRUE
ErrorText+= FIELDCAPTION(Description) + ' ,';
end;

If "Unit Price"=0 then begin
ShowRec:=TRUE;
ErrorText+= FIELDCAPTION("Unit Price") + ' ';
end;
ErrorText+= Text001;

Then tell managers to massacre people with a two-handed battleaxe or with a chainsaw on steroids if this report ever shows any records :-)

Pros: only slight change to standard objects.
Cons: dangerous, because it still does not enforce filling in important data.

Implement a workflow
Set important fields red. Create a new Boolean field called Confirmed. Put all checking in the OnValidate of that field (TESTFIELD this, TESTFIELD that). Tell users to check this boolean field and don't give until they manage it.

For ALL related Orders and Journals, check whether the master data record is Confirmed with a TESTFIELD in the OnValidate trigger.

Typically:

Customers:

Sales Header, Sell-To Customer No., Bill-To Customer No.General Journal Line, Account No. and Bal. Account No. if Account Type / Bal. Account Type = Customer

Vendors:

Purchase Header, Buy-From Vendor No., Pay-To Vendor No.General Journal Line, Account No. and Bal. Account No. if Account Type / Bal. Account Type = Vendor

Items:
Sales Line, No. if Type=Item
Purchase Line, No. if Type=Item
Transfer Line, Item No.
Prod. Order Line, Item No.
Prod. Order Component Line, Item No.
Item Journal Line, Item No.
Warehouse Journal Line, Item No.
Warehouse Activity Line, Item No.

Pros: very effective, forbids basically all transactions with a master data record that is not filled perfectly.

Cons: a lot of modification, harder to upgrade.

Create a Wizard
You can also try creating a wizard, where the user enters data in variables and it gets programatically saved when the users pushes a button.

Pros: does not modify standard objects.
Cons: hell of a lot work to do.

Create another kind of wizard
Setup the master data in a way that the No. Series is TEMPCUST0001, TEMPCUST0002... Have the user press a button that performs all the checks and then changes the No. to some other, sane thing.

Pros: it's easy.
Cons: What if so dimwit happily enters an order for TEMPCUST001, without pressing that button?

Create yet another kind of wizard
Save the master data table to another number. The form too. Create a button that performs the validations and then transfers data to the real tables with a simple TRANSFERFIELDS.

Pros: very elegant and simple, and does not modify the standard objects.Cons: The client needs to buy a lot of tables - and what about subtables (Item Unit of Measure etc.) ?

Use the built-in wizards
Have Customers and Vendors created through Contacts and put all important fields in Customer Templates and Vendor Templates. Have all Items created through Non-Stock Items and add important fields to Nonstock Item Card, and put code to check them and transfer them to Items in Codeunit Nonstock Item Management, function NonStockAutoItem.

Pros: It's easy.
Cons: modifies standard objects. The client needs to buy granules that otherwise might be unnecessary.

Do it the simple way
Pat users on the shoulder and say in a jovial voice: "Don't worry, my friends, it's but a year or two and you will get accustomed to what fields you need to fill..." and THEN prepare to run in zig-zag when they draw a shotgun... :-)

UPDATE: Jacob's idea
Set the form to DelayedInsert. Add checkings to OnInsert.

My opinion: very good, but also add a Save button with an INSERT(TRUE); to avoid confusing users - it might be hard for them to understand why they need to navigate to the next record to insert this one.

Creates Line No. automatically for new new record

Navision can automatically assign Line No. to a new record if the Line No. is part of the primary key fields. This can be done by setting the AutoSplitKey property in the Form to Yes. By default the AutoSplitKey property is set to No.

Let's consider the following example. When I enter a new sales line record in Sales Order form, Navision will automatically assign Line No. = 10000 to the first Sales Line record. Now, if I enter the 2nd Sales Line record, Navision will automatically assign Line No. = 20000 to the new record. If I insert a new record between the 1st and 2nd record, Navision will automatically assign Line No. = 15000 to the new record.

All this can happen because Autosplitkey property in Form 46 - Sales Line is set to Yes. In order for AutoSplitKey feature to work, the last field in the primary key must be an integer, BigInteger, GUID or decimal field. If you look at the Sale Line table, the Primary key is 'Document Type,Document No.,Line No.', where Line No. is an integer field.

Diffrence Between Two Tier And Three Tier Architecture in Microsoft Dynamics NAV(Navision)



Two Tier ArchitectureThree Tier Architecture
1.2tier -> DB Server <-data-> Client1.3tier -> DB Server <-data-> Service tier <-results/inputs-> Client
2.all needed data from DB are sent to the client which process them2. client sends "only" some request for data, service tier read data from DB server, process them and only the requested result is sent to the client.
3. All raw data from DB must be transfered to the Client which will process them and display them.3. Processing and Presentation is separated and it means that data processing can run on some fast HW (server) and client is "just" displaying the results and collect user inputs (and make all needed actions which are needed to display the data etc.).

Mobile Sales includes a Microsoft SQL Server Integration Services (SSIS) package to extract a subset of data from the Microsoft Dynamics NAV database and load it to the mobile staging database. Mobile devices can then synchronize with the mobile staging database to retrieve the latest data. For more information about Microsoft SQL Server Integration Services in Microsoft Dynamics Mobile - Server Components, see Implementing SQL Server Integration Services (SSIS).

Before running the SSIS package, which is provided with Mobile Sales, you must complete the following procedures, as described in this topic:

  • Prepare to install the SSIS Package.
  • Install the SSIS Package.
  • Configure the SSIS Package.

To prepare to install the Microsoft SQL Server Integration Services Package

  • If the Microsoft Dynamics NAV database contains pictures that will be stored on the mobile staging database and replicated on mobile devices, you need to verify that picture files are not compressed in Microsoft Dynamics NAV. To verify or modify the compressed setting, complete the following steps:
  1. In Microsoft Dynamics NAV client, click Tools, and then click Object Designer.
  2. Click Tables, select the Item table, and then click Design.
  3. Select Picture and then click Properties from the toolbar (SHIFT+F4).
  4. Set the Compressed property to No.

  • Verify the following:
  1. The mobile staging database requirements are met. For more information, see Mobile Staging Database and SQL Server Integration Services Prerequisites.
  2. The mobile staging database is created. For more information, see How to: Create the Mobile Staging Database, Database Objects, and the Mobile Staging Publication for Mobile Sales and Configuring the Mobile Staging Database and SQL Server Replication.
  3. Microsoft Dynamics NAV database has been updated with the necessary tables. For more information, see Installing Microsoft Dynamics NAV Integration

For More Information visit:http://msdn.microsoft.com/en-us/library/cc563940.aspx

INCONSISTENCY Error in Navision Occur because of the following reason.

Posting invoices writes to the G/L entries and the total must ALWAYS be 0.
Somewhere an amount is written but it has no opposite to make the total 0.
This means that there is a problem with some customization of the code.

This is a trick I use whenever I do try to solve and see why you the db is getting CONSISTENT Error.
I create the following CU.

OBJECT Codeunit 50000 Single Instance CU
{
OBJECT-PROPERTIES
{
Date=10/11/07;
Time=[ 2:50:02 PM];
Modified=Yes;
Version List=MOD01;
}
PROPERTIES
{
SingleInstance=Yes;
OnRun=BEGIN
IF NOT StoreToTemp THEN BEGIN
StoreToTemp := TRUE;
END ELSE
FORM.RUNMODAL(0,TempGLEntry);
END;

}
CODE
{
VAR
TempGLEntry@1000000000 : TEMPORARY Record 17;
StoreToTemp@1000000001 : Boolean;

PROCEDURE InsertGL@1000000000(GLEntry@1000000000 : Record 17);
BEGIN
IF StoreToTemp THEN BEGIN
TempGLEntry := GLEntry;
IF NOT TempGLEntry.INSERT THEN BEGIN
TempGLEntry.DELETEALL;
TempGLEntry.INSERT;
END;
END;
END;

BEGIN
END.
}
}



And in CU 12 I add the following Code in function FinishCodeunit

FinishCodeunit()
WITH GenJnlLine DO BEGIN
IF GLEntryTmp.FIND('-') THEN BEGIN
REPEAT
GLEntry := GLEntryTmp;
IF GLSetup."Additional Reporting Currency" = '' THEN BEGIN
GLEntry."Additional-Currency Amount" := 0;
GLEntry."Add.-Currency Debit Amount" := 0;
GLEntry."Add.-Currency Credit Amount" := 0;
END;
GLEntry.INSERT;
//MOD01 Start
SingleCU.InsertGL(GLEntry);
//MOD01 End
IF NOT InsertFAAllocDim(GLEntry."Entry No.") THEN


Once you've made the changes. You run the SinleInstanceCU Once.
Then do what ever you do to get the consistency error.
Then Run the SingleInstanceCU again.
You'll see a list of GL lines. You will see why the transaction is not balanced.

Jubel Thomas

{picture#https://plus.google.com/u/0/photos/116645982191572612106/albums/profile/5718535508567382818} Having 9+ years of Dynamics NAV Experience with Modules like Finance, Sales, Manufacturing, Warehouse, Purchase, Human Resource etc. Also know LS retail, Dynamics AX, Business Intelligence. {facebook#https://www.facebook.com/Navision-Planet-347570178709579/} {twitter#https://twitter.com/NavisionPlanet}

Contact Form

Name

Email *

Message *

Powered by Blogger.