Tag Archives: Workbench

Assembling Task Attachments

– Girish Bedekar

Lot of customers have a need to assemble task attachments into a single PDF at the end of the process for archiving. I have written a simple process which shows you the steps involved. I have made use of two custom components for this exercise.
The following document contains a process which assembles task attachments into a PDF
Click here to get the PDF
Let me know if you need any more help

Original article at http://eslifeline.wordpress.com/2008/11/06/assembling-task-attachments/.

Extracting Data From Xml File

– Girish Bedekar

Recently I was given the following xml


The customer wanted to email the persons listed in the emails element. They wanted to use the email component provided by livecycle. The email component takes a comma separated string when you want to email multiple people. So I used setValue component to extract the emai id’s and put them into a list. The list was then converted into a comma separated string of email addresses.
I also used the script component to accomplish the same. I have put both the solutions as file attachment . Feel free to download and deploy the lca and try it out
Click here to get the pdfhandling-repeating-elements4

Original article at http://eslifeline.wordpress.com/2008/12/22/extracting-data-from-xml-file/.

Creating DDX from list of file names


I have written a simple component which creates a DDX from a list of file names. It is very common to create a package or assemble a map of documents. To do this you would have to create a DDX which needs to match the file names of documents in the map. To avoid all that hard work, I have a component which creates a DDX from list of file names.

The process also makes use of another component which writes out map contents to the file system

I have attached the process in the PDF file
Click here to access the PDF file
Click to get the PDF

Original article at http://eslifeline.wordpress.com/2008/10/31/creating-ddx-from-list-of-file-names/.

LiveCycle ES2 Workbench add-ons

Hi All,

I’m really looking forward to using the Workbench add-ons that adobe just released on the labs.

More info and download at – http://labs.adobe.com/technologies/lcworkbench_addons/
Here are my fav features among others –

  1. Variable Highlighting
  2. Schema Editor
  3. Type Selection Improvements

Thanks LiveCyle & Workbech team…

Original article at http://blog.pandyaparth.com/2010/07/livecycle-es2-workbench-add-ons/.

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/.

LiveCycle ES2 Highlights – Property Sheet Enhacements

– Seth Reilly

In Adobe LiveCycle ES2 the Workbench property sheets have been overhauled to simplify and streamline application creation. Here are a few examples:

Basic | All filter toggle
Most property sheets in ES2 now include two modes — Basic and All. Basic presents the most commonly used settings, while All will present you with all available settings for the service.

Render PDF Form
The FormsService:renderPDFForm service has been greatly simplified, and thanks to the new asset picker there is no longer a need to hand type URIs. Here is the new service in Basic mode.

Asset Picker
No longer a need to hand type URIs!

Auto Discovery of Credential Alias Names
You no longer have to look at the adminui to determine the available aliases for Reader Extensions or Signing credentials. This feature applies to Apply Usage Rights, Sign Signature Field, Certify PDF & Certificate Encrypt PDF.


Original article at http://livecycleapps.wordpress.com/2009/10/21/livecycle-es2-highlight-property-sheet-enhacements/.

Migrating an Application from Adobe® LiveCycle® ES to ES2

Are you migrating existing LiveCycle applications to LiveCycle ES2?
Check out the recent  captivate recording I put together:
  • Importing an 8.x LCA and verifying functionality
  • Making minor edits to resources and pushing them back to the legacy repository
  • Full upgrade/migration of the application to ES2 application model, taking advantage of the new tooling

Full documentation for migration of applications can be found here:


Original article at http://livecycleapps.wordpress.com/2010/05/12/migrating-an-application-from-adobe%C2%AE-livecycle%C2%AE-es-to-es2/.

LiveCycle ES2 Highlights – Record and Playback Enhancements

– Seth Reilly

Record and Playback is often considered the most valuable debugging tool in LiveCycle. It allows you to record then step though the execution of a process, to examine the variable values, routes taken etc…

The following Record and Playback improvements were made in ES2:

  • A visual indicator (a red dot) will now appear when recording is activated for a particular process
  • You can manage process recordings at a global level (Start/Stop/Delete etc…) This allows an administrator to easily disable all recordings on a server.
  • You can activate/deactivate recordings for an entire application in a single click



Original article at http://livecycleapps.wordpress.com/2009/10/21/livecycle-es2-highlight-record-and-playback-enhancementso/.

How to Globally Turn Off LiveCycle Process Recording

– Jayan Kandathil

There are situations where a LiveCycle system administrator has to (globally) turn off all process recordings that process developers may have enabled.

One of those cases is where the load testing team prepares the system for a high-volume load test. If recording is turned on for any of the processes involved in the load test, the filesystem-based GDS folder will experience high disk write I/O which will skew performance data (even if the GDS is configured to target the database). There is also the risk that the filesystem will run out of disk space.

To prevent this from happening, you can set a property of the AuditWorkflowService called ‘maxNumberOfRecordingInstances‘ using the AdminUI. Setting this to 0 (the default is 50) and saving the change will in effect turn off all process recording globally. There is no need to re-start LiveCycle. See screenshot below:

Original article at http://blogs.adobe.com/livecycle/2011/03/how-to-globally-turn-off-livecycle-process-recording.html.