哪些数据不会迁移

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 以加密形式存储的消息按原样迁移。