This is the third article in the series on the Crews application, it will focus on Labor and Tool Assignments. There is another series of three articles which looks at the Crew Assignment Status dialog which we will briefly discuss in this article, and to see how that dialog worked we had to make Labor and Tool Assignments, hence there is some overlap, but I will try and minimise this.
The crew we will be using is BOSOHLBO – Overhead Line Crew – Boston City, which works on the DAY/DAY calendar/shift. It has three required crafts, three required qualifications and one required tool.
On the Labor Assignments tab you see the three Required Crafts and the three Required Qualifications, although this table window opens collapsed and you would need to use the button Show Table to display the rows. Below these two table windows is the Assigned Labor with two buttons for New Row and New Unrestricted Row. There are currently no Labor Assignments.
I have used the New Row button and picked the DRIVER position. On the Labor Select Value it will filter by the required craft, in this case a Craft of DRIVER. If the required craft has a Skill Level, Vendor or Contract it would also filter for labor by those values as well.
I have selected CALCOTT – Steve Calcott who has the DRIVER as a secondary craft with a Skill Level of FIRSTCLASS, it is not his default craft which is ELECT with a skill level of FIRSTCLASS. Notice that the Assigned Labor shows the Craft and Skill Level of the labor that was selected, DRIVER-FIRSTCLASS, in this case. The Effective Date defaults to today and the time element is the start of the crew’s shift, 07:00 for the DAY/DAY calendar/shift.
The Hourly Rate has incremented by the hourly rate of the assigned labor. Steve Calcott’s DRIVER-FIRSTCLASS rate is $17.00 per hour.
The action Crew Assignment Status is used to show how the requirements of the crew are being met on a particular day, which is defined in the Date field in the header of the dialog that opens. If you change the Date field the data in the dialog is refreshed, and so you may see changes from one day to the next.
There are five table windows, the two which you would find if you scrolled vertically down are Assigned Labor and Assigned Assets. The important field in the top three table windows is the Requirement Status which can be one of several values. This is the subject of three articles which examine each of these table windows.
The DRIVER position which we just assigned to Steve Calcott shows a Requirement Status of REQ NOT MET – Requirement Not Met, this is because the requirement was for a craft of DRIVER and the labor assignment was met with a DRIVER craft and FIRSTCLASS skill level. Basically, if any of the four fields of craft, skill level, vendor and contract is different between the labor assigned on the Date and the same fields on the Required Craft record for the same position, then the REQ NOT MET status will be shown.
The action View – Assignments shows the Assigned Labor and Assigned Tool Assets for a date range that you specify between the Start Date and End Date. You will need to use the Refresh button to fetch the records after making a change to either of these date fields.
I entered a Start Date of 24/05/21 and an End Date of 28/05/21 to see the crew assignments for this week, and it shows the one Assigned Labor made so far for the DRIVER position.
In the Assigned Labor table window and in the detail menu on the Labor field there is an action View Crew Assignments which shows the crews on which the labor is assigned. This also has a Start Date, End Date and Refresh button for narrowing the range of dates.
Permanent Replacement of a Crew Member
If we needed to replace CALCOTT in the crew with an Effective Date of 28/05/21 07:00, we can create a new Labor Assignment and choose the Labor to be assigned, LIBERI – Diane Liberi. You will receive the warning message “BMXAT0347W – Labor CALCOTT is already assigned as DRIVER for the specified date. Do you want to replace labor CALCOTT with labor LIBERI? Click Yes to replace labor CALCOTT with labor LIBERI. Click No to assign labor LIBERI as an additional resource to this crew.”
I will choose the “Yes” button.
After choosing “Yes” to the warning message the original Assigned Labor record for CALCOTT now has an End Date of 28/05/21 07:00, the same date/time that the new Assigned Labor record for the same position starts, the one with LIBERI.
Maximo makes labor assignments (and tool assignments) so that generally the individual records do not overlap in time. This has made a permanent replacement of CALCOTT with LIBERI.
The Effective Date and End Date fields on the Assigned Labor table window are modifiable. If you change the End Date of the CALCOTT assignment to the DRIVER position to 30/05/21 07:00, then you would get a similar warning message.
After choosing “Yes” to the warning message the original Assigned Labor record for CALCOTT now has an End Date of 30/05/21 07:00, and the Assigned Labor record for LIBERI now has an Effective Date of 30/05/21 07:00. The two records are not allowed to overlap.
The View Assignments action reflects that in the date range from 24/05/21 to 31/05/21 that there are two Assigned Labor records for the Crew, CALCOTT from 24/05/21 07:00 to 30/05/21 07:00, then LIBERI takes over with Effective Date 30/05/21 07:00 with no End Date.
If we had wanted to have LIBERI to work for one day with CALCOTT as a hand-over then this is achieved by responding “No” when the warning message is displayed. I changed the End Date for CALCOTT to 31/05/21, both CALCOTT and LIBERI will work together on the 30/05/21 shift. CALCOTT is an additional resource to this crew on 30/05/21.
The Crew Assignment Status action shows a Requirement Status of MULTIPLE when I progress the Date field in the header through to 30/05/21.
Temporary Replacement of a Crew Member
What if you only wanted to have a temporary assignment of the DRIVER position on the 28/05/21?
I’ve changed the Effective Date and End Date for LIBERI so that LIBERI is on the crew from 28/05/21 07:00 to the following day 29/05/21 07:00. The warning message “BMXAT0347W – Labor CALCOTT is already assigned as DRIVER for the specified date. Do you want to replace labor CALCOTT with labor LIBERI? Click Yes to replace labor CALCOTT with labor LIBERI. Click No to assign labor LIBERI as an additional resource to this crew.”
This time I’m going to choose the “No” button.
After choosing “No” to the warning message the original Assigned Labor record for CALCOTT now has an Effective Date of 29/05/21 07:00, and there is a new Assigned Labor record for the DRIVER position and labor CALCOTT starting 24/05/21 07:00 and ending when the temporary assignment to LIBERI starts on the 28/05/21 07:00. The three records do not overlap.
What we have seen in these last few sections is that when using New Row button, you can make Permanent and Temporary Labor Assignments to the crew, and you may get a warning message to ask you how you wish to proceed. You can also modify the Effective Date and End Date of one of the labor assignments, but I wouldn’t update multiple labor assignments without saving in between as you may end up with an error message similar to “BMXAA8229W – Record AMCREWLABOR : Organizationorgan=EAGLENA Crew=BOSOHLBO Position=DRIVER Unique Id=27 has been updated by another user. Your changes have not been saved. Refresh the record and try again.”
Choosing the right answer when you receive the BMXAT0347W warning message might take a bit of getting used to.
Labor Assignments – New Unrestricted Row
The New Unrestricted Row button opens a different dialog to what we have seen before. You select the Position against which you wish to make a labor assignment.
If I select HELPER in the Position field the Craft, Skill Level, Vendor and Labor Contract will be copied from the Required Craft record for this position in the BOSOHLBO crew. Then, when using the Select Value on the Labor field it will be filtered by these values, in our case it is filtering by craft ELECT and skill level APPRENTICE. I selected SMALL for the HELPER position. The Effective Date is today, 24/05/21, at the start of the shift 07:00.
With the HELPER position filled, using the View Crew Assignments option from the Labor detail menu for SMALL and we see that Mike Small has been removed from another crew, BOSOHLNW, with an End Date the same date and time, 24/05/21 07:00.
The New Unrestricted Row button adds assignments, it does not replace existing assignments. Some of the validations that produce warnings with the New Row button proceed without the warning and as we saw, in this case, if the labor is assigned to another crew they will be removed from it from the effective date that you specify in the New Unrestricted Row dialog.
If we make a New Unrestricted Row for the HELPER position, one that would be considered temporary with Effective Date 28/05/21 07:00 and End Date 29/05/21 07:00 and choose an outside labor to assign, GORMLEY from vendor EMI, there are no warnings, the assignment is just made.
The consequences of this are that while you are free from the validation messages you can still create a situation where multiple labor assignments for the same position are overlapping. Here SMALL overlaps with the HELPER position on 28/05/21, GORMLEY is also assigned to this position on the same day.
If you use the Crew Assignment Status action and review the HELPER position traversing from 24/05/21, it will show a Requirement Status of OK for 24/05/21 through to and including 27/05/21, then MULTIPLE for 28/05/21, both GORMLEY and SMALL are assigned, then on 31/05/21 and 01/06/21 and beyond it will show OK again, Mike Small still has an open-ended labor assignment to this position, GORMLEY was only a temporary assignment on the 28/05/21.
What the Requirement Status shows on 29/05/21 and 30/05/21 for this position is NOT ASSIGNED, this is because the crew’s calendar is DAY/DAY and a Saturday and Sunday are non-working days.
One of the features of the New Unrestricted Row occurs if the labor is already assigned to a different crew, then it will remove them from that crew for the specified time period and return them to that crew if the original assignment is longer than the new one.
Let’s see that in action. Our other crew in this case is BOSOHLW which has BALL – Allan Ball in the LEADER position from 07/06/21 07:00 with no End Date.
We want to make a temporary labor assignment of BALL in the LEADER position of crew BOSOHLBO between 14/06/21 07:00, our Effective Date, and 19/06/21 07:00 the End Date.
After closing the New Unrestricted Row dialog with the OK button, we see that crew BOSOHLBO has an Assigned Labor for the LEADER position, BALL has been assigned between the dates specified in the dialog.
On crew BOSOHLW the original Assigned Labor record now finishes on the 14/06/21 07:00 when the new assignment of BALL to crew BOSOHLBO starts. There is also a new Assigned Labor record for crew BOSOHLW to pick-up again after the assignment of BALL to crew BOSOHLBO completes on 19/06/21 07:00. The New Unrestricted Row has effectively inserted the labor assignment on crew BOSOHLBO and reworked the labor assignments on crew BOSOHLW around the dates of that assignment.
The use of the New Unrestricted Row button is easier to use for temporary reassignments of labor to other crews, than the New Row button.
We’ll be coming back to this but notice that all of the labor assignments for BOSOHLW are in the future and the Hourly Rate is 0.00. The Hourly Rate must be deriving the hourly rate as of a date, and it is using the date the last labor assignment is made, today, 14/05/21. As of today, there are no labor assignments, and hence no hourly rate.
One of the features of the New Unrestricted Row button and the Assign Labor dialog is that you can use it to create a new Required Crafts position and make the labor assignment in one action. For crew BOSOHLBO we are creating a new HELPER2 position for a carpenter (CARP-FIRSTCLASS) and assigning labor TOM – Tom Rontiris starting on 25/05/21 07:00, the Effective Date. We only need TOM for a couple of days and enter an End Date of 26/05/21 but notice that the time element of the End Date uses time now, 18:34 in this case.
On save of record the HELPER2 position has been added to the Required Crafts table window with the craft of CARP and a skill level of FIRSTCLASS. A record has also been created for Labor TOM in the Assigned Labor table window linked to the new Required Craft position.
Another feature of the New Unrestricted Row button and Assigned Labor dialog is that it will allow you to add a craft that has not been crew enabled, in this case MACH – Machinist. Notice that I have entered an Effective Date in the past, 19/05/21 07:00. If you had tried to do the same thing using the New Row button you would have ended with the less than elegant error message “amcrew#craftisnotcrewenabled”.
You can see that labor WATTERS was added to the LEADER position although Ray Watters has a complete mismatch with the Required Craft for the LEADER position, his craft is MACH-FIRSTCLASS instead of ELECT-FIRSTCLASS.
When using the Delete Row button on the Assigned Labor table window if the date part of the Effective Date is in the past, then you will receive the error message “BMXAT0692E – You cannot delete a labor assignment with an Effective Date in the past.” The effective date is also marked as read-only, and so you cannot change it. The only thing you can do, is to give an End Date to the record, the End Date can also be in the past. I gave the same date 19/05/21 07:00.
The record then disappears because the Assigned Labor table window only shows records where the End Date is either null or in the future.
The Assigned Labor record still exists in the database and it can be viewed by using the action View – Assignments. With a date range of 17/05/21 to 23/05/21 and using the Refresh button you can see the LEADER position had WATTERS assigned from an Effective Date of 19/05/21 07:00 to an End Date of 19/05/21 07:00. If you use the same date/time for both the Effective Date and End Date, then it will probably be understood to have been a mistake when creating the record.
Hourly Rate Calculation
The Hourly Rate is calculated from the Assigned Labor and does not include Assigned Tool Assets, although these also have an hourly rate. There may be many Assigned Labor records, some as we have just seen may be historical and are not displayed, some may have an Effective Date in the future. In order to see how the Hourly Rate is derived then filter with an Effective Date < tomorrow, in my case I filtered with an Effective Date <26/05/21 and it returned three records.
|Position||Labor||Craft||Skill Level||Labor Rate|
The total Labor Rate is $51.00/hour which is the hourly rate shown. Or is it? The Craft Rates happen to be the same values.
To test this, in the Labor application I changed TOM hourly rate to $16.00 for CARP FIRSTCLASS and in the Crafts application I changed the rate for CARP FIRSTCLASS to $20.00 (shown).
The Hourly Rate (AMCREW.RATE) is a persistent field but it will not be triggered by a change to the Labor or Craft rates, only by making Labor Assignments on the Crew record itself. I created a new LEADER assignment with an Effective Date in the future and the Hourly Rate changed from $51.00 to $53.00. It is using the craft rates and not the labor rates.
As rates can change over time, it needs to wait for labor assignments before making the calculation, but to use the Craft Rate table instead of the Labor Craft Rate table for the hourly rates seems a bit strange. The way I would explain this is that the Labor Assignments may change from day to day, and so could their hourly rates, and so the craft rate rather than labor craft rate will provide more stability to the hourly rate. However, I can think of different scenarios where the Hourly Rate shown is inaccurate and updating the craft rates at the start of the year is one of them, it would not change the crew hourly rates, you would need to wait for a labor assignment to be made to the crew.
If you want the hourly rate to be accurate, and whether you choose to base it on labor craft rates or craft rates, and whether to include hourly tool rates, or not, then you could always calculate it each day via a custom Cron Task or Escalation, then it would reflect today’s hourly rate.
It is the Override Hourly Rate field which will be used on a work order when the crew is referenced.
In the Tool Assignments tab, you use New Row or New Unrestricted Row buttons to make a record in the Assigned Tool Assets table window. Tool Assets are selected against a Tool Sequence that has a corresponding Tool Number. These are rotating tool assets that reference a rotating tool item that would be found in the Tools application. There are two BOSBTRUCKs 1422 and 1423, I’ll select tool asset 1422.
When you go to save you may receive error message “BMXAT0770E – Asset 1422 has conflicting crew assignments for the dates specified. Change dates, resolve conflicts manually, or add using unrestricted row.” Tool Asset 1422 is already assigned to crew BOSOHLNW with an Effective Date of 24/05/21 00:00 and an End Date of 28/05/21 18:00 and our Effective Date of 25/05/21 07:00 is between these dates.
Changing to Asset 1423 completes the tool assignment with an Effective Date of 25/05/21 07:00. Notice, even after a save of record the Hourly Rate has not changed, Asset 1423 has a Tool Rate of 10.00, it has not been used in the calculation of the Hourly Rate field.
The New Unrestricted Row button overrides many of the validations seen with the New Row button. The Assigned Tools dialog opens, and you can select the same Tool Sequence BTRUCK1 and select Asset 1422 which is assigned to crew BOSOHLNW.
Multiple Tool Assignments have now been created against the same Tool Sequence for the same time period. If you review this using the Crew Assignment Status action you will see that for the Date of 25/05/21 the Required Tools shows a Requirement Status of MULTIPLE, both tool assets 1422 and 1423 are assigned then.
On our other crew BOSOHLNW the Tool Assignments tab now shows that the Assigned Tool Assets for Asset 1422 has an End Date of 25/05/21 06:59, just before the asset is needed on crew BOSOHLBO.