I was quite surprised to learn that the IMPORTOBJECTS/EXPORTOBJECTS C/AL commands, which were introduced into the language only recently, have now been removed from NAV 2013. Apparently, they have not been and will not be implemented in the NAV 2013 service tier executable, just like they have been absent (without any valid reasons, in my view) from the Navision Application Server (NAS) executable in previous releases.

Another surprise of a similar nature was the discontinuation of the XML object format. Admittedly, being tailored primarily to the transformation of forms and reports, the format left something to be desired in terms of support (forms and reports only) and structure. An example of the latter that instantly springs to mind is the fact that variable declarations were part of the C/AL code lines, instead of separate XML elements.

But still, the ability to import/export objects in XML format, directly from C/AL code, introduced a lot of potential for automated tools, especially for generating new objects, analyzing/manipulating existing objects, and integration to source code control systems without having to revert to things like the Running Object Table. For obvious reasons, parsing objects exported as XML using e.g. MSXML was a lot less fragile than doing the same with objects exported as text, for which no standardized parser API is available.

In my humble opinion, such possibilities were exactly what had been missing from the C/SIDE ecosystem for a very long time, making NAV development a more manual, error-prone task than it needed to be. I assumed the introduction of such possibilities as IMPORTOBJECTS/EXPORTOBJECTS was part of the same developer/tester productivity improving strategy that had led to e.g. the automated unit testing feature and, somehow, I personally expected more examples of similar techniques in the new version, instead of fewer…

5 Responses to “IMPORTOBJECTS/EXPORTOBJECTS and the XML Object Format”

  1. Natalie Says:

    Here the explanation according to a MS statement on MS connect (https://connect.microsoft.com/site439/feedback/details/747347/exportobjects-and-importobjects-not-supported):

    “As you can no longer run any code from C/SIDE, the Import/Export objects funcitons are now obsolete.

    Check the help file out to see the new functionality.”


    “Open the “devitpro.chm” and search for “finsql”. there is a long list of new parameters to support export and import of objects.”

  2. jhoek Says:

    Thanks, Natalie.

    I was aware of the information about new functionality in the on-line help (I’m assuming here that they are referring to the command line interface), but I don’t consider it a replacement for the old functionality, do you? To me, it sounds a bit like saying PAGE.RUN is superfluous, because you can also open pages through a hyperlink?!… :-S

  3. Luc van Vugt Says:

    As you can see I did post this MS connect entry(https://connect.microsoft.com/site439/feedback/details/747347/exportobjects-and-importobjects-not-supported).
    I also had some more interaction with MS:
    Import & Export functions were hard coded in C/SIDE (so not available on NAV Server from the start), that’s why we can access them from command line for C/SIDE.

    I still feel “sad” about this, and now Jan does, but so far not many did vote on the connect entry to show MS that we do need it.

  4. jhoek Says:

    I will vote as soon as I have access! :)

    Also, I assume the C/SIDE Development Environment will be replaced by something inside the RTC at some point in the future - I wonder how we are expected to programmatically import/export objects from then on?

  5. jhoek Says:

    We could, of course, as a community, define our own XML schema for each object type. Files created according to such schemas could then be fed through an XML Transformation Stylesheet (XSL), before being imported into NAV.

    This may seem unnecessarily laborious, but the ability to define and manipulate objects in XML format opens up a world of possibilities!

Leave a Reply

To prove you're a person (not a spam script), type the security text shown in the picture. Click here to regenerate some new text.
Click to hear an audio file of the anti-spam word