RescheduleUncompletedWorkToStartAfter produces results different from MS Project

We use the following code to reschedule tasks:

project.SplitsInProgressTasks = true;
project.RescheduleUncompletedWorkToStartAfter(DateTime.UtcNow.Date);

We expected task start/finish dates to match the dates in MS Project after running the same function:
reschedule_dialog.png (4,2 КБ)

But they do not match.
For example, here’s the first 32 tasks of a sample project. I copied the start dates to the Date2 column, and the finish dates to the Date3 column.
reschedule_before.png (16,7 КБ)

This is how the dates change after running the function in MS Project:
reschedule_after_msproject.png (21,9 КБ)

And the same function in Aspose, after saving the project:
reschedule_after_aspose.png (19,2 КБ)

There are slight deviations, but sometimes they’re quite noticeable.
Is there something we’re missing here? Does it have something to do with this warning?
reschedule_warning.png (5,9 КБ)

@dg2358 ,
can you attach the sample MPP file ?

@vasiliy.sinitsyn,
sure: reschedule_sample.7z (245,5 KB)

@dg2358 ,
there is some difference in logic: when you tell MS Project to reschedule uncompleted work to
25.04.2024 00:00, it sets start (or resume) date of the suitable tasks to “25.04.2024 00:00” despite it’s a non-working time. On the other hand, Aspose.Tasks sets the nearest valid working time, for example,
“25.04.2024 09:00”.

You can fix part of deviations by setting “25.04.2024 09:00” date in MS Project’s dialog box.

We need to perform deeper investigation of the remaining deviations and MS Project’s warning.

@dg2358
We have opened the following new ticket(s) in our internal issue tracking system and will deliver their fixes according to the terms mentioned in Free Support Policies.

Issue ID(s): TASKSNET-11173

You can obtain Paid Support Services if you need support on a priority basis, along with the direct access to our Paid Support management team.

@dg2358 ,

The issues you have found earlier (filed as TASKSNET-11173) have been fixed in this update .

Download Aspose.Tasks for .NET

Also please note that Aspose.Tasks recalculates whole project after execution of RescheduleUncompletedWorkToStartAfter().
Thus it is correct to compare dates of the following projects:
1)
reschedule_sample.mpp is opened by Aspose.Tasks,
project.RescheduleUncompletedWorkToStartAfter(%date%) called for the opened project.
2)
reschedule_sample.mpp is opened using MS Project
“Reschedule uncompleted work to start after …” action is called
“Calculate Project” action is called.