DOORS archive function not creating file

Doesn't matter if it is a project or module archive. The export runs as you'd expect (no errors) but does not produce an output file (dpa/dma). I seem to remember this problem several years ago - does anyone know this problem or if the client (or server backend) needs write access to any work/temp directories to create the archive files? Maybe in the DOORS client installation directory itself?

DOORS client is 9.5.1.2 and 9.5.2.1 - both same problem when clients are installed on Citrix.

When installed locally on desktop, both versions work fine.


BillTidy - Mon May 05 09:10:37 EDT 2014

Re: DOORS archive function not creating file
llandale - Mon May 05 13:30:50 EDT 2014

It may depend on exactly how Citrix is set up, but it seems likely that if you specify the output file to be on the "c:" drive, it means the Citrix "c:" drive, not the one on your client.  I'm suggesting therefore the file is indeed being created, just not where you think.

The Citrix interface is confusing to me, so I always modify it such that it is not "seamless" (meaning you see DOORS running but cannot tell its on the other machine), and change it to "80% of screen size".  This creates a desktop-less "Citrix" box in which DOORS runs.  that may not be much, but if you run the following from the DXL window, then you get a Windows Explorer window inside Citrix that applies to Citrix.

  • system("explorer.exe")

Now you can navigate around inside Citrix, inside the boxed Window, and can easily see what is Citrix and what is not.  And, in this case, I think you will find your archive.

-Louie

BTW, our Citrix maps the "client drives" to the "citrix drives".  One one Citrix "C:" is mapped to "C:" and the main Citrix drive is "X:", on the other Citrix the client "C:" drive is mapped to the citrix "Y:".  Since DOORS is running on Citrix, if you specify the correct drive letter you should get the output file on your client PC.

Re: DOORS archive function not creating file
BillTidy - Tue May 06 09:05:40 EDT 2014

llandale - Mon May 05 13:30:50 EDT 2014

It may depend on exactly how Citrix is set up, but it seems likely that if you specify the output file to be on the "c:" drive, it means the Citrix "c:" drive, not the one on your client.  I'm suggesting therefore the file is indeed being created, just not where you think.

The Citrix interface is confusing to me, so I always modify it such that it is not "seamless" (meaning you see DOORS running but cannot tell its on the other machine), and change it to "80% of screen size".  This creates a desktop-less "Citrix" box in which DOORS runs.  that may not be much, but if you run the following from the DXL window, then you get a Windows Explorer window inside Citrix that applies to Citrix.

  • system("explorer.exe")

Now you can navigate around inside Citrix, inside the boxed Window, and can easily see what is Citrix and what is not.  And, in this case, I think you will find your archive.

-Louie

BTW, our Citrix maps the "client drives" to the "citrix drives".  One one Citrix "C:" is mapped to "C:" and the main Citrix drive is "X:", on the other Citrix the client "C:" drive is mapped to the citrix "Y:".  Since DOORS is running on Citrix, if you specify the correct drive letter you should get the output file on your client PC.

Hi Louie

Thanks but no, it's not that. We also have a clear drive-mapping structure. We have 2 DOORS environments - in one it works in the other not. Even in this environment where it now does not work we had it working - again pointing me in the direction of a permissions change problem. I seem to remember that archiving needed write permissions to a temp location someplace when creating the archive, as it uses temp  zip files as a precursor to a dma/dpa but damned if I can find the info again. Part of the problem is that our IT Infra is managed by a 3rd party and I have no admin access to investigate on Citrix or the Linux server and they have no knowledge on DOORS. I'll log a call with IBM and wait for a response.

Re: DOORS archive function not creating file
llandale - Tue May 06 11:22:04 EDT 2014

BillTidy - Tue May 06 09:05:40 EDT 2014

Hi Louie

Thanks but no, it's not that. We also have a clear drive-mapping structure. We have 2 DOORS environments - in one it works in the other not. Even in this environment where it now does not work we had it working - again pointing me in the direction of a permissions change problem. I seem to remember that archiving needed write permissions to a temp location someplace when creating the archive, as it uses temp  zip files as a precursor to a dma/dpa but damned if I can find the info again. Part of the problem is that our IT Infra is managed by a 3rd party and I have no admin access to investigate on Citrix or the Linux server and they have no knowledge on DOORS. I'll log a call with IBM and wait for a response.

Don't recall this about Archiving, but have the following memories and info about the "temp" directory.

Run the following from DOORS DXL:

  • print "DOS TEMP:             \t" (getenv("TEMP")) "\n"
  • print "DOORSLOCALDATA: \t" (getenv("DOORSLOCALDATA")) "\n"

Seems to me you need write access to both places.  I just slapped the following together, perhaps it will help:

Buffer buf1 = create,
  buf2 = create

string fFile_StatModes(int in_Mode)
{
 buf1 = ""
 if (in_Mode & S_ISUID != 0) then buf1 += 's'
 if (in_Mode & S_IRUSR != 0 or
     in_Mode & S_IRGRP != 0 or
     in_Mode & S_IROTH != 0) then buf1 += 'r'
 if (in_Mode & S_IWUSR != 0 or
     in_Mode & S_IWGRP != 0 or
     in_Mode & S_IWOTH != 0) then buf1 += 'w'
 if (in_Mode & S_IXUSR != 0 or
     in_Mode & S_IXGRP != 0 or
     in_Mode & S_IXOTH != 0) then buf1 += 'x'

 return(stringOf(buf1))
}

string fFile_Info(string in_NameFile)
{ // Get file information
 Stat stt = create(in_NameFile)
 if (null stt) then return("No such file")
 buf2 = ""
 if    (directory(stt))  then buf2 += "Folder  "
 elseif(regular(stt)) then buf2 += "File    "
 elseif(symbolic(stt)) then buf2 += "Shortcut"
     else buf2 += "Unknown "


 buf2+= "\t" modified(stt) ""
 buf2+= "\t" changed(stt) ""
 buf2+= "\t" user(stt) ""
 buf2+= "\t" size(stt) ""
 buf2+= "\t" fFile_StatModes(mode(stt))
 delete(stt)
 return(stringOf(buf2))

}

string NameFile = (getenv("TEMP"))
print NameFile "\t" (fFile_Info(NameFile)) "\n"

NameFile = (getenv("DOORSLOCALDATA"))
print NameFile "\t" (fFile_Info(NameFile)) "\n"\

-Louie

Re: DOORS archive function not creating file
BillTidy - Wed May 28 11:02:22 EDT 2014

llandale - Tue May 06 11:22:04 EDT 2014

Don't recall this about Archiving, but have the following memories and info about the "temp" directory.

Run the following from DOORS DXL:

  • print "DOS TEMP:             \t" (getenv("TEMP")) "\n"
  • print "DOORSLOCALDATA: \t" (getenv("DOORSLOCALDATA")) "\n"

Seems to me you need write access to both places.  I just slapped the following together, perhaps it will help:

Buffer buf1 = create,
  buf2 = create

string fFile_StatModes(int in_Mode)
{
 buf1 = ""
 if (in_Mode & S_ISUID != 0) then buf1 += 's'
 if (in_Mode & S_IRUSR != 0 or
     in_Mode & S_IRGRP != 0 or
     in_Mode & S_IROTH != 0) then buf1 += 'r'
 if (in_Mode & S_IWUSR != 0 or
     in_Mode & S_IWGRP != 0 or
     in_Mode & S_IWOTH != 0) then buf1 += 'w'
 if (in_Mode & S_IXUSR != 0 or
     in_Mode & S_IXGRP != 0 or
     in_Mode & S_IXOTH != 0) then buf1 += 'x'

 return(stringOf(buf1))
}

string fFile_Info(string in_NameFile)
{ // Get file information
 Stat stt = create(in_NameFile)
 if (null stt) then return("No such file")
 buf2 = ""
 if    (directory(stt))  then buf2 += "Folder  "
 elseif(regular(stt)) then buf2 += "File    "
 elseif(symbolic(stt)) then buf2 += "Shortcut"
     else buf2 += "Unknown "


 buf2+= "\t" modified(stt) ""
 buf2+= "\t" changed(stt) ""
 buf2+= "\t" user(stt) ""
 buf2+= "\t" size(stt) ""
 buf2+= "\t" fFile_StatModes(mode(stt))
 delete(stt)
 return(stringOf(buf2))

}

string NameFile = (getenv("TEMP"))
print NameFile "\t" (fFile_Info(NameFile)) "\n"

NameFile = (getenv("DOORSLOCALDATA"))
print NameFile "\t" (fFile_Info(NameFile)) "\n"\

-Louie

Hi Louie

Sorry it's taken me a while to get back on this. Thanks for your suggestions and code. We have rwx to both temp dirs and we can create test folders and files in those directories on the citrix server - also from the DOORS client, eg via export to Excel or csv.

I am trying to follow this up with IBM support but so far they have no clue. I am still trying to organize a sharing session with them so they can see the issue 'live' and will feed back here when/if the issue is solved.

Re: DOORS archive function not creating file
BillTidy - Wed Jun 04 09:58:09 EDT 2014

llandale - Tue May 06 11:22:04 EDT 2014

Don't recall this about Archiving, but have the following memories and info about the "temp" directory.

Run the following from DOORS DXL:

  • print "DOS TEMP:             \t" (getenv("TEMP")) "\n"
  • print "DOORSLOCALDATA: \t" (getenv("DOORSLOCALDATA")) "\n"

Seems to me you need write access to both places.  I just slapped the following together, perhaps it will help:

Buffer buf1 = create,
  buf2 = create

string fFile_StatModes(int in_Mode)
{
 buf1 = ""
 if (in_Mode & S_ISUID != 0) then buf1 += 's'
 if (in_Mode & S_IRUSR != 0 or
     in_Mode & S_IRGRP != 0 or
     in_Mode & S_IROTH != 0) then buf1 += 'r'
 if (in_Mode & S_IWUSR != 0 or
     in_Mode & S_IWGRP != 0 or
     in_Mode & S_IWOTH != 0) then buf1 += 'w'
 if (in_Mode & S_IXUSR != 0 or
     in_Mode & S_IXGRP != 0 or
     in_Mode & S_IXOTH != 0) then buf1 += 'x'

 return(stringOf(buf1))
}

string fFile_Info(string in_NameFile)
{ // Get file information
 Stat stt = create(in_NameFile)
 if (null stt) then return("No such file")
 buf2 = ""
 if    (directory(stt))  then buf2 += "Folder  "
 elseif(regular(stt)) then buf2 += "File    "
 elseif(symbolic(stt)) then buf2 += "Shortcut"
     else buf2 += "Unknown "


 buf2+= "\t" modified(stt) ""
 buf2+= "\t" changed(stt) ""
 buf2+= "\t" user(stt) ""
 buf2+= "\t" size(stt) ""
 buf2+= "\t" fFile_StatModes(mode(stt))
 delete(stt)
 return(stringOf(buf2))

}

string NameFile = (getenv("TEMP"))
print NameFile "\t" (fFile_Info(NameFile)) "\n"

NameFile = (getenv("DOORSLOCALDATA"))
print NameFile "\t" (fFile_Info(NameFile)) "\n"\

-Louie

So, for anyone's future reference, the problem is with UNC paths (LOCALDATA must not be a UNC path).

To fix this on citrix, either make a registry change for the DOORS client or add a switch when starting the client via batch/command line, eg:

-localdata "C:\temp"

Re: DOORS archive function not creating file
Aleksey_ru - Wed Sep 03 06:49:31 EDT 2014

BillTidy - Wed Jun 04 09:58:09 EDT 2014

So, for anyone's future reference, the problem is with UNC paths (LOCALDATA must not be a UNC path).

To fix this on citrix, either make a registry change for the DOORS client or add a switch when starting the client via batch/command line, eg:

-localdata "C:\temp"

Thank you very match, BillTidy! It;s Works!