Thursday, August 16, 2018

Workflow not kicking in - Try this (Functional Debug)

Many times there is a situation where the workflow does not kick in, no matter what. It does not give any error but it does not progress either. In such situations, a functional person can do the following debug steps before going to a a technical consultant. Most of the times this should resolve the issue, if it doesn't then definitely it needs to be looked into by a technical consultant.

Navigate to System administration > Workflow >  Workflow infrastructure configuration

Navigation for 'Workflow infrastructure configuration'


Workflow infrastructure configuration
Check the ‘Batch group’ and verify that it is specified and it is the one which is defined in the 'Batch group'. Next navigate to System administration > Setup > Batch group

Navigation to 'Batch group'

Batch group
Click on the 'WF' batch group and click on 'Batch servers'. In this environment the workflow batch group is named 'WF'. It can be different for you. Once you clock on the batch servers, make sure that the desired server is in the 'Selected servers' and if it is not then select it from the 'Remaining servers' and push it to 'Selected servers'. The thumb rule is (which might not be the case with all) name of the desired server is mostly same as the name of environment and can be found in the URL of the environment. See the screenshot below.

Selected servers and name in the URL
Next navigate to System administration > Setup > Server configuration

Navigation to Server configuration
Make sure that the server selected above in the 'Selected servers' above, has a record created.

Server configuration
Next navigate to System administration > Inquiries > Batch jobs

Navigation to Batch jobs
Search for the workflow batches by typing in the 'work' in the filter for 'Job description'

Batch jobs
Make sure that the status of the jobs is 'Waiting'.

Batch jobs status - Waiting
If you wish to alter the status of the batch jobs, multi-select the workflow batch jobs and click on the 'Change status' option in the 'Batch job' group in the 'Action pane'.

Change status of batch jobs
Change it either to 'Withhold'  or 'Cancelling' and then change it back to 'Waiting' again. This should hopefully solve the issue.

Select new status for workflow batch jobs
If not, then delete the batch jobs and create the new batch jobs again by configuring the 'Batch group' in the 'Workflow infrastructure configuration', which would auto create these three workflow batch jobs.

All the steps mentioned above should hopefully resolve the workflow issue and if not, then this it is time to consult the technical consultant. Hope this helps.

Latest: 22nd Jan 20205

Please make sure that these batch jobs status are changed to "Waiting".




Thanks
Sarang

Friday, August 10, 2018

Sales price on a project PO - When is it editable / non-editable ??

Reinventing the wheel is always frustrating and royal waste of time. To avoid that, i am writing this post. This is nothing big but just a small note so that it becomes permanent in my memory and i need NOT spend time on it in future if it crosses my path again.

Sales price field on the project tab in the project PO behaves differently based on whether it is for item or procurement category and whether cost is to be consumed on the project at the time of receipt or not. We are going to discuss all of these scenarios in detail below.

Sales price field on the project PO - Items

Without the consumption of cost on project at the time of receipt

When there is no requirement to have cost absorbed on the project at the time of PO product receipt, then the Sales price field on the project PO is editable and user can edit it. The sale price field will pre-populate sales price value if it is already set on the item record (in the Sales tab, Base price) and user will have the ability to change it.

The project parameter for cost not to be consumed on the project is as below:

Cost not to be consumed on project at product receipt

Sales price setup on the product on sales tab.

Base sales price 

With this setting, the user is able to edit the sales price on the project PO.

Sales price field is editable on a PO
As stated earlier the price is pulled from the base sales price but user can edit this. This value will be charged to customer when the project invoice is raised for this cost (PO).

With consumption of cost on project at the time of receipt

When there is a requirement to have cost absorbed on the project at the time of PO product receipt, the following parameters needs to be switched on.

Project purchase order setting for absorbing cost on project
However when these parameters are switched on, the system creates a SO of type 'Item requirement' in the background when the project PO is created. On this PO, the Sales price field for the item is 0 and not editable.

Sales price field is 0 and not editable

Sales price in this case is stamped on the auto created Sales order of type 'Item requirement' and also on the associated 'Item requirement' record, which can be updated. This is price which would then be used when the project invoice is raised for this cost (PO).

Sales price updated on the Item requirement record is reflected on the Sales order record and vice versa.

Sales price on the Item requirement record.



Sales price on the Sales order line

This value will be charged to customer when the project invoice is raised for this cost (PO).


Sales price field on the project PO - Procurement category

With 'Set the cost price as the sales price by default' parameter switched off

When the project PO is created for a procurement category, then if the the below parameter is switched off, then the sales price is not editable and the sales price is pulled from the sales price setup done for the attached project category.

Set the cost price as the sales price by default - OFF

Sales price on the project PO with procurement category is not editable and the price is pulled from the sales price setup for the category in the projects module.

Sales price is not editable

Sales price pulled from the project sales price setup. This category is linked to the procurement category in the PO line.

Sales price setup in projects module.

If no price is setup then sales price would be 0.

**Cost consumption on the project can only be done for the stocked items, hence if procurement categories are used on the project PO, cost can ONLY be consumed on the project after the PO invoice**

With 'Set the cost price as the sales price by default' parameter switched on

When the project PO is created for a procurement category, then if the the below parameter is switched on, then the sales price is not editable but the sales price is equal to the cost price.

Sales price is not editable but same as cost price
Ideally in this option, sales price should have been editable. I mean system should propose the sales price equal to cost price but the sales price field should have been editable for the user to edit / change. Is this possible in standard? Can anyone shed some light?

Other than this question, now i am comfortable with the 'Sales price edit / no -edit' issue on a project PO for item and procurement category. I hope you all to.

Thanks

Kind Regards
Sarang


Monday, August 6, 2018

Revenue Recognition - Jumping months in Straight Line Rev Rec.

In my recent project i had to work a lot on the straight line rev rec functionality in detail and had to test many different scenarios. This gave me more insight into what is system capable of doing and what the system is not capable of doing with respect to recognizing revenue in a straight line scenario.

Straight line revenue recognition will always recognize revenue (approx.) equal revenue per month if the estimation is done each month. However there are many scenarios which needs to be thought into, like:


  • What happens if the user forgets to estimate the first month and directly runs the estimation in the second or the third month (for e.g. - Actual start date : 1st Jan 2018 and Actual end date : 31st Dec 2018 and estimation posted for directly for March 2018) or 
  • What happens if the user jump months suddenly in between and runs the estimation for a month missing a few ones in between (for e.g. - Actual start date : 1st Jan 2018 and Actual end date : 31st Dec 2018 and estimation posted for sequentially from Jan 2018 till March 2018 and then user forgets the estimation for April 2018 and May 2018 and then runs estimation for June 2018 directly)

Lets see below how the system reacts to the above two scenarios.

Estimation directly for any month other than the first month

In the example below, the 'Actual start date' and 'Actual end date' is 1st Jan 2018 and 31st Dec 2018 respectively.

Actual start and end date
No estimates are posted for Jan 2018 and Feb 2018 and directly user is trying to post estimate for March 2018.

Estimation for March 2018
System creates the estimate for March directly, with the correct percentage to recognize till March 2018.

Revenue recognized till date = (12000 / 365) * 90 = 2958.90
Percentage complete = (2958.90 / 12000) *100 = 24.66

Revenue value and percentage for March 2018
System allows the user to estimate directly for any other month for the first estimate, the way it allowed for in the above example. But are we allowed to skip months in between after the first estimate, lets see in the next section below.

Skipping few months in between and then estimating  

In the example below, the 'Actual start date' and 'Actual end date' is 1st Jan 2018 and 31st Dec 2018 respectively.

Actual start and end date
Estimation done and posted successfully for first three months .i.e. for Jan, Feb and March.

Estimation for Jan, Feb and March
Now if i try to create an estimate for June 2018;

Estimation for June 2018 NOT CREATED

Ideally it is expected that system should either calculate the estimate OR if not possible system should display an error message. But system does nothing other than closing the 'Create estimate' screen. This means that system does not allow the user to skip months and then estimate for some other month without estimating the missing months.
Though this is correct from a business perspective but system should have displayed an error message instead of just displaying nothing and doing nothing. 

So in a scenario if the user has forgotten to estimate for some months and now is trying to estimate for the current month, system expects the user to first complete the previous estimations before running the estimate for the current month.

Estimation for June 2018 CREATED
So in conclusion:

  • if the user has started his estimation from the first month, he/she is not permitted to skip months in between. 
  • if user has missed the estimation for the first few months, then for the first estimate, system permits to skip months but not thereafter.
Hope this helped get more insight into the system behavior for straight line revenue recognition scenarios.

Thanks

Kind Regards
Sarang

Tuesday, July 31, 2018

Straight Line Revenue Recognition - Contract value / length changed (increased / decreased) before the end of project

Standard calculation for straight line revenue recognition

Original contract value = 12000

Original contract value

Actual start date = 1st July 2018
Actual end date = 30th June 2019


Start and End dates
Estimation for first three periods (months)

Estimation for first 3 months
Calculation for Accrued revenue is as follows:

Accrued revenue = (Total contract value / Number of days in the entire period) * (Number of days in the month in consideration)

July 2018 had 31 days, hence the accrued revenue for the month of July is as follows: (12000 / 365) * 31 = 1019.18

Similarly for the months of August and September, the accrued revenue is 1019.18 and 986.30 respectively.

Contract value changes

Contract value increased mid-way

However if the contract value is changed now and is updated to 16000, what will be the impact on the revenue recognition for the month of October. Lets see:

Updated contract value = 16000

Updated contract value

Estimation for month of October 

Estimation for October
The accrued revenue value for the month of October is 2367.12. How did the system calculation logic arrive at this value?? It is as follows:

Accrued revenue for original contract value for October  = (12000 / 365) * 31 = 1019.18
Accrued revenue for updated portion of contract value upto October = (4000 / 365) * 123 = 1347.95

Total of 1019.18 + 1347.94 = 2367.12

** 123 is the number of days from July to October; 31+31+30+31 = 123 **

From the next estimate, the calculation will be as follows:

Estimation for month of November

Estimation for November


Accrued revenue for increased contract value for November  = (16000 / 365) * 30 = 1315.07

From November onwards the entire contract value (original + updated) will be considered in the calculation.


Contract value decreased mid-way

However for some reason if the un-billed contract value is reduced, then the revenue recognition engine is smart enough to adjust the change and post -ve accrued revenue for the next period.

Contract value reduced to 12000 again.

Contract value reduced

Estimation for month of December

Accrued revenue value adjusted as per the changed contract value

The accrued revenue value is now -657.53.

This is calculated as follows:

Accrued revenue for original contract value for December  = (16000 / 365) * 31 = 1358.90
Accrued revenue for updated portion of contract value upto December = (4000 / 365) * 184 = 2016.43

Total of 1358.90 - 2016.43 = - 657.53

** 184 is the number of days from July to December; 31+31+30+31+30+31 = 184 **

From the next estimate, the calculation will be as follows:

Estimation for month of January

Estimation for January 2019
Accrued revenue for decreased contract value for January  = (12000 / 365) * 31 = 1019.17

From January onwards the entire updated contract value will be considered in the calculation.

Contract length changes

Original dates are as follows:

Actual start date = 1st July 2018
Actual end date = 30th June 2019

First three estimate values are as follows:

Estimates for first 3 months.
Contract length increased mid-way

Contract length is increased after the first three estimates.

Updated dates are as follows:

Actual start date = 1st July 2018
Actual end date = 30th September 2019

Estimation for month of October


Estimate for October after contract length increase

Accrued revenue for original contract length for October  = (12000 / 365) * 31 = 1019.18
Accrued revenue for updated portion of contract length upto October = (12000 / 457) * 31 = 814.08

 Total of 1019.18 - 814.08 = 205.10

** 457 is the number of days calculated as follows : 365 + 31+31+30. Additional days for the months of July, August and September **

From the next estimate, the calculation will be as follows:

Estimation for month of November

Estimation for November
Accrued revenue for November with new contract length  = (12000 / 457) * 30 = 787.75

From November onwards the entire contract length (original + updated) will be considered in the calculation.


Contract length decreased mid-way

Contract length is decreased after the first three estimates.

Updated dates are as follows:

Actual start date = 1st July 2018
Actual end date = 31st March 2019

Estimation for month of October

Estimate for October after contract length decrease
Accrued revenue for original contract length for October  = (12000 / 365) * 31 = 1019.18
Accrued revenue for updated portion of contract length upto October = (12000 / 277 ) * 31 = 1343.96

 Total of 1019.18 + 1343.96  = 2362.20

** 274 is the number of days calculated as follows : 365 - (30+31+30). Additional days for the months of April, May and June. Ideally it should be 274 but not sure why system took 277. Will update once i find the issue  **

From the next estimate, the calculation will be as follows:

Estimation for month of November

Estimation for November

Accrued revenue for November with new decreased contract length  = (12000 / 274 ) * 30 = 1313.86

From November onwards the entire contract length (original + updated) will be considered in the calculation.

This is all about the calculation logic in straight line revenue recognition when the either the contract value changes or the contract length changes in between.

Thanks
Sarang

Monday, July 9, 2018

Resource Scheduling in Dynamics 365 FinOps - Basic Building Blocks

I got to get my hands dirty with this functionality in the new project that i started working on and i must say this has been one of the complex areas in PSA. There are couple of bugs still in the system but overall the functionality started making sense only after i tried and tested the scenarios umpteen number of times. The 'penny drop' moment finally happened when i realized that the same screens in the resource scheduling functionality works differently when accessed from different areas in the system. When i came to know this i could instantly make sense out of most of the logic built around this functionality. And then i concluded that different areas are for different people working in resource scheduling space and those being 'Project manager' and 'Resource manager'.

Other important point to note, before i go into further details, is that the 'Resource request workflow' works differently for 'Staffed resource' and 'Planned resource'.

Resource scheduling can be done by:
  • without using a Resource Request workflow
  • using a Resource Request workflow
Before we go into the details of the resource scheduling process, we should understand that there are two main users who are going to use this functionality. They are:
  • Project manager : Project manager will have access to 'Assign' the resources to the specific WBS tasks, which the Resource manager will NOT have. Project manager can also 'Book' the resources from the project record itself.
  • Resource manager : Resource manager will ONLY have access to 'Book' the resources to the projects. Its then the task of the Project manager to assign the booked hours to specific WBS tasks if any.

Without using a workflow
  • Planned resources: 
    • Can be assigned to the WBS tasks using 'Auto-team' feature or by creating a record in the ‘Project team and scheduling’ fast tab of the project record, using a resource role instead of an actual resource.
    • Planned resources needs to be fulfilled with an actual resource. This can be done by the Project Manager from the 'Fulfill resources' from the ‘Project team and scheduling’ fast tab of the project record or by the Resource Manager from the 'Resource fulfillment' menu item. (Project management and accounting > Project resource > Resource fulfillment)
    • The actual resource will then be 'Booked' and 'Assigned' to the project, if it was generated using the 'Auto-team' feature.
    • The actual resource will need to be 'Booked' and 'Assigned' manually, if it was generated from the ‘Project team and scheduling’ fast tab of the project record.
  • Staffed resources:
    • Can be assigned to the WBS task using the 'Assign' form by either soft or hard assigning the resource or by creating a record in the '‘Project team and scheduling’ fast tab of the project record, using an actual resource.
    • The actual resource will need to be 'Booked' and 'Assigned' manually, if it was generated from the ‘Project team and scheduling’ fast tab of the project record.

Using a workflow

Workflow does not support the 'Planned resource' request.
  • Planned resources: 
    • Workflow does not support the assignment of the staffed resource to a planned resource. 
    • Can be assigned to the WBS tasks using 'Auto-team' feature or by creating a record in the ‘Project team and scheduling’ fast tab of the project record, using a resource role instead of an actual resource.
    • Planned resources needs to be fulfilled with an actual resource. This can be done ONLY  by the Resource Manager from the 'Resource fulfillment' menu item. There is a drop down on the page which has following values - 'Show all requests', 'Planned resource only' and 'Staffed resource only'. (Project management and accounting > Project resource > Resource fulfillment)
    • 'Assign' option ONLY appears for the 'Planned resource' requests. For the 'Staffed resource' request 'Assign' option will NOT appear. Instead a 'Workflow' icon will appear.
    • Once the 'Staffed resource' is assigned to the 'Planned resource' then the actual resource will then be 'Booked' and 'Assigned' to the project, if it was generated using the 'Auto-team' feature.
    • The actual resource will need to be 'Booked' and 'Assigned' manually, if it was generated from the ‘Project team and scheduling’ fast tab of the project record.
  • Staffed resources:
    • Can be assigned to the WBS task using the 'Assign' form by either soft or hard assigning the resource or by creating a record in the '‘Project team and scheduling’ fast tab of the project record, using an actual resource.
    • The actual resource will need to be 'Booked' and 'Assigned' manually, if it was generated from the ‘Project team and scheduling’ fast tab of the project record.

Let me now clarify the meaning of 'Staffed resource', 'Planned resource', 'Soft assign', 'Hard assign', 'Soft book', 'Hard book', 'Booked hours' and 'Assigned hours'.

***Assumption - Resource request workflow is switched on***

Staffed resource - Staffed resources can be found under 'Resource list' form. These are resources which are linked to the respective workers / employees.

Planned resource - A planned resource is a project team member, which is created for planning purposes. These resources are not linked to any worker. To create a planned resource, user can either auto generate them from WBS by using the ‘Auto generate team’ feature or from the Projects detail form, user can click on the ‘+Add’ button from the ‘Project team and scheduling’ fast tab. Then on the ‘Add roles to project’ form, pick a role and do not specify ‘Resource’. Then click the ‘Create’ button.

Soft assign - Soft assign means a resource may or may not do the WBS task based on confirmation from either the resource or resource manager. Soft assign can ONLY be done by Project manager AND the screen to soft assign can ONLY be accessed from within the project's WBS.
  • To soft assign - No workflow to Soft assign
  • Hard assign after that, system shows message that, “There are existing soft assignment for the resource which you have selected to hard assignment. Would you like to remove this resource existing soft assignment?”
  • If there are no ‘Hard Booked’ hours, then system shows another message, “Sarang Kusare has no hard booking hours in this project to support this assignment operation. Would you like to submit a resource request for your requested hours?”
  • Had there been ‘Hard Booked’ hours earlier, then system would not have shown the above message and would have ‘Hard assigned’ the resource.
Hard assign - Hard assign means a resource will for sure do the WBS task as he is confirmed. Hard assign can ONLY be done by Project manager AND the screen to hard assign can ONLY be accessed from within the project's WBS.
  • To hard assign - Need to submit a resource request, which would initiate a resource request workflow.
  • If there are no ‘Hard Booked’ hours, then system this message, “Sarang Kusare has no hard booking hours in this project to support this assignment operation. Would you like to submit a resource request for your requested hours?”
  • Had there been ‘Hard Booked’ hours earlier, then system would not have shown the above message and would have ‘Hard assigned’ the resource.
Soft book - Soft booking on a resource means that the resource may work on the project but not on a specific WBS task. Soft booking can be initiated by PM (from within a project record) or a Resource manager (from within the 'Resource availability' workbench).
  • To soft book – No workflow to soft book, however system gives an option to create a resource request, if the item is accessed from the project record. The option to create the resource request does not appear  on the item, if it is accessed from the resource availability workbench.
Hard book - Hard booking on a resource means that the resource will for sure work on the project but not on a specific WBS task. Hard booking cannot be initiated by PM (from within a project record) as the option is disabled but a Resource manager can hard book a resource from within the 'Resource availability' workbench.
  • Cannot directly hard book any resource from project record, but can from the resource availability work bench. 
  • Process to hard book a resource from the project is to first ‘Soft book’ 
  • Then create a resource request to convert the soft booking into hard booking
  • The request when approved, system will convert the soft booking into hard booking
Booked hours - Booked hours are the hours booked on the project but not to a specific task in the WBS. So if a resource is 'Booked' on a project, then he/she can be just booked on the project or can be booked on a project and assigned.

Assigned hours - Assigned hours are the hours assigned to a resource on a project to a particular WBS task. If an employee is assigned to a task in WBS, he/she is automatically booked as well to the project. So if a resource is 'Assigned' on a project, then he/she MUST be booked and assigned on the project.

This is where the bug lies i think, because if i 'Soft assign' a resource on a WBS task in the project and if i make use of the button 'Confirm hours' on the project record or resource availability workbench then the system 'Hard assigns' the resource to the project but does not 'Hard book' the resource, which is expected. Project can have 'Booked hours' without they being assigned to WBS tasks but system should NEVER have just the 'Assigned' hours without they being booked on to the project. If you are assigned on to the project that itself means that you are booked on the project.

Resource scheduling can be done in multiple ways and that's what is the most confusing part of this functionality. And adding to that some standard Microsoft bugs does not let you conclude your understanding, if you are trying to make some sense of the scenario that you are working on. Hence based on client's request / discussion, always suggest one specific way which will be fit for purpose for the client.

Kind Regards
Sarang

Wednesday, May 16, 2018

Sales Order, Item requirements and Project PO (& auto created Item requirement) - Stage Cycle

Sales Order cycle:

  1. Open Order 
  2. Delivered 
  3. Invoiced


Item requirements cycle:

  1. Open Order (Sales order of 'Item requirements' created in the background, with Sales order line status 'Open order)
  2. When the Item requirements is 'Packing slip' updated:
    • The Item requirements and the associated Sales order line will be in status 'Delivered', if there is NO (cost price = 0) cost price on the item. The status will change to 'Invoiced' only when the project invoice is posted for that transaction.
    • The Item requirements and the associated Sales order line will in status 'Invoiced', if there is (cost price = actual value) cost price on the item. 

Project PO and auto creation of Item requirement cycle (to consume cost on the project at the time product receipt):

  1. Open Order (if the settings are such that 'Item requirement' is to be created on creation of PO, then an Item requirement record will be created with status 'Open order')
  2. Received (when the PO line is received and if the settings are such that cost is to be consumed on the project, then the status of the 'Item requirement' and the associated 'Sales order' line is changed to 'Invoiced')
  3. Invoiced 
Parameters for consuming the cost on the project upon project PO receipt:


Quick Notes -


  1. Item requirement is a vehicle to document the material needed on the project. It is one of the ways suggested in the system, to consume the material cost on the project.
  2. System creates ONLY ONE Sales order of type 'Item requirements' against a project. The status of the same sales order is updated from 'Open order' to 'Delivered' to 'Invoiced' based on the new 'Item requirement' lines. For e.g. the item requirement that is created on a project has one line and it is packing slip updated, then the associated sales order will be 'Invoice' updated. If a new item requirement line is created later, then a new line will be created in the same sales order and the status of the sale order will be changed to 'Open order' again. However the line which is invoiced previously will still be in invoiced state. 
A quick snapshot:




Thanks
Sarang


Monday, May 14, 2018

WBS and the display of Sales (Procurement) Category

By default the lines created on the WBS are of 'Hour' type. They are displayed on the 'Schedule planning' tab. However if you wish to define and plan for other project transaction types like, 'Expense', 'Item' and 'Fee', you need to navigate to the 'Estimated costs and revenue' tab. 'Hour', 'Expense' and 'Fee' type transactions are ok to define as you need to select an appropriate project category against the same.

However when it comes to items, it is still ok, if you have 'Items' defined, as there is an 'Item number' drop down to select the appropriate item. But if you only deal in procurement categories, then there is a bit of an issue. I mean an additional setup is required, so that procurement categories start showing in the WBS in the 'Sales category' drop down.

Procurement categories on WBS
To allow this to display the additional setup is as follows. The assumption here is a 'Procurement' type category hierarchy is already defined. This can be checked at :

Category hierarchies

Then the next step is to create a new 'Category hierarchy role association' of type 'Sales category hierarchy' and associate it with the 'Procurement' category hierarchy. The navigation to the 'Category hierarchy role association' is as mentioned in the screenshot above.


This setup will enable the display and selection of the procurement category in the WBS.

Thanks
Sarang