Atlassian Certified Professional Administrator

university_icon_ribbonIn the summer of 2015, I joined a group of other Atlassian Experts in San Francisco to design the blueprint for a JIRA Administrator certification, and I went back a month or two later to work on the blueprint for a Confluence Administrator certification. Atlassian has now announced these certifications, which means I can finally write a bit about them.

Continue reading

Upgrading to Confluence 3.1 was rougher than I expected

I went in early to work today to upgrade our Confluence server. I had been running the latest version on a test server with great success, and we had a lot of really exciting changes to roll out. Ever since I first set up our wiki around 2.5+ years ago, no one from our West Plains campus could log in (their accounts are in a separate Active Directory), and only a select number of AD groups could be used for permissions sets. What was worse, the operating system it was running on (the first iteration of Ubuntu JeOS) was pretty much broken and couldn’t be updated.

So we were moving to Windows Server 2008 (at my boss’s request–migrating from Ubuntu about broke my heart), and we also transitioned from a locally hosted PostgreSQL database to a remotely hosted Microsoft SQL Server. Lots and lots of changes, all to the good.

Instead of the hour I had an anticipated (moving virtual machines on our VM server, swapping MAC addresses, renaming the machines, voila), it ended up taking eight hours and forty-five minutes. Random issue after random issue got in my way, bugs that could neither be reproduced nor explained cropped up, and I strained against my torment without a break and with great intensity. First it was database errors, so I had the web DB guy drop all the tables and started anew. Then it was a Java error, then an unlabeled error, then backup restoration errors, with each error taking 30-60 minutes each to overcome. Once everything was OK, we discovered that all the attachments were broken, and after a frantic hour or so including some frenzied communications with Atlassian, it dawned on me to just copy the attachments over from the old server. If you knew how complicated attachments are in Confluence, you’d understand why I didn’t do that to begin with.

About fifteen minutes before I was going to leave, I started getting emails that people couldn’t see the content they needed. Permissions were broken, and that took another hour to figure out. A helpful person who runs our Active Directory was on the phone with me the whole time, and between us we were able to narrow down the issue: From within Confluence, I could see the permissions groups, but none of the members of those groups. AD groups can be created as Local Domain or as Universal, and Confluence 3.1 requires the latter. The former is the default, though, and most every group created before he started (about 2 years ago) was set to the default. Unfortunately, this included all of the permissions groups we needed. A quick fix on his end, but it took us a while to figure out what was going on.

I got no confused, frustrated, or angry emails on the way home, and five hours later I’ve had nothing but a few Thank You notes for the upgrade, so I’m feeling pretty good about it. Unfortunately, I was also exhausted and ended up having to take a 3-4 hour nap, and my throat’s sore, and my sinuses are all stuffed up. Hopefully sleep will cure what ails me.

Walking in the Footsteps of Giants

I have a project at work I have been dreading. Our current wiki is running on Ubuntu JeOS and PostgreSQL, and we are moving to Microsoft Windows Server 2008 and Microsoft SQL Server. The move to Windows was frustrating, but pretty easy–to be perfectly honest, getting it to all work on Linux was a lot more difficult, but that was partially because I had no friggin’ idea what I was doing 2.5 or so years ago when I started working with Confluence. But I could handle that OK. Moving to MSSQL is a bit terrifying though. I’ve been avoiding it for a week.

Confluence was built to work with Postgre, and it works very well. There’s no configuration, no real tricks to it. You just drop the driver in the right folder, click the install button, and go. For MSSQL, though, there are a lot of hoops to jump through, both in regards to software configuration and the database setup. What’s more, the DB is running on Enterprise System‘s SQL Server, which is kind of a Big Deal. This isn’t me just playing around with a local toy anymore, so if I screw something up, it’s going to be a little more noticeable.

This afternoon when I began working on it, though, I had already spent about 4 hours researching the topic. I had read all the comments on different wiki pages and I had all my notes. I followed the directions Very Carefully.

And it worked.

I was pretty nervous when it took over two minutes to connect to the DB and get set up, which it did silently so I had no idea if it was about to stab me or not. But in the end, it did connect, and now I’m getting ready to push a ton of data to it.

That’s my next big hurdle: will the data pulled from PGSQL push into MSSQL without a hitch? According to what I read, it should as long as the DB username is the same, but I’m still nervous. Regardless, I want to offer public thanks for all those early adopters who blaze the trails I hesitantly step down.

Not dead yet

Update 11:52 a.m.:: Today’s project – Writing documentation for a portal that goes live on Monday, to which I only got access yesterday.

I figure I’ve gone through about half a dozen projects in the last three weeks, and every one of them has had a timeline of “Now.” For whatever reason, everything is high priority and extremely time sensitive, so I’ve been putting in some extra hours at work and really pushing myself to get everything done on time while maintaining high quality.

Thus far, I’m pretty happy with how everything is turning out. I have managed to get everything done, and the projects I’ve completed have come off swimmingly. Moreoever, I’m not as exhausted as I expected myself to be. I’m making it through.

But another 2-3 weeks of this and I’m going to start burning out. There have also been some personal projects that have fallen by the wayside, in addition to my annual review. Part of our annual development plan (ADP) is that we need to submit the highlights of our year, noting the things we want to get credit for in our evaluation. This ensures that our manager(s) don’t forget or overlook something, give us a low score, and tell us later they wish they’d known we had done X, Y, and/or Z. Unfortunately, due to the volume of work I do in conjunction with my verbosity, my review of what I’ve done in a year is rather lengthy and will probably take 6-8 hours to compile and compose. I just haven’t had time for that.

Hopefully on Monday I can get to it, because my ADP will probably come in late December and it would be best if I could get my side of the paperwork filed sooner rather than later. But I’ve been trying to work on this for two weeks now… who knows what next week will hold.

Tomorrow we are traveling to St. Louis to spend Thanksgiving with April’s mom’s side of the family, which should be enjoyable. I’m also excited that we’ll be coming back on Friday, giving me about two and a half days to chill and relax; my weekends have been crucial to maintaining my sanity throughout this period. I do have some homework to do, though: our Buddhism class requires either an essay or a creative project for the final, so I have elected to write a fictional epic poem. I like the idea I have for the poem and hope to write the first canto (I’m not sure what a properly Buddhist term for this would be) tonight.

Until then, I’ve got a ton of work to do. See you on the other side of the moon.

After Hours

At the university, and within the field in general it seems, there are three primary shifts we work. First shift is from 8 a.m. to 5 p.m., second shift begins around 3 p.m. and goes until midnight, and third shift begins around 12 a.m. and ends at 8 a.m. We have some flexibility with those within Computer Services, and in particular our lab supervisors flex their hours a bit to ensure the best coverage, but within Microcomputer Support we’re strictly first shift. The business hours for the university are officially during the day, and we primarily support faculty and staff, so we need to be here during the same hours.

Unfortunately, there is always some sort of work that needs to be done during off-hours. Production servers that can’t be taken down during the regular day, or labs that need to be rebuilt but are in use during business hours. Our second shift lab supervisors are able to shoulder some of that burden, but occasionally we, as in Microcomputer Support, just have to work late.

As Banner go-live approaches, it seems we’re all picking up some extra hours. On the plus side, I suppose, our group (User Support) is “non-exempt,” which means the university pays us overtime. This is compared with pretty much all the rest of Computer Services who are overtime exempt, which means the university can ask them to work fifty hours a week and their pay doesn’t change. Overtime exempt employees, however, start off with twice as much vacation time and generally higher pay, though, so their compensation is built-in.

My primary project right now is setting up the documentation repository for Banner, which I’ve been able to do during normal business hours (when I’ve managed to find time for it, which isn’t always available). Banner training began yesterday, however, so the server is officially being used during the day and I can no longer tinker with it during my regular shift. As such, I was here late last night and will likely be late at least one other night this week. It is something I try to avoid, but it is becoming increasingly inevitable.

We have to be here during our shift, but if there’s work to do that takes additional or different times, you just have to suck it up and do it. What’s important is completing the work with the least impact on the end-user, and if that means working while the end-user is sleeping, then that’s what we’ll do. It’s what makes us User Support Specialists.


Upon arriving home earlier this week, I commented to April that it felt like I had only begun my work day about 15 minutes prior. That’s how busy I have been this week.

On the plus side, I’ve gotten some solid overtime in, enough to pay for the pair of pants I shredded when an errant net (the one by the softball field which marks the pitch-practicing area) was blown into my handlebars as I rode by, causing me to fall/fly/roll off my bike onto the rocky ground.

April and I are going camping today, and intend to return tomorrow, should the Lord tarry. I know I haven’t done hardly any writing this week, because I’ve been busy every day and busy/exhausted every evening. Two nights ago, I had time to write, but I crashed on the couch with a book and a glass of scotch and didn’t move for several hours. I fell asleep at 8, April woke me up sometime later and I read some more, then slept until 5:30 a.m., like I’ve done all this week. I don’t know what’s waking me up at 5:30 everyday, but I shake my fist at it.

I’m taking some really good books, and my notepad/pen as well. I won’t have my laptop, so no longer pieces will be completed, but maybe I’ll get a poem or two written. Hopefully, I’ll also get rested, because I’ve been exhausted. Truly. exhausted.

By the grace of God, I will carry on.

Just say no to IIS

Our university is not exclusively a Microsoft shop, but it sometimes feels like it is. We predominantly have Microsoft Windows PCs, all of our computer labs run Windows, most of our office computers, and the vast majority of our servers. Therefore, when I’ve had to build web servers for our department in the last year, they’ve always run Server 2003 and IIS. Quite frankly, I’m sick of it. My first webserver was Mandriva Linux running the LAMP stack, and though it was quite a learning experience resulting in reinstalling the operating system probably twenty times over the course of a month, I came to vastly prefer Linux over Windows. I now run Linux on all of my computers, both work and home, but I persisted in installing Windows Server on machines I built at work.

The justification was that no one else knew Linux, or at least not within our group. I wanted to build servers that others would be able to log into and administrate comfortably, if for no other reason than that I didn’t want to have to do all of the work. So I wrestled with IIS and ISAPI filters for redirection and poor SSL handling for encrypting logon pages and memory leaks and instability, just the whole gamut of problems one tends to run into when using Windows. The sad part is that I now have BSD on a second partition of my work computer, and even thoughts of that fill me with more warm fuzzies than having to put up with IIS.

Well, no more. I’m building a new web virtual machine for our wiki software, and today I configured the latest version of Ubuntu Server on it. I refused to touch the last version of Ubuntu Server (7.10) because it wasn’t mature enough yet. Last Thursday however, an LTS (long-term service) release of Ubuntu’s server edition dropped (version 8.04), and so I am more comfortable putting that on a production server.

So far, so good. I was able to get XFCE4 desktop manager on it with minimum fuss (once Ubuntu’s repository servers stopped getting hammered by everyone trying to acquire the software after release), and I have Confluence running smoothly. There were a couple of frustrating moments where something wouldn’t work right, but invariably a restart fixed it (like when I copied over a JDCB .jar file and it hadn’t been initiated yet because I hadn’t restarted the service, yet I was stupidly looking at my screen wondering why it wasn’t working).

Tomorrow, or Wednesday at the latest, I hope to get it setup as a mail server as well. It looks like that process is going to be significantly more difficult than it was with Windows, where I just installed hMailServer, but it’ll be a good learning experience if nothing else. And the most important part: no more IIS.


I apologize for the break in updates, and there’s another one forthcoming. My progress on Confluence has been stymied, though I don’t know yet whether this is because there’s something wrong with the product of which I am unaware or if it is due to my own incompetence. I’ve spent quite a few hours tinkering with it, making configuration changes, and restarting services, but all to no avail. I can’t get Confluence to secure logins through SSL, and I can’t get the web address to change from having server:portnumber to server/subdirectory. It always ends up being server:portnumber/subdirectory. At any rate, I’m going to zip up what I’ve got and send it to Atlassian for them to figure out.

In the meantime, I’ve been preparing for a conference I’m attending this week. I’ll also be speaking on Thursday, presenting the topic “Publications for Public Relations,” which is a fancy (and alliterative way!) of discussing web design, press releases, newsletters, and getting people to pay attention to them. I have no idea how it’ll go, and I’m a bit worried since our VP and Director will be there, but I’ve got years of public speaking experience and I know the topic pretty well, so I’m hopeful.

Back on Friday. I might give an update on HELIX then, and hopefully return to regular updates on Monday.

Garbage in, garbage out

The adage is pretty widely known, but every once in a while the realization creeps up on me that my input is occasionally of the type that should be gently placed in the recycle bin and carried to the curb.

I now have Confluence bound to our active directory, and following that accomplishment I got it to automatically stick users into the confluence-users group when they log in. I was pretty excited that it pulled all the usernames over and is syncing live with the LDAP, but I hadn’t gotten groups figured out until a guy from Enterprise Systems (a different group in my department–I’m in User Support) dropped in. He’s been helping me understand LDAP better and I’ve been bouncing ideas off him, so when I mentioned the groups issue (where I wanted Confluence to pull Groups/Roles from our AD so we can manage it from our standard account management system), he asked about how I had it set up and to what container I was pointing Confluence. Something he said sparked a realization and I changed one small tag (two letters, in fact) which fixed Confluence. It’s now pulling the groups I wanted it to pull.

I simply hadn’t given it the right parameters, and while I wish something could “Just Work,” that’s never actually the case. So now, both users and their groups are pulling from the AD. It’s not set up correctly on the AD for Confluence (I’m pulling the groups associated with our current “Common” folders, which are often used for shared documents, so it seemed like a good idea at the time), but it’s a fantastic proof of concept and it wouldn’t be hard to create a new locker with groups structured just for Confluence, should we decide to buy the software.

I’m just excited that it works. It has certainly been a frustrating process, but learning AD binding, how to search for and run queries against an LDAP server, and how to structure all this stuff has been a really valuable experience. I should probably spend some time tomorrow documenting how I got it to work so I have some point of reference for the next time this comes around (hopefully soon, if we buy Confluence).

My brain is mush

I’ve spent the day working on two things. I’m configuring Confluence as a wiki solution for the ERP, and I needed it to 1) run as a service, and 2) email comments/discussion to certain members as a tool for collaboration. This meant, concerning the second one, that I need our server to function in both web and email capacities.

I’ve set up email servers before, but absolutely hate the SMTP functionality built into Microsoft Windows Server 2003. Therefore, last time I did this, I used HMailServer. Unfortunately, my documentation was not complete and failed to note that, when authenticating to HMailServer, your username is the full email address (so I was just using the username, so everything else was configured correctly, but it wasn’t working, and it wasn’t providing me any errors. A simple mistake, but it took me the better part of the day to figure it out.

As for running Confluence as a service, our installation of Windows was missing a .dll it needed for that to work properly. After copying the .dll from the Confluence directory to the system32 file, everything worked perfectly.

Two good milestones reached in one day. I’m pretty proud of it, and tomorrow I’ll start looking into LDAP integration. For now, though, I’m done.