Skip to main content

D365 FO Connector 6.15 Release Notes - News / D365 FO Connector / D365 FO Connector Release Notes - Formpipe Software Helpdesk

Aug 6 2021

D365 FO Connector 6.15 Release Notes

Authors list

LAC365FO Release Version 6.15.0

Release date: 6th August 2021

This document describes the enhancements in LAC365FO version 6.15.0

Lasernet version 6.15.0 contains all the models including the model for the integration with D365CE and the models for Lasernet print buttons.


The newly introduced package LACMSHotfixes contains hotfixes for the standard D365FO.

It is possible to install/deploy this package separately and the package will get updated once new hotfixes are introduced for the standard D365FO.

Both the package and the release notes for LACMSHotfixes are accessible as separate downloads.


LAC365FO version 6.15.0 contains the following models/packages:


ComponentPackage
Lasernet

Core and main engine for LAC365FO

Lasernet81SpecAdditional requirements in relation to 8.1 and newer versions of standard D365FO
PRNButtons

Lasernet print buttons

PRNButtonsLACAdaptor

Adaptor between the Lasernet print buttons and Lasernet

LACMSHotfixesHotfixes for standard D365FO
LACCEProvide the integration to CE from LAC365FO  
Lasernet Test SuiteTest and Performance Suite


New model LasernetPU35Spec

The new model LasernetPU35Spec is added for supporting the Wave labels in standard D365FO.

The model LasernetPU35Spec is only added to the PU34+ package and it’s possible to download and install a separate package containing this model.

LAC365FO version 6.15.0 is only supported from Lasernet version 9 and a setup for Lasernet version 9 is required for any new installation and when upgrading from Lasernet 8.

The version number should contain version 6.15.0 such as the following after either installing or deploying the AOT package:

Lasernet > Setup > Parameters


 

Add the AOT-package 

  • Either through LCS - Apply a deployable package to an environment  

https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/deployment/apply-deployable-package-system  

  • Or by installing a deployable package – Requires RDP access to environment  

https://docs.microsoft.com/en-us/dynamics365/unified-operations/dev-itpro/deployment/install-deployable-package 

 

Major enhancements 

Lasernet 10 

LAC365FO version 6.15 does not contain any major adjustments and focus is still on stability and compatibility and a new Default Configuration for Lasernet 10 is released at the same time as LAC365FO version 6.15. 

The new Default Configuration also works with the previous versions of LAC365FO version 6.x and LAC365FO version 6.15 isn’t required for supporting Lasernet 10 as all adjustments are managed within the Lasernet configuration. 

The new Default Configuration support loading of the following information from Lasernet 10:

(same information as was supported with Lasernet 9) 

  • Lookup of connections in LAC365FO 

  • Get printers into LAC365FO version 6.x 

  • Get printer profiles into LAC365FO version 6.x 

  • Get ‘Customers ports’ into LAC365FO version 6.x 

  • Get overlays into LAC365FO version 6.x 

  • Preview of overlays in LAC365FO version 6.x 

 

It’s currently not possible to get the printer profiles created through the new Lasernet Print Service which was introduced with Lasernet 10.  But still possible to get Printer profiles created for the module Printer Output (OnPrem) in Lasernet 10, similar to  Lasernet 9. 

 It is possible to load the Printer profiles created for the module Printer Output

 

 

The required adjustments to the Lasernet configuration to support Lasernet 10 are described at the end of this document (before the list of the Bug fixes and enhancements) 

 

Bug fixes and enhancements 

227499@LAC365FO – Print Button on Lasernet Preview Screen does not result in printing 

Printing through Lasernet within the preview didn’t work as expected. 

This is fixed in LAC365FO version 6.15.0 in which Print through the preview is now working as expected. 

 

 

 

223936@LAC365FO – Range is being applied to nextLink URL, which already contains range. 

 The following error was thrown when running an OData report which contains a range added within the Query Wizard. 

This is fixed in LAC365FO version 6.15.0. 

 

Error: 

Bad Request quotes(edd71bf8-3d17-ea11-a811-000d3a65412a)/quote_details?$filter=producttypecode%20eq%201?$filter=producttypecode eq 1 Error code: 0x0 Message: Syntax error at position 21 in 'producttypecode eq 1?$filter=producttypecode eq 1'. 


227317@LAC365FO – Table LACReportReplacementMapping is in Table group Miscellaneous 

It was not possible in previous versions of LAC365FO to use the following tables in the cross-company data sharing in standard D365FO.  The tables had Miscellaneous as a table group which caused the issue in relation to the cross-company data sharing:

  • LACReportReplacementMapping 

  • LACCultureInfo 

  • LACExpressionFunction 

  • LACMenuTable 

  • LACReportGroupReport 

  • LACWHSLicensePlateLabelRef 

  • LACWHSLicensePlateLabelSetup 

 

The following warning was displayed when trying to use one of the tables for the cross-company data sharing:

 

Warning:

'Table LACReportReplacementMapping is a Miscellaneous table as specified by the table group and may not be shared unless its Data Sharing Type is Duplicate. '

 The table group for the listed tabled are changed from Miscellaneous into Group in LAC365FO version 6.15.0. 

 

228645@LAC365FO – Data missing in XML 

Re-using the same table multiple times within a Query would cause an empty output when disabling the first use of the table. The issue is caused as standard D365FO (kernel) tries to optimize the Query and would skip all instances of a table once it has been disabled. 

 A workaround was removing the disabled data sources. This would avoid the kernel optimizing the Query and avoid executing the disabled data sources. This is fixed in LAC365FO version 6.15 by not applying the disabled data sources (tables) when building the Query at runtime. 

The following would cause missing records from the data sources PurchAgreementHeader_Enable, AgreementHeader_Enabled and VendTable_Enabled:

 

 

228681@LAC365FO – Form link condition does not work on replacement reports, but work on query reports 

In previous versions of LAC365FO,  it was not possible to use Form as an entry within the condition (expression). 

LAC365FO version 6.15 does support the use of Form as an entry for the expression. 

 

 

 

 

Expression:Forms.CustInvoiceJournal.CustInvoiceJour.RefNum:NAME<>Salesorder 

 

224895@LAC365FO – Check loading of printer-profiles 

Loading printer profiles from Lasernet would add the same printer profiles to all the printers and not only the printers in Lasernet containing the profiles. 

This was only an issue when loading from the Form Printer profiles and everything did work as expected when loading from the forms Lasernet server or Lasernet printers.  

229365@LAC365FO – Feature Request: Translation of Lasernet Print Destinations 

The Lasernet-destinations were not properly translated for some of the languages within the printer-dialog, such as Spanish (es). 


Translation is added for the following languages within the Printer-dialog:

  • Es 

  • Nl 

  • de-CH 

  • fr-CH 

  • fr 

  • de 

Client Language es within the printer-dialog:

 

230415@LAC365FO – Lasernet Query is rounding values in XML when selecting more than one documents to print 

Multi-selection of records could cause an issue with the formatting of the output. (like which numbers are shown / rounding). 

This is fixed in LAC365FO version 6.15.0. 

The following image gives an example for which the same value should get displayed for both records but wasn’t properly shown for the second record. 

This is fixed in LAC365FO version 6.15. 

 

Both sales-order (records) should have the same output/value but the second sales order (record) didn’t provide the proper value for the field. 

Value from SalesTable_amountInvoiced: 36.39 

First order (record) properly displayed with 2 decimals and the value 36.39:

 

 

 

Second order (record) wasn’t properly shown as the value 36.40 was shown instead of 36.39:

 

 

Adjustments of Lasernet configuration to support Lasernet 10 

 

GetMetadataInformationLN10 (passthrough module in LN10) 

The module GetMetadataInformation is replaced by the module GetMetadataInformationLN10 

 

The module GetMetadataInformationLN10 uses the following scripts (and criteria) to load information from Lasernet 10 into LAC365FO/D365FO:

 

GetMetadataInformationLN10 is replacing the existing GetMetadataInformation within the XML Transformer / Dynamics365 Transformer .

 

 

Scripts to supporting Lasernet 10  

 

  

LN10GetOverlayList

// (Lasernet 10) Gets overlay list for Dynamics 365 FO function LN10GetOverlayList() { var overlays = configuration.getOverlays(); var result = '<LaserNet>'; //'<OverlayListResponse>'; for (idx = 0, count = overlays.length; idx < count; idx++) { result = result + '<ln:string>'+overlays[idx] +'</ln:string>'; } result = result + //'</OverlayListResponse>'+ '</LaserNet>'; job.setJobData(result); }


LN10GetOverlay  

// (Lasernet 10) Gets overlay thumbnail for Dynamics 365 FO function LN10GetOverlay(overlayFileName, overlayWidth, overlayHeight) { var result = '<LaserNet>'; result = result + '<ln:OverlayGetResult>'+Base64.encode(configuration.getOverlayThumbnail(overlayFileName, overlayWidth, overlayHeight)) + '</ln:OverlayGetResult>'; result = result + '</LaserNet>'; job.setJobData(result); }


LN10GetModuleList


// (Lasernet 10) Gets module list for Dynamics 365 FO function LN10GetModuleList() { var result = '<LaserNet>'; var modules = configuration.getModules(); for (idx = 0, count = modules.length; idx < count; idx++) { result = result + '<ln:Module>'; result = result + '<ln:Name>'+modules[idx].name+'</ln:Name>'; if (modules[idx].type == 'Printer Service') // This is for printer services { result = result + '<ln:Type>'+'Printer Output'+'</ln:Type>'; } else { result = result + '<ln:Type>'+modules[idx].type+'</ln:Type>'; } result = result + '<ln:Description>'+modules[idx].description+'</ln:Description>'; result = result + '<ln:Inactive>'+!modules[idx].active+'</ln:Inactive>'; if (modules[idx].printer) { result = result + '<ln:Printer>'+modules[idx].printer+'</ln:Printer>'; } if (modules[idx].printserver) { result = result + '<ln:PrintServer>'+modules[idx].printserver+'</ln:PrintServer>'; } result = result + '</ln:Module>'; } result = result + '</LaserNet>'; job.setJobData(result); }


LN10GetComputerList

// (Lasernet 10) Gets computer list for Dynamics 365 FO function LN10GetComputerList() { var result = '<LaserNet>'; var servers = configuration.getServers(); for (idx = 0, count = servers.length; idx < count; idx++) { Logger.logEvent(Debug, 'Server=' + servers[idx].name + ' (Hostname=' + servers[idx].hostname + ', Port='+ servers[idx].port +')'); result = result + '<ln:Server>'; result = result + '<ln:Name>' + servers[idx].name + '</ln:Name>'; result = result + '<ln:HostName>' + servers[idx].hostname + '</ln:HostName>'; result = result + '<ln:Port>' + servers[idx].port + '</ln:Port>'; result = result + '</ln:Server>'; } result = result + '</LaserNet>'; job.setJobData(result); }


LN10GetConnectionList

// (Lasernet 10) Gets connection list for Dynamics 365 FO function LN10GetConnectionList() { var result = '<LaserNet>'; var connections = configuration.getConnections(); for (idx = 0, count = connections.length; idx < count; idx++) { result = result + '<ln:ConnectionInfo>'; result = result + '<ln:Name>' + connections[idx].name + '</ln:Name>'; result = result + '<ln:Description>' + connections[idx].description + '</ln:Description>'; result = result + '<ln:GUID>' + connections[idx].guid + '</ln:GUID>'; result = result + '<ln:Type>' + connections[idx].type + '</ln:Type>'; result = result +'</ln:ConnectionInfo>'; } result = result + '</LaserNet>'; job.setJobData(result); }


LN10GetPrinterProfileList

// (Lasernet 10) Gets printer profile list for Dynamics 365 FO function LN10GetPrinterProfileList() { var result = '<LaserNet>'; var printerprofiles = configuration.getPrinterProfiles(); for (idx = 0, count = printerprofiles.length; idx < count; idx++) { result = result + '<ln:Printer>'; result = result + '<ln:Name>' + printerprofiles[idx].name + '</ln:Name>'; result = result + '<ln:PrinterName>' + printerprofiles[idx].printername + '</ln:PrinterName>'; for (idy = 0, county = printerprofiles[idx].profiles.length; idy < county; idy++) { result = result + '<ln:Profile>'; result = result + '<ln:Name>' + printerprofiles[idx].profiles[idy].name + '</ln:Name>'; result = result + '</ln:Profile>'; // Logger.logEvent(Debug, 'PrinterProfile=' + printerprofiles[idx].profiles[idy].name); } result = result + '</ln:Printer>'; } result = result + '</LaserNet>'; job.setJobData(result); }

Bug fixes and enhancements – LAC365FO version 6.15.0 

  

Case no.DescriptionTicket no.

227499@LAC365FO 

Print Button on Lasernet Preview Screen does not result in printing.

#20904 

223936@LAC365FO 

Range is being applied to the nextLink URL, which already contains range. 

  

224895@LAC365FO 

Printer profilles is added to all printers when Updating printer profiles from the 'Printer profiles' .

  

224896@LAC365FO 

A new approach is introduced for loading printer, printer profiles, overlays and connections in Lasernet 10 .

  

227317@LAC365FO 

Table LACReportReplacementMapping is in Table group Miscellaneous.

#20894 

228645@LAC365FO 

Data missing in XML.

#20944 

228681@LAC365FO 

Form link condition does not work on replacement reports, but works on query reports.

#20818 

229365@LAC365FO 

Feature Request: Translation of Lasernet Print Destinations .

#21067 

230415@LAC365FO 

Lasernet Query is rounding values in XML when selecting more than one document to print.

 

Helpful Unhelpful

Add a comment

Please log in or register to submit a comment.

Need a password reminder?