[Sugester V2 EN](https://sugester.intum.pl/kb/sugester-v2-en.md) / [CMS](https://sugester.intum.pl/kb/sugester-v2-en/cms.md)

# [Migration of files from Siteor to CMS](https://sugester.intum.pl/kb/sugester-v2-en/migration-of-files-from-siteor-to-cms.md)

## Goal

Transfer files (images) from the external hosting Siteor (`fs.siteor.com`) to your own CMS (`/cms/assets`).

## When to use

- When you want to become independent from an external service
- When you need full control over the files
- When you want to have all resources in one place

## How to do it

### 1. Upload file to CMS

```bash
curl -X POST "https://your-domain.com/cms/assets.json?api_token=TOKEN" \
  -F "asset[file]=@file.png" \
  -F "asset[kind]=image"
```

**Allowed types (kind):**
- `image` - for PNG, JPG, SVG
- `js` - for JavaScript
- `css` - for styles
- `zip` - for archives

### 2. New file URL

After the upload, the file is available at:
```
https://your-domain.com/cms/assets/{ID}/view
```

### 3. Update content

Replace old URLs in pages and paragraphs:

```bash
# Fetch the page
curl "https://your-domain.com/cms/pages/{ID}.json?api_token=TOKEN"

# Update content with new URLs
curl -X PUT "https://your-domain.com/cms/pages/{ID}.json?api_token=TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"page": {"content": "...new content..."}}'
```

## Example: MyCompany/MyCompany

In January 2026, 35 files were migrated from `fs.siteor.com` to `app.mycompany.pl/cms/assets`.

**Statistics:**
- 35 files transferred (asset ID: 1017-1051)
- 150 CMS elements updated (40 pages + 110 paragraphs)
- Verification: 0 remaining old URLs

**Mapping pattern:**
```
Old: https://fs.siteor.com/rudykot/files/elf/02_Weather.png
New:  https://app.mycompany.pl/cms/assets/1017/view
```

## Automation

For a large number of files, it is worth writing a Ruby/Python script that:
1. Fetches the list of pages/paragraphs
2. Searches for old URLs in the content
3. Replaces them with new ones
4. Updates via API