Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Note
Community interest groups have now moved from Yammer to Microsoft Viva Engage. To join a Viva Engage community and take part in the latest discussions, fill out the Request access to Finance and Operations Viva Engage Community form and choose the community you want to join.
This article provides information about the Project resource scheduling data model.
Physical data model for Project resource scheduling
The following diagram represents the data design structure of the Project resource scheduling physical data model.
Tables
The following table lists additional tables that support the Resource management data model.
| Table | Description |
|---|---|
| ResResourceIdentifier | Stores all resources and a subset of records from the WrkCtrTable table that are identified as resources. When you add a resource, the system adds a record to the WrkCtrTable table. The system also adds a record to this table with a foreign key reference to the new record in the WrkCtrTable table. |
| ResourceSetup | Specifies a resource’s property. This table replaced the ProjWorkerSetup table in Dynamics AX 2012. |
| ResBooking | Stores all resource booking type reservations. This table replaced some of the information stored in the PSASchedEmplReservation table in Dynamics AX 2012. |
| ResAssignment | Stores all resource assignment type reservations. This table replaced some of the information stored in the PSASchedEmplReservation table in Dynamics AX 2012. |
| ResourceResourceCategorySetup | Stores the resource default project role association that the system validates by a time range. This is a time effective table that has a foreign key to ResResourceIdentifier.RecId and a foreign key to PSASchedRole.RecId with ValidFrom and ValidTo fields. The PSASchedRole table is used to store the project role. |
| ResCalendarCapacity | This is a data denormalized table based on WorkCalendarTable, WorkCalendarDate, and WorkCalendarDateLine to calculate resource capacity. The calculation is based on the resource associated calendar date line definition, which is specified in the WorkCalendarDataLine table. You can generate the data in this table by running the Synchronize resource capacity roll-ups batch job. |
| ResRollUpCalendar | This is a data denormalized table based on ResCalendarCapacity. The ResRollUpWriter class uses the data in this table to speed up the process of adding resource records to the ResRollup table. You can generate the data in this table by running the Synchronize resource capacity roll-ups batch job. |
| ResRollUp | This is a data denormalized table based on ResBooking, ResAssignment, and ResRollUpCalendar for performance improvement. This table contains all of the capacity and reservation data for time scales, including day, week, month, quarter, and half year, for all resources. The AvailabilityView control accesses this data. This control is included with any resource scheduling X++ form that includes this control, like the Resource availability form. You can generate the data in this table by running the Synchronize resource capacity roll-ups batch job. The system updates data for every resource reservation action such as adding a new resource, booking, assignment, and reservation cancellation. |
Views
The following table lists the most informative views that you can use to access the Resource management data model.
| View | Description |
|---|---|
| ResResourceWorkCenterView | This view is based on ResResourceIdentifier joining to WrkCtrTable, which captures only the fields that are required for resource management. |
| ResourceView | This view is based on ResResourceIdentifier, which is only based on ResResourceWorkCenterView. In a future release it can be extended to more than ResResourceWorkCenterView if a resource record is saved on more than just ResResourceWorkCenterView. |
| ResourceWorkerView | This view replaces the HcmWorker table, which is based on ResResourceIdentifier. WrkCtrTable has a worker field that is a foreign key to HcmWorkerTable. This view includes all WrkCtrTable resources where the worker field isn't 0. |
| ResourceLegalEntityView | This view replaces the HcmEmployment table. This view represents the resource legal entity (LE) view, which is a union of ResourceWorkerLegalEntityView and ResourceOtherLegalEntityView. The purpose of this view is to look up the resource legal entity as well as the associated valid from and valid to date. For example, an HcmWorker resource can be hired by multiple LEs with different ValidFrom and ValidTo dates. If the worker is hired by multiple LEs, then this worker resource has multiple records in this view. If the resource isn't a HcmWorker, then this resource has only one record and validFrom = minDate and ValidTo = maxDate. |
| ResourceCalendarView | This view replaces WorkCalendarTable. This view contains the calendar RecId of the resource. This view is a union view of ResourceWorkerCalendarView, ResourceOtherCalendarView, and ResourceGroupResourceCalendarView. To look up the resource calendar, users should first look up the ResourceLegalEntityview. This is because a resource should have a different calendar depending on the resource’s legal entity. First, locate the record from ResourceLegalEntityView and get the RefRecId and RefTableId fields. Then, look up ResourceCalendarView by setting ResourceLegalEntityRefRecId = ResourceLegalView.RefRecId and ResourceLegalEntityRefTableId = ResourceLegalView.RefTableId. |
| ResourceCategoryView | This view shows the resource category (the resource role for a worker resource), which is based on the PSASchedRole table. |
| ResSkillHcmView | This view is based on HcmSkill to capture all the skills that are defined in the HcmSkills table. |
| ResCertificateHcmView | This view is based on HcmCertificateType to capture all the certificates that are defined on the HcmCertificateType table. |
| ResEducationHcmView | This view is based on HcmEducationDiscipline to capture all the education disciplines that are defined in the HcmEducationDiscipline table. |
| ResProjectHcmView | This view is based on ProjTable to capture all projects that exist in the ProjTable. |
| ResRoleView | This view is based on ResourceCategoryView to capture all resource categories. |
| ResCharacteristicView | This view is the union view of ResSkillHcmView, ResCertificateHcmView, ResEducationHcmView, ResProjectHcmView, and ResRoleView. This view is used to gather all the characteristics that are defined as selectable criteria for the resource search feature. |
| ResResourceCharacteristicView | This view is the union view of ResResourceCharacteristicHcmView, ResResourceResourceCategoryView, ResResourceNameView, and ResResourceRoleCharacteristicView. This view is used to identify the characteristics that are associated with a resource for the resource search feature. |
| ResCalendarCapacityView | This view is based on ResCalendarCapacity, which contains calendars that are specified in WorkCalendarTable with capacity details. |
| ResCapacityView | This view shows the resource’s capacity per hour. |
| ResResourceCapacityWorkDaysView | This view is based on ResCapacityView, which shows the resource capacity per day. |
| ResAssignmentView | This view is based on the table ResAssignment, which stores the activity resource assignments to either project or quotation work breakdown structure (WBS) task. |
| ResBookingView | This view is based on the table ResBooking, which stores the activity resource bookings to a project or quotation. |
Changes that affect tables and fields
These sections contain information about code changes to tables and fields that are part of the feature implementation related to Project resource scheduling.
Resource scheduling
The table PSASchedEmplReservation no longer stores a resource’s reservations. Instead, the ResAssignment and ResBooking tables store reservations. Both tables use the Activity resource field as a foreign key for PSAProjSchedRole.RecId to store a resource’s reservation. The PSAProjSchedRole table is the project team table that has the Resource field as a foreign key to ResourceView.RecId and the ResourceLegalEntity field as a foreign key to CompanyInfo.RecId to identify which resources are the project’s or quotation’s team members. If the PSAProjSchedRole.Resource field equals 0, this activity resource is a planned resource. A planned resource is a shadow resource that isn't backed by an actual resource. PSAProjSchedRole.ResourceCategory is a foreign key to PSASchedRole that stores the role of this team member. The ResourceResourceCategorySetup table stores the default time effective resource/role association. However, the resource can be reserved to any role defined by PSAProjSchedRole.ResourceCategory, ignoring the default role definition on the ResourceResourceCategorySetup table. Regarding WBS versioning, the tables ProjPlanVersions and ProjPlanVersionDetails store the WBS tasks versions. Initially, the system stores all WBS task data in these tables while the user is editing the WBS tasks content. After the user selects Publish, the system pushes the task data to the original hierarchy tables (smmActivities and PSAActivitySetup). The resource management feature requires data in the original hierarchy tables and requires a published WBS.
Price by resource and resource category
The pricing tables ProjCostPriceExpense, ProjCostSalesPrice, and ProjRevenueSalesPrice have a foreign key from ResourceView.RecId. The tables ProjHourCostPrice, ProjHourSalesPrice, and ProjTransferPrice have a foreign key from ResourceView.RecId. The field ResourceCategory is part of the foreign key for ResourceCategoryView.RecId. This design bases pricing on a resource instead of a worker and enables pricing setup by resource category.
Common methods to get resource field and lookup resources
The ResourceFacade class includes several resource methods. The following table lists some of the most common methods.
| Class.Method | Description |
|---|---|
| ResourceFacade.findByWorker() | Look up the resource record ID by HcmWorker record ID. |
| ResourceFacade.findOrCreateByWorker() | Look up the resource record ID by HcmWorker record ID. If the method doesn't find the resource record ID, it adds a resource record ID to the ResResourceIdentifier table and returns the resource record ID. |
| ResourceFacade.findByResourceID() | Look up the resource record ID by resource ID. |
| ResourceFacade.get… | The ResourceFacade class supports many get methods for the resource. You can query resource-related values like Resource ID, Resource calendar, Resource legal entity, and Resource period from the ResourceView, ResourceLegalEntityView, ResourceCalendarView, and ResourceSetup tables. |
Facade classes
The following table lists the facade classes that you can use as a starting point to interact with the Resource management data model.
| Class | Description |
|---|---|
| ActivityFacade | Contains methods to retrieve an activity’s properties, including ID, Quotation ID, Project ID, Booked/assigned capacity, Remaining capacity, Calendar, Activity number, and Root project activity. |
| ActivityResourceFacade | Contains methods to retrieve an activity's resource properties including Calendar, Name, Resource category, Resource legal entity, Is generic resource, and Is team member. |
| PeriodFacade | Contains methods to retrieve period properties including Start and End date, Period ID, and Period name. |
| ResourceCalendarFacade | Contains methods to retrieve the resource's calendar properties including Calendar data area ID, Calendar ID, Calendar RecID, Capacity, and Dates. |
| ResourceCategoryFacade | Contains methods to retrieve the resource's default resource Category, ID, Name, and Type. |
| ResourcePeriodFacade | Contains methods to retrieve the resource's period date range and update the period method. |
| ResourceWorkerFacade | Contains methods to retrieve the Employment type. |