Git Product home page Git Product logo

backlogmigration-redmine's Introduction

Backlog Migration for Redmine

Migrate your projects from Redmine to Backlog. (英語の下に日本文が記載されています)

Backlog Migration for Redmine is in beta. To avoid problems, create a new project and import data before importing data to the existing project in Backlog.

Backlog icon

DEMO

Demo

Requirements

  • Java 8
  • The Backlog Space's administrator roles.

https://github.com/nulab/BacklogMigration-Redmine/releases

Download

Please download the jar file from this link, and run from the command line as follows.

https://github.com/nulab/BacklogMigration-Redmine/releases

java -jar backlog-migration-redmine-[latest version].jar

To use via proxy server, run from the command line as follows.

java -Djdk.http.auth.tunneling.disabledSchemes= -Dhttps.proxyHost=[proxy host name] -Dhttps.proxyPort=[proxy port] -Dhttps.proxyUser=[proxy user] -Dhttps.proxyPassword=[proxy password] -jar backlog-migration-redmine-[latest version].jar

How to use

Preparation

Create a directory.

$ mkdir work
$ cd work

Initialization command

Run the [init] command to prepare the mapping file. (The mapping file is used to link data between Backlog and Redmine.)

java -jar backlog-migration-redmine-[latest version].jar \
  init \
  --redmine.key [Redmine API key] \
  --redmine.url [Redmine of URL] \
  --backlog.key [Backlog of API key] \
  --backlog.url [URL of Backlog] \
  --projectKey [Redmine project identifier]:[Backlog project key]

Sample commands:

java -jar backlog-migration-redmine-[latest version].jar \
  init  \
  --redmine.key XXXXXXXXXXXXX \
  --redmine.url https://my.redmine \
  --backlog.key XXXXXXXXXXXXX \
  --backlog.url https://nulab.backlog.jp \
  --projectKey redmine_project:BACKLOG_PROJECT

The mapping file is created as follows.

.
├── log
│   ├── backlog-migration-redmine-warn.log
│   └── backlog-migration-redmine.log
└── mapping
    ├── priorities.csv
    ├── priorities_list.csv
    ├── statuses.csv
    ├── statuses_list.csv
    ├── users.csv
    └── users_list.csv
  • 1.mapping / users.csv (users)
  • 2.mapping / priorities.csv (priority)
  • 3.mapping / statuses.csv (state)

Exclude wiki

[--exclude] If you set this property, specified initialize will not be run by the program.

java -jar backlog-migration-redmine-[latest version].jar \
  init \
  --redmine.key [Redmine API key] \
  --redmine.url [Redmine of URL] \
  --backlog.key [Backlog of API key] \
  --backlog.url [URL of Backlog] \
  --projects [Redmine project identifier]: [Backlog project key] \
  --exclude [wiki]

About mapping projects

Specify the destination project for --projectKey option by colon (:). i.e. [--projectKey redmine_project:BACKLOG_PROJECT] migrates redmine_project redmine project in BACKLOG_PROJECT backlog project.

--projectKey [Redmine project identifier]:[Backlog project key]

Fix the mapping file

A file in CSV format will be automatically created. The right side is Backlog item. For the assignable items from Name column, please refer to the following file by reference

  • mapping/users_list.csv (users)
  • mapping/priorities_list.csv (priority)
  • mapping/statuses_list.csv (state)

Run command

Run the [execute] command to import data.

java -jar backlog-migration-redmine-[latest version].jar \
  execute \
  --redmine.key [Redmine API key] \
  --redmine.url [Redmine of URL]
  --backlog.key [Backlog of API key] \
  --backlog.url [URL of Backlog] \
  --projectKey [Redmine project identifier]:[Backlog project key]

Sample commands:

java -jar backlog-migration-redmine-[latest version].jar \
  execute \
  --redmine.key XXXXXXXXXXXXX \
  --redmine.url https: //my.redmine \
  --backlog.key XXXXXXXXXXXXX \
  --backlog.url https://nulab.backlog.jp \
  --projectKey redmine_project:BACKLOG_PROJECT

When import has been completed, the directory will be created and data file that has been used for importing will be produced.

.
├── log
│   ├── backlog-migration-redmine-warn.log
│   └── backlog-migration-redmine.log

Import-Only Mode

[--importOnly] If you set this property, only import will be run by the program.

java -jar backlog-migration-redmine-[latest version].jar \
  execute \
  --redmine.key [Redmine API key] \
  --redmine.url [Redmine of URL] \
  --backlog.key [Backlog of API key] \
  --backlog.url [URL of Backlog] \
  --projects [Redmine project identifier]: [Backlog project key] \
  --importOnly

Exclude issue or wiki

[--exclude] If you set this property, specified import will not be run by the program.

java -jar backlog-migration-redmine-[latest version].jar \
  execute \
  --redmine.key [Redmine API key] \
  --redmine.url [Redmine of URL] \
  --backlog.key [Backlog of API key] \
  --backlog.url [URL of Backlog] \
  --projects [Redmine project identifier]: [Backlog project key] \
  --exclude [issue or wiki]

Control retry count

[--retryCount] Setting this property allows you to specify the number of retries when a network error occurs.

java -jar backlog-migration-redmine-[latest version].jar \
  execute \
  --redmine.key [Redmine API key] \
  --redmine.url [Redmine of URL] \
  --backlog.key [Backlog of API key] \
  --backlog.url [URL of Backlog] \
  --projects [Redmine project identifier]: [Backlog project key] \
  --retryCount [Number of retries]

Limitation

Supported Redmine versions

Redmine 1.1.1 or later are supported.

Backlog's user roles

This program is for the users with the Space's administrator roles.

Migration project with custom fields

Only applied to Premium or Platina plan.

Resources that cannot be migrated

  • Shared files
  • Sentences
  • Forum
  • Roles and Privileges

About issues

  • All custom attributes in Redmine will be added to the migrating project in Backlog.
  • Private notes will be also migrated. Readmin's grandchild issues will be treated in Backlog as follows.
    • Parent issue will not be set.
    • If a parent was set when creating the issue, no information regarding the parent will be entered into the issue.
    • If a parent issue was set after creating the issue, the parent's issues link will be posted in the issue as a comment.
  • Textile formatting rule is not supported.
  • In case the user who registered the issue or the assignee of the issue has been deleted from the project, the person who is migrating data will be considered as the user who has registered and updated the issue in Backlog. The assignee will be unset.

About Wiki

  • In case the user who registered wiki has been removed from the project, the person who is migrating data will be considered as the user who has registered the wiki in Backlog.
  • Wiki history will not be migrated.

About News

  • News will be registered as a Wiki.
  • Attachment files will not be migrated.

About Project

  • Text formatting rules: markdown
  • Some changes will be applied to the Redmine's project identifier to meet the project key format in Backlog.

Hyphenunderscore

Single-byte lowercase character → Single-byte uppercase character

About custom fields

  • Versions and users will be registered as lists and will be the fixed values.
  • Boolean values will be registered in radio button format of "Yes" or "No".

Following items cannot be migrated

  • Description
  • Minimum - maximum length
  • Regular expression
  • Text formatting
  • Default value
  • Link URL to set to value
  • For all projects
  • Use as a filter
  • Searched
  • Display
  • Key/value List

About status

If an Issue was created with a status other than "New" and then there was no change to this status before importing it, the Issues status in Backlog will be set to "Open".

Resources that can be migrated by Redmine version

Projects with custom fields are supported only for Redmine 2.4 and later.

Resource Availability
Issue 1.1
Project 1.1
Project member 1.4
News 1.1
Version 1.3
Wiki 2.2
Attachment 1.3
Issue status 1.3
Tracker 1.3
Category 1.3
Group 2.1
Custom field 2.4
Priority 2.2

Others

  • If the space of Backlog is a free plan, it cannot be migrated due to API rate limiting.
  • This tool cannot be used in parallel as it can exceed the API rate limit when run in parallel.

Re-importing

When the project key in Backlog and Redmine matches, they will be considered as the same project and data will be imported as follows.

If the person migrating data is not in the project.

The project will not be imported and the following message will be shown. Join the project to migrate data. Importing to this project failed. You are not a member of this project. Join the project to add issues.

Item Specifications
Group The group will not be added when there is a group with same name.
Project The project will not be added when there is a project with same project key. The issues and wikis will be added to the existing project.
Issues Issues with matching subject, creator, creation date are not registered.
Wiki The wiki will be not added when there is a wiki with same name.
Custom fields The custom field will not be added when there is a custom field with same name.

License

MIT License

Inquiry

Please contact us if you encounter any problems during the Redmine to Backlog migration.

https://www.backlog.jp/contact/

Backlog Migration for Redmine

Redmine のプロジェクトをBacklogに移行するためのツールです。

Backlog Migration for Redmine はベータバージョンです。Backlog 上の既存プロジェクトにインポートする場合は、先に新しく別プロジェクトを作成し、こちらにインポートし内容を確認後。正式なプロジェクトにインポートしてください

必須要件

  • Java 8
  • Backlog の 管理者権限

https://github.com/nulab/BacklogMigration-Redmine/releases

ダウンロード

こちらのリンクから jar ファイルをダウンロードし、以下のようにコマンドラインから実行します。

https://github.com/nulab/BacklogMigration-Redmine/releases

java -jar backlog-migration-redmine-[最新バージョン].jar

プロキシ経由で使用する場合は、以下のように実行します。

java -Djdk.http.auth.tunneling.disabledSchemes= -Dhttps.proxyHost=[プロキシサーバのホスト名] -Dhttps.proxyPort=[プロキシサーバのポート番号] -Dhttps.proxyUser=[プロキシユーザー名] -Dhttps.proxyPassword=[プロキシパスワード] -jar backlog-migration-redmine-[最新バージョン].jar

使い方

前準備

作業用のディレクトリを作成します。

$ mkdir work
$ cd work

初期化コマンド

[init]コマンドを実行し、マッピングファイルを準備する必要があります。 (マッピングファイルは Redmine と Backlog のデータを対応付けるために使用します。)

java -jar backlog-migration-redmine-[最新バージョン].jar \
  init \
  --redmine.key [RedmineのAPIキー] \
  --redmine.url [RedmineのURL] \
  --backlog.key [BacklogのAPIキー] \
  --backlog.url [BacklogのURL] \
  --projectKey [Redmineプロジェクト識別子]:[Backlogプロジェクトキー]

サンプルコマンド:

java -jar backlog-migration-redmine-[latest version].jar \
  init \
  --redmine.key XXXXXXXXXXXXX \
  --redmine.url https://my.redmine \
  --backlog.key XXXXXXXXXXXXX \
  --backlog.url https://nulab.backlog.jp \
  --projectKey redmine_project:BACKLOG_PROJECT

以下のようにマッピングファイルが作成されます。

.
├── log
│   ├── backlog-migration-redmine-warn.log
│   └── backlog-migration-redmine.log
└── mapping
    ├── priorities.csv
    ├── priorities_list.csv
    ├── statuses.csv
    ├── statuses_list.csv
    ├── users.csv
    └── users_list.csv
  • mapping/users.csv (ユーザー)
  • mapping/priorities.csv (優先度)
  • mapping/statuses.csv (状態)

Wiki を除外して初期化

[--exclude]オプションを利用すると指定された項目を除外してインポートを実行します。

java -jar backlog-migration-redmine-[最新バージョン].jar \
  init \
  --redmine.key [RedmineのAPIキー] \
  --redmine.url [RedmineのURL] \
  --backlog.key [BacklogのAPIキー] \
  --backlog.url [BacklogのURL] \
  --projectKey [Redmineプロジェクト識別子]:[Backlogプロジェクトキー] \
  --exclude [wiki]

プロジェクトのマッピングについて

--projectKey オプションに以下のようにコロン [:] 区切りでプロジェクトを指定することで、Backlog 側の移行先のプロジェクトを指定することができます。

--projectKey [Redmineのプロジェクト識別子]:[Backlogのプロジェクトキー]

マッピングファイルを修正

自動作成されるファイルは以下のように CSV 形式で出力されます。 Backlog 側の空白の項目は自動設定できなかった項目になります。 以下のファイルから Name 列の項目をコピーして、空白を埋める必要が有ります。

  • mapping/users_list.csv (ユーザー)
  • mapping/priorities_list.csv (優先度)
  • mapping/statuses_list.csv (状態)

実行コマンド

[execute]コマンドを実行することでインポートを実行します。

java -jar backlog-migration-redmine-[最新バージョン].jar \
  execute \
  --redmine.key [RedmineのAPIキー] \
  --redmine.url [RedmineのURL] \
  --backlog.key [BacklogのAPIキー] \
  --backlog.url [BacklogのURL] \
  --projectKey [Redmineプロジェクト識別子]:[Backlogプロジェクトキー]

サンプルコマンド:

java -jar backlog-migration-redmine-[latest version].jar \
  execute \
  --redmine.key XXXXXXXXXXXXX \
  --redmine.url https://my.redmine \
  --backlog.key XXXXXXXXXXXXX \
  --backlog.url https://nulab.backlog.jp \
  --projectKey redmine_project:BACKLOG_PROJECT

インポートが完了すると以下のようにディレクトリが作成され インポートに使用されたデータファイルが出力されます。

.
├── log
│   ├── backlog-migration-redmine-warn.log
│   └── backlog-migration-redmine.log

インポートのみ実行

[--importOnly]オプションを利用すると前回出力したファイルからインポートのみ実行します。

java -jar backlog-migration-redmine-[最新バージョン].jar \
  execute \
  --redmine.key [RedmineのAPIキー] \
  --redmine.url [RedmineのURL] \
  --backlog.key [BacklogのAPIキー] \
  --backlog.url [BacklogのURL] \
  --projectKey [Redmineプロジェクト識別子]:[Backlogプロジェクトキー] \
  --importOnly

課題または Wiki のみ実行

[--exclude]オプションを利用すると指定された項目を除外してインポートを実行します。

java -jar backlog-migration-redmine-[最新バージョン].jar \
  execute \
  --redmine.key [RedmineのAPIキー] \
  --redmine.url [RedmineのURL] \
  --backlog.key [BacklogのAPIキー] \
  --backlog.url [BacklogのURL] \
  --projectKey [Redmineプロジェクト識別子]:[Backlogプロジェクトキー] \
  --exclude [issue または wiki]

再試行する回数の指定

[--retryCount]オプションを利用すると、ネットワークエラー等が発生したときに再試行する回数を指定できます。

java -jar backlog-migration-redmine-[最新バージョン].jar \
  execute \
  --redmine.key [RedmineのAPIキー] \
  --redmine.url [RedmineのURL] \
  --backlog.key [BacklogのAPIキー] \
  --backlog.url [BacklogのURL] \
  --projectKey [Redmineプロジェクト識別子]:[Backlogプロジェクトキー] \
  --retryCount [再試行する回数]

制限事項

Redmine の対応バージョン

Redmine の対応バージョンは 1.1.1 以降 になります。

実行できるユーザー

Backlog の 管理者権限 が必要になります。

カスタムフィールドを使用しているプロジェクトの移行

Backlog で プレミアムプラン以上 のプランを契約している必要があります。

移行できないリソース

  • 共有ファイル
  • 文書
  • フォーラム
  • ロールと権限

課題について

  • Redmine 側に登録してあるカスタム属性の全てが、移行するプロジェクトに登録されます。
  • プライベート注記も移行されます。
  • Redmine の孫課題は Backlog では以下の扱いとします。
    • 親課題は設定されません。
    • 課題作成時に親課題を指定した場合、親課題の情報は記載されません。
    • 課題作成後に親課題を指定した場合、コメントに親課題のリンクが追加されます。
  • textile 記法 を変換しません。
  • 課題登録者または、課題担当者であるユーザーがプロジェクトから削除されている場合、Backlog 側では課題担当者は未設定、課題登録者・更新者はインポート実行者となります。

Wiki について

  • Wiki 登録者であるユーザーがプロジェクトから削除されている場合、Backlog 側では Wiki 登録者はインポート実行者となります。
  • Wiki の履歴は登録されません。

ニュースについて

  • Wiki として登録されます。
  • 添付ファイルは移行できません。

プロジェクトについて

  • テキスト整形のルール: markdown
  • Redmine のプロジェクト識別子は以下のように変換され Backlog のプロジェクトキーとして登録されます。

ハイフンアンダースコア

半角英子文字半角英大文字

カスタムフィールドについて

  • バージョンとユーザーはリストとして登録され固定値になります。
  • 真偽値は[はい]、[いいえ]のラジオボタン形式で登録されます。

以下の項目は移行できません

  • 説明
  • 最短 - 最大長
  • 正規表現
  • テキストの書式
  • デフォルト値
  • 値に設定するリンク URL
  • 全プロジェクト向け
  • フィルタとして使用
  • 検索対象
  • 表示
  • キー・バリュー リスト

状態について

課題追加時に「新規」以外のステータスを設定し、その後ステータスが変更されなかった場合は「未処理」に設定されます。

Redmine バージョンによる移行可能なリソース

カスタムフィールドが含まれるプロジェクトは Redmine 2.4 以降のみ対応しています。

Resource Availability
課題 1.1
プロジェクト 1.1
プロジェクトメンバー 1.4
ニュース 1.1
バージョン 1.3
Wiki 2.2
添付ファイル 1.3
課題ステータス 1.3
トラッカー 1.3
カテゴリー 1.3
グループ 2.1
カスタムフィールド 2.4
優先度 2.2

その他

  • Backlog のスペースがフリープランの場合は API のレート制限により移行できません。
  • 本移行ツールの並列実行は、API のレート制限を超える可能性があるため動作を保証できません。

再インポートの仕様

Backlog 側に Redmine に対応するプロジェクトキーがある場合同一プロジェクトとみなし、以下の仕様でインポートされます。

※ 対象のプロジェクトに 参加していない場合

対象プロジェクトはインポートされず以下のメッセージが表示されます。対象プロジェクトをインポートする場合は、対象プロジェクトに参加してください。[⭕️⭕️ を移行しようとしましたが ⭕️⭕️ に参加していません。移行したい場合は ⭕️⭕️ に参加してください。]

項目 仕様
グループ 同じグループ名のグループがある場合、同一とみなし登録しません。
プロジェクト 同じプロジェクトキーのプロジェクトがある場合、プロジェクトを作成せず対象のプロジェクトに課題や Wiki を登録します。
課題 件名、作成者、作成日が一致する課題は登録されません。
Wiki 同じページ名の Wiki がある場合登録しません。
カスタム属性 同じ名前のカスタム属性がある場合登録しません。

License

MIT License

お問い合わせ

お問い合わせは下記サイトからご連絡ください。

https://backlog.com/ja/contact/

backlogmigration-redmine's People

Contributors

github-actions[bot] avatar hrt35 avatar jtakakura avatar nullberg88 avatar okinaka avatar shomatan avatar yuichi0301 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

backlogmigration-redmine's Issues

エクスポートに失敗する

インポートに失敗する #4 とは別件です。

Redmineの既存プロジェクトからのエクスポート中にタイムアウトが発生し、コンバートできない症状です。

$ java -jar backlog-migration-redmine-0.9.0b26.jar execute \
--backlog.key wM8QwM8QwM8QwM8QwM8QwM8QwM8QwM8QwM8QwM8QwM8Q \
--backlog.url https://XXXXX.backlog.jp \
--redmine.key 06e606e606e606e606e606e606e606e606e606e6 \
--redmine.url http://intraserver.local/redmine \
--projects wi_fi_hosyu : WI_FI_HOSYU
       Wi-Fi社内保守の課題をエクスポートしました。(144/586)
       Wi-Fi社内保守の課題をエクスポートしました。(144/586)
java.util.concurrent.TimeoutException: Await termination timed out after [60 minutes]
       at akka.actor.ActorSystemImpl$TerminationCallbacks.ready(ActorSystem.scala:818)
       at akka.actor.ActorSystemImpl$TerminationCallbacks.ready(ActorSystem.scala:788)
       at scala.concurrent.Await$$anonfun$ready$1.apply(package.scala:169)
       at scala.concurrent.Await$$anonfun$ready$1.apply(package.scala:169)
       at scala.concurrent.BlockContext$DefaultBlockContext$.blockOn(BlockContext.scala:53)
       at scala.concurrent.Await$.ready(package.scala:169)
       at akka.actor.ActorSystemImpl.awaitTermination(ActorSystem.scala:644)
       at com.nulabinc.r2b.actor.redmine.RedmineActor$.apply(RedmineActor.scala:73)
       at com.nulabinc.r2b.core.R2B$.execute(R2B.scala:93)
       at com.nulabinc.r2b.core.R2B$.main(R2B.scala:57)
       at com.nulabinc.r2b.core.R2B.main(R2B.scala)

これは現行のインポートツールの実装でタイムアウト時間が60分としてハードコーディングされていることが原因です。

  • タイムアウト判定を取り除く
  • タイムアウト判定をオプション等でカスタマイズ可能にする

などの対策をしていただければありがたいです。

また、以前試した0.9.0b21と比べて0.9.0b26は処理速度が非常に低下しているように見受けられます。こちらもご対応いただけるようでしたらありがたいです。

「担当者」が設定されない

現象
移行ツールでRedmineからBacklogへ移行した課題の担当者が設定されない。
単純なプロジェクトも同様の現象で発生しています。

発生バージョン
0.15.0b1
※0.14.0b4では発生してません

移行ツール実行環境

OS: Windows 10 Enterprise(1903)
java version "14.0.2" 2020-07-14
Java(TM) SE Runtime Environment (build 14.0.2+12-46)
Java HotSpot(TM) 64-Bit Server VM (build 14.0.2+12-46, mixed mode, sharing)

Redmine環境

Environment:
  Redmine version                3.4.5.stable
  Ruby version                   2.5.1-p57 (2018-03-29) [x86_64-linux]
  Rails version                  4.2.8
  Environment                    production
  Database adapter               PostgreSQL
SCM:
  Subversion                     1.7.14
  Git                            2.16.2
  Filesystem                     
Redmine plugins:
  easy_gantt                     1.11
  redmine_agile                  1.4.6
  redmine_github_hook            2.2.0
  redmine_messenger              1.0.2
  view_customize                 1.1.4

Does not fetch locked users over default limit

    /**
     * <p>This method does NOT handle paging for you. You need to provide "offset" and "limit" parameters
     * if you want to control paging.
     * <p>Sample usage:
     <pre>
     final Map<String, String> params = new HashMap<String, String>();
     params.put("name", name);
     final List<User> users = userManager.getUsers(params);
     </pre>
     *
     * @param parameters http parameters: key/value pairs to append to the rest api request
     * @return empty list if no objects found using provided parameters
     * @throws RedmineAuthenticationException invalid or no API access key is used with the server, which
     *                                 requires authorization. Check the constructor arguments.
     * @throws RedmineException
     */
    public List<User> getUsers(Map<String, String> parameters) throws RedmineException {
        return DirectObjectsSearcher.getObjectsListNoPaging(transport, parameters, User.class);
    }

importができない

initを実施し、redmineの情報をexportするところまではうまくいくのですが、
BackLogでimportするところでエラーとなってしまいます。

どこを直せば良いか教えて欲しいです。。

===以下エラーログ===

021/05/13 16:58:04.657 14211 [scala-execution-context-global-24] ERROR com.nulabinc.backlog.r2b.R2B$ - yoshida_test-53957 (of class java.lang.String)
scala.MatchError: yoshida_test-53957 (of class java.lang.String)
at com.nulabinc.backlog.migration.common.domain.BacklogIssue$.getIssueIndex(Backlog.scala:160)
at com.nulabinc.backlog.migration.common.domain.BacklogIssue.findIssueIndex(Backlog.scala:149)
at com.nulabinc.backlog.migration.importer.service.IssuesImporter.createTemporaryIssues(IssuesImporter.scala:161)
at com.nulabinc.backlog.migration.importer.service.IssuesImporter.loadJson(IssuesImporter.scala:86)
at com.nulabinc.backlog.migration.importer.service.IssuesImporter.$anonfun$loadDateDirectory$3(IssuesImporter.scala:75)
at com.nulabinc.backlog.migration.importer.service.IssuesImporter.$anonfun$loadDateDirectory$3$adapted(IssuesImporter.scala:73)
at scala.collection.immutable.List.foreach(List.scala:333)
at com.nulabinc.backlog.migration.importer.service.IssuesImporter.loadDateDirectory(IssuesImporter.scala:73)
at com.nulabinc.backlog.migration.importer.service.IssuesImporter.$anonfun$execute$3(IssuesImporter.scala:57)
at com.nulabinc.backlog.migration.importer.service.IssuesImporter.$anonfun$execute$3$adapted(IssuesImporter.scala:56)
at scala.collection.immutable.List.foreach(List.scala:333)
at com.nulabinc.backlog.migration.importer.service.IssuesImporter.$anonfun$execute$1(IssuesImporter.scala:56)
at com.nulabinc.backlog.migration.importer.service.IssuesImporter.$anonfun$execute$1$adapted(IssuesImporter.scala:48)
at monix.eval.Task$Map.apply(Task.scala:4604)
at monix.eval.Task$Map.apply(Task.scala:4600)
at monix.eval.internal.TaskRunLoop$.startFull(TaskRunLoop.scala:170)
at monix.eval.internal.TaskRestartCallback.syncOnSuccess(TaskRestartCallback.scala:101)
at monix.eval.internal.TaskRestartCallback$$anon$1.run(TaskRestartCallback.scala:118)
at monix.execution.internal.Trampoline.monix$execution$internal$Trampoline$$immediateLoop(Trampoline.scala:66)
at monix.execution.internal.Trampoline.startLoop(Trampoline.scala:32)
at monix.execution.schedulers.TrampolineExecutionContext$JVMNormalTrampoline.super$startLoop(TrampolineExecutionContext.scala:142)
at monix.execution.schedulers.TrampolineExecutionContext$JVMNormalTrampoline.$anonfun$startLoop$1(TrampolineExecutionContext.scala:142)
at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.scala:18)
at scala.concurrent.BlockContext$.withBlockContext(BlockContext.scala:94)
at monix.execution.schedulers.TrampolineExecutionContext$JVMNormalTrampoline.startLoop(TrampolineExecutionContext.scala:142)
at monix.execution.internal.Trampoline.execute(Trampoline.scala:40)
at monix.execution.schedulers.TrampolineExecutionContext.execute(TrampolineExecutionContext.scala:57)
at monix.execution.schedulers.BatchingScheduler.execute(BatchingScheduler.scala:50)
at monix.execution.schedulers.BatchingScheduler.execute$(BatchingScheduler.scala:47)
at monix.execution.schedulers.AsyncScheduler.execute(AsyncScheduler.scala:31)
at monix.eval.internal.TaskRestartCallback.onSuccess(TaskRestartCallback.scala:72)
at monix.eval.internal.TaskRunLoop$.startFull(TaskRunLoop.scala:165)
at monix.eval.internal.TaskRestartCallback.syncOnSuccess(TaskRestartCallback.scala:101)
at monix.eval.internal.TaskRestartCallback.onSuccess(TaskRestartCallback.scala:74)
at monix.eval.internal.TaskExecuteOn$AsyncRegister$$anon$1.run(TaskExecuteOn.scala:71)
at java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1402)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1067)
at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1703)
at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:172)
2021/05/13 16:58:04.664 14218 [scala-execution-context-global-24] INFO c.n.b.m.c.i.JansiConsoleDSL - ERROR: yoshida_test-53957 (of class java.lang.String)
()

インポートに失敗する

$ java -jar backlog-migration-redmine-0.9.0b21.jar execute \
--backlog.key wM8QwM8QwM8QwM8QwM8QwM8QwM8QwM8QwM8QwM8QwM8Q
--backlog.url https://XXXXX.backlog.jp \
--redmine.key 06e606e606e606e606e606e606e606e606e606e6
--redmine.url http://intraserver.local/redmine \
--projects wi_fi_hosyu wi_fi_hosyu: WI_FI_HOSYU

以上のコマンドを実行した際、Redmineからのエクスポートは成功するが、backlogへのインポートに失敗する。
エラーログは以下のとおり。

2016/03/29 13:30:30.255 400557 [backlog-importer-akka.actor.default-dispatcher-3] INFO  c.n.b.i.actor.backlog.BacklogActor - Backlogのインポートを開始します。
2016/03/29 13:30:30.255 400557 [backlog-importer-akka.actor.default-dispatcher-3] INFO  c.n.b.i.actor.backlog.BacklogActor - --------------------------------------------------
2016/03/29 13:30:31.148 401450 [backlog-importer-akka.actor.default-dispatcher-5] INFO  c.n.b.i.actor.backlog.ProjectsActor -   プロジェクトのインポートを実行します。(全3件)
2016/03/29 13:30:31.300 401602 [backlog-importer-akka.actor.default-dispatcher-3] INFO  c.n.b.i.actor.backlog.ProjectActor -     プロジェクトWi-Fi保守のインポートを実行します。
2016/03/29 13:30:31.354 401656 [backlog-importer-akka.actor.default-dispatcher-4] INFO  c.n.b.i.actor.backlog.ProjectActor -     プロジェクトWi-Fi保守のインポートを実行します。
2016/03/29 13:30:31.374 401676 [backlog-importer-akka.actor.default-dispatcher-2] INFO  c.n.b.i.actor.backlog.ProjectActor -     プロジェクトWi-Fi保守のインポートを実行します。
2016/03/29 13:30:31.869 402171 [backlog-importer-akka.actor.default-dispatcher-2] INFO  c.n.b.i.s.BacklogProjectService -       以下の理由でプロジェクトWI_FI_HOSYUをインポートできません。:backlog api request failed.
status code - 400
message - : [ESSR0071]SQLで例外が発生しました。理由はcom.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '15165-WI_FI_HOSYU-0' for key 'UQ_SPACE_ID_PROJECT_KEY'
code - 7

2016/03/29 13:30:31.888 402190 [backlog-importer-akka.actor.default-dispatcher-4] INFO  c.n.b.i.s.BacklogProjectService -       以下の理由でプロジェクトWI_FI_HOSYUをインポートできません。:backlog api request failed.
status code - 400
message - : [ESSR0071]SQLで例外が発生しました。理由はcom.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '15165-WI_FI_HOSYU-0' for key 'UQ_SPACE_ID_PROJECT_KEY'
code - 7

2016/03/29 13:30:34.653 404955 [backlog-importer-akka.actor.default-dispatcher-3] INFO  c.n.b.i.actor.backlog.ProjectActor -       プロジェクトWi-Fi保守のカテゴリーをインポートしました。

この不具合はRedmine中のプロジェクトにかかわらず発生します。
なお、Redmine側とbacklog側でアカウントが一致しないため、redmine側の複数のアカウントをbacklog側の1つのアカウントにマッピングする、いわゆる名寄せ設定をしています。

sbt compile に失敗する

実際にコンパイルしようとしましたが、ライブラリの依存関係がうまくいかずビルドできません。

com.nulabinc:backlog-importer_2.11:0.0.1

というライブラリがネット上には存在しませんでした。

redmine migration

Thanks for your permanent cooperation
if i can ask u question

How can I transfer fields from Oracle to MySQL?
In my work environment, I own two systems, the Oracle 12C system and the redmine system, and this requires users to enter information twice. I want to find a suitable solution to transfer information from the Oracle system to the Redmine system, and to take some fields and transfer them to the Redmine system through the similarity of the issue_id field

コメントや編集履歴がインポートできない

便利なツールの開発ありがとうございます!
インポート実行中に以下エラーが発生し、先に進めないので問合せさせてください。
チケット自体はBacklog側へ取り込めるのですが、チケット起票後のコメントや編集履歴が取り込めませんでした。
解決策があれば教えて下さい。

Could not register comment on issue [BacklogチケットID]. : List(java.lang.reflect.InaccessibleObjectException: Unable to make field private final sun.net.www.protocol.https.DelegateHttpsURLConnection sun.net.www.protocol.https.HttpsURLConnectionImpl.delegate accessible: module java.base does not "opens sun.net.www.protocol.https" to unnamed module @54307ae0, java.lang.reflect.InaccessibleObjectException: Unable to make field private final sun.net.www.protocol.https.DelegateHttpsURLConnection sun.net.www.protocol.https.HttpsURLConnectionImpl.delegate accessible: module java.base does not "opens sun.net.www.protocol.https" to unnamed module @54307ae0, java.lang.reflect.InaccessibleObjectException: Unable to make field private final sun.net.www.protocol.https.DelegateHttpsURLConnection sun.net.www.protocol.https.HttpsURLConnectionImpl.delegate accessible: module java.base does not "opens sun.net.www.protocol.https" to unnamed module @54307ae0)

init に失敗する

init に失敗してしまいます。

環境

  • Backlog Migration for Redmine 0.9.0b16
  • Java 1.8.0_71
  • クライアントOS (Windows 7)
  • サーバ OS (Debian wheezy)
  • Redmine 1.4.4 (postgresql) : Debian 標準のパッケージ

で試したところ、以下のエラーメッセージが表示されました。

- Backlogのステータスを読み込みます。
- Redmineのステータスを読み込みます。
- Backlogの優先度を読み込みます。
- Redmineの優先度を読み込みます。
com.taskadapter.redmineapi.RedmineFormatException: org.json.JSONException: A JSO
NObject text must begin with '{' at character 1
        at com.taskadapter.redmineapi.internal.Transport.getObjectsListNoPaging(
Transport.java:459)
        at com.taskadapter.redmineapi.internal.Transport.getObjectsList(Transpor
t.java:421)
        at com.taskadapter.redmineapi.internal.Transport.getObjectsList(Transpor
t.java:398)
        at com.taskadapter.redmineapi.IssueManager.getIssuePriorities(IssueManag
er.java:252)
        at com.nulabinc.r2b.service.RedmineService.getIssuePriorities(RedmineSer
vice.scala:160)
        at com.nulabinc.r2b.cli.PriorityMapping.loadRedmine(PriorityMapping.scal
a:22)
        at com.nulabinc.r2b.cli.PriorityMapping.<init>(PriorityMapping.scala:17)

        at com.nulabinc.r2b.cli.CommonCommand$class.load(CommonCommand.scala:20)

        at com.nulabinc.r2b.cli.InitCommand.load(InitCommand.scala:9)
        at com.nulabinc.r2b.cli.InitCommand.<init>(InitCommand.scala:11)
        at com.nulabinc.r2b.core.R2B$.execute(R2B.scala:114)
        at com.nulabinc.r2b.core.R2B$.main(R2B.scala:59)
        at com.nulabinc.r2b.core.R2B.main(R2B.scala)
Caused by: org.json.JSONException: A JSONObject text must begin with '{' at char
acter 1
        at org.json.JSONTokener.syntaxError(JSONTokener.java:410)
        at org.json.JSONObject.<init>(JSONObject.java:179)
        at org.json.JSONObject.<init>(JSONObject.java:402)
        at com.taskadapter.redmineapi.internal.RedmineJSONParser.getResponse(Red
mineJSONParser.java:710)
        at com.taskadapter.redmineapi.internal.Transport.getObjectsListNoPaging(
Transport.java:454)
        ... 12 more

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.