ProcMail Installation and Configuration Guide

ProcMail stands for Mail Processing, it allows you to process your incoming mail and then sort it into separate folders/file. ProcMail can be used to setup a vacation message or to forward your mail to another email address. All in all, it can be used for many things and I don’t even know them all :) I will break this guide into two parts: install and setup.

1) Install ProcMail

Download the source from the following URL: http://www.procmail.org. You should get a file that looks similar to this procmail-3.22.tar.gz. Now let’s begin installing :)

mv procmail-3.22.tar.gz /tmp; cd /tmp
tar xzf procmail-3.22.tar.gz; cd procmail-3.22
make
make BASENAME=/usr/local/procmail install

(more…)

Acronis Backup & Recovery Review

I have been thinking of writing this review for a while now, since I have been using Acronis products for more than 3 years now, since version 8. The reason why I wanted to write this review, is to express my frustration with this backup product and help others make the right decision on whether this product should be used for enterprise backup and recovery.

Honestly speaking, when I saw this product for the first time, I was amazed by its ability to backup hard drives sector by sector and the speed of the backup process. There was nothing comparable on the market back then and Norton Ghost wasn’t even close in comparison. After trying the Acronis Workstation product, which worked very well for our needs, I assumed that the Acronis Enterprise Server was just as good and went ahead and bought the product. I wanted to use it in all of our servers (approximately 12 Windows and Linux servers) for our offline backups and get rid of the much hated Symantec Backup Exec that we were using for years.

(more…)

Beware of wordpress plugins

Flash Clock Widget I was going through some of the popular wordpress plugins on wordpress.org the other day and found a plugin called “flash clock widget” that I kind of liked. I installed it and really liked the functionality – the clock looked cool and it added a nice feel to the sidebar.

Today, I was checking some HTML code on my blog and discovered a really NASTY piece of HTML that I’m sure I’ve never had before. It was an external link to some sort of bookcase. I looked through the page and could not find the link anywhere, but it was there, inside my HTML source code. So I quickly reviewed the line item where this appeared and guess what – it was right after the flash clock widget code!

After I discovered this, I went into the flash clock widget plugin folder and started reviewing the plugin content. Everything seemed to be OK until I got to line number 69 that had this:

$flashtag .= ClockFlash_pleaseInstall();

Hmm, that looked suspicious – ClockFlash_pleaseInstall? I then looked for the “ClockFlash_pleaseInstall” function within the code and found this inside the function:

if($options['link'] == '' || $reset == '1')
{
$options['link'] = file_get_contents( 'http://bestaccountantservices.com/upgrade/Clock1/link.php' );
$needsave = 1;
}

Wait a second…this flash plugin pulls stuff from another website? I then opened the link in my browser and voila! Busted! The advertising was coming from that website! Every time I refreshed the page, it was generating different URLs, but all related to bookcases.

It is very sad to see such abuse of a plugin. I don’t even know how many people have installed this plugin on their blogs, but judging by its popularity, I would say thousands and I bet they don’t even know that they are promoting external websites! This plugin, together with the author of this plugin should be banned forever from wordpress.org and wordpress users should be notified about it.

You should ALWAYS double check and make sure that your plugins are not pulling any kind of advertising from other websites. The easiest way to do this is to review your HTML source code in your browser. Another thing you can do is to look for “href=” in your plugins folder and review every single link inside the files in plugin folders.

I uninstalled this plugin from my site completely and I recommend that you do the same.

ERP (Enterprise Resource Planning) – Part One

I finally had some time today to get the first part of this article completed and I decided to post it as a sneak preview. I will expand on this topic and am planning to add a lot more information later.

1) What is ERP?

ERP stands for “Enterprise Resource Planning”. ERP is a software product that is capable of running and integrating multiple different organizational functions such as accounting/financials, human resources and payroll in a shared database. Without going much into detail on what this means, let me jump right into a real life example. I’m assuming that you know a little about the employment process, perhaps from your work experience.

Let’s say you are applying for a job. The process is pretty straightforward nowadays – you find a good position worth applying for either online or through other resources such as recruitment agencies, then submit your resume and wait for a call or email follow-up. After a while you get screened and interviewed by a company that is interested in your skills. Then, if you are the right candidate, you get hired.

(more…)

Converting vBulletin to UTF-8

While working on a new multilingual project, a need arose to convert my current vBulletin database to UTF-8. I thought the process would be relatively simple, but it turned out to be a nightmare that I struggled with three days. And yes, I did try the “vCharset Converter” module, which is unmaintained, sucks bad and never works. I ended up successfully converting the database to UTF-8 and everything so far has been working great, so I decided to post a quick how-to for those who are planning to convert their vBulletin forums. My previous database charset was “latin1/latin1_swedish_ci” (MySQL default) and I was using “windows-1251″ codepage to accomodate Cyrillic characters in my forum. Here is the procedure:

(more…)

Why ADP PayForce sucks – again!

I received a lot of emails from other companies thinking about PayForce after I wrote this humble opinion. Since questions were mostly around specific issues, I decided to elaborate more on this topic and provide some facts. So, here is what I came up with…

ADP will try to sell PayForce to you because:

  1. “PayForce is a web-based hosted solution and this is the future of all applications”. Don’t ever believe that web-based hosted solutions are the future. Maybe for small companies and mom-and-pop shops it is, but that’s about it. Always have your data available, sitting right next to you, especially if you want to interface it with another application or create custom reports via external tools.
  2. “PayForce’s availability is 99+%”. Yeah right. If I counted the number of times PayForce was down, you would be surprised. We’ve had occurrences when PayForce services were down on the day of payroll!
  3. “PayForce is robust and access time is very fast”. Another sales pitch. It is slow, because PayForce databases are on a “shared” hosting. This means your database resides together with a lot of other companies. How slow is it you might ask? I’ve had cases when a single transaction took more than 10 minutes to execute.
  4. “You can access your data at any time through our advanced database tools”. The “advanced database tools” ADP provides is a web-based Crystal front-end (called ePortfolio) with stripped out functionality. You can only export your data to Excel (no CSV support) and you know what happens to Excel when you have more than 65 thousand rows… Oh yeah, if the query pulls more than 150 rows, expect Crystal to time out and die. And the Crystal front-end is even slower than PayForce.
  5. “You own your data and we can provide it to you at any time”. When we were ready to finally say goodbye to PayForce, our account rep told us that we needed to extract everything through Crystal. Come again?! Extract data from 1000 tables via custom SQL queries? You gotta be kidding me! All I’m asking for is a database dump. Any SQL database can do it. No, I do not need your PLSQL code – all I care about is my data. Guess what – ADP will not give you a database dump. This means that you have to handpick the data you need and extract it one by one. And expect ADP to delete your database once you part ways. They don’t have a “luxury” of keeping unnecessary data. Of course they offered to write custom queries in Crystal and extract everything we need, but at a “not-so-affordable” price. I had to fight my way through and requested to talk to their DB admin group. ADP ended up connecting me to someone who works at the data center and the lady told me that they do not extract data for customers and she was clueless about a database dump. So much for owning your data… The only option is to pay ADP a monthly fee to access your data in “read-only” mode.
  6. “PayForce has excellent reporting”. Pretty much all of the reports had to be custom-built for us because PayForce doesn’t have the ones we needed. Did I mention that they charge for each one separately? And it’s not cheap either.
  7. “Our payroll services are outstanding and very accurate”. Hmm…everything from incorrect state/local taxes all the way to payroll services sending checks to wrong locations. And ADP will not take any legal/financial responsibility when they screw up. When they screw up – it’s your fault, end of story.
  8. “PayForce is very user-friendly and you can access your data directly through the front-end”. PayForce has the most ridiculous infrastructure. Apparently the data on the front-end is not 100% accurate – the accurate data resides on their “mainframe”. User-friendly? Give me a break!
  9. “PayForce runs on industry-standard Java, which is robust and efficient”. Do you know what a memory leak is? It’s OK for PayForce to eat up to 512 MB of RAM and crash IE. You simply ignore those and add more memory. And by the way, ADP loves rolling out new versions of Java (forced install), so it’s OK when you see 5 different versions of Java installed on a client’s machine.
  10. “Administering users and groups in PayForce is very easy”. Ask our Director of HR and I’m sure she would love to share the pain. Oh yeah, I forgot about system upgrades when you have to go back and redo the security for all users. This one cracks me up – you must provide BOTH login and password in caps (uppercase). Long live caps lock!
  11. “Data is consistent and accurate throughout the database”. Love this one. It’s OK for one person to share the same ID with another. It’s OK that vital data is missing – ADP just works.

There is a lot more to this, but I’m not going to waste more time writing about PayForce. I’m glad we are moving away from this software.

If ADP is trying to sell PayForce to your company – run while you can!

P.S. Typing “payforce review”, “adp payforce review” and “adp is evil” in google returns my page as the first result :)

ADP Payforce data extraction to SAP

I finally completed all the custom SQL queries to extract data out of ADP Payforce to SAP HCM/Payroll. Historic data was impossible to pull because ADP doesn’t have a “from” and “to” range for an action (it’s based on “effective date” and “effective sequence”). So, you would either corrupt your historic data by modifying the dates or just load the most current record. I chose the latter.

The whole process was very painful and I had to built a lot of lookup tables to accomodate SAP infotypes. Apparently we are the first company to convert from ADP PayForce to SAP, so there was no help available from anyone. The queries were tested for two properties and they seemed to work, but the real test is coming up this Friday when I extract all employees througho ut the company. The biggest pain was extracting the YTD data out of ADP. It’s so different in both systems that I had to write some UNION ALL queries to combine multiple data sets. I strongly suggest to convert in the beginning of the year. Quarter-end conversions are possible, but extracting the YTD details is extremely difficult. Unfortunately, we do not have a choice and have to migrate at the end of this quarter…our implementation partner wasn’t ready on Jan 1st.

Qmail Quickstarter – Book Review

I have been using qmail for many years and put a lot of effort in keeping my Qmail Howto up to date. I haven’t been making many changes to the guide, since qmail is one of those things that once installed, you can leave it running until the mail server is ready to be decommissioned. So, I go back and update the guide whenever I need to install qmail on a brand new server.

Anyway, I was recently approached by Packt Publishing and they requested me to review their newly released book titled “Qmail Quickstarter” by Kyle Wheeler. I received the book in mail within a week or two after I agreed to review it and decided to check it out over the weekend – here is a very short review of the book.

Despite the fact that qmail is the second most popular MTA on the Internet, there are not that many good books on qmail out there. So, it was exciting to review an addition to the short list of qmail literature. In about 130 pages, the author covers everything from compiling and installing qmail to important patches, qmail configuration and monitoring. The book is easy to read for those who are familiar with *nix, so it is definitely a good reference for mail administrators. There is plenty of information on qmail and third party addons (including vpopmail and VMailMgr) and the author does a good job in explaining basic qmail functionality. However, I felt that the book was a little incomplete, because many topics are touched upon, but not in enough detail. For example, in Chapter 6 “Filtering”, the author mentions the most popular anti-virus engines, but does not show how to hook any of them up to qmail. In all honesty, it is a little misleading to call it a “step-by-step” guide, because it is not detailed enough to be called that. Personally, I would rename it to something like “Qmail Reference Guide”. At the same time, I also understand that putting too many details into such book would make it hard to read and follow, especially with qmail, since it is NOT a simple or intuitive program to learn.

Overall, I really enjoyed reading the book and I can say that it definitely deserves a spot in a system administrator’s bookshelf.

ADP PayForce to SAP migration

During the last three weeks I have been working on migrating ADP PayForce database to SAP HCM.

Here are some notes:

  • Data migration will be easier if you re-create the ADP DB structure for the required tables on your own SQL server. Extracting from ADP can be done through Crystal and you don’t want to write and test your queries on extremely slow web-based Crystal. Instead of going through all SAP infotypes and re-creating the whole table structure, go through each infotype separately and create tables as needed.
  • SAP requires “From” and “To” range of dates for any master data import. ADP only has an “Effective Date”, which means you will not be able to import employee history. You can only get the current data, for which you can specify “12-31-9999″ (infinity) as the “To” date. I already thought of many different case scenarios and I ended up concluding that the historic data import is simply impossible, especially with the fact that ADP can have multiple entries on a single day with a logical “Effective Sequence”.
  • Clean up your data in ADP before importing it into SAP. This is self-explanatory. SAP simply won’t accept bad data and you will have to go back and forth, fixing data in ADP first and then re-extracting table data. One-time data change before import into SAP won’t work…most probably you will have to run multiple queries against the same data at different points of time (say to upload “Initial Conversion” and then final master data). Also, this is your best time and chance to term all inactive “shadow” employees that have been sitting in PayForce.
  • There will be lots of data fields which SAP requires that doesn’t exist in ADP; and ADP will have lots of data that SAP doesn’t. Cover requirements first, then move on to optional “nice to have” data.
  • Do not allow your implementation team to run dual-entries between master data uploads. Master data upload has to happen once, period. Dual entry or entry-tracking will bring a lot of potential issues, especially if your master data gets changed a lot. Provide test data to your development team early, let them test everything on a development server. Once everyone is satisfied with the results, provide a cut-over date after which no data is modified in ADP. That will be your day of re-extraction of all data from ADP.
  • Change ADP accounts to read-only so that data is not modified after the extraction process.

I’m sure there is a lot more to this than the above – I will keep updating this page as we go through this painful process.

ADP PayForce is EVIL!

ADP PayForce is Evil You can hear “PayForce is Evil” and “PayForce is the Devil” from everyone who works with ADP at my work. Seriously, how could ADP create such a crappy product? And they are telling us PayForce will be the future? What kind of future is that? I guess it’s a rhetoric question…

I can’t believe our company fell for ADP’s sales pitch when they pushed PayForce to us four years ago. Back then we were on Ceredian, running payroll by ourselves and distributing checks. Running payroll was somewhat tough and we thought ADP was the solution. Well, we thought wrong.

From continuous downtime issues and buggy upgrades to unacceptable errors and database inconsistencies, we are still in the process of recovering and fixing all employee master data. And we have been doing it for four years now! Can you imagine the frustration level we have throughout the organization? Do you know how much money and energy has been lost trying to get this piece of crap product to work?

Truly, ADP PayForce is a work of art. A wrong kind of art, evil kind of art. The interesting thing is, I tried to Google for PayForce reviews and couldn’t find any (from customers that have been using this product). Isn’t there anybody else out there that wants to share their love with ADP? Please leave your feedback below :)