EL860DDF: Updating DDFs in Elliott 8.6

EL860DDF: Updating DDFs in Elliott 8.6

Date: 6/30/2025
Versions: Elliott v8.6 and higher

Background

From time to time, the .DDF files that define the database tables in Elliott need to be updated.  For example, when a flag is introduced to enable a new feature, a database table has a new column defined.  As new features are introduced, there is more reliance on the SQL engine (as opposed to the transaction engine) to support them.  The SQL engine needs the latest .DDF files to access the new columns.

During the install, the latest .DDF files are copied to the ...\DDF40 folder.  Until now, after installing a new update, the administrator would need to do the following:
  1. Log in to the database server.
  2. Make sure all users are out of the system.
  3. Start Elliott and log in as SUPERVISOR.
  4. Monitor automatic updating of the .DDF files and resolve any conflicts -- there could be files in use that prevent full DDF updates.
Increasingly, our customers need 24x7 access to Elliott and it is difficult to make sure everyone is out of Elliott at the same time.  For that reason, we have developed a new program, EL860DDF.Exe, that gets launched at the end of any Elliott installation that is designed to update the .DDF files even if they are busy at the time.

EL860DDF.Exe

EL860DDF.Exe is automatically launched during installation of an update after copying the current .DDF files into the <Root>\BIN86\DDF40 folder.  That ...\DDF40 folder should never be busy because Elliott runs from the ...\DDF40\STDDDF folder.  Here are the steps that occur in EL860DDF to get the .DDFs from the ...\DDF40 folder to the ...\DDF40\STDDDF folder:

STEP 1: Determine if an update is required.

This step begins by determining whether or not you are logged in to the server and starting on a local path to EL860DDF.Exe.  If not, you cannot continue:


If you are logged in to the server and starting on a local path to EL860DDF.Exe, the timestamps and file sizes of each of the 10 DDF files are compared to the last time they were updated (files in ...\DDF40\LASTUPDATE).  If all of the files have the same timestamp and size as the last time, there is nothing to do:


Otherwise, the process continues.

STEP 2: Start Continuous Operation mode for the .DDF files.

At this point, a batch file named EL860DDF1.Bat is created in the DDF40/STDDDF folder and then executed.  This batch file executes a BUTIL /STARTBU for each of the .DDF files.  If any errors are encountered, you will not be able to continue:


STEP 3: Backup the .DDF files.

Next, the .DDF files in \DDF40\STDDDF are copied to ...\DDF40\STDDDF\BACKUP in case the update process encounters an error after it starts updating .DDF files.

STEP 4: Copy DDFs from ...\DDF40 to ...\DDF40\STDDDF

Next, the newly installed .DDF files in ...\DDF40 are copied to ...\DDF40\STDDDF.

STEP 5: End Continuous Operation for the .DDF files.

Finally, a second batch file, named EL860DDF2.Bat, is created in the DDF40/STDDDF folder and then executed.  This batch file executes a BUTIL /ENDBU for each of the .DDF files, ending
Continuous Operation for each of the files. 

The final outcome will look like this:


If the process finishes successfully, each of the .DDF files in ...\DDF40 are copied to ...\DDF40\LASTUPDATE folder, ready for timestamp/file size comparisons in the next Elliott installation.

Recovery

If an error occurs after beginning to update the files in ...\DDF40\STDDDF, and before the process completes, the files in ...\DDF40\STDDDF\BACKUP will be copied back to ...
DDF40\STDDDF, returning the .DDF files to their previous status.

Caution When Using Relational Database User Security

The automatic DDF update process we provide here (EL860DDF.Exe) does not work well with user security enabled.
If you have enabled user security, you should create another sub folder to ...\DDF40 for that purpose and update it manually when .DDF files change.  You can use the EL860DDF1.Bat and EL860DDF.Bat generated files as a template for accomplishing these steps manually.

Author: JEG
Programs EL860DDF.cs

    • Related Articles

    • How to Resolve File Busy or Permission Error from Updating DDF Due to Login SUPERVISOR

      Release Date: 02/07/2023 Version: 8.6 & Up File Busy Error Installing Elliott 8.6 or a later version will cause the DDF files in the <ElliottRoot>\Bin86\DDF40 folder to be updated. However, the DDF files in <ElliottRoot>\Bin86\DDF40\STDDDF will not ...
    • Login SUPERVISOR to Update DDF Files After Elliott 8.6 Installation

      Release Date: 8/17/2022 Version: Elliott V8.6 and Higher Background Most of Elliott Business Software uses the PSQL transactional database engine (Btrieve) to perform its work. However, some new features of Elliott V8.6 use the PSQL relational ...
    • Avalara - Update Requirements

      Relational Database Support The Avalara sales tax integration features available in version 8.6 are based on the PSQL relational database engine and require segmented keys and alphabetic document numbers. The integration is compatible with the ...
    • A Support Case of Migrating to Different Version of DDF

      Release Date: 4/24/19 Version: All Q - I've been asked to set up UPS Worldship to access customer shipping addresses in Elliott. I've run into a problem mapping City, State, and Zip fields to Elliott. Looks like Elliott concatenates these fields to ...
    • A Comparison of Elliott 7.5, 8.2, 8.5, 8.6 and 8.6 V2 DDF Files

      Release Date: 11/15/2022 Last Updated: 06/25/2024 Version: 7.5 & Up DDF Files are used to define the PSQL database schema. Generally speaking, we distribute five different types of DDF files for different versions of Elliott releases: 7.5 DDF: These ...