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.
More and more, our customers require 24x7 access to Elliott, making it difficult to ensure that all users are logged out at the same time. With the PSQL (Zen) database engine, it is possible to update open DDF files while the system remains in operation. This can be done using utility programs such as BUTIL with the -STARTBU or -ENDBU options to start or end the continuous operations. We now take advantage of this capability by introducing a new program, EL860DDF.exe, which is launched automatically at the end of any Elliott installation. This program is designed to update the .DDF files even if they are currently in use. If the latest DDF files are installed manually, you can also run EL860DDF.exe manually on the server from the local (i.e. not the mapped drive) path of <ElliottRoot>\Bin86 folder.

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:


NOTE:  If this step fails, it will require manual intervention.  There are two options:
  1. Restart the PSQL server.  This is the safest course of action for the DDF files, but it may cause other problems in a 24x7 environment.  If you do not want to interrupt all processes that might be using the Elliott database, there is a second option.
  2. Delete any ContinuousOperation files (they end in .^^^).  Navigate to the ...\DDF40\STDDDF folder in a command prompt and list the files.  If any file has an extension of .^^^, that means it currently is operating in ContinuousOperation mode.  You need to delete all such files.  However, you cannot delete just the .^^^ version of the file; Windows will not let you do that.  You usually can delete <FileName>.*, and that will delete both the original file and its ContinuousOperation file.  You should copy the .DDF file to a backup location, delete <FileName>.*, then copy the backup .DDF file to the ...\DDF40\STDDDF folder.
After all .^^^ files are gone, you can start EL860DDF.Exe from the ...\bin86 folder to try the DDF update process again.

STEP 3: Back up 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 ...