Skip to content

4828 update migration page #4829

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions sites/platform/src/projects/region-migration.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,8 +148,11 @@ Once the new project is running and the DNS has fully propagated, delete the old
**These tools are not directly supported by {{% vendor/name %}} support team, but you can open issues in their respective repositories directly.**

We have open-sourced [ClonSun](https://github.com/upsun/clonsun), a tool that allows you to clone a project from one region to another.
ClonSun helps you migrate most of your project assets from one region to another with some remaining manual steps like moving your domain names from
one region to the other (or at the CDN level) and update your DNS records.
ClonSun helps you migrate most of your project assets from one region to another with some remaining manual steps like moving your domain names from one region to the other (or at the CDN level) and update your DNS records.

We also have [ConvSun](https://github.com/upsun/convsun), a tool that allows you to change existing configuration files to another format. It converts details from files like `services.yaml` and `routes.yaml`, and generates a new `config.yaml` file. This streamlines the conversion process by significantly reducing the manual effort required to adapt your app’s infrastructure setup.

To learn more about ConvSun and how it works, read the [converting projects](https://docs.upsun.com/learn/tutorials/migrating/from-psh.html) page.

Although not directly supported by {{% vendor/name %}},
an agency named [Contextual Code](https://www.contextualcode.com/) has built a bash migration script.
Expand Down
62 changes: 56 additions & 6 deletions sites/upsun/src/learn/tutorials/migrating/from-psh.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,72 @@
---
title: From Platform.sh
description: See how to migrate your app to {{% vendor/name %}} so it's ready to be deployed.
title: Converting a project
description: See how to configure your app to {{% vendor/name %}} so it's ready to be deployed.
keywords:
- "set remote"
---

If you already have an app running somewhere else, you want to migrate it to {{% vendor/name %}} and deploy it.
To do so, follow these steps.
There are two ways to change the configuration files of your projects to make them {{% vendor/name %}} compatible.

1. [Convert projects with the CLI](#convert-with-the-cli)
2. [Convert projects manually](#convert-manually)

## Before you begin

You need:

- An app that works and is ready to be built
- Code in Git
- A Platform.sh application that works and is ready to be built
- The code in Git
- A {{< vendor/name >}} account -- if you don't already have one, [register](https://upsun.com/register/).
- The [{{< vendor/name >}} CLI](/administration/cli/_index.md) installed locally

## Convert with the CLI

To assist with converting applications from Platform.sh to {{% vendor/name %}}, the convsun tool is available as part of the {{% vendor/name %}} CLI. This feature automates the conversion of Platform.sh config files into a format required by {{% vendor/name %}}, significantly reducing manual effort.

Check failure on line 24 in sites/upsun/src/learn/tutorials/migrating/from-psh.md

View workflow job for this annotation

GitHub Actions / vale

[vale] sites/upsun/src/learn/tutorials/migrating/from-psh.md#L24

[Vale.Spelling] Did you really mean 'convsun'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'convsun'?", "location": {"path": "sites/upsun/src/learn/tutorials/migrating/from-psh.md", "range": {"start": {"line": 24, "column": 85}}}, "severity": "ERROR"}

### Key functions
The convsun tool performs the following transformations:

Check failure on line 27 in sites/upsun/src/learn/tutorials/migrating/from-psh.md

View workflow job for this annotation

GitHub Actions / vale

[vale] sites/upsun/src/learn/tutorials/migrating/from-psh.md#L27

[Vale.Spelling] Did you really mean 'convsun'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'convsun'?", "location": {"path": "sites/upsun/src/learn/tutorials/migrating/from-psh.md", "range": {"start": {"line": 27, "column": 5}}}, "severity": "ERROR"}

1. Generation of Upsun `config.yaml`
- Creates a new `config.yaml` file - the primary configuration file for {{% vendor/name %}} projects.
- Extracts relevant information from `.platform.app.yaml`, `services.yaml`, and `routes.yaml`.

2. Refactoring of obsolete or incompatible fields
Removes resource-related fields that are not applicable in {{% vendor/name %}}. This includes:

- Disk values
- Size settings (e.g., S, M, L)
- Legacy resources blocks
- Any deprecated or unsupported container options in the source configuration

3. Mount and storage adjustments
- Converts mounts of type local into {{% vendor/name %}}'s storage format to support horizontal scaling and infrastructure consistency.
- Ensures that volumes and file persistence are aligned with how {{% vendor/name %}} manages data across containers.

4. Reorganization of custom service configuration
- Moves custom configuration for services such as `Solr` into the `.upsun/ directory`, which is used to hold project-specific overrides and custom assets.

5. Support for cron jobs
- Identifies cron jobs defined in Platform.sh and provides guidance on how to replicate similar functionality in {{% vendor/name %}}.
- Flags any cron schedules requiring special support and prepares the `config.yaml` accordingly.

### Example usage

```bash
# Placeholder command – to be updated with final syntax

```
You will be prompted to enter the path to the Platform.sh project you would like to convert.

The Convsun feature then performs the conversion within the {{% vendor/name %}} CLI and outputs the updated `config.yaml` file to the specified destination directory.

Check failure on line 60 in sites/upsun/src/learn/tutorials/migrating/from-psh.md

View workflow job for this annotation

GitHub Actions / vale

[vale] sites/upsun/src/learn/tutorials/migrating/from-psh.md#L60

[Vale.Spelling] Did you really mean 'Convsun'?
Raw output
{"message": "[Vale.Spelling] Did you really mean 'Convsun'?", "location": {"path": "sites/upsun/src/learn/tutorials/migrating/from-psh.md", "range": {"start": {"line": 60, "column": 5}}}, "severity": "ERROR"}

## Convert manually

If you prefer not to use the CLI tool, or if your project has custom requirements that require a more hands-on approach, you can manually update your Platform.sh configuration to be compatible with {{% vendor/name %}}.

Manual conversion gives you full control over the transition process and can be useful for projects with non-standard setups or advanced customizations.

Follow the steps below to begin a manual migration.

## 1. Export from previous system

Start by exporting everything you might need from your current app.
Expand Down
Loading