PDF Sacrament Certificates

Tool created for Ministry Brands

Summer 2020 | Developer

Project Summary

Churches keep many records, both digital and physical, and part of our WeGather product's goal is to assist churches with that recordkeeping. One type of record that needs to be tracked is what sacraments have been performed at the church. Normally if a church admin wants to create a physical record of a sacrament being performed, they will have to fill in the certificate by hand, and may have to do create a few dozen at once for certain sacraments. To improve our product for this task, I created a tool that creates PDF certificates to make it easier for church admins to create physical certificates from information already on file. This feature is something we are still iterating on to improve quality and customizability.

Objectives

The function of the tool is to create a printable certificate generated from data that is already in the Salesforce system that the churches use. When I started this task I was new to Salesforce software development, and didn't have very much direction on how to solve the problem. Figuring out the mechanism to use to generate the certificates made up the bulk of my work for this project, and most of what followed was refinement of the tool.

Process

Salesforce has many out-of-the-box features that can be used to perform and automate various tasks, but without having experience using any of them, I had to try out a few different approaches to find out if they were feasible solutions or not. The method I decided on was to use Visualforce, a Salesforce framework similar to HTML that is normally used for building user interfaces. There is a feature that allows you to render Visualforce pages as PDFs, but the function is not very geared towards what I wanted to use it for. It took some time to work out the quirks of the rendering, such as a very limited font selection and some behavior that differed from standard HTML, but I was eventually able to get a version of the tool working with very basic functionality.

Once customers started using the initial version and we began getting some feedback, and I was able to make several changes to improve the overall quality, such as centering names on the lines they appear on, and eliminating a bug that caused certain names to appear on multiple lines, with no clear explanation as to why. Future enhancements will allow customers to do things like choose if certain information is displayed on the certificate and send notifications to churches when one of their parishioners performs a sacrament at a different church, but these are still in the works.

Challenges

The things that made this tool more difficult to create were the lack of similar features in Salesforce as well as its lackluster documentation. It was hard to figure out when certain things were and were not possible because Salesforce documentation can be confusing and unhelpful at times and is scattered across different sources. Because of that, there was a lot of trial and error where small syntax changes would cause things to either work or completely break without an obvious reason, and I spent a lot of time digging through and interpreting debug logs.

Also, because of the way the certificate is rendered using markup syntax, I had to manually hard code the position of the text in relation to the page to get them to appear on the lines of the certificate, and that created a whole lot more trial and error with miniscule adjustments.

Result

This tool makes one of the jobs of church administrators much easier to perform, saving time and effort. Building a tool from the ground up like this was something I had never done before, so I learned a lot about not only the Salesforce ecosystem I was working in, but also about diagnosing and fixing unfamiliar bugs and quirks. The first iteration of the tool was satisfactory but left a lot of room for improvement. Working over time to learn more about the functions being used and improve things in a meaningful way was very satisfying. This was one of my first times working with customer feedback to create meaningful iterations, and was a really refreshing and enjoyable experience. I'm excited to keep improving the tool I've built and look forward to building more tools and features in the future.