Managing Large Client Account Lists on Distributed Sites

When using the print account selection dialogs, the user client displays a list of client accounts for the user to choose from. This account list is downloaded from the server whenever the account list is updated (i.e. new accounts added). The accounts are downloaded in a very efficient compressed format (taking approximately 10-20 bytes per account). This works very well on the vast majority of sites that have less than 10,000 accounts and are running on fast network connection.

On sites that have 10's of thousands of accounts and many workstations on remotes with bandwidth-limited WAN connections the accumulated bandwidth usage could be significant. To reduce this bandwidth usage, the clients can be configured to load the accounts from a file stored locally at each site. When the accounts are updated on the server, the file can be re-copied to each site. This distributes the client account list to all users at a site by sending the account list over the network only once, instead of one copy per workstation/client.

The process works as follows:

  1. On the server the administrator sets up a scheduled task to run the server command to generate the client accounts file as follows:

            server-command create-user-client-accounts-file
                            

    This creates the client account file in [app-path]/server/data/client/client-accounts.dat.

    For more information running server-command see the section called “Server Commands (server-command)”. See below for a sample batch file.

  2. Copy the client-accounts.dat to each of the sites running the client software. It should be copied to a shared location accessible by all users running the client (e.g. a file share).

    Tip

    If you are using Microsoft distributed file system (DFS), you can copy the client account file to the distributed share. DFS will then efficiently distribute the file to all your remote sites.

  3. Configure the user client to run with the --accounts-file "\\fileserver\path\to\client-accounts.dat" option. Clients at each site should use the accounts file stored locally at that site. The account file location can also be specified in the client's config.properties file. For more information on client configuration settings see the section called “User Client Options”.

  4. Clients then load the accounts from the file and not directly from the server. The client will only load the accounts from the server if it fails to load the accounts file (i.e. the file does not exist).

Below is an example batch script that can be scheduled to run regularly on your PaperCut NG server. This should be scheduled to run whenever your shared accounts are updated (e.g. once a day). You will need to modify the script to reflect where PaperCut NG is installed and where the client file should be distributed.

REM Batch file to create and distribute the client accounts file
        
REM Create the client account file
[app-path]\server\bin\win\server-command create-user-client-accounts-file

REM === COPY TO SERVER 1 ===
REM Copy to destination server
REM Create temp file, so clients do not load an incomplete file.
copy /y [app-path]\server\data\client-accounts.dat \\svr1\share\accounts.tmp

REM Rename the temp file the final account file name used by the user clients
move /y \\svr1\share\accounts.tmp \\svr1\share\client-accounts.dat

REM === COPY TO SERVER 2 ===
copy /y [app-path]\server\data\client-accounts.dat \\svr2\share\accounts.tmp
move /y \\svr2\share\accounts.tmp \\svr2\share\client-accounts.dat
        
            

Known limitations

There is one minor limitation of using the client account file approach. When the account selection popup appears, it will list all the defined accounts (even if the user does not have permission to charge to these accounts). The server still enforces security to ensure that users can only charge to the accounts they have permission to access.