Skip to Content
Product Information
Author's profile photo Sandeep Dinesh Janardan

Add Custom Business Objects to the Employee Resource Calendar

A manager needs to know who is assigned what work in their team, in order to effectively assign people to the right tasks for the right time.

The goal of the Business ByDesign Employee Resource Calendar is to fulfil this need. We want to reduce our customer’s dependency on tools like excel, rather we want to help our resource calendar provide  a central view of work assignment. One of the challenges we know is that there are more types of work that people are assigned to, that can be effectively represented in the standard ByDesign product.

One way to With the 2102 release of SAP Business ByDesign, a new business object is made available in the Public Solution Model called the Resource Calendar Generic Work Assignment. Using this business object, employee-work assignments based on custom solutions that are build using the ByD Cloud Studio, or those captured by an external solution can be added to the employee’s resource calendar.

This business object serves as a kind of interface, using which a partner can add their custom work objects to the standard resource calendar.

Some of the available features:

  1. Control on when the custom work items should be present in the Resource Calendar
  2. Choice of which work assignment affects employee availability
  3. Ability to decide a custom work distribution
  4. Support for work hierarchy – Just like how you see a hierarchy for project assignment – project at the root followed by the project task and underneath that, the service – you can code for a parent child relationship between different work assignments.

I would explain the above features in more detail, in a separate blog post. For now, I would like to show you an example of what you can build.

Example custom solution: Training Course Assignments

I created a very simple application in the ByD Cloud studio that allows a user to add training courses to employees.

Let us first take a look at the resource calendar for employee Peter Sellers. This is accessed from the Resource Management work center, from the Resource Search work center view. As you can see, Peter Sellers is pretty free over the next few weeks – he is assigned only two projects.

Now I open my custom application that is assigned to my user – I’ve called this work center Custom Work Assignments. I go to the Training work center view, where I can see the employees who have been assigned to training courses.


Custom Application – Training List

I click the New button as i want to assign some new Training courses to Peter Sellers. I add some items – Java and Javascript training, with specific dates for the training as well, as well as the number of hours that Peter would spend in the course.


Custom Application – Assign Training Schedule and Send to Resource Calendar

I now click on the “Send to Resource Calendar” button. I tied this button to an action on the Resource Calendar Work Assignment BO, that allows the standard work distribution algorithm (that is used for the project work distribution) to operate on the Training assignments I just made.

If I refresh Peter’s resource calendar, you can see the “In Process” icon against his name – showing that the new custom work objects are causing a recalculation of employee availability.


ByDesign Resource Calendar – In Process Icon against Employee

After a minute or so, I refresh the Resource Calendar, and can see that the Training schedule that I created out of my custom application is now part of the standard Resource Calendar ! The availability calculation also takes this into account – you can see by the reduced number of available hours for the affected weeks.


ByDesign Resource Calendar – with the Trainings custom object


Enabling usage of Resource Calendar Generic Work Assignment

This business object is part of the Public solution model, with all the required attributes writable from the ByD Cloud studio. It serves as a sort of interface, that allows the work object to be viewed in the Employee’s Resource Calendar.

Its usage is only supported for the Resource Management solution that is based on the planned work of the employee. It is not supported for the solution that is based on the committed work.


Business Configuration scoping option for Resource Management

As mentioned earlier, I would write a separate blog post that explains how I’ve used this interface to add my custom object into the Resource Calendar, leveraging the standard work distribution mechanisms that are used for Projects.

I would be super interested to hear what kind of solutions you would like to build for the resource calendar. You can contact me via messages, or can put in a comment below if you would like to have a chat.

Thank you very much for reading !

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Jacques-Antoine Ollier
      Jacques-Antoine Ollier

      I cannot believe I missed this. Thank you Sandeep Dinesh Janardan we will test this on our side.

      I have a question around this BO actually. Did you release it only for partners to manipulate it and insert new values to it, or do SAP also uses it to store your own Work Packages assignment done through Period Plans.

      I an wondering if I could use this BO to also manipulate already created Period plans from it. 🙂 But I think I cannot retrieve these period plans from the generic work assignment and need to go back to the project. Am I right?

      Thank you for your attention


      Jacques-Antoine Ollier

      Author's profile photo Sandeep Dinesh Janardan
      Sandeep Dinesh Janardan
      Blog Post Author

      Hello Jacques-Antoine Ollier

      SAP uses the Resource Calendar Generic Work Assignment business object to include the service order assignments in the resource availability calculation - see Service Order Dispatching in SAP Business ByDesign | SAP Blogs - this was part of release 2202.

      This business object would not be used for projects - as there already is an existing mechanism for its inclusion in the resource calendar. So yes, to view the period plans, you would need to read the project business objects.


      Author's profile photo Jacques-Antoine Ollier
      Jacques-Antoine Ollier

      Ok that is what I thought and found from my backend analysis.

      Thank you very much for confirming Sandeep Dinesh Janardan !

      I will continue my research on what we could do.



      Author's profile photo Venkatesh Govindan
      Venkatesh Govindan

      Hi Sandeep Dinesh Janardan

      Thanks for the blog. We are trying to create Resource Calendar Generic Work Assignment from an action of custom object. But we are not sure of what needs to be filled for few parameters. Can you please help us on this.? We are able to create an instance on the Resource Calendar Generic Work Assignment object. However nothing is visible in the resource calendar of the employee.

      Awaiting your reply. Thanks in advance.


      Author's profile photo Sandeep Dinesh Janardan
      Sandeep Dinesh Janardan
      Blog Post Author

      Hello Venkatesh Govindan

      The "Reference" attributes that you have outlined are not required for their display in the resource calendar. - these parameters are helpful for any custom logic you can execute for the object categories. We use exactly the same business object to display the assigned service order items in the resource calendar of the employee.

      In order that the resource calendar reads the information, and calculate employee availability based on it, we need to call the action "TriggerWorkDistribution" that is on the Work Item node.

      Hope this helps !


      Author's profile photo David Becker
      David Becker

      Hi Sandeep Dinesh Janardan,

      thanks for sharing this blog with us.

      I am trying to implement this with multiple levels, meaning that I want to get a 4-level structure with 3 WorkItems and 1WorkAssignment.

      Therefore I write the UUID of the root-WorkItem into the ParentWorkItemUUID of the second WorkItem and so on. Code for 3-level structure.

      foreach (var obj in this)
      	var calendarWA = ResourceCalendarGenericWorkAssignment.Retrieve("E0002");
      	if (!calendarWA.IsSet()){
      		calendarWA = ResourceCalendarGenericWorkAssignment.Create();
      		calendarWA.ResourceID = "E0002";
      	if (calendarWA.IsSet())
      		var cWAitem;
      		foreach (var workItem in calendarWA.WorkItem){
      			if (workItem.ID.content == "HEAD1"){
      				cWAitem = workItem;
      		if (!cWAitem.IsSet()){
      			cWAitem = calendarWA.WorkItem.Create();
      			cWAitem.ID.content = "HEAD1";
      			cWAitem.Description.content = "Planned Time";
      			cWAitem.StartDateTime = Context.GetCurrentGlobalDateTime();
      			cWAitem.EndDateTime = Context.GetCurrentGlobalDateTime();
      		var cWAitemTest = calendarWA.WorkItem.Create();
      		if (cWAitem.IsSet())
      			cWAitemTest.ID.content = "PROJECT1";
      			cWAitemTest.ParentWorkItemUUID = cWAitem.UUID;
      			cWAitemTest.Description.content = "Project 1";
      			cWAitemTest.StartDateTime = Context.GetCurrentGlobalDateTime();
      			cWAitemTest.EndDateTime = Context.GetCurrentGlobalDateTime();
      			var cWAitem2 = cWAitemTest.WorkAssignment.Create();
      			if (cWAitem2.IsSet())
      				cWAitem2.Description.content = "Projecttask 1";
      				cWAitem2.StartDateTime = GlobalDateTime.ParseFromString("20220920102800");
      				cWAitem2.EndDateTime = GlobalDateTime.ParseFromString("20220920182800");
      				cWAitem2.ManualDistributionIndicator = false;
      				cWAitem2.WorkQuantity.content = 8;
      				cWAitem2.WorkQuantity.unitCode = "HUR";

      My result is a valid 3-level structure, but I am missing the description of the "head" node.


      Can you tell me what is wrong?