Friday, April 26, 2013

Cleaning up Kronos Employee Groups and Labor Level Sets

In Kronos Workforce 6, one the key components of security is the Labor Level Set when used as an Employee Group. These sets restrict the employees that a manager can see.

One issue with these sets are that they are not self-healing or self-maintaining. If you deactivate a labor level entry, it will still be included in a labor level set. While this doesn't directly cause any harm (it won't grant someone access to employees they shouldn't, for example) it can negatively impact system performance. Why include a condition that is no longer valid?

Unfortunately, there are no system-delivered reports that will identify inactive labor level entries assigned to sets. Likewise, there is no magic "cleanup" button that will just go through and remove them for you.

This became a specific pain point for me just recently. We went through a major account change in our financials system that reworked a bunch of our labor levels. This rework included inactivating a lot of old ones that are no longer used. This was coupled with a quarterly audit report of manager accounts that showed exactly what labor levels each manager had access to. Seeing a lot of old inactive departments included on the audit report caused a bit of consternation and raised a few yellow flags.

The question then became, "What is the easiest way to clean up the labor level sets?" In our case, we completely changed our naming schema, so it was pretty easy to tell the old accounts by visual inspection. However, I didn't relish the thought of manually going through hundreds and hundreds of labor level sets looking for old labor level entries to remove. Instead, I poked around in the database schema and was able to come up with a query to identify inactive entries for me.

This query was written against the 6.0 schema on SQL Server 2005. If you are on Oracle, you may have to tweak the syntax slightly. I don't believe these tables have changed in the 6.x product line, so it should work all the way up to 6.3.

select
    laboracctset.shortnm,
    laboracctset.laboracctsetid,
    llelabacctstmm.laborlevelentryid,
    laborlevelentry.laborleveldefid,
    laborlevelentry.name,
    laborlevelentry.description,
    laborlevelentry.inactive
from
    laboracctset
inner join
    llelabacctstmm
on
    laboracctset.laboracctsetid = llelabacctstmm.laboracctsetid
inner join
    laborlevelentry
on
    llelabacctstmm.laborlevelentryid = laborlevelentry.laborlevelentryid
where
    laboracctset.labacctsettypeid = 2 and
    laborlevelentry.inactive = 1
order by
    laboracctset.shortnm,
    laborlevelentry.laborleveldefid,
    laborlevelentry.name
   
A few explanations are in order. The field 'LabAcctSetTypeID' in the LaborAcctSet table specifies what type of Labor Account Set it is. Since I was just worried about Employee Groups, I specified a value of '2'. The other possible values are 1 (All Sets) and 3 (Labor Level Transfer Sets).

I plan on adding this query to my routine maintenance checks, so that we can keep our Employee Groups cleaned up. Also, a partner query that I plan on writing is one that will identify unused Labor Level Sets. I prefer to keep these types of configuration items as lean as possible. There is no reason to hold on to old, unused sets if they're no longer used by anyone.

The LORD bless you and keep you; the LORD make his face to shine upon you and be gracious to you; the LORD lift up his countenance upon you and give you peace.
Numbers 6:24-26 (ESV)

Social Media Customer Service Done Right

First, a little background.

I've been slogging through some drudgery work here at the office, reviewing user account audits and making changes as necessary. I have a dual-monitor setup on a laptop running Windows 7 Pro SP1. Well, it's a docking stations for my laptop with an external monitor, configured in dual display mode.

The external monitor is configure as my primary display, and the laptop as secondary. For processing these reports, I've had the application window open on the monitor, and the audit reports open on the laptop screen. The reports are Adobe Acrobat PDF files. My frustration is that whenever I double-click on one of the reports to open it, it has been opening on the primary monitor, even though the secondary monitor has "focus".

With most other business applications, they launch on whatever screen currently has the active window. So, basically, where ever I have Windows Explorer when I double-click the file to open, that's where the application launches. Either that, or the application remembers the last monitor it was on and opens there.

But not Acrobat Reader, for some reason. The only way I can get it to open a new PDF file on my secondary monitor is to close the document I was viewing but leave the application running. Then, when I open a new file, it opens in the active application window. But if Acrobat has to launch a new application window, it always does it on the primary monitor.

So, now that I've bored you with the technical details, on to the moral of the story.

I was pretty frustrated by this after the 15th or 20th time I had to move the Acrobat Reader application window, so I took to Twitter to vent. I fired off a quick screed and thought nothing else of it. I felt better, so my primary purpose was accomplished. I didn't even tag Adobe's primary Twitter account, mostly because I wasn't sure what it was and was too lazy to go look it up. I just used the hashtags #adobe and #acrobat in my tweet.

Imagine my surprise when I received a response to my tweet from Adobe today. They apologized for my troubles and said they would forward it on to the development team. Do I actually expect the dev team to do anything about it. Probably not. But the fact that they have a social media team actively looking for Adobe mentions, and not account mentions but just name and product mentions is impressive. And they actually responded, which is even more impressive.

I like Reader for the most part, and the PDF format is ubiquitous, especially in the business world. (Don't get me started on Flash; that's a post for another time). It's refreshing to see a major technology company not just resting on its laurels, but actively engaging the community and hopefully looking to improve the usability of their product.

Even if it's something as simple as opening on the "right" monitor.

The LORD bless you and keep you; the LORD make his face to shine upon you and be gracious to you; the LORD lift up his countenance upon you and give you peace.
Numbers 6:24-26 (ESV)

Thursday, April 18, 2013

How to be a friend

We all go through trials and tribulations in life. Some are relatively minor while others can be earth-shattering in their impact. Whether it's an external pressure or an internal struggle, having someone come alongside you and help you through it is of immeasurable worth.

Ecclesiastes 4:12 makes it abundantly clear when it says that "[a]nd though a man might prevail against one who is alone, two will withstand him--a threefold cord is not quickly broken."

This is something that we talk about in Celebrate Recovery as well. Having a support team, comprised of accountability partners and a sponsor, along with regular fellowship and attendance at the meetings is crucial to facing down our personal demons. 

Regardless of whether it's an addiction, depression, co-dependency, or being unfairly attacked and maligned, a helping hand is most helpful indeed. It's even more helpful if you can find someone that has already walked that road before you. It gives you the hope that the obstacle can be surmounted. And it gives you the wisdom of someone that's already made the mistakes, so you don't have to make them again.

Jennifer is standing in the gap with a friend. I have no idea what life circumstances her friend is going through, and it's really none of my business, but it's obvious Jennifer has been there before. For being willing to share the pain, and share your wisdom, I thank you. And please tell your friend that she has my prayers.

For others that are struggling with life, regardless of what it may be, please know that there is hope, and there is help. Reach out to someone. Be willing to admit your weakness and cry out for help. You'd be surprised how many people are willing to stand in the gap with you.

I know I was.

For those that have friends that are struggling, please know that you can help. Be a friend. Lend your ear, not your judgement. One of their biggest fears is that people will be disappointed with them, or won't understand, or they'll be angry about it. Let them vent their spleen. Let them share. Stand in the gap with them, and it will make all the difference in the world.

I know it did for me.

The LORD bless you and keep you; the LORD make his face to shine upon you and be gracious to you; the LORD lift up his countenance upon you and give you peace.
Numbers 6:24-26 (ESV)