Tag Archives: processes

Change the GDS (Global Document Storage) location of a Production LiveCycle ES System

Important Remark:
Within the LiveCycle Documentation you will find the following on the GDS:
“The global document storage (GDS) is a directory used to store long-lived files such as PDF files used within a process or DSC deployment archives. Long-lived files are a critical part of the overall state of the LiveCycle ES environment. If some or all long-lived documents are lost or corrupted, the LiveCycle ES server may become unstable. Input documents for asynchronous job invocation are also stored in the GDS and must be available in order to process requests. Therefore, it is important that the GDS is stored on the redundant array of independent disks (RAID) and backed up regularly.”
So the GDS is the cornerstone of a LiveCycle system. Changing this location should be carefully executed by product experts. Take a back-up before you start and don’t try this at home …
For whatever reason you want to change the location of the GDS. As explained above this is possible but should be very carefully executed.
Disclaimer: This section will describe the different steps to execute in order to move the location of the GDS. These steps should be considered as a Guideline and not as a by Adobe Supported set of actions. You are encouraged to execute this first in a Test environment before doing this in a Production environment. The different Steps are:
  1. Alert and Ask the End-Users to get out of the LiveCycle Application/Server
  2. Put the LiveCycle Application/Server in ‘Operate in safe backup mode’. In Adminui go to Settings > Core System > Backup Settings – select the ‘Operate in safe backup mode’ and hit the OK button.
  3. Backup the GDS folder
  4. Zip or Tar the GDS folder
  5. Change the location of the GDS folder. In Adminui go to Settings > Core System > Core Configurations and change the location of the GDS Directory. Hit the OK button; you will get a second page and hit the OK button again
  6. Shutdown the LiveCycle Application/Server
  7. Check whether the LiveCycle Application/Server system user has access to the new GDS folder
  8. UnZip or UnTar the files in the new GDS folder
  9. StartUp the LiveCycle Application/Server
  10. Do some basic validations. In Adminui go to Services > Applications and Services and choose Archive Management and Endpoint Management and check visually whether you get the expected information
  11. Deactivate the ‘Operate in safe backup mode’. In Adminui go to Settings > Core System > Backup Settings – unselect the ‘Operate in safe backup mode’ and hit the OK button

Tip to stay healthy:
Make sure that you have the final location of the GDS available, before you install LiveCycle in a Production environment.

Original article at http://www.drflex.eu/2009/06/change-the-gds-global-document-storage-location-of-a-production-livecycle-es-system/.

Using Namespace in Workbench

– Girish Bedekar

The xml returned by webservices invariably use namespaces. To access data contained in the xml you would need to declare namespace . To declare namespace you would select the process,right click the process select properties, click the advanced tab to create namespaces
For example the following is a example of namespace declared in workbench
greg http://schemas.xmlsoap.org/soap/envelope/
where greg is the namespace prefix
I have included a simple process which makes a web service call to Amazon, using namespace I get data out of the response. The following is an example of using namespace in workbench
Click here to get the PDF

Original article at http://eslifeline.wordpress.com/2009/02/06/using-namespace-in-workbench/.

Emailing to all members of a group

– Girish Bedekar

I have written a simple process which lets you email to all members of a group
This process takes in the name of a group as input parameter and emails to all members of the group
Before invoking the process make sure you have set the configuration settings of the email component(the last step of the process)
Click here to get the pdf file which has the process
Click here to get the pdf
Let me know if you have any further questions

Original article at http://eslifeline.wordpress.com/2009/02/10/emailing-to-all-members-of-a-group/.

Conditional set value using XPath

In my quest to use XPath functions & expressions more efficiently in LiveCycle I managed to achieve ‘conditional set value’ yesterday.

Example scenarios:

  • Add some text to email body if some condition is true/false.
  • Add some text into T&Cs if certain product is selected.
  • In a generic/single Email or Set Value step you need to construct a big block of text. eg. Offer letter with certain paragraphs based on few conditions.

Approach 1: The usual way (or one of the usual ways):

An orchestration in Workbench with few setValue steps and few conditional routes to add/append the desired text to existing text.

And these steps need to be in certain order.

Approach 2: The XPath trick

I used substring() and number() function with pure XPath expression to construct conditional set value. See the usage below.


Consider a requirement in which you wish to send an email with few extra lines added to it if product A is ordered. And if contract term is 12 months then we need to add another T&C statement in the email body.

Let’s implement that with both approaches…

Approach 1: Few set value step and routing conditions to set process variables that get used in email body.

Process Diagram:
Set Value - Route condition approachSet Value – Route condition approach
Email body:

Dear Provisioning Team,

Please send the below details to John.

System:{$ /process_data/@System $}
Agent Name:{$ /process_data/@Agentname $}
Product ordered: {$ /process_data/@Product $}

{$ /process_data/@ProductAConfigurationDetails $}

Terms and Conditions:
blah blah blah from Legal
{$ /process_data/@TCFor12MonthsContract$}

BOH Team

Approach 2: Conditional set value with XPath

Process diagram:

Set Value XPath approach

Email Body

Dear Provisioning Team,

Please send the below details to John.

System:{$ /process_data/@System $}
Agent Name:{$ /process_data/@Agentname $}
Product ordered: {$ /process_data/@Product $}

{$ substring(‘This is where the actual text gets put about the product configuration’,
50000000 * (number(/process_data/@Product !=’Product A’))
) $}

Terms and Conditions:
blah blah blah from Legal
{$ substring(’12 Months T&C content is written here or can be xpath expression’,
50000000 * (number(/process_data/@ContractLength !=’12′))
) $}


BOH Team


  • The above expression marked in blue puts the text in email body if the condition at the end of it fulfills.
  • By moving this logic into the email step itself I could clean up the process design significantly. I believe that LC is too good to do data transformation but common…few set value and few conditional routes for a simple text insertion?? I reckon the XPath trick gives much more cleaner approach to solve this.
  • First thing to notice in the expression is the use of a large number 50000000 . This is used to return blank substring value if the expression is false. Please adjust if your input text can be larger than this.
  • Second thing to notice is the use of comparison operator. I wanted to have 0 (zero) value for substring start value if condition is true. Boolean true is 1 so I’m using opposite operator. Eg. if(product=”Product A”) is represented as product!=”Product A”

As this is an XPath based expression we can use it in any LC component. I tried implementing if-else clause as well but that didn’t turn out well.

If you managed to read through this much then I’m sure you would love to see the undocumented ‘and’ ‘or’ keyword usage in XPath expression. I found that while experimenting and it’s an instant hit among few of my fellow LC users. It can be found here..

Let me know if you find this useful!!!!

Original article at http://blog.pandyaparth.com/2009/11/conditional-set-value-using-xpath/.