Central Migration Birdge : centralDataAccess requires lower case FNF commands

Central Migration Bridge allows you to use your Central Pro Output Server inputs with LiveCycle and XFA forms by converting Field Nominated Data to XML using the centralDataAccess operation.

A caveat however is that the field nominated data commands need to be in lower case for centralDataAccess to understand it. This will not suit some setups, which have their data applications producing upper case commands.

You can work around this issue by adding an ExecuteScript activity before centralDataAccess activity. Say the FND was loaded into a document vairable call inFNF. The following script would read that data, process it, and write it back to the inFNF variable:

import java.util.regex.Pattern;
import java.util.regex.Matcher;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.InputStream;
import com.adobe.idp.Document;

 // XPath to the process variable in which you loaded the field nominated data
String procvar = "/process_data/inFNF";

StringBuffer buff = new StringBuffer();
String crlf = "\r\n";
Document indata = patExecContext.getProcessDataDocumentValue(procvar);
BufferedReader fnf_in = new BufferedReader(new InputStreamReader(indata.getInputStream() ));

String line = fnf_in.readLine();
Pattern p = Pattern.compile("^(\\^\\$?[A-Z]+?)($|\\s+.*)");

while(line != null) {
    Matcher m = p.matcher(line);
    if(m.find() ) {
        line = m.group(1).toLowerCase()+m.group(2);
    }
    buff.append(line).append(crlf);
    line = fnf_in.readLine();
}

Document outdoc = new Document(buff.toString().getBytes() );

patExecContext.setProcessDataDocumentValue(procvar,outdoc);

The use of regular expressions helps isolate the command and set it to lower case, rather than affect the whole line.