Instruction
Configuratie - Objecten - Beheer objecten - Dashboard - Actie blok

Recommendation

Don't switch on the same product. The switch itself (creating activities) is not technically complex, but doing it on a product that is already in production makes a mess: old loose bookings and new activity-based bookings get mixed up, and rates/reporting can no longer be traced reliably.

Instead, create a new, clean product that works with activities, and don't create any activities on it yourself yet. Then use the "Move bookings to another product" action to move the existing bookings over: it automatically creates the matching activity while moving, or links to an existing one.

Step-by-step plan

  1. Create a new product set up for activity-based working. Don't create any activities yourself yet — they are created automatically during the move, based on the existing booking data (date and time).
  2. Go to the dashboard of the current (calendar-based) product and click "Move bookings to another product" in the action block. This requires the right action_object_movebookings.
  3. Choose the new product as the destination.
  4. Filter on the desired period (for example, only future bookings) and use the checkboxes to select the bookings to move.
  5. Review the summary: whether the destination product has a counterpart for everything, whether any bookings have a linked invoice or payment, and that prices are recalculated using the destination product's rates.
  6. Under "Convert to activity", leave both toggles on: "Link to the matching activity" and "Create a new activity if it doesn't exist yet".
  7. Click "Confirm and move". You'll get a result showing moved and conflicting bookings.
  8. Resolve conflicting bookings individually: adjust the activity's capacity, or move the booking in a later round.
  9. Repeat the steps for the remaining bookings until everything has been moved.
  10. Deactivate the old product once everything has been moved, so no new bookings can come in on it.

Note: moving is capped per action

The actual move happens in a single action up to a maximum number of bookings (250 by default). With more matches, you'll see a warning that only the first batch is moved; repeat the action for the rest. Optionally use the option to select all bookings matching the filter, instead of checking them page by page.

See also: How do I move bookings to another object? for the general workings of this action (without activity conversion).

Test this first with a small number of bookings on a test product before moving a large batch on production data.
The following right may be necessary in order to use this functionality.