Official Blog with How-To Articles, Tips, Tricks, and Latest News

Tag Archives: Calibration Management Software

IndySoft 9.2.5 Released

Version 9.2.5 of IndySoft has been released. Along with additional corrections and enhancements, please note the following primary items:

  • Commercial Lab Management support for Quickbooks finalized. Integration schemes are constructed as scripted operations through our services group. Please contact your sales representative to begin the process for your Quickbooks implementation if desired.
  • Enhanced labeling for custom search columns that follow company label schemes
  • Custom field captions based on company selection now supported in filterbox routines
  • Custom field captions based on tracking statuses now supported in filterbox routines
  • Email preview dialogs enhanced with support for copy and paste across address fields
  • Ability to customize the delivery address for test emails sent from workstation setup
  •  Uncertainty calculations (when using the uncertainty upgrade) now supported in ganged calibration routines
  • Ability to add new employees on the fly in employee group operations
  • Alternate address contacts can now be selected from a pulldown list
  • Enhancements to, and finalization of, NT Authentication, LDAP/AD, and SSO routines. Integration schemes are constructed as scripted operations through our services group. Please contact your sales representative to begin the process for implementation if desired.

Customers with valid IndySoft support contracts can download the latest release via my.indysoft.com and review change lists with more detailed information.

Version 9 SP2 License Pooling

License Pooling – 9.2 Standout Feature

With the release of 9.2, IndySoft now allows for license pooling scenarios. Our long-standing and popular concurrent licensing model per database is still in place, this only extends the functionality slightly by allowing customers to enforce some rules on exactly how the licenses in a database environment are distributed within their organization.

Rewind: Concurrent Licensing Explained

Let’s take a step back and review the existing license structure and how it works. Concurrent licensing is based on the idea that there is a peak number of simultaneous users your system will likely support at any given point in time during the business day. With concurrent licensing, you can install your software on as many networked computers pointing to your licensed database as you desire. You can also add as many users as you want. Users come and go throughout the day but once all allocated licenses are in use, additional users attempting to access the system are told to try again later after licenses are freed up in the system.

Timezones, Management, and Divisions

One of the largest benefits to concurrent licensing is that in multi-shift, multi-timezone, or multi-country operations, you experience a great deal of license re-use. If your operations are not 24/7 and are national/international, licenses are freed up as countries, shifts, etc change, and get repurposed by those coming on-shift.

On the other side of concurrent licensing, three common side effects of concurrent licensing exist. They are license-squatting, divisional quantity needs, and emergent issue access.

License Squatters

IndySoft combats license-squatting by incorporating session timeout controls as part of the deployment scheme. System administrators can set a maximum idle time for the system before the user is considered absent, and they will be logged out of the software, freeing their license for use by others.

The Need to Own Fixed Licenses

In some rollouts there is simply no way to calculate or plan for your maximum license usage. Imagine a rollout where you have 25 licenses and expect no more than 20 operators on a manufacturing floor and 5 users in the lab using the system at the same time. If more than 20 operators happen to access the system at once, those additional users will consume any unused licenses in your pool of 25 licenses. So if there is a boost in usage, some of those 5 lab users may find themselves without access to the system. If you consider your 5 lab users as more crucial than your 20 shop floor operators, this causes problems.

The other issue in divisional quantity needs comes in with multi-facility rollouts. If you expect 5 max users at Facility A and 5 at Facility B, you purchase 10 concurrent licenses. Facility A starts to discover more features in the software and usage/access rises. Now Facility A is robbing Facility B of licensing and Facility B productivity is affected because less staff are not able to log in and work.

Emergent Issue Access

The final potential problem with concurrent usage licensing deals with critical needs. If all of your 10 concurrent licenses are in use and a manager, or system admin, needs access to address a dire need you can only boot someone through a system-level utility, or search out users independently and ask them to log out while you gain access to use the system. In either case, you are affecting productivity in one way or another.

License Pooling

The answer to all of these scenarios comes with the 9.2 License Pooling features and it addresses all of the previously mentioned scenarios. With pooling you can:

  • Setup exclusive access for licenses
  • Assign rights for users to one or more pool groups
  • Leave spare licenses in a global pool for others not in the pool

Let’s walk through the new features for an overview on the functionality.

Adding License Pools

License pool allocation begins within the IndySoft Registration Utility, the same application used for adding your licensed products. Open IndySoftReg.exe and you will find an interface similar to the one below.

Clicking the plus icon next to IndySoft Calibration Management, for which we have 8 concurrent licenses, we can see that we currently have no license pools created for the product. This means that up to 8 of our total users have access to the system with no pool restrictions whatsoever.

The registration utility with no license pools created

The registration utility with no license pools created

 

Clicking the Edit Pool Details button will launch the following dialog.

The license pool window with no allocated pools

The license pool window with no allocated pools

From this screen we can begin to setup the pools for users. In the top right corner you will see your Total License count and as pools are constructed, the total number of licenses allocated to pools.

Clicking new allows us to create a pool. Let’s call this pool ADMIN, set the allocated licenses to 1, set Exclusive to checked, and then click OK. This pool will allow us to setup a dedicated ADMIN level account which keeps system owners from being locked out of the system due to max concurrent usage limits.

Creating the ADMIN license pool

Creating the ADMIN license pool

We now create a set of alternate pools based on our requirements. In this example we are effectively locking down two licenses for exclusive access to department 123 then creating a non-exclusive pools for our Cal and Maintenance Techs, leaving 1 license with no assignment to any pool. We leave one license “free” which simply allows any user not in a pool to gain access to a license.

Our final list of license pools

Our final list of license pools

After completing the pool allocation we click ok and our licensing pools are shown with the associated product.

Registered licenses with license pooling in place

Registered licenses with license pooling in place

Now we exit the registration utility.

Assigning Users to Pools

Now we launch into IndySoft and click the link to enter Profile Manager so we can assign our users to our pools. Our first pool was called ADMIN and was set for exclusive access. Double clicking one of our System Admins from the users list will load the edit user interface.

A user with no licensing pools assigned

A user with no licensing pools assigned

In the lower portion of the screen we find the Registration Pools tab. Clicking the New icon will prompt us to associate this user with a license pool. For now we’ll select ADMIN, click OK, and return to the Registration Pools tab.

Adding the user to the admin pool

Adding the user to the admin pool

Now at this point we have set one system admin to be able to have a license gaining him access at any time. If we add a second user to that pool using their user Registration Pools screen what we have essentially done is created a concurrent ADMIN licensing pool of 2 users. If we want exclusive access to the pool, we should only add the one user and select the “Only Allow Login Using the Pool(s) Below” option.

Using the same method we can now select other users from Profile Manager and add them to one or more license pools. Adding a user to more than one pool, then setting the pool priority is essentially creating a cascading approach to pool assignment. For instance as a user logs in if his 1st priority pool is in the Cal Tech group but those are all in use and he also has 2nd priority access to the Maintenance group, his license will be pulled from the maintenance pool.

Adding a user to more than one pool with priorities

Adding a user to more than one pool with priorities

We continue this process, adding users to pools as required based on our needs. Based on our pool example after additionally configuring some users, the following best explains the pool operations.

 

License Pool Usage Example

License Pool Usage Example

As you can see, License pooling provides an extremely flexible way to still gain all the benefits of concurrent licensing while still offering a practical approach to locking licenses for specific business needs. Please feel free to explore this new feature and contact your sales representative if you would like additional information on IndySoft’s training programs or consultation/services related to making the most out of your IndySoft system.

 

 

Security Profile Comparison Reports

The IndySoft product line has one of the most in-depth security and profile management systems available for an asset management system. Out of the box there are over 2750 security checkpoints that can be defined per profile and that number rises as you grow the product through your custom configuration efforts. Security checkpoints can range from allowing or preventing access to various utilities in the software all the way down to defining required fields to be completed within the asset event model.

As you might imagine with such a robust security system reviews of security roles can be a daunting task. Sometimes reviewing each profile one at a time just doesn’t cut it. What you need is a way to compare all of your security settings side by side, across all profiles. That brings us to our latest post… the security profile comparison report.

Example Preview of the Security Profile Comparison Report

Example Preview of the Security Profile Comparison Report

What the Security Profile Comparison Reports allow you to do is view every setting for every profile side by side within each security group allowing for instantaneous visual confirmation of all/none or mixed deny/allow settings in your security rules. This isn’t a very advanced report but it has a lot of components so we’re providing you with a download link to the report and only an explanation of the report construction.

Keep in mind the provided example report has only been written for and tested on a SQL Server platform. Firebird and Oracle users may need to retool the SQL aliases and joins to meet their target platforms.

Because there are so many settings we have opted to split the report up into three logical reports. The base report will give us all security settings short of events and schedules, while the latter two are dedicated to schedule and event related actions. This post will focus on contents the base report. The difference between the construction of the three reports is nothing more than filtering the SQL results.

Navigating to the Data tab you’ll find the data pipeline we have constructed. This is a custom SQL query which cannot be generated with the built-in query tools provided in PrintBuilder. The code is below:

SELECT
A2.DESCRIPTION AS 'GROUP',
A3.SECURITY_DESCRIPTION AS 'DESCRIPTION',
A.PROFILE AS 'PROFILE1',
A3.SECURITY_VALUE AS 'VALUE1',
B.PROFILE AS 'PROFILE2',
B3.SECURITY_VALUE AS 'VALUE2',
C.PROFILE AS 'PROFILE3',
C3.SECURITY_VALUE AS 'VALUE3',
D.PROFILE AS 'PROFILE4',
D3.SECURITY_VALUE AS 'VALUE4',
E.PROFILE AS 'PROFILE5',
E3.SECURITY_VALUE AS 'VALUE5',
F.PROFILE AS 'PROFILE6',
F3.SECURITY_VALUE AS 'VALUE6',
G.PROFILE AS 'PROFILE7',
G3.SECURITY_VALUE AS 'VALUE7',
H.PROFILE AS 'PROFILE8',
H3.SECURITY_VALUE AS 'VALUE8'
FROM
PROFILE A
LEFT OUTER JOIN SECCAT A2 ON A2.PROFILE = A.PROFILE
LEFT OUTER JOIN SECITEM A3 ON A3.PROFILE = A2.PROFILE AND A3.SECURITY_CATEGORY=A2.SECURITY_CATEGORY,
PROFILE B
LEFT OUTER JOIN SECCAT B2 ON B2.PROFILE = B.PROFILE
LEFT OUTER JOIN SECITEM B3 ON B3.PROFILE = B2.PROFILE AND B3.SECURITY_CATEGORY=B2.SECURITY_CATEGORY,
PROFILE C
LEFT OUTER JOIN SECCAT C2 ON C2.PROFILE = C.PROFILE
LEFT OUTER JOIN SECITEM C3 ON C3.PROFILE = C2.PROFILE AND C3.SECURITY_CATEGORY=C2.SECURITY_CATEGORY,
PROFILE D
LEFT OUTER JOIN SECCAT D2 ON D2.PROFILE = D.PROFILE
LEFT OUTER JOIN SECITEM D3 ON D3.PROFILE = D2.PROFILE AND D3.SECURITY_CATEGORY=D2.SECURITY_CATEGORY,
PROFILE E
LEFT OUTER JOIN SECCAT E2 ON E2.PROFILE = E.PROFILE
LEFT OUTER JOIN SECITEM E3 ON E3.PROFILE = E2.PROFILE AND E3.SECURITY_CATEGORY=E2.SECURITY_CATEGORY,
PROFILE F
LEFT OUTER JOIN SECCAT F2 ON F2.PROFILE = F.PROFILE
LEFT OUTER JOIN SECITEM F3 ON F3.PROFILE = F2.PROFILE AND F3.SECURITY_CATEGORY=F2.SECURITY_CATEGORY,
PROFILE G
LEFT OUTER JOIN SECCAT G2 ON G2.PROFILE = G.PROFILE
LEFT OUTER JOIN SECITEM G3 ON G3.PROFILE = G2.PROFILE AND G3.SECURITY_CATEGORY=G2.SECURITY_CATEGORY,
PROFILE H
LEFT OUTER JOIN SECCAT H2 ON H2.PROFILE = H.PROFILE
LEFT OUTER JOIN SECITEM H3 ON H3.PROFILE = H2.PROFILE AND H3.SECURITY_CATEGORY=H2.SECURITY_CATEGORY
WHERE
A.PROFILE = 'SYSTEM ADMINISTRATOR' AND
B.PROFILE = 'Power User' AND
C.PROFILE = 'Standard User' AND
D.PROFILE = 'Reports Only' AND
E.PROFILE = 'AddYourProfile' AND
F.PROFILE = 'AddYourProfile' AND
G.PROFILE = 'AddYourProfile' AND
H.PROFILE = 'AddYourProfile' AND
B2.SECURITY_CATEGORY = A2.SECURITY_CATEGORY AND
B3.SECURITY_ITEM = A3.SECURITY_ITEM AND
C2.SECURITY_CATEGORY = A2.SECURITY_CATEGORY AND
C3.SECURITY_ITEM = A3.SECURITY_ITEM AND
D2.SECURITY_CATEGORY = A2.SECURITY_CATEGORY AND
D3.SECURITY_ITEM = A3.SECURITY_ITEM AND
E2.SECURITY_CATEGORY = A2.SECURITY_CATEGORY AND
E3.SECURITY_ITEM = A3.SECURITY_ITEM AND
F2.SECURITY_CATEGORY = A2.SECURITY_CATEGORY AND
F3.SECURITY_ITEM = A3.SECURITY_ITEM AND
G2.SECURITY_CATEGORY = A2.SECURITY_CATEGORY AND
G3.SECURITY_ITEM = A3.SECURITY_ITEM AND
H2.SECURITY_CATEGORY = A2.SECURITY_CATEGORY AND
H3.SECURITY_ITEM = A3.SECURITY_ITEM AND
A2.DESCRIPTION NOT LIKE 'Event Settings%' AND
A2.DESCRIPTION NOT LIKE 'Schedule Settings%'
ORDER BY
A2.SECURITY_CATEGORY, A3.SECURITY_ITEM;

Each profile (this example report has placeholders 8) is setup as an alias and retrieves all the settings per profile in order of category and security item. Additional items in the WHERE clause rule out any settings related to events or schedules. The latter part of the WHERE clause is the only deviation between the three individual reports. Removing those last two WHERE clause items in the base report will create one master report for all security settings.

The Report Header with Legend

The Report Header with Legend

The main report window in the design view shows a legend for how to interpret the resulting data in the report. All green on a row means every profile has that option enabled. All grey means every profile has that option disabled. A mix of red and green reflects enabled/disabled options across the profiles.

Subreport Layout with Header

Subreport Layout with Header

The subreport for the PROFILE pipeline shows a series of rotated labels for each profile in the report along with a security item legend/indicator and a series of colored squares.

Stacked Squares Used to Visualize Settings

Stacked Squares Used to Visualize Settings

The colored squares are actually stacked on top of each other and shown/hidden based on the data provided. We could have gotten fancy with a simpler design setting the colors dynamically but this method works just as easily for this simple report. The code to show or hide the colored squares along with altering the icon to reflect the type of security item you are viewing is located in the detailbeforeprint event for the Profile detail band and is shown below:

procedure detailbeforeprint;
begin
 
p1checked.visible := false;
p1unchecked.visible := false;
p1unmatched.visible := false;
p2checked.visible := false;
p2unchecked.visible := false;
p2unmatched.visible := false;
p3checked.visible := false;
p3unchecked.visible := false;
p3unmatched.visible := false;
p4checked.visible := false;
p4unchecked.visible := false;
p4unmatched.visible := false;
p5checked.visible := false;
p5unchecked.visible := false;
p5unmatched.visible := false;
p6checked.visible := false;
p6unchecked.visible := false;
p6unmatched.visible := false;
p7checked.visible := false;
p7unchecked.visible := false;
p7unmatched.visible := false;
p8checked.visible := false;
p8unchecked.visible := false;
p8unmatched.visible := false;
icoAllow.visible := false;
icoBlock.visible := false;
icoUnknown.visible := false;
icoRequire.visible := false;
 
if (Copy(PROFILE['DESCRIPTION'],1,5) = 'Allow') then
begin
  icoAllow.visible := true;
end
else if (Copy(PROFILE['DESCRIPTION'],1,5) = 'Block') then
begin
  icoBlock.visible := true;
end
else if (Pos('Require',PROFILE['DESCRIPTION']) <> 0) then
begin
  icoRequire.visible := true;
end
else
begin
  icoUnknown.visible := true;
end;
 
if ((PROFILE['VALUE1'] = 1) AND
(PROFILE['VALUE2'] = 1) AND
(PROFILE['VALUE3'] = 1) AND
(PROFILE['VALUE4'] = 1) AND
(PROFILE['VALUE5'] = 1) AND
(PROFILE['VALUE6'] = 1) AND
(PROFILE['VALUE7'] = 1) AND
(PROFILE['VALUE8'] = 1)
) then
begin
  p1checked.visible := true;
  p2checked.visible := true;
  p3checked.visible := true;
  p4checked.visible := true;
  p5checked.visible := true;
  p6checked.visible := true;
  p7checked.visible := true;
  p8checked.visible := true;
end
else if ((PROFILE['VALUE1'] = 0) AND
(PROFILE['VALUE2'] = 0) AND
(PROFILE['VALUE3'] = 0) AND
(PROFILE['VALUE4'] = 0) AND
(PROFILE['VALUE5'] = 0) AND
(PROFILE['VALUE6'] = 0) AND
(PROFILE['VALUE7'] = 0) AND
(PROFILE['VALUE8'] = 0)
) then
begin
  p1unchecked.visible := true;
  p2unchecked.visible := true;
  p3unchecked.visible := true;
  p4unchecked.visible := true;
  p5unchecked.visible := true;
  p6unchecked.visible := true;
  p7unchecked.visible := true;
  p8unchecked.visible := true;
end
else
begin
if (PROFILE['VALUE1'] = 0) then p1unmatched.visible := true else p1checked.visible := true;
if (PROFILE['VALUE2'] = 0) then p2unmatched.visible := true else p2checked.visible := true;
if (PROFILE['VALUE3'] = 0) then p3unmatched.visible := true else p3checked.visible := true;
if (PROFILE['VALUE4'] = 0) then p4unmatched.visible := true else p4checked.visible := true;
if (PROFILE['VALUE5'] = 0) then p5unmatched.visible := true else p5checked.visible := true;
if (PROFILE['VALUE6'] = 0) then p6unmatched.visible := true else p6checked.visible := true;
if (PROFILE['VALUE7'] = 0) then p7unmatched.visible := true else p7checked.visible := true;
if (PROFILE['VALUE8'] = 0) then p8unmatched.visible := true else p8checked.visible := true;
 
end;
end;

This report is setup with 8 default security profiles. You may have more or less. To modify the report to suit your needs you will need to:

  1. add your profile names in the SQL, adding or removing related aliases and joins depending on your profile count
  2. modify the rotated labels to reflect the profile names you use in order of your aliases in the SQL
  3. add or remove additional squares in the report results and modify the code accordingly

Clicking the preview tab results in a very easy to read and understand report which can be used in verification/validation efforts of your IndySoft profiles.

Downloads

The following link provides access to the IndySoft version 9.1.12 custom reports for SQL Server. Unzip and import into your Printbuilder custom reports group to modify as required.

IndySoft-9.1.12-SecurityProfileComparisonReportsSQL

 

End Of Month (EOM) and Alternate Due Date Calculations

We often are asked by our users “Can our software support End of the Month scheduling for only certain companies within the database?” The answer is yes and it can be easily be set up in a just a few clicks.

Accomplishing this task only takes a few modifications to the configuration of your calibration event (or other events that update your schedules) along with setting up a systemwide company custom checkbox. You will be modifying this within the event configuration system because completion of an event is what drives a schedule update.

The Company Setup

The first thing we will do is a setup a field at the company level so we can identify who should get End of the Month Scheduling and who should not. To accomplish this, open up Systemwide Preferences and proceed to the User Defined Labels tab. You will actually see a handful of fields that can be customized in any number of ways. We generally suggest you use a Company User Defined Status Box for this scenario. Once you are on the Company User Defined Labels tab, find an unused custom status box and give it a label. In our example we have simply called it EOM Scheduling.

SystemWide Preferences and the Checkbox Labels

SystemWide Preferences and the Checkbox Labels

Now that you have set up the checkbox at the company level check the box for the companies in your database that require End of the Month Scheduling. This is done by going to Add/Edit Companies, selecting a company, and then proceeding to the Custom Info tab. From there you will see your new EOM Scheduling checkbox. Go ahead and check that box for any customers who desire this type of scheduling.

Setting the EOM Checkbox

Setting the EOM Checkbox

Modifying Your Calibration Event

Next, we need to modify your Calibration event. So for part 2 of setting this up you will need to open up Workflow Configuration and proceed to Step 7 (schedule updates) in your Calibration event. Once you have that open you should see an existing rule for updating your calibration schedules upon completion of the calibration event. Leave that one as-is for the moment as we are now going to create an additional calibration schedule update rule. Click the new icon on Step 7. That will bring up a new window where you can create an additional schedule update rule.

Creating a New Schedule Update Rule

Creating a New Schedule Update Rule

From here, go ahead and select the Calibration schedule type in the dropdown list. Then uncheck the ‘Use System-Wide Due Date Options’ checkbox. Once you uncheck that, go ahead and select ‘ok’ at the bottom.

Creating The Calibration Schedule Update Rule

Creating The Calibration Schedule Update Rule

Now that you have done that, immediately open up your newly created schedule update rule by double-clicking it. This time it will allow you to click on the calendar right beside the Use System-Wide Due Date Options checkbox. That will bring up a new window and in the dropdown field called ‘Date Adjustment.’

Selecting the Event Schedule Option

Selecting the Event Schedule Option

Go ahead and select End of Month and click ok.

Selecting the End of Month Option

Selecting the End of Month Option

You only have one more thing to do which is tell the software when to apply this new rule. That is where the right side of the schedule update comes in handy. On the right side of all schedule update rules we allow you to create an Equipment Filter to identify when this particular rule should be applied. So in the equipment rule section, select to add a condition and look for your new Company custom field. In our example case, it is called Company (Eom Scheduling) and we configure the rule to require that field is checked.

Setting the Schedule Update Filter Rule

Setting the Schedule Update Filter Rule

Now click OK to close the new schedule update rule. Using the same knowledge you just gained about editing schedule rules, open the original update rule that was found in your calibration event and simply set the equipment rule to Company (EOM Scheduling) is Unchecked then click OK. Performing this step ensures the first rule is ignored if EOM is unchecked while the second rule will pick up the EOM checkbox for companies preferring EOM scheduling.

That’s it. The only thing remaining is going to be a save the event then refresh your new event settings (right click in the IndySoft header area and choose reload all settings). And of course going back and selecting any additional companies that want EOM Scheduling. Once you start performing calibrations for equipment that belongs to companies where the systemwide checkbox is checked the due dates will automatically be adjusted to the last day of the calendar month. Since schedule update rules are filter based and rely upon company, equipment, or schedule data, you can easily expand upon the rules to apply EOM scheduling to companies, locations, types of assets, and much more.

Conclusion

Hopefully this explained some of the flexible configuration options of how your events can manipulate your schedules in a number of different ways when the rules are used in combination with a targeted equipment filter.

There are also several other rules within the Workflow Configuration wizard that can be combined with Equipment Filters to execute other functionality like conditional based updates, reminder messages for certain types of equipment or customers and much more. Please feel free to explore and contact your sales representative if you would like additional information on IndySoft’s training programs that can help optimize your efficiency and reduce errors.

Optimizing Calibration Certificate Templates

a.k.a: One Incredibly Obsessive Post about Certificate Quality and File Sizes

The digital world offers us countless ways to improve efficiency and communication while also gaining valuable real estate in the form of office space. The ability to store and transfer digital certificates brings an end to the decades-old practice of maintaining walls of filing cabinets while providing almost instant access to nearly any certificate from the past with just a few clicks of a mouse. One common concern about digital storage is hard drive space. The next is making the certificate look just as good as the days when we printed them off on the laser printer on our high-end certificate paper.

If your calibration certificate templates are not optimized in the design phase you may eventually find your filing cabinets replaced by an ever growing hard drive on your server. To be clear, growth of a database can be a positive sign. Uncontrolled growth however is what we need to keep an eye on. Today’s post is an in-depth tutorial for ensuring your calibration certificate template sizes don’t get out of hand. This post is intended to educate you on what you can do to have a great looking calibration certificate templates without a lot of storage space.

Rendered Documents vs. Merged Views

IndySoft standardizes on creation of a fixed PDF certificate which is then stored in the database alongside the historical calibration record and associated data. IndySoft chose to store final certificates as fixed PDFs in the database for the reason of nearly-absolute risk avoidance. Short of a catastrophic event against your database (you do back up your database including rotation and offsite copies right?) creation and direct storage offers protection against manipulation, data loss and file corruption while maintaining maximum portability options.

I will occasionally see queries regarding concerns about database file size… sometimes in relation to database speed. To quickly put this to rest, database size has little to nothing to do with speed on a properly constructed and indexed database. To be even more specific, certificate size has no bearing on the database speed either. Why you should care about file size though is simply to minimize download times for email and web based delivery while keeping your drive growth at a reasonable rate parallel to your ongoing business needs.

Before We Begin…

Pick any asset and a related calibration from your database that best represents your most common certificate. Right mouse click that certificate and choose to save to file.

Saving a Certificate To File

Saving a Certificate To File

 

Right mouse click the file from the OS then select properties.

Selecting File Properties

Selecting File Properties

 

Note the size of the file on disc.

Viewing The File Size of The Certificate of Calibration

Viewing The File Size of The Certificate of Calibration

 

Is it 30k? 100k? 500k? Is it over a Megabyte (egads!)? There is no absolute on what an appropriate size for a certificate should be but generally speaking a one-page certificate with a company logo and no additional images falls within the 22-50k file size range. If it’s 100k or more, or you are within the limits but your images look “rough” you can probably benefit from this post.

A Quick Lesson in Image Formats

Let’s start by taking a look at the all-important company logo that appears on every certificate. Here is the one I knocked out for this tutorial.

We Do Good Work... Give Us A Ring

We Do Good Work… Give Us A Ring

 

The biggest things I see done incorrectly when it comes to logos and certificates are either (a) importing an inappropriately huge image then stretching it down to the desired print size or (b) importing some random logo snagged off the corporate website. Most often the logo either comes from a graphic designer who has provided letterhead or business cards and has given you a resolution generally reserved for production level print jobs or you just snagged your image from a Google Image search.

A Quick Lesson on Image Resolution

Generally speaking, a fairly good image will be between 150 and 600 dpi (dots per inch) and be the exact printed size as required for the document. The choice between 150 and 600 dpi is strictly a matter of clarity in the final printed result. Take a look at these image samples:

Examples of How Resolution Influences Clarity

Examples of How Resolution Influences Clarity

 

These logos are three inches in width. As you can see, each time we increase the dpi (or resolution as it is also called) of the image, the clarity increases. What you are looking to accomplish is the usage of a logo at a dpi that strikes a balance between clarity on screen, clarity in print, and acceptable file size given your volume of calibrations.

Image Format Selection

Another factor that affects clarity of the logo, or other images in our digital documents, is the file format. IndySoft Printbuilder supports all the common file formats such as GIF, PNG, JPG, BMP, TIF and a few vector formats as well.

There are many layers to this discussion we’ll skip but here are the basics you really need to know about the various formats. GIF will limit your color ranges while providing smaller files via a “lossless” compression routine, BMP and TIF will generally be your largest file types, and JPG can offer a great balance but if overly compressed will show glitches in your final document.

The Overly Compressed Image On Right Is Blurry

The Overly Compressed Image On Right Is Blurry

 

That leaves us with PNG and my choice for this article. If I didn’t have a PNG option I would use a JPG with little to no compression. PNG offers the range and clarity of a TIF or BMP while having the “lossless” compression of a GIF. In other words, it offers the best options between clarity and size.

What about Color Depth or Bits?

Color Depth or Bits on BMP, PNG, TIF and JPG really only effect image size as it pertains to certs. You don’t gain much by using higher bit images. Generally speaking a 16 or 24 bit image is typical and probably what most editing software is going to give you by default so you shouldn’t have to think about that too much. 8 bit images will probably look granular, while 32 bit images are overkill.

Selecting the Starting Image

Our 300 dpi 3 inch Wide PNG Logo

Our 300 dpi 3 inch Wide PNG Logo

 

I believe a 300 dpi PNG is a great middle ground for images and what I’m using for this tutorial. It will not be too large, compress well, and will also look great on screen and a laser print. You may find 150 dpi works just as well but the final choice is up to you. I know this image was designed at 300 dpi and is 3 inches by 0.84 inches. That measurement will be important later.

Adding Your Logo to the Certificate

Before we go into the editor let’s setup the environment so we can have a live preview in our document design. Select an asset record with some calibration history then right mouse click a calibration event. Select the option to “Use This Event When Designing In Printbuilder.”

Selecting an Existing Event To Use In Printbuilder Design Mode

Selecting an Existing Event To Use In Printbuilder Design Mode

 

Now open Printbuilder from the IndySoft Home view and navigate to the certificate templates. Launch the editor for the certificate template by double-clicking it.

Launching The Certificate Template Editor

Launching The Certificate Template Editor

 

We’ll want to place the image in the certificate header so start by pulling down the Header band at the top of the template until it opens enough space for the height of your intended logo.

Sizing The Header Region For The Logo

Sizing The Header Region For The Logo

 

Now click the image control on the design tab followed by a single click in the header section of the certificate to add the image control to the document.

Adding The Image Control

Adding The Image Control

 

Right mouse click the image control and make sure Auto Size, Maintain Aspect Ratio, and Stretch are enabled then click the Picture … option. A dialog will appear for you to browse and select your image for import. Browse to select the picture then click Open to load the image.

Setting The Image Control Options

Setting The Image Control Options

 

You’ll notice the image is huge. This is because we are bringing a 300 dpi image into a 96 dpi environment. It has just scaled to meet the screen dpi. Not to worry. With the image selected look at the properties for the Layout Height and Width items. Set the width to 3 inches and height to 0.84 inches (or whatever your image happens to be.)

Manually Resizing The Image

Manually Resizing The Image

 

You should now be looking at the image at the appropriate size.

Properly Sized Image In The Header

Properly Sized Image In The Header

 

Click the preview tab to take a look at your newly branded certificate. At this point I need to state that you should not trust what you see on screen… especially in the PrintBuilder preview window. Right now this image looks jagged. Things will be better when we print, or “render” the final certificate to file, but only after we optimize the output.

Setting the Output Options

Now we are going to look at some of the settings that let us control the final quality and file size of the PDF. If your report tree is not visible in PrintBuilder, enable it by selecting View ->Toolbars -> Report Tree from the top menu.

Viewing The Report Tree

Viewing The Report Tree

 

Now select the topmost item in the tree labeled Report. The properties window we used when setting the image dimensions will now show the properties for our certificate design. Scroll down to the Output – File group and open the PDFSettings properties by clicking the plus sign.

Selecting The Report Node and PDF Properties

Selecting The Report Node and PDF Properties

 

The primary settings we are interested in here are CompressionLevel, ImageCompressionLevel, and ScaleImages. You will want to turn ScaleImages off by unchecking it. Leaving this option on will default all images to the display resolution of 96 dpi and just make things look awful.

Turning Off The Scale Images Option

Turning Off The Scale Images Option

 

CompressionLevel primarily concerns compression of the text and various objects (shapes, etc) in the document. Most of my experiments have left me believing that setting this to clMax is a safe bet. It may add a slight overhead to the time spent generating the document (we’re talking milliseconds) compared to clDefault or clFastest but it will be the right call if you are looking for the smallest filesize possible. As a gut check, my experiments for a certificate using clNone, clFastest, clDefault, and clMax left me with file sizes of 62.9KB, 46.5KB, 46.0KB, and 45.9KB.

Setting The Compression Level To Max

Setting The Compression Level To Max

 

Now we come to the ImageCompressionLevel option. This is likely defaulted to 10 and changing it depends on a few things. First, if you recall I mentioned earlier that if I was using JPG images that I would use uncompressed or lightly compressed JPGs. Here is why: Printbuilder converts and compresses your images when embedding them into the PDF and much like making a copy of a copy leads to degradation, compressing a compressed image format does the exact same thing. With JPG images you are going to want to play with this setting and test a few PDF results.

Setting The Image Compression Level

Setting The Image Compression Level

 

For all other image formats the rule of thumb is that the more complicated the image and/or the more colors in the image, the less compression you can use. For example with my very simple logo I can apply an image compression level of 75 before I start to see any of the edge blurriness or image artifacts appear. Every image is going to be different so from here your process is to set an ImageCompressionLevel, save the template, then go to File->Print To File -> Print To PDF.

You will be prompted for a filename. I usually save the file as CertMax10, CertFastest50, etc where I am stating the compression level and image compression levels so I can easily compare results and recall what the settings were for  the clear winners in the tests. You will also want to take the resulting doc and print it to a printer for comparison in your selection process. Somewhere in between these tests you’ll hit on that perfect combination of screen and print quality with a file size you can accept for years to come. Once you find that combo simply click save and exit printbuilder.

Conclusion

This post was all about getting the most out of your digital cert generation. You learned how to pick an appropriate file size and format for your images, how to load the images and size them in your document, and finally how to optimize the output of your final PDF. We hope this post was beneficial and look forward to your feedback or questions through support or our service channels.

 

Facebook Twitter LinkedIn

IndySoft Corporation Address :: 212 Adley Way Greenville, SC 29607
email sales@indysoft.com :: phone (864) 627-8858 option 1 or ask to speak to sales

copyright © 2013 IndySoft Corporation
privacy policy / terms of use