# 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`