Operational Flow
Blue Prairie Forms consists of software that runs on two separate servers:

The MultiValue Host
- is usually the main enterprise server running a MultiValue database such as jBASE, uniVerse, Unidata, etc.
- contains the legacy programs responsible for the creation of printed output.
- is where the BP Forms server-side programs and API will be installed.
- will generate a finished open office .odt document using the BP Forms API.
- will NOT actually render the document into printed or PDF form but instead will simply write the completed .odt document to a directory on the MultiValue server known as a queue
- may run one or more background processes know as phantoms or threads that are responsible for communicating with the Open Office print server and for directing the Open Office software installed on that server to render the finished .odt document into printed or PDF form.
- may optionally deliver the rendered PDF or odt via email or other mechanism.
- Note: no printing is performed by the MultiValue host. All printing is performed by one or more Open Office Print Servers.
The Openoffice Print Server
- is one, or more, separate Linux server(s) visible on the network to the MultiValue server.
- contains the Open Office software.
- is responsible for transforming the finished .odt document created by the MultiValue Server to printed for or PDF
- Uses the CUPS print system to manage the print jobs generated by Open Office
What is Blue Prairie Forms?
Blue Prairie Forms (BPF) allows you to create attractive paper and electronic documents from your MultiValue systems. BPF leverages the power of Open Office (oo) or Libre Office (lo). It combines the power of oo/lo with the power of a MultiValue application. With BPF, you can use normal word processing skills to design forms and then leverage a power programming API to link the forms to you MultiValue host.
Current MultiValue System Support
|
Platform |
Availability |
|
Universe |
Any UNIX/Linux platform |
|
UniData |
Any UNIX/Linux platform |
|
jBASE |
Any UNIX/Linux platform |
|
OpenQM |
Considered upon request |
|
D3 |
Withdrawn from marketing |
|
UltimatePlus |
Possible / Not planned |
|
Other |
Considered upon request |
O/S Dependency
Blue Prairie Forms host-side programs are currently dependent on UNIX/Linux system calls and is not compatible with MultiValue database systems that run on Windows platforms. If you run on a Windows platform, we will consider porting to Windows for serious inquirers.
Printing to PDF
| Note: Prior to BP Forms release 4.1 (May 2025) PDF printing was performed by sending printed documents to the CUPS PDF Printer available as part of the Linux CUPS package. At release 4.1, new functionality was introduced. Now, if you generate a .odt file with a prefix of PDF___, the BP Forms phantom printing process will recognize this as your signal that you wish to produce a PDF final document. We now use LibreOffice's inbuilt PDF generator rather than directing the document to a CUPS PDF printer. Some users have noted that this results in a faster and cleared PDF render. However, it should be noted that since this method of PDF creation bypasses (and does not use) CUPS, the CUPS admin utilities will not have visibility to PDF documents generated in this new way. |
Using LibreOffice Inbuilt PDF Generation
Simply generate your document with the prefix of PDF___ and BP Forms will use Libre Office's direct PDF generation to produce the resulting PDF document. Note, that BP forms will output the document to a directory in the BPIFORMS account, called PDF. This directory must exist for the PDF generation feature to work.
CUPS PDF Generation
You may print to PDF using the popular CUPS-PDF package. This package is generally installed by your Blue Prairie Forms installation technician but in some cases, you may wish to install yourself or to upgrade the package.
As of the writing of this help page (3/1/2020), we acquire the cups-pdf package from this URL:
https://centos.pkgs.org/7/epel-x86_64/cups-pdf-2.6.1-7.el7.x86_64.rpm.html
This will lead you to the binary package (the compiled version of this driver):
http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/c/cups-pdf-2.6.1-7.el7.x86_64.rpm
The easiest way to install the driver is to:
- Access the graphical console of your BP Forms Linux server
- Enter the above URL ending in .rpm
- Save the file to your browser
- It will download it to /root/Downloads
- Open a console terminal window on the BP Forms print server
- Install the package
- cd /root/Downloads
- rpm -ivh cups-cups-pdf-2.6.1-7.el7.x86_64.rpm
- The package will be installed
- Now open your printers GUI on the console and you should see a printer called Cups-PDF

Where to the PDF documents go?
By default, CUPS-PDF places PDF documents on the users desktop. If you are root, these will be at /root/Desktop.
However, this default behavior can be modified to allow the PDF documents for all users to be sent to a folder within your bpi_forms directory back on the MultiValue server. This is the mount that Blue Prairie Forms uses to access queues, archives, templates and other information required by the print server to perform its tasks. Therefore, it is a handy place to write-back completed PDF documents produced by the BP Forms server. By writing the PDFs back to the mount (which lives on the MultiValue server), programs can be easily written to allow MultiValue programs such as emailers, etc to access these PDF documents, attach them, and to perform other tasks with them. We recommend that you create a folder on the print server at /mnt/bpi_forms/pdf. By creating it here, it will be automatically visible on the MultiValue server at /db/accts/BPIFORMS/bpi_forms/pdf. This is because /mnt/bpi_forms is a folder on the print server that points to the /db/accts/BPIFORMS/bpi_forms on the MultiValue server.
Note: The text highlighted in blue above may vary from server to server. Verify that you have the correct paths on both the MultiValue server and on the Print Server before proceeding. If your values differ, use the values appropriate for your server(s).
Note: If you created the pdf folder using the File Manager GUI on the print server, you may need to examine the ownership and permissions of that folder back on the MultiValue server. Ideally, it would be owned by your database administrator with group ownership of your database user group. Basically, it should match the ownership and permission of the other folders in the BPIFORMS account. You can use the file manager GUI on the MultiValue server to review these settings or your can use normal UNIX admin commands.
Modifying the destination folder where PDFs will be written
- Access the GUI console on the print server
- Open the 'File Manager' Utility
- Click on "Other Locations" in the left pane
- Choose "Computer"
- Choose "etc"
- Choose "cups"
- Right-Click on cups-pdf.conf then choose "copy"
- Right-Click anywhere in the whitespace in that directory and choose "paste". This will create a backup copy of your cups-pdf.conf file in case you make any mistakes
- Right-Click on cups-pdf.conf then choose "edit with text editor"
- The document will be loaded into a text editor
- Locate the section of text that looks like this:
Before:
### Key: Out
## CUPS-PDF output directory
## special qualifiers:
## ${HOME} will be expanded to the user's home directory
## ${USER} will be expanded to the user name
## Add for Fedora (see ~/.config/user-dirs.dirs)
## ${DESKTOP} will be expanded to the user's desktop directory
## in case it is an NFS export make sure it is exported without
## root_squash!
### Default: /var/spool/cups-pdf/${USER}
#Out /var/spool/cups-pdf/${USER}
Out ${DESKTOP}
- modify the line above starting with "Out" so that this block of text reads thusly:
After
### Key: Out
## CUPS-PDF output directory
## special qualifiers:
## ${HOME} will be expanded to the user's home directory
## ${USER} will be expanded to the user name
## Add for Fedora (see ~/.config/user-dirs.dirs)
## ${DESKTOP} will be expanded to the user's desktop directory
## in case it is an NFS export make sure it is exported without
## root_squash!
### Default: /var/spool/cups-pdf/${USER}
#Out /var/spool/cups-pdf/${USER}
Out /mnt/bpi_forms/pdf
- Save the cups-pdf.conf file
Verify that PDFs are landing properly in the /mnt/bpi_forms/pdf folder
- Open the Print Settings GUI on the print server console
- Click on the Cups-PDF printer (or other PDF printer if you have named it something else)
- Choose "Print Test Page" from the printer properties
- Use the File Manager GUI on the print server
- Navigate to /mnt/bpi_forms/pdf
- Verify that your test page is there
Congratulations, you can now drop rendered PDFs back onto your MultiValue server!
Getting Started
Getting my desktop ready
There are four primary tools that a developer should prepare before starting to build form printing programs and templates.
1. The Samba Share
Blue Prairie Forms installs an account in your ERP/MRP server. Here, there is a directory, usually called bpi_forms, that contains a number of subdirectories holding a variety of useful resources including the location where Open Office template files will be saved. It is useful to mount the samba share on your PC as a drive letter. This allows you to quickly and easily navigate the directory to view, edit and modify the files that BP Forms will use. Your installation technician should have left you with credentials for the samba share. If you don't have these credentials, please contact your installation technician.
2. A Copy of OpenOffice on your desktop
BP Forms uses open office template files (called .odt files) to produce final documents. Editing these template files is a large part of the effort involved in creating final documents. You'll need to develop and refine document templates as your development progresses. The most convenient way to build and edit template files is by using a copy of Open Office that is installed on your PC. Together with the Samba share, this makes it easy to simply navigate to the templates directory on the Samba share then right-click and open the .odt template file using OpenOffice.
| Note: The OpenOffice project forked a number of years ago and the fork is now called Libre Office. While Libre Offices is preferred by many users, unfortunately, there are technical issues with later version of Libre Office that can cause issues when editing templates. If you are reading this advisory, we recommend that you use Open Office rather than Libre Office on your Local PC. When Libre Office resolves its technical issues, we will remove this advisory and you will then be free to choose between Open Office and Libre Office for template editing |
3. The BP Forms API Subroutines
BP Forms provides a collection of BASIC subroutines that you will use within your print programs to produce BP Forms output. These subroutines should be visible from any account where you intend to run them. For more information about how to expose the subroutines to your chosen account, see Exposing the BPI Forms API in other accounts.
4 Your Print Program
Your print program will be altered to call BP Forms subroutines (API) to produce output. We have a number of recommended practices that will make it easier and safer to move to BP Forms printing. This topic is discussed in MultiValue Integration Guidelines
What's in the Samba Share
The samba share exposes a directory, usually called bpi_forms on your ERP/MRP system. If you mount that share as a drive letter on your PC, you'll see most of the working directories and files used by BP Forms. The image below shows the share followed by a description of the purpose for the directories.

archive
This directory is where BP Forms will place documents after they have been processed.
barcode_fonts
This is a directory where we will place fonts such as barcode fonts that you may wish to install on your PC and on the print server. This is how BP Forms is able to produce barcodes within your documents.
ini
This is a directory where certain configuration files are stored.
logs
This is a directory where logs will be stored. Each time you start a BP FORMS phantom thread, it will initialize a new log file and send its diagnostic information to the log file. It is helpful to be able to navigate to this directory and view the latest log files. The level of detail placed within these log files is determined by the level of verbosity that you define for your phantom thread(s).
printdrivers
This is a directory where you can store print drivers that you may wish to install on print servers and/or PCs. It gives a handy, central location for storing the print drivers you intend to use.
queue
While your print programs are free to write documents to any valid location and your phantom threads are free to poll from any directory, a common practice is to use the queue directory that we provide. You may create sub-directories under the queue directory. A common practice is define a sub-directory for each phantom queue and then to create symbolic links, usually named after your target printer (e.g., Q11) that points to one of the sub-directories. By using directories and links, it is possible to easily distribute print jobs from various printers to different threads. Using this technique, it is also possible to create queues for slow/low priority documents or to place security on certain sub-directories (such as a payroll printer for example).
Example Queue Directory with Symbolic links
|
bash-4.2$ pwd
/dbms/BPIFORMS/bpi_forms/queue
bash-4.2$ ls -la
total 4
drwxrwxr-x 6 bpiforms jbase 4096 Dec 5 20:10 .
drwxrwxr-x 10 bpiforms jbase 186 Jun 15 16:42 ..
drwxrwxr-x 2 bpiforms jbase 151 Dec 6 08:53 bpiform1
drwxrwxr-x 2 bpiforms jbase 6 Jun 15 16:42 bpiform2
drwxrwxr-x 2 bpiforms jbase 6 Jun 15 16:42 bpiform3
drwxrwxr-x 2 bpiforms jbase 6 Jun 15 16:42 bpiform4
lrwxrwxrwx 1 bpiforms jbase 8 Dec 3 14:31 LP -> bpiform1
lrwxrwxrwx 1 bpiforms jbase 8 Dec 5 20:10 LP0 -> bpiform1
lrwxrwxrwx 1 bpiforms jbase 8 Dec 2 19:35 LP1 -> bpiform1
lrwxrwxrwx 1 bpiforms jbase 8 Dec 2 19:35 LP10 -> bpiform1
lrwxrwxrwx 1 bpiforms jbase 8 Dec 2 19:35 LP11 -> bpiform1
lrwxrwxrwx 1 bpiforms jbase 8 Dec 2 19:35 LP12 -> bpiform1
lrwxrwxrwx 1 bpiforms jbase 8 Dec 2 19:35 LP13 -> bpiform1
|
In the example above, we have 4 directories (bpiform1, bpiform2, bpiform3, bpiform4). Then, we have symbolic links named after our printer names (e.g., LP1, LP2, LP3...). This allows your print program to be written to drop its finished document on a path such as /dbms/BPIFORM1/bpi_forms/Q1 whereby it is written to the bpiform1 directory which is the directory polled by the phantom thread bpiform1. If, later, you decided you wished to have documents on LP1 printing by the thread bpiform2, you simply need to change the symbolic link to point LP1 to bpiform2.
templates
this is where your document templates should be stored. This gives a central location where templates can be shared with print servers so that a single template location can be used by multiple print servers.
Recommended Office Versions
|
Advisory: You should NEVER attempt to use Microsoft Office to edit a template. It may appear to work initially, but MS Office does not fully support the open .odt format used by Libre Office. MS Office may inject markup into the document that can cause ODT-based word processors such as Libre Office to render unstable, or unpredictable results. Always use approved version of LibreOffice for template creation and editing. Additionaly, do not attempt ot "Import" or Copy/Paste content from MS-Word to LibreOffice. This may drag over unsupported markup that may compromise the stability and accuracy of document rendering. It is always best to create a clean .odt template using LibreOffice exclusively. |
This page will be updated periodically as we test various releases of OpenOffice and LibreOffice on various Linux releases.
We have guidance related to the release of the office suite that should be used when creating and modifying templates, and the release of the office suite that can be used on the print server.
Office for creating and modifying templates
12/4/2025: We now recommend LibreOffice (and not OpenOffice) for creating and editing your templates. LibreOffice seems to be taking the lead from OpenOffice in terms of community and developer support. Therefore, we prefer to use LibreOffice with the following caveat:
To prevent superfluous <span> tags that can break BP Forms [placeholders].We have received reports of users modifying template in LibreOffice experiencing strange behavior. BP Forms customers provided their 'strange' templates to us for examination. We found that their templates had superfluous <span> tags inserted into the middle of the BP Forms [placeholders] within the template. We traced this issue, through the Libre Office forum to this article: This documents the field reporting a bug that injects superfluous <span> tags into documents, exactly as we observed. According to the this article, the solution is to set an option in the Libre Office writer settings for the installation of LibreOffice where you will be creating or editing a template. You will find this option by calling up Libre Office then choosing menu: Tools > Options > LibreOffice Writer > Comparison and then UNCHECK (not like we have in the image below) the option which reads 'Store it when changing the document'. This is reported to prevent the injection of superfluous <span> tags.
Please use caution!
If your template is already contaminated with superfluous <span> tags, and you have no backup of the template, you can try to see if versioning is enable in your document and try to use it to 'revert' to an earlier state. However, I suspect that re-saving the document will inject the <span> tags once again. You may be faced with the unpleasant task of re-creating your template from scratch. You could try 'copy/paste' of the template into a new document with the option properly set. I am unsure if the paste would bring across the extra <span> tags... but it's worth a try. When we receive enough reports that this 'fix' from the Libre Office community allows for the safe use of Libre Office for editing templates, then we will update this page and make the use of Libre Office (which is desirable) the new official best practice. Note that this issue does not impact Libre Office installed on the print server. This is because the injection of the superfluous <span> tags only happens when editing a template, not when it is read by LibreOffice to render a document to final output. For this reason, we highly recommend using Libre Office, without concern, on your print servers. See the specific recommended release in this article. If you have the courage to test later releases, and wish to report success, please let us know and we will make note of your success (and sing your praises) in this article. |
Office for the print server
8/11/2021: We recommend LibreOffice 6.4.7.2 for the print server. We do not recommend OpenOffice of any version for the print server. We have found several issues with OpenOffice when used in headless mode on the print server whereby the OpenOffice process will stall and hang. There does not seem to be much information on the OpenOffice forums about what might be happening. LibreOffice seems to be very stable in headless mode and so we will recommend LibreOffice on the print server.
