Closing a project: look first, then shut the door
Closing a project used to be a matter of two clicks. You pressed "Close", a browser dialog asked "Are you sure?", you confirmed β done.
The trouble with that question is that it cannot be answered. Sure about what? Whether fifty unapproved time records are still sitting on the project, whether a timesheet has been waiting three weeks for an approver, whether somebody recorded expenses and never submitted them β none of that was in the dialog. You had to know it beforehand, or find it out afterwards.
And afterwards is the wrong time. A closed project accepts nothing further: no new time records, no new expenses, no submissions. Whatever was open when you closed it stays open.
This release changes that in three places.
1. The close page: you see what you are shutting
The Close button on the project page no longer opens a dialog. It takes you to a page of its own, and that page does two things.
It tells you what closing means
At the top sits a red warning listing every consequence β not as prose, but as a list to work through:
- No more TimeRecords can be booked to the project.
- No more Expenses can be recorded to the project.
- Existing TimeRecords can not be submitted for approval anymore.
- Existing Expenses in draft mode can not be submitted for approval anymore.
- The project will not show up in drop downs in the invoicing module anymore.
- Billable objects may not be billable anymore.
- Auto-Invoicing will be turned off.
- All active members of the project will be informed about the project closure via email.
The last point is the one that is easiest to forget: closing is not a silent action. An email goes out to every active member. That cannot be taken back, not even if you reopen the project immediately afterwards.
This warning appears every time β including when nothing is left open on the project. Closing a tidy project is just as consequential as closing an untidy one.
It tells you what is still open
Below the warning sits a table with two columns, Label and Count. It lists exactly the five things that become a problem once the project is closed:
| Label | What is behind it |
|---|---|
| Unapproved TimeRecords | Time records that need an approval and do not have one yet. |
| Billable but unbilled TimeRecords | Time that could be billed, but for which no invoice exists yet. |
| Pending TimeSheets | Submitted timesheets that nobody has decided on. |
| Pending ExpenseSets | Expenses submitted for approval and still waiting. |
| Expenses in draft mode | Recorded expenses that were never submitted. |
Rows with a count of 0 do not appear. If everything has been dealt with, you see the warning and no table at all β which is the page telling you that you can close without any follow-up work.
Every count is a link. Clicking the 12 next to "Unapproved TimeRecords" opens the times list, filtered to exactly this project and exactly those twelve records. You do not have to assemble the filter yourself, and you do not have to take the number on faith β you can go and look at it.
One detail that matters in practice: those lists normally default to the current month. That would be precisely wrong here, because you rarely close a project over last week's entries β you close it over the ones from spring. The links from the close page therefore lift that month boundary and show the full period.
If somebody does not have permission to open one of those lists, the count still appears, just without a link. A project lead without expense permissions can see that three expense drafts are outstanding, without landing on an error page.
Below the table are two buttons: Close in red, Cancel in grey. The project is only closed once you press the red one.
On the side: expense drafts are now findable
For the link to the expense drafts to lead anywhere, the organisation's expense list gained a new filter value: Draft. Until now that list excluded drafts on principle β they still belong to the employee, after all. They can now be shown deliberately, but only if you explicitly filter for them. Everywhere else the list behaves exactly as before.
2. Expenses can no longer be submitted to a closed project
When recording an expense, ZEIT.IO has always checked whether the project is still open β closed projects never appear in the project selection in the first place.
When submitting, that check was missing. It affected one very specific case: an expense recorded while the project was still running, but left sitting in draft. Then the project was closed. The draft could still be submitted for approval afterwards β and landed as a pending submission on a project that was supposedly finished.
That is no longer possible. Anyone trying to submit an expense set on a closed project now gets:
The project has already been closed. The expenses can not be submitted for approval anymore.
The check applies on all three routes: the freelancer, the employee, and the organisation submitting on someone's behalf. There is no back door left through which a submission slips past.
3. Timesheets can no longer be submitted to a closed project
The same holds for timesheets, with one peculiarity: in ZEIT.IO a timesheet is not created first and submitted later β it is submitted by being created. The check therefore sits directly in the creation step.
Here too it applies everywhere: for freelancers, for freelancers with cross-project timesheets, for fixed-price packages, for employees, for the organisation's incoming and outgoing timesheets, and for the upload directly on the project page. Seven routes, one rule.
The message names the project:
The project 'DATENSCHUTZ' has already been closed. The timesheet can not be submitted anymore.
That is not decoration, it has a practical reason: a timesheet can span several projects. If one of them has closed and the others have not, the whole submission is rejected β otherwise time records would land on the closed project. Without the name you would not know which of the five selected projects is the problem. With it, you take that one out of the selection and submit the rest.
What this adds up to
The three changes work together:
- The close page shows you beforehand what is still open, and takes you there in one click.
- The two submission blocks make sure those numbers still hold afterwards. If you close a project showing "0 pending expense submissions", another one cannot arrive the next day.
So the usual sequence looks like this: you press Close, see three unapproved timesheets, click the number, approve them, go back, see an empty table β and close the project.
Or you close it anyway. That is a legitimate decision too: some things are meant to be left behind. The difference is that you now make that decision deliberately, instead of making it by accident.
And if something was missed after all: a closed project can be reactivated at any time via Reopen, and submissions become possible again. The only thing you cannot take back are the emails to the project members β which is exactly why that point is in the warning.