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 Projects

  • 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:


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: 

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

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

  1. Enter company code
  2. Change Account type to “D” (Customer)
  3. Select Customer ID
  4. Choose “Process Open Items”

  1. Click “Select All” (All items are activated by default)
  2. Click “Deactivate Items”
  3. Choose and activate the items which shall be reversed (items out of fixed price project migration)
  4. 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