Teams in Everhour 2
We continue working on Everhour 2 and this time I’d like to explain another important architectural solution that we’ve been discussing internally for a long time and are working on actively at the moment namely, teams, groups, and time isolation between different accounts.
Team Definition & Adding Members
Let’s first define the term “team”. It refers to a company, an organization, or a legal entity and includes employees, integrations, and projects. It has nothing to do with “teams” in 3d party apps/integrations.
Admin adds team members by manually entering their email addresses. And here it’s important to note that the same email may be associated with only one team. If the user already exists, he must either use a different email or ask to remove his account from the other team. In such a case the time he reported will remain in the previous team and won’t be transferred.
Initially, we aimed to import users from the integration as we do with projects but then abandoned the idea due to a number of technical issues, including that not every app provides real emails via their API.
Users may try signing up to the point of obtaining an invite (in case admin has already created an account and integrated with a 3d party tool, but has not invited anyone yet). In such a case we will already identify his coherence with a team and will offer him to join, but first, we will send an approval request to the admin.
“User groups” is the ability to organize a number of users under a single title.
This functionality is designed to simplify the process of selecting multiple users in reports, filters, during internal projects assignment and it’s an additional aggregation to see reported time. For instance, “developers” group reported 100h, “designers” – 50h.
In the future, we may add the ability to assign permissions for the groups.
The last important topic is collaboration and sharing data between different teams. For convenience, I propose considering a few different scenarios.
A company is using Everhour to manage invoicing of hourly services and estimates in order to track how accurate its proposals are. It has its team, projects, integrations.
A company acquires a new customer.
For this purpose, they create a new project, tasks, assign estimates and start reporting time. The manager regularly exports data and sends custom progress reports to the customer. The customer does not require access to Everhour and does not have an account.
Everything is pretty simple. Everyone is happy.
All as before, but now the customer says, “Guys, I also want to report time into the project, build reports myself and see embed estimates right inside Asana or Github”.
OK. The company may add him as a regular team member (and pay for an additional user). The client will have access to a single project and see the time of all employees assigned to the same project.
When the project is over, the company removes the client from the team and respectively removes his access to the data.
But, in this case, the client’s time will always be included in project invoices along with the company’s employees, and it should be manually excluded all the time.
A company has an account in Everhour and a client has it there too. Each manages its own team, projects, and integrations.
It may happen that members from different teams are working on the same project (access to the project is managed outside Everhour, for example in GitHub or Asana).
In this case, each team will only see their time and estimates. In other words, data is isolated.
We can see only one drawback.
Let’s suppose I’m a manager of such a joint project. When I look at the current milestone where the tasks of both teams are combined, I would not see all estimates and total time, just my colleagues’.
Why is that?
The main goal of our product – time management within a particular company.
The vast majority of our users (except individual freelancers) work on a single team and their time should be combined in one place.
As of now, we faced a lot of cases when people have accidentally created/joined the wrong team and reported time incorrectly and that is not acceptable for invoicing purposes. Could result in a very expensive mistake!
Estimates is a part of the internal process. External collaborators can adhere to different standards and whatever reason may change assessments, report superfluous or irrelevant time, etc. Which breaks the process for the other party.
In addition, it is a question of privacy. Maybe someone does not want to disclose specific figures, who was involved in the process, and to what extent.
For the purposes of collaboration and management, each party can pre-assess its scope and send it as a google spreadsheet. In any case, the evaluation should always be discussed.
In the future, we may consider functionality to share specific reports.