Introducing Critical Events

Not long ago we were discussing a customer issue here in the office. It seems that three of their Windows printers had gotten out of date, perhaps behind on driver updates or related issues. Anyway, when they scheduled a job in RPM Remote Print Manager® (RPM) to print to one of these devices, RPM suffered a failure.

However, the only symptom obvious to the customer was that jobs weren’t printing after this event, and they didn’t even know there was an issue.

In our defense, the printers definitions were in such bad shape that if you selected one of them in any regular Windows application, Windows put up an error message that they were “driverless’ (which is a new one). I regret we don’t have a screenshot to share.

Nonetheless, it became instantly clear that we needed a better way of notifying about certain errors.

The premise for a critical event

In our view, what makes an event critical is that it affects the outcome of your job processing, and you should know about it.

A critical event may require some action of the administrator. Typical actions would include some kind of configuration change, such as updating the login credentials for a user account in RPM after it has been changed in the “real” world of the Windows domain.

Another critical event may warn you that job processing failed, but RPM will attempt it again and maybe it will work the next time. For instance, if RPM warns you that disk space is low, but in the interim someone manages the disk space, then a future retry may succeed.

Another critical event may warn of an exception. It may be our code failure or an unexpected error return from Windows (which happens).

Yet another critical event may warn you that you need to stop the service and perform database maintenance

How do we notify about critical events?

We used the event handling system in RPM that we use for nearly everything already. With it, we can generate an event, then create handlers in the code to do something meaningful in the context of that handler.

We setup a database handler that will write the critical event to a new database table we created, called “alerts”. If your database does not have this table for any reason, the handler will generate an event log message, so you’ll still get the critical event by opening the Event pane in the user interface.

We created an email handler that will use the alert settings to send an email if they are configured in RPM. To configure the alert settings (“from” and “to” plus others) go to the user interface, go to Configure / Notification Settings.

Please note that we take every effort to not duplicate critical events, so if a device is offline you should not get 10,000 messages about it in your inbox.

When the user interface supports critical events we plan to pop up a list of recent events. Each will have a dismiss option.

What are the current critical events?

  1. If RPM attempts to execute a user login to prepare for a device or action configured to use login credentials, and that login fails
  2. If the device tester fails a device for any reason
  3. For any number of specific printer related issues
  4. If a database operation results in an error message returned from the database, or if there is an exception processing the request; this includes updates, inserts, deletes, and queries
  5. For the following license-related errors:
    1. The product code in the license does not match the product currently running
    2. If any of the licenses return an error on open
    3. If a license trial expires
  6. If the network code detects that the MAC address has changed from the last time RPM ran
  7. Any error reported by the PCL to PDF transform process
  8. Once every 10,000 new print jobs, RPM will remind you to perform database maintenance
  9. The LPD protocol module will report bad input if it receives an LPD request that is out of bounds; this may happen when someone sends a print job directly to the LPD printer port
  10. If a transform takes an exception during job processing, that is recorded in critical events