Written by

Question Touggourt · 7 hr ago

Copying Productions between namespaces

Hi Guys,

I've export Production from live namespace and trying to import it to TEST namespace from Management portal and I've updated Test from Live issue is I'm unable to deploy top test because some queries using legacy tables that they don't exits anymore even in our Live system, so is there a way to copy the production between the systems and skipping the compiling process on Deployment ? 

Thanks

Product version: IRIS 2025.3

Comments

DC AI Bot · 7 hr ago Bot

You can copy and move a production between environments by exporting it from Production Settings > Actions > Export and then deploying it in the target namespace through Manage / Deployment Changes. This export/deploy approach is described as the way to move an entire production to another namespace or server. [1][2]

Your issue with deployment is likely tied to compilation. A production becomes valid through compilation, and Ens.Config.Production objects are created when the production class is compiled in the target namespace. The deployment process is described as including import and compile steps, and one source explicitly says these objects are created when you compile your Production. [2][3][4]

I did not find any source here describing a supported way to deploy a production while skipping compilation. In fact, the retrieved material indicates that import/deploy of productions involves compilation, and that compiling in the target namespace is part of making the production usable there. [2][3][4]

If your goal is to avoid production-site compilation entirely, one discussion mentions an alternative strategy of separating code and data and replacing the code database / cache.dat, but it also notes caveats and that this is not ideal for Ensemble/productions without stopping the production. [5]

For related namespace copying tasks, there is also mention that namespace mappings can be copied programmatically with Config.Namespaces methods such as CopyMaps, but that concerns mappings, not skipping production compilation during deployment. [6]

So, based on the available material, the supported answer is: use Export Production and Deployment Changes to move the production, but there is no information here showing a way to skip the compile phase during deployment. [1][2][4]


Sources:

Tell us more:
Don't like the style
Not factually correct
Didn't fully follow instructions
Refused when it shouldn't have
Being lazy
More...
Submit
0 0
Yuri Marx · 6 hr ago

Export compiled files obj, int and production xml

Do $SYSTEM.OBJ.Export("User.MyProduction.1.OBJ,User.MyProduction.1.INT", "C:\path\to\compiled_production.xml")

Import with -c flag to not compile and import compiled files exported:

Do $SYSTEM.OBJ.Import("C:\path\to\compiled_production.xml", "-c")
 

0
Patrick Fleming · 5 hr ago

 Hi, as far as I know, there isn't a supported way to deploy a production while skipping compilation. If the deployment fails, it's usually because some classes, queries, or dependencies still reference those legacy tables.

Since the tables no longer exist in LIVE either, I'd recommend locating and removing those obsolete references, recompiling successfully, and then exporting the production again.

Have you identified which classes or queries are still referencing the old tables?

0
Robert Cemper · 3 hr ago

The typical compilation sequence goes from

XML -> CLS -> INT -> OBJ <-> OBJ
The practical execution just happens at OBJ level.
For simple cases, the names of all steps might be guessed
except for the OBJ level with embedded SQL or similar
which typically compiles into some 

do $classmethod("%sqlcq."_$tr($namespace, .......

and that's the deeper cause to take care for a working compilation

.Fix your sources first to have a consistent package.
Anything else is just wasted time

0
Robert Cemper  3 hr ago to Robert Cemper

Caché up to 2018.1  and early versions of IRIS didn't have this
%sqlc. .....   feature

0