哪些数据不会迁移¶
RT 里的任何数据都不应该悄无声息地消失。工具会在两个地方记录它没有迁移的内容:
- 导入包
manifest.json中的not_carried_over:每一类数据一个条目,包含描述和数量。Specivo 会在导入报告中打印这些条目。 - 记录上的
extra:在 Specivo 中没有对应位置的 RT 数据,随所属记录一起保留,例如工单的 RT 编号、提醒、请求人,或者回复的邮件头。Specivo 不导入extra,但会把它和该记录的导入数据一起保存。
工具运行结束时,会打印 manifest 中列出了多少类数据。要查看具体内容,打开 manifest.json 找到 not_carried_over;每个条目都有 what 和 count 两个字段。
哪些内容会被计数¶
| 未迁移的内容 | 原因,以及在哪里能找到 |
|---|---|
| 已删除的工单 | 状态为 deleted 的工单不迁移。 |
| 提醒 | Specivo 没有提醒功能。每个工单的提醒保留在其 extra(reminders)中,历史中的提醒变更也会计数。 |
| 审批工单 | RT 的审批流程没有对应功能。 |
| 已合并的工单 | 不作为独立工作项,而是并入合并目标工单(见 已合并的工单)。计数是为了让总数对得上。 |
| 未导出队列中的已合并工单、已删除的已合并工单 | 不并入合并目标工单,以免一个队列的文本流入另一个队列的项目。 |
| 保留工单不在导入包中的已合并工单 | 保留下来的那张工单属于未导出的队列、已被删除、是提醒或审批,或者被 --limit 截掉了。 |
| 已合并工单的字段变更 | 已合并工单自身的状态、所有者、关注者、主题和自定义字段变更不会在保留的工作项上重放;它的消息、文件、工时和链接会迁移。 |
RT 发出邮件的副本(EmailRecord、CommentEmailRecord) |
RT 为每条已发送的通知保存一份副本。回复或评论本身会迁移。 |
| 转发的消息和工单、系统错误及其他事务类型 | 按类型分别计数。 |
| 私有评论的文件 | Specivo 附件没有私有标记,因此评论附带的文件(以及它内嵌显示的图片)会对所有能看到该工作项的人可见。加 --include-comment-files 可以照常迁移。 |
| 负的工时修正 | 在 RT 中减少已用工时的操作。Specivo 的工时记录只记录已用工时。 |
| 指向工单以外对象的链接 | URL、文章、资产。保留在工作项的 extra(links)中。 |
| 指向其他 RT 服务器工单的链接 | 工单 URI 的主机名不属于本 RT 的 Organization。保留在工作项的 extra(links)中。 |
| 指向已删除工单、提醒、审批或 RT 已不存在的工单的链接 | 只计数。 |
| 工单的第二个父级 | Specivo 每个工作项只能有一个父工作项;其余父级保留为 关联到。 |
| 工单与其父级或子级之间的关联 | Specivo 不接受这种关联;保留父子关系。 |
| 未迁移自定义字段的历史 | Image 和 Binary 类型的字段(其值是文件),以及未导出队列的字段。 |
| 队列、用户、用户组、事务和资产的自定义字段及其值 | Specivo 只有工作项上的自定义字段。 |
| RT 外部存储中未读取的文件 | 未指定 --external-storage-path,或者存储后端不是 Disk(例如 Amazon S3、Dropbox)。 |
| 外部存储中缺失或无法解码的文件 | 计数并注明原因。 |
| 权限(RT 的 ACL) | Specivo 创建的角色不带权限;成员关系记录了谁拥有哪个角色(见 成员关系)。 |
| 授予 RT 的 Everyone 或 Unprivileged 组、或按工单角色授予的权限 | 它们不指向具体的人,因此不会产生成员关系。Everyone 拥有的权限还会逐个队列列出(见 RT 的 Everyone 组)。 |
| 授予 RT 的 Privileged 组但不构成任何角色的权限 | 例如 SeeQueue、ShowApprovalsTab。能构成角色的权限会让该组成为 RT privileged users 用户组(见 RT 的 Privileged 组)。 |
| 其他对象上的权限 | 自定义字段、类、目录和用户组上的权限。 |
| RT 数据库中无法读取的设置 | Configurations 中的值既不是普通的 Data::Dumper 数据,也不是合法的 JSON。警告会指出该设置的名称,并改用 RT 的默认值(默认生命周期、优先级和时区)。 |
| RT 6.0 单独存放但无法读取的新旧值 | 该变更按事务自身保存的值迁移。 |
| 密码 | Specivo 无法使用 RT 的密码哈希。每个账户都要重新设置密码。 |
| 已禁用的文章 | 不迁移。 |
| 所导出队列之外的类(Class)的文章 | 使用 --queue 时,只迁移这些队列关联的类。 |
| 文章主题(Topic) | 没有对应功能。 |
| 资产和资产目录 | Specivo 没有资产管理。 |
| Scrip 和模板 | 这是 RT 的自动化机制。Specivo 有自己的自动化。 |
| 保存的搜索和仪表盘 | 从 Attributes 表计数;在 RT 6.0 上还会从它们各自的表计数。 |
| 带服务级别(SLA)的队列 | Specivo 没有 SLA;工单的 SLA 保留在其 extra 中。 |
RT 的 Everyone 组¶
RT 授予 Everyone 组的权限一律不迁移,也不会因为这些权限而把任何项目设为公开。Everyone 不只是内部人员:它包含所有请求人,任何一封邮件被 RT 转成工单的人都会在其中获得账户。在某个队列上授予 Everyone 的 ShowTicket 让任何请求人都能读取该队列的全部工单,而不只是自己的;而 Specivo 的公开项目会把工作项展示给实例上的每一个账户。
为了让管理员自行决定,工具会列出 Everyone 拥有的权限:
- 在
not_carried_over中,一个条目对应在所有队列上(全局)授予的权限,例如rights granted to RT's Everyone group on every queue: CreateTicket, ReplyToTicket;每个有自身权限的已导出队列再各有一个条目,例如rights granted to RT's Everyone group on queue Support: ReplyToTicket, ShowTicket,并带有 该项目的source_ref(entity_type为project); - 在每个项目的
extra中,rt_everyone_rights:Everyone 在该队列上拥有的全部权限,包括全局权限。
rights granted to everyone in RT's Everyone group 这一计数条目依然保留,与 RT 其他用户组的处理方式相同。要在导入后把项目设为公开,见 加载。
完全不会读取的内容¶
- 被 Shredder 粉碎的数据。RT 的 Shredder 会永久删除数据行。它留下的痕迹(指向已不存在工单的链接或合并记录)按上文计数;它删掉的内容则无法计数。
- RT 的配置文件。
RT_SiteConfig.pm中的设置(在 RT 4.4 上则是全部设置)无法从数据库读取。在那里定义的生命周期和优先级名称会回退到 RT 的默认值(见 RT 版本)。 - 工单和事务自定义字段的显示规则、自定义字段分组、仪表盘的内容、用户偏好设置和书签。
- 加密。RT 以加密形式存储的消息按原样迁移。