Progress DataDirect for JDBC for Microsoft Dynamics 365 JDBC Driver

    An asterisk (*) indicates support that was added in a hotfix or software patch subsequent to a release.

    Refer to the following resources for additional information:

    • Product Compatibility Guide: Provides the latest data source and platform support information. 
    • Fixes: Describes the issues resolved since general availability.  

    Version 6.0.0 

    ENHANCEMENTS
    • The driver has been enhanced to comply with FIPS standards for data encryption. As part of this enhancement, the driver was tested with FIPS 140-3 enabled using a Red Hat OpenJDK 21 on a Red Hat Universal Base Image 9 instance. Refer to FIPS (Federal Information Processing Standard) for details.*
      Available: 1/31/2025 | 6.0.0.002957
    • The driver has been enhanced to support fetching data from all the companies to which the user has access. Earlier, it supported fetching data only from the default company of the user. You can configure this functionality using the new CrossCompany connection property. Refer to CrossCompany for details.*
      Available: 6.0.0.002159
    • The driver has been enhanced to allow you to configure whether requests to web services timeout when the service is unresponsive. You can configure this functionality using the new WSTimeout connection property.*
    • The driver has been enhanced to use proxy server settings defined in the JVM system properties by default. If no proxy settings are defined in the connection string or data source, the driver will attempt to use the values of the http.proxyHost and http.proxyPort JVM system properties to connect to the database.*
    • The driver has been enhanced to allow you to configure whether requests to web services timeout when the service is unresponsive. You can configure this functionality using the new WSTimeout connection property. Refer to WSTimeout for details.
    CHANGED BEHAVIOR
    • The connection property SpyAttributes has been updated to exclude the attribute load=classname, which was previously used to load the driver specified by the given class name. If a log file name does not include the .log extension, the driver automatically appends it.*
      Available: 10/29/2025 | 6.0.0.003198
    • The driver has been updated to remove all sensitive values from the string returned by calling getURL(). You might be impacted if your applications or tests expect these values when calling the function.
    • The installer program now requires you to install a JRE that is Java SE 11 or higher before running the installer. In earlier versions, the JRE used by the installer program was included in the product. However, to avoid potential security vulnerabilities, the installer program no longer includes a JRE. Instead, the installer program uses the JRE in your environment to allow for the most secure version of a JRE to be used.*
      Note: This change does not affect the JVM requirements for the driver. For the latest driver requirements, refer to the Product Compatibility Guide.
      Available: 7/3/2024
    • The following connection properties have been removed from the driver: ConnectionRetryCount, ConnectionRetryDelay, LoginTimeout, and QueryTimeout. Refer to Connection property descriptions for a list of supported connection properties.*
    NOTES, KNOWN ISSUES, and LIMITATIONS
    • Connection delay: An initial connection may take a few minutes, depending on network speeds and the amount of metadata the driver must retrieve from the service. Similar delays may occur in the following scenarios:
      • When the CreateMap connection property is set to OnChange (default) and changes have been made to the schema on the Dynamics 365 backend
      • When starting a new session with CreateMap set to Session
      • When CreateMap is set to NotExist and the internal schema files specified by SchemaMap do not exist
      • When CreateMap is set to ForceNew
    • Using Tableau and other third-party tools: When using third-party tools such as Tableau, network speeds and the amount of metadata retrieved from the service can cause timeout and out-of-memory errors. You can work around these issues in the following ways:
      1. Increase timeout settings in your third-party tool. For example, Tableau offers the following guidance for timeout errors caused by large results: https://kb.tableau.com/articles/issue/error-extract-timeout. You may also need to increase the Java heap size allotted for your third-party tool. This will allow the tool to manage large metadata results sent by the service. This workaround not only avoids timeout and out-of-memory errors on initial connection, but may also avoid these errors on subsequent connections.
      2. Establish your initial connection using the DataDirect JDBC Driver Configuration Manager as described in "Testing connections and queries" in the user's guide. In addition to specifying required properties, set the SchemaMap connection property. SchemaMap specifies the location and name of the configuration file where the map of the Dynamics 365 schema is written. Once connected, you can use the connection string generated by the Configuration Manager to connect via your third-party tool. However, it should be noted that timeout and out-of-memory errors may occur on subsequent connections, depending on the CreateMap setting. See the user's guide for more information.
    • Data type metadata for COLUMN_SIZE: When executing getColumns for numeric types and the boolean type, the driver returns 0 (zero) for COLUMN_SIZE. The driver should instead return the precision for each data type, as returned with getTypeInfo results.
    • ERP limitations: The Dynamics 365 ERP service does not return extensive metadata for some objects. Therefore, you may encounter the following behaviors when using the driver to access ERP apps such as Finance, Retail, Supply Chain Management, and Talent:
      • In some cases, the metadata of an object may erroneously indicate that a column is nullable. Under these circumstances, when you attempt to update or insert null data into a non-nullable column, the driver returns the error "Object reference not set to an instance of an object."
      • For some columns, the ERP service does not return the maximum length of string values. In these circumstances, the driver uses a default of 2000 characters. When attempting to insert or update strings that are larger than the allowable maximum length on the backend, or strings larger than the driver default, the string will be truncated.
      • For some columns, the ERP service does not return the precision or scale of decimal types. In these circumstances, the driver defaults to a precision of 22 and a scale of 10. When attempting to update or insert decimal values larger than the defaults, the driver truncates the decimal value.
      • We have set the status of a number of decimal columns to non-filterable because they generate errors when used in subqueries against the ERP service. However, a custom decimal column could be introduced that also may not be used in subqueries. If such a decimal column is used in a subquery, the driver returns "Cannot select a record in SubQuery. The SQL database has issued an error."
    • General error message: In some scenarios, when a connection fails, the driver returns the message "general error" instead of passing the actual error message generated by the service.
    • JTA support: JDBC distributed transactions through JTA are not supported.
    • Executing DataDirect shell script: For UNIX/Linux users: If you receive an error message when executing any DataDirect for JDBC shell script, make sure that the file has EXECUTE permission. To do this, use the chmod command. For example, to grant EXECUTE permission to the testforjdbc.sh file, change to the directory containing testforjdbc.sh and enter: chmod +x testforjdbc.sh
    • JDBC methods: The following notes on JDBC methods apply generally to Progress DataDirect for JDBC drivers. Additional information on driver support for the JDBC API can be found in the "JDBC Support" section of the product user's guide:
      • The DataDirect for JDBC drivers allow PreparedStatement.setXXX methods and ResultSet.getXXX methods on Blob/Clob data types, in addition to the functionality described in the JDBC specification. The supported conversions typically are the same as those for LONGVARBINARY/LONGVARCHAR, except where limited by database support.
      • When attempting to create an updatable, scroll-sensitive result set for a query that contains an expression as one of the columns, the driver cannot satisfy the scroll-sensitive request. The driver downgrades the type of the result returned to scroll-insensitive.
      • The DataDirect for JDBC drivers support retrieval of output parameters from a stored procedure before all result sets and/or update counts have been completely processed. When CallableStatement.getXXX is called, result sets and update counts that have not yet been processed by the application are discarded to make the output parameter data available. Warnings are generated when results are discarded.
      • The preferred method for executing a stored procedure that generates result sets and update counts is using CallableStatement.execute(). If multiple results are generated using executeUpdate, the first update count is returned. Any result sets prior to the first update count are discarded. If multiple results are generated using executeQuery, the first result set is returned. Any update counts prior to the first result set are discarded. Warnings are generated when result sets or update counts are discarded.
      • The ResultSet methods getTimestamp(), getDate(), and getTime() return references to mutable objects. If the object reference returned from any of these methods is modified, re-fetching the column using the same method returns the modified value. The value is only modified in memory; the database value is not modified.
    FEATURES
    • Supports SQL read-write access to the following Microsoft Dynamics 365 CRM and ERP apps
      • CRM apps
        • Customer Service
        • Field Service
        • Marketing
        • Project Service Automation
        • Sales
      • ERP apps
        • Finance
        • Retail
        • Supply Chain Management
        • Talent
    • Supports JDBC core functions. Refer to JDBC support in the Progress DataDirect for JDBC Drivers Reference.
    • Supports the core SQL-92 grammar
    • Supports Dynamics 365 data types through data type inference. Refer to Data types and getTypeInfo() for details.
    • Supports OAuth 2.0 authentication. Refer to OAuth 2.0 authentication for details.
    • Supports the handling of large result sets with paging and the FetchSize connection property. Refer to FetchSize for details. 
    • Supports optimizing insert, update, and delete operations with the BatchUpdateChunkSize connection property. Refer to BatchUpdateChunkSize for details.
    • Includes the DataDirect JDBC Driver Configuration Manager for quick configuration and testing of your driver. This tool allows you to:
      • Generate and edit connection URLs
      • Test connect connection URLs
      • Execute SQL commands for testing
      • Fetch OAuth tokens without using your application
      • Access connection property descriptions and the full product documentation

      Refer to Generating connection URLs with the Configuration Manager for details.

Connect any application to any data source anywhere

Explore all DataDirect Connectors

A product specialist will be glad to get in touch with you

Contact Us