Co-Authored by anja.flatau
In this blog series I would like to provide answers for the following topics related to the migration of CPM projects (Customer Project Management - Project-Based Services) :
General SAP recommendation: close projects in legacy system and create only new projects in SAP S/4HANA Cloud and do not try to migrate ongoing projects with
the full current status
If this is not possible then this blog series provides an approach how to handle the migration of CPM projects.
Part 1 (this blog): Commercial Project Migration - Part 1: Migration of Fixed Price Projects (ongoing and partially billed) and Time & Expense Projects
Posting Logic
Migration of Fixed Price Projects (ongoing and partially billed)
Migration of Time & Expenses Projects
Part 2: Commercial Project Migration - Part 2: Migration of Periodic Service Projects and Bundles in...
Migration of Periodic Service Projects
Migration of Bundles in Projects (Fixed Price & Periodic Service)
Out of scope in this blog series:
Migration of CPM Projects in phase: "Completed" or "Closed".
Project duration of more than 5 years is not recommended. Projects with a longer duration decrease upload performance significantly.
Down Payments / Down Payment Requests
Standalone Selling Price (SSP)
Migration Flow: Step-by-Step Process

Preparation of project data
Prerequisites - Master Data Objects
Before the customer project migration can start, the following objects have to be maintained or migrated to the system:
Customer Projects (with CPM master data migration object)
Chart of Accounts
Cost & Profit Centers
Service Organizations
Customers / Suppliers
Materials
Employees
Cost & Sales rates
Tax codes
Bank accounts
Exchange rates
Prerequisites - Finance Object Migration
The finance migration is independent from the ongoing projects migration. Nevertheless there are certain implications to be considered:
Open Items:
Are migrated as part of the financial migration
When building up the current project status, open items have to be build up for the project, but have to be reversed on the customer account in order not to create
double entries
Account balances:
Are also build up during financial migration
Whatever needs to be posted to build up the project status has to be cleaned up afterwards not to impact the account balances
Tax reporting:
is executed in the legacy system until cutover
Tax postings are never transferred / migrated to the new S4H Cloud system
How to handle this see slide Sales tax rates: all equal to 0%
Prerequisites - Set sales tax rates all equal to 0%
All sales tax rates should be equal to 0% during billing. This will avoid the creation of tax amounts.
The reason for this, is that we are not obliged to reverse the tax amounts afterwards.
Before cut-over date set tax conditions to “tax exempt” (e.g. Germany: Tax Code A0)

Migration of project data
Migration of Fixed Price Projects
Ongoing fixed price projects can have been partially billed in the legacy system. The billed amount should be migrated into the new S/4HANA Cloud system.
Assumption: the migration approach is based upon the default revenue recognition key for fixed price projects “SPFP”.
Process:


App: Manage Your Solution

Migration of CPM Projects via Migration Cockpit Object “CPM project” is supported in following phases: In-Planning, Contract Preparation, In-Execution
The "CPM Project" can be enhanced with the App „Custom Fields and Logic” adding custom fields in the application.
If the "CPM Project" is enhanced this way, the custom fields will be reflected automatically also in the XML template.
The following objects must already have been maintained or migrated: Customer Master, Employee Master, Material Master, Cost Center Master, Profit Center Master,
Service Organization

Process:
Download the migration template “CPM project”.
Download the BH5 test script from https://rapid.sap.com/bp/scopeitems/BH5
Follow the procedure described in the BH5 test script.
Outcome:
Project in Stage “In Execution”
Work Packages / Work Items
Activity / Expense Planning
Sales Order Header / Item
Billing Plan Item

App: Plan Customer Projects

Check if project plan was created for all fix price work packages – without project plan data no PoC can be calculated!

Check if your billing plan was created -> Advice: for history billing plan entries ONE aggregated billing plan item would be sufficient and makes revenue migration easier
(less repostings / clean up)


Time postings from legacy system
App: Enter Activity Allocation

In order to calculate the PoC the already posted costs in the legacy system have to be build up.
Comparison “Plan Data” versus “Actual Cost Postings” results in the calculated PoC which triggers the correct revenue recognition later:
Prerequisite: Creation of “Dummy Migration Cost Center” which is used as Sender Cost Center during Activity Allocation posting
Upload already posted hours via app: Enter Activity Allocation (Scope Item J11)
Level of aggregation: Hours by activity type, work package and work item (if applicable). Personnel number, service rendered date, text etc. not necessary, if no
employee specific cost rates exist. All postings can be done with last date of the period before the Go-Live e.g. 31.12. is go-live is 01.01.
Outcome:
Correct number of hours per activity type on the project
Correct cost on the project for POC calculation
Expense postings from legacy system
Upload via Migration Cockpit Object: FI – G/L account balance and open/line item
Summation of expenses per primary cost account (expense account) with level of detail: work package of project
Expense G/L account line with reference to work package (debit) against the offset migration G/L account
Expense G/L account line with reference to dummy cost center (credit) against the offset migration G/L account
Outcome:
Correct cost on the project for PoC calculation
Expense G/L and Migration G/L both zero


Posting logic for historical revenue: Example


Create billing documents for already billed revenue of the project
App: “Release Billing Proposal”

Outcome: Debit Memo Request is created -> it would be sufficient to have one invoice for all historical revenue

App “Create Billing Documents”:

Outcome: Billing document out of DMR for historical revenue is created

“Tax Exempt” tax code is triggered: No tax line is generated!

Journal entry is created.

Billing Plan Item is marked as “Invoiced”

Reversal of Customer Open Items against Migration Account and Dummy Project
App: Post with Clearing

Step 4 in “Posting Logic” diagram:
Enter the document date and posting date (choose same date as open items migration date)
Enter company code
Select Currency Rate
Enter Posting Key “40” (Debit entry)
Provide Account: Revenue Account against which was posted during billing e.g. 41910000 Billed Revenue Dom. - Time (see Journal Entry)

Enter the amount (it is possible to re-post all open items of one customer at once)
Enter the tax exempt Tax Code e.g. A0
Select WBS element of the dummy migration project
Choose “Process Open Items”

Enter company code
Change Account type to “D” (Customer)
Select Customer ID
Choose “Process Open Items”

Click “Select All” (All items are activated by default)
Click “Deactivate Items”
Choose and activate the items which shall be reversed (items out of fixed price project migration)
Click “Post”


App: Manage Customer Line Items

Check Journal Entry and Clearing Entry



App: Run Revenue Recognition - Projects

Clearing of Balance Sheet Accounts
In order to create the right values for “Deferred Revenue” and “Accrued Revenue” the revenue recognition run
has to be executed
In this run the “Deferred Revenue” out of the billing process is corrected according to the current PoC which has be calculated during the cost migration


Migration of Time & Expenses Projects:
App: Enter Activity Allocation

Current and outstanding transactional data
Hours:
SAP recommendation: Bill all open Times & Expenses in the legacy system and do not migrate.
As an exceptional case, post open hours from T&M Projects with highest level of detail by using Enter Activity Allocation app
Alternative 1: Upload via API of transaction KB21N of S/4HANA Cloud Create Allocation Posting
Alternative 2: Capture hours with the app “Enter Activity Allocation” (Scope Item J11)
Expenses:
SAP recommendation: Bill all open Times & Expenses in the legacy system and do not migrate.
As an exceptional case, upload via Migration Cockpit Object: FI – G/L account balance and open/line item
One expense G/L account line with reference to project (workpackage) against the offset migration G/L account
One expense G/L account line with reference to dummy cost center against the offset migration G/L account
Outcome:
WIP on the project
Expense G/L and Migration G/L both zero

On Accounts:
Upload via Migration Cockpit Object: FI – G/L account balance and open/line item
One On Account G/L account line with reference to project (billing item) against the offset migration G/L account
One On Account G/L account line with reference to dummy cost center against the offset migration G/L account
Outcome:
On Account on the project
On Account G/L and Migration G/L both zero

Revenue Accruals:

Entered via app: Revenue Recognition (Event-Based) Projects
Outcome:
Extra revenue accruals posted on the project
