DEV Community

Peter + AI
Peter + AI

Posted on

🚀 Migrating from Uniface 9.7 to 10.4: A Survivor’s Guide

Hey fellow developers! 👋

If you are maintaining legacy systems like I am, you know the drill: "Never change a running system"... until you absolutely have to. Today, I want to share my insights on migrating a Uniface 9.7 application to Uniface 10.4.

Spoiler: It’s not just an update; it’s a paradigm shift! 🤯 But don't worry, I've got you covered.


Why the Panic? (Just kidding... mostly)

Uniface 10 changed the game entirely. The old proprietary repository format? Gone. We now live in a world of text-based storage and Unicode. This is great for version control (hello Git! 😻), but it means we can't just "copy-paste" our old environment.

The Migration Strategy 🗺️

The good news: You can jump straight from 9.7 to 10.4 without stopping at intermediate versions. The bad news: You need a plan.

1. Preparation is Key 🔑

Before you even touch the new IDE, do this:

  • Backup everything. Seriously. Source, DB, Assignment files.
  • Compile in 9.7 first. Ensure your current app compiles cleanly. If it's broken in 9, it won't magically fix itself in 10.
  • Check your "External Universe". Are your databases (Informix, Oracle, etc.) compatible with Uniface 10? What about those ancient C-call-outs you wrote in 2005? 🕵️‍♂️

2. The Export/Import Dance 💃

Since the repository structure changed, we have to move data via XML.

  1. Export your entire application definition from Uniface 9.7 into an XML file.
  2. Install a fresh Uniface 10.4 environment (it comes with a pristine, new repository structure).
  3. Import that massive XML into Uniface 10.4.

Note: Do NOT try to point the Uniface 10 IDE to your old Uniface 9 database files. It won't end well. 💥

The "Gotchas" 👻 (Typical Problems)

Here is where the real work begins. After importing, you will likely face a mountain of compiler warnings.

🔤 Unicode Everywhere

Uniface 10 is Unicode-only.

The Problem: If your app talks to non-Unicode systems (old APIs, flat files), things might break.

The Fix: You might need to add explicit conversion steps for file I/O or database drivers.

📦 Goodbye .dol, Hello .uar

Remember deployment with .dol and .urr files? They are history.

The New Way: We now use Uniface Archives (.uar). It’s much cleaner, but you need to update your entire build pipeline (Azure DevOps, anyone? 🏗️).

📜 ProcScript Clean-up

Some commands are deprecated.

Example: $formmod is out. Use $instancemod instead.

Compiler warnings are your best friends here. Don't ignore them!

Final Thoughts 💡

Migrating to Uniface 10 is a bit like moving houses. It’s messy, exhausting, and you find a lot of trash you forgot you had. But once you're moved in, the new place is so much nicer. The new IDE and the ability to use proper version control are worth the hassle.

Have you migrated yet? Drop a comment below if you hit any other roadblocks! 👇

Happy Coding! 💻✨

Resources & Further Reading 📚

Top comments (0)