=== modified file 'rules/convert/proxy_programs.xml'
--- old/rules/convert/proxy_programs.xml	2025-10-22 09:53:02 +0000
+++ new/rules/convert/proxy_programs.xml	2026-04-16 14:03:35 +0000
@@ -101,6 +101,7 @@
    <worker class="com.goldencode.p2j.convert.ConverterHelper"      namespace="help" />
    <worker class="com.goldencode.p2j.schema.P2OAccessWorker"       namespace="p2o" />
    <worker class="com.goldencode.p2j.convert.NameConverterWorker"  namespace="names" />
+   <worker class="com.goldencode.artifacts.ArtifactWorker"  namespace="art" />
  
    <init-rules>
       <rule>tw.load("convert/java_templates")</rule>
@@ -170,7 +171,7 @@
 
             <rule>
                appObjectFile = sprintf("%s%s%s.proxy.jast", 
-                                       srv.getProxyPackageFolder(artifact.getRelativePath()),
+                                       art.getPathToProjectFolder(srv.getProxyPackageFolder(artifact.getRelativePath())),
                                        fileSep, 
                                        appObjectName)
             </rule>
@@ -356,8 +357,8 @@
                <!-- now emit the implementation class for this proxy, where everything related to it is emitted
                     -->
                <action>
-                  fname = sprintf("%s%s%s.proxy.jast", 
-                                  io.getParent(artifact.getRelativePath()),
+                  fname = sprintf("%s%s%s.proxy.jast",
+                                  art.getPathToProjectFolder(io.getParent(artifact.getRelativePath())),
                                   fileSep, 
                                   proxyname)
                </action>

=== modified file 'src/com/goldencode/artifacts/ArtifactManager.java'
--- old/src/com/goldencode/artifacts/ArtifactManager.java	2026-04-07 07:12:52 +0000
+++ new/src/com/goldencode/artifacts/ArtifactManager.java	2026-04-16 12:51:35 +0000
@@ -665,7 +665,7 @@
             String resolvedProgram = operation.resolve(file);
             if (resolvedProgram != null)
             {
-               String newRelativePath = getPathToProjectFolder(file, suffix);
+               String newRelativePath = getPathToProjectFolder(resolvedProgram, suffix);
                Artifact newArtifact = addArtifact(newRelativePath);
                convertedArtifacts.add(newArtifact);
             }
@@ -702,8 +702,8 @@
          String resolvedProgram = op.resolve(program);
          if (resolvedProgram != null)
          {
-            String absolutePath = absoluteFilename(program);
-            Artifact artifact = addArtifact(program, absolutePath);
+            String absolutePath = absoluteFilename(resolvedProgram);
+            Artifact artifact = addArtifact(resolvedProgram, absolutePath);
             createdArtifacts.add(artifact);
          }
       }

=== modified file 'src/com/goldencode/artifacts/ArtifactWorker.java'
--- old/src/com/goldencode/artifacts/ArtifactWorker.java	2026-04-07 07:12:52 +0000
+++ new/src/com/goldencode/artifacts/ArtifactWorker.java	2026-04-16 13:56:27 +0000
@@ -92,6 +92,19 @@
        *
        * @param    filename
        *           Absolute or current directory relative filename.
+       *
+       * @return   The path of file inside project folder with no postfix.
+       */
+      public String getPathToProjectFolder(String filename)
+      {
+         return getPathToProjectFolder(filename, "");
+      }
+      
+      /**
+       * Get the path for a file inside project folder.
+       *
+       * @param    filename
+       *           Absolute or current directory relative filename.
        * @param    extension
        *           Optional postfix to append to file name.
        *

=== modified file 'src/com/goldencode/p2j/convert/ConversionDriver.java'
--- old/src/com/goldencode/p2j/convert/ConversionDriver.java	2026-04-07 07:12:52 +0000
+++ new/src/com/goldencode/p2j/convert/ConversionDriver.java	2026-04-16 13:39:57 +0000
@@ -735,14 +735,12 @@
          return cfg.getPkg() + "." + javaName;
       };
       
-      Set<String> allCvtFiles = new HashSet<>();
-      List<String> relativeNames = ArtifactManager.getArtifactsRelativePath(asts);
-      for (String file : relativeNames)
+      Set<String> allCvtFiles = new TreeSet<>();
+      for (Artifact  artifact: asts.getArtifacts())
       {
-         file = FileOperationsWorker.findFile(file, null);
+         String file = artifact.getRelativePath();
          allCvtFiles.add(file);
       }
-      allCvtFiles.addAll(relativeNames);
       
       // get the proxy config for each file
       Map<String, Integer> programCounter = new HashMap<>();
@@ -759,6 +757,7 @@
             String filename = lpcc.getFullName() + "." + lpcc.getProgExt();
             String cvtFile = FileOperationsWorker.findFile(filename, null) + FileExtensions.AST_POSTFIX;
             cvtFile = ArtifactManager.getPathToProjectFolder(cvtFile);
+            cvtFile = ArtifactManager.normalizeFilename(cvtFile);
             
             if (!allCvtFiles.contains(cvtFile))
             {
@@ -853,6 +852,8 @@
             }
          }
          
+         Collections.sort(proxyFiles);
+         
          if (!proxyFiles.isEmpty())
          {
             ArtifactCollection proxyAsts =

=== modified file 'src/com/goldencode/p2j/convert/GenerateLegacyProxyOpenClient.java'
--- old/src/com/goldencode/p2j/convert/GenerateLegacyProxyOpenClient.java	2025-12-16 13:44:03 +0000
+++ new/src/com/goldencode/p2j/convert/GenerateLegacyProxyOpenClient.java	2026-04-16 11:36:49 +0000
@@ -197,6 +197,7 @@
          {
             Artifact a = proxyIter.next();
             String cvtPath = ArtifactManager.getPathToProjectFolder(a, FileExtensions.AST_POSTFIX);
+            cvtPath = ArtifactManager.normalizeFilename(cvtPath);
             if (astArtifact.getRelativePath().equals(cvtPath))
             {
                ok = true;

