What are Dynamics NAV licensing requirements for Web Services? - web-services

This post refers to SOAP and OData Web Services in Dynamics NAV 2016 (or later) and hopefully it is not off-topic. I would like to know whether the following facts are true or false (or it depends).
Given Starter Pack functionality, and default Customer License with no extra Development Granules:
A Full User can publish any page (say, Customer or Employee) as a Web Service.
When consuming a published Web Service from another software service, a separate NAV user should be created and not be associated with a real person - and this is fine with respect to NAV's licensing (e.g. Perpetual Licensing with Concurrent Client Access Licenses).
A Full User can create a codeunit (in the allowed range of 10 codeunits for the Starter Pack) and publish the code unit as a Web Service.
Both a Full User and a Limited User can be used to authenticate against a Web Service.
In other words, I would like to know to which extent is a customer of Starter Pack (no extra Development Granules) able to integrate NAV with other software systems via SOAP / OData endpoints - without relying on the elevated development capabilities of a Certified Partner / Value Added Reseller.
Microsoft Dynamics NAV 2016 Product Overview and Capability Guide
Walkthrough: Registering and Using a Page Web Service (SOAP)
MS Dynamics NAV - development licensing basics

Upon cross-posting on dedicated Dynamics forums (Dynamics NAV Users and Dynamics Community), I reached the following conclusions:
True.
True, but must be aware of licensing issues related to multiplexing. Multiplexing is not allowed. More comments about Web Services and internal / external users are here.
Partially true. A Developer License is required to create new codeunits - a Customer License doesn't suffice. Existing codeunits can be published as Web Service though.
True.

Related

Calling an external API from Microsoft Dynamics Nav

I am researching how to integrate Microsoft Dynamics NAV with my existing REST API (built on Django REST Framework). What I would like to do is trigger API calls from NAV to CRUD objects via the REST API.
Reading the web services docs for NAV, it seems clear that NAV can expose a web service for other software to consume from. But can NAV consume 3rd party APIs? In the web services examples documentation, it says:
Solutions that need to execute business logic or read data from
Microsoft Dynamics NAV are candidates for Web service implementation.
These can also be solutions that write data to Microsoft Dynamics NAV
and validate the data using existing business logic.
Also, it gives the following example of how to use web services:
Execute any kind of business logic that is more easily developed and
managed in Microsoft Dynamics NAV.
However, I don't see any examples of data writing. It doesn't seem that in the exposure of web service pages or codeunits, there's a way to make calls to 3rd party APIs and execute business logic with the data that comes back within NAV. Is this actually possible?
Unfortunately not, no.
You do however have access to the full .NET framework from within the 'Development Client' of Dynamics NAV - When defining your variables select the Type of DotNet
It's far from perfect, so for larger tasks I'll create AddIns or completely external libraries (depending on version).
For something smaller like this I personally find it easiest to write it in C# as a small (console) app and the 'translate' it back into Dynamics NAV.
If you are looking for way to invoke a web service then why do you need Nav web services? Nav web services is a way to call Nav.
These can also be solutions that write data to Microsoft Dynamics NAV and validate the data using existing business logic.
This means if you invoke published Nav web service then you can pass data to your call and the data will be validated and saved to Nav. So this is about how to push data to Nav, not pull from external system.
If you want to invoke a web service from Nav consider this options:
Write external wraper library (as mentioned by #SeeSharp or as described). Then use it in C/AL as DotNet or Automation types of variables.
Use existing libraries like 'Microsoft XML, v6.0'.XMLHTTP60 right in C/AL to make http calls to your web service.
Do it Navision style.
Last damn option is to write console application that will consume your web service and call it from Nav using shell. This is not an option, I know.

Dynamics Nav 2013 Web Client Page in Other Website

I have found interesting Dynamics Nav Web Client functionality thanks to which we can create Dynamics Nav Page as part of other website. It's cool thing, but how it's look with user license?
Is it possible to create website which has Dynamics Nav Web Client Page where everyone can do something(including people without Navision license)?
It's not possible - at least not in a way you access a public website, where the number of connections is limited only by the server's resources. Actually, connecting to a Nav server via a web client is not much different than using a Windows client or Sharepoint client from the licensing point of view. In any case, the client doesn't hold the license. License file is uploaded on the server, and the server side is responsible for keeping an eye on license restrictions.
Since Nav uses concurrent licensing model, any user who can authenticate, is able to connect to the server as long as the number of concurrent sessions does not exceed the licensed limit, no matter which client they connect with.
You can read more about Nav licensing on MSDN or download a Licensing Guide

Limitations of web service in Moodle

I'm going to integrate a Moodle-based application into my website wherein all data/activities being posted in this Moodle-based application can be retrieved by my website and vice versa.
So, is the Moodle web service enough to access all the data in that Moodle application?
Yes, you should be able to use web services. No, not all data is accessible out-of-the-box.
Things you can do with the webservices:
Retrieve a list of users, courses, assignments
Upload files
Create notes
Send messages
Enrol to courses, groups, cohorts
Check grades
On your Moodle site turn on web services and go to /admin/webservice/documentation.php to get a full list of existing functions you can call.
You can see some examples of this implemented in the Moodle Mobile App:
User: http://docs.moodle.org/26/en/Mobile_app
Dev: http://docs.moodle.org/dev/Moodle_Mobile
If these satisfy your requirements then yes web services should be sufficient as they are.
If they do not then you can extend the web services as a local plugin to provide richer functionality, which would be limited by your development capacity rather than the system itself. To port all of the features of some modules to web services would be a significant undertaking, but there are some low-hanging fruit to get activity lists, forum discussions/posts, choice polls, etc.
Web services is a better approach than exposing the database to an external system as it allows you to utilise the core APIs to improve integrity.

Creating a custom web service for Dynamic Navision

I am new to Dynamic Navision .On just going through the Dynamic Navision Solution I could find certain in-built Web Services.
Can those Web Services be customizable .
If so how can I make it possible.
Can I create a new Service with new Object Id .
I have searched for resources,but couldn't find any .It would be really helpful if someone suggest me with a good resource.
I think, more specifically you're looking for:
http://msdn.microsoft.com/en-us/library/dd339004.aspx
Creating a codeunit from within Microsoft Dynamics NAV.
Exposing the Web service.
Verifying the Web services availability.
Consuming the Web service from a console application that is created
in Visual Studio
Just make sure you have
Microsoft Dynamics NAV 2009 with a developer license.
You might like to give: http://msdn.microsoft.com/en-us/library/dd355036.aspx a read.

e-commerce webapp integration via Web Services with MS Dynamics (Navision 2009)

Has anyone tried to build an e-commerce site atop MS Dynamics, using the new Web Services introduced in Nav 2009 ? I'd like to know what kind of load these web services can take, and what kind of resources can be read/written, and any other challenges that I can expect.
I intend to integrate an existing linux-based webapp via Web Services ...
Thanks.
Web services in NAV 2009 can call either CodeUnit or Page objects. Pages allow you to create, read, update and delete rows from their source table. CodeUnits offer greater flexibility, allowing you to invoke any action you can implement in C/AL. I think CodeUnit trigger arguements are limited to primitive types and Records.
NAV web services use Windows Authentication, so your linux app will have to be able to present Windows credentials accordingly. I'm not an expert in this area, so I'm not sure how difficult this is from a Linux machine.
With regard to the supported load, I would ask in the forum at mibuso - this is the largest community of experienced users I am aware of. I expect you will be limited by the CPU and memory of the web service host. NAV does not support clustering\load balancing on the web service tier, but I beleive it is possible to run several side by side.