Hi Andy.
There's a few things going on here, so I'll break it down.
First, the completion date. When you "Upload certification csv", the "completiondate" says when a user completed the certification. This is different from the "Complete" field in the assignments tab, which is where you can specify when a user needs to complete their certification. There is no link between the two pieces of data. If you want to set specific dates when a user needs to complete their certification then you need to set that using the assignment tab's "Set completion" interface.
Immediately after upload, when you look at a user's record of learning, I imagine you saw the completion date equal to the date in the record you uploaded and the expiration date being on "active period" after that. Assuming the current date was after the "window opens" date, then running the cron will cause some recalculations to occur. The completion data you just uploaded would be archived and new "window opens", "time expires" and "completion date" will be calculated. If the current date is past expiry, the record ends up with these fields empty, as the user has "failed to recertify" and there was no "Completion date" in the assignments tab, and is set back to the primary certification stage. The previous completion record will be visible by clicking the "Previous completions" link in the record of learning.
The program overdue message has gone out because the system calculated that the user was overdue to recertify. The way certifications are meant to be used is that they manage a process where a user becomes certified, then at regular intervals they need to redo some course content to recertify, thus keeping their certified status. If they fail to recertify by the given expiry date then they lose the certified status and need to do the initial certification course content again. Perhaps you were intending that once a person has certified, they have that status forever? In that case, you should probably be using a program instead of a certification. But I'm not sure if there's a simple way of uploading program completion data like there is for certifications, so an alternative solution would be to set the certification "active period" to 100 years, so they wouldn't have to do the recertification process until they're so old that they probably can't remember their own names, let alone the initial certification process.
Nathan