The Operations service area needs to compile accurate billing information to meet client deadlines.
To improve the quality of time entries, a step was added to the process in 2020 whereby Delivery Managers must approve their team's submissions. This extra step in the process occasionally results in delay in finalising time entries awaiting Delivery Manager approval.
An automated reminder to Delivery Managers to approve their team's time entries is intended to reduce delay pending approval, make compiling billing information easier and improve client relationships.
Changes proposed in this pull request
This PR adds a feature to:
Send a DM to the project managers who have timesheets awaiting approval on Harvest at 1300 on Fridays or the last day of the month
It adds two use-cases:
GetProjectManagersWithOpenTimeEntries : Identify project managers who have time entries awaiting their approval.
RemindProjectManagers : Send project managers a reminder message.
To note:
The abstraction "project manager" is chosen instead of "Delivery Manager" to cover cases where a non-Made Tech Delivery Manager is identified as the "manager" of a Harvest Project.
There is a feature toggle on this PR to send a message to @zackads for the project managers that would have been reminded if the feature toggle was false. I intend to let this run for a few weeks to spot any bugs in production before submitting a separate PR to turn the feature toggle to true.
A new environment variable is created (SLACK_PM_REMINDER_MESSAGE). This will need to be set on Heroku.
Guidance to review
I've tried to avoid touching existing classes/interfaces in keeping with Open/Closed. This has resulted in some strange combinations, for example public class GetProjectManagersWithOpenTimeEntries : IGetLateBillablePeople (ProjectManagers are not LateBillablePeople). What are your thoughts on this? Should it be addressed in this PR?
There might be an opportunity to extract some classes. For example, the code to combine a person as represented in Harvest with a person as represented in Slack. I was thinking something like a Person entity with MessagingServiceId and TimesheetServiceId that has many TimeEntrys. To send a message to that person you call MessageSender(person, "Remember to submit your timesheet")... Open to ideas/collab on architecture generally.
Link to issue/card
68 - Feature request - Delivery Managers are not reminded to approve time sheets
Context
The Operations service area needs to compile accurate billing information to meet client deadlines.
To improve the quality of time entries, a step was added to the process in 2020 whereby Delivery Managers must approve their team's submissions. This extra step in the process occasionally results in delay in finalising time entries awaiting Delivery Manager approval.
An automated reminder to Delivery Managers to approve their team's time entries is intended to reduce delay pending approval, make compiling billing information easier and improve client relationships.
Changes proposed in this pull request
This PR adds a feature to:
It adds two use-cases:
To note:
false
. I intend to let this run for a few weeks to spot any bugs in production before submitting a separate PR to turn the feature toggle totrue
.SLACK_PM_REMINDER_MESSAGE
). This will need to be set on Heroku.Guidance to review
public class GetProjectManagersWithOpenTimeEntries : IGetLateBillablePeople
(ProjectManagers
are notLateBillablePeople
). What are your thoughts on this? Should it be addressed in this PR?Person
entity withMessagingServiceId
andTimesheetServiceId
that has manyTimeEntry
s. To send a message to that person you callMessageSender(person, "Remember to submit your timesheet")
... Open to ideas/collab on architecture generally.Link to issue/card
68 - Feature request - Delivery Managers are not reminded to approve time sheets