---
# System prepended metadata

title: Data migration
tags: [Edge365]

---

# Data migration
---
## Goal
- 搬移DeviceOn/BI dcg營運站的某個組織下的所有資料 -> Edge365營運站的一個tenant下

## 摘要
### 導出
- User
  - 從root group以下. 統計所有tree node上的user, 整理成一分user list
- Device
  - 從上面統計的user中, 找出該user是owner的device, 整理成一份 device list
  - 重點是導出deviceId, deviceName, DeviceType 讓新站可以create
- 需要一個介面(API）讓使用者勾選(or API）要導出的group, 我們會把這個group & 所有子group下的內容都導出, 導出成一個groups導出檔
  - Groups
  - Objects
  - Parameters
  - Alarm rules
  - Notification settings
    - alarm group
    - user group
    - notification group
    - channel setting
  - Plugins
  - Forwardings
- 需要一個backend, 處理導出相關的RAWData/RecordingRate/Hour/Day資料（in Mongo or in Blob)
  - Blob需要討論
    - 使用我們提供的blob
      - 一定要導出
    - 使用Extenal blob
      - 導出(客戶想換blob)
      - 不導出（客戶沿用原有blob)
  - 導出成什麼格式要討論
  - 結果是會有一包東西下載到操作者的電腦上？

### 導入
- 需要客戶事先申請好一個tenant
- 需要利用devices導出檔, 透過某個介面批量導入device
  - 導入過程中, 需要產生一個舊deviceID <->新deviceID mapping表
- 需要利用groups導出檔, 透過某個介面批量導入groups以及內部相關內容
  - 導入過程中, 需要產生一個舊id<->新id的mapping表, id包含
    - Groups
    - Objects
    - Parameters
    - Alarm rules
    - Notification settings
    - Plugins
    - Forwardings

### 資料導入
- RAWData
  - 利用device id mapping表, 將所有舊數據的deviceId改成新id
  - 改完後寫入mongo
  - 改完後寫入blob （不導出的case, 也要換id)
- Archived data
  - 利用groups mapping表, 將所有舊數據的objectId改成新id
  - 改完後寫入mongo
  - 改完後寫入blob (不導出的case, 也要換id)


---
###### tags: `Edge365`
