83 Commits

Author SHA1 Message Date
Pavel Balashou 36c0c8ae5e [JIM-112] Capital letters in user email or login break import with error.
https://community.openproject.org/wp/JIM-112
2026-06-11 11:34:54 +02:00
Andrej adf88507dd Merge pull request #23389 from opf/bug/75391-enabled-rate-limiting-on-jira-instance-breaks-projects-selector
[#75391] Enabled rate limiting on Jira instance breaks projects selector.
2026-05-27 13:55:10 +02:00
Pavel Balashou 51a9f862dd [#75391] Enabled rate limiting on Jira instance breaks projects selector.
https://community.openproject.org/wp/75391

- Adds error message for 429 http error.
- Does not suppress Import::JiraClient::ApiError with status 429.
- Specifically expect 400 in project_browsable? check.
2026-05-27 13:35:47 +02:00
Pavel Balashou f9a1b980c2 Merge pull request #23356 from opf/bug/75355-jira-migrator-does-not-scope-issues-between-import-runs
[#75355] Jira Migrator does not scope issues between import runs.
2026-05-26 18:25:53 +02:00
Pavel Balashou 5442ce1f00 [#75355] Fix rubocop style complains. 2026-05-26 15:46:54 +02:00
Pavel Balashou 404de96cb1 [#75355] Jira Migrator does not scope issues between import runs.
https://community.openproject.org/wp/75355
2026-05-26 13:59:13 +02:00
Andrej 85b2ba0c79 Update app/workers/import/jira_fetch_and_import_projects_job.rb
Co-authored-by: Pavel Balashou <ba1ashpash@gmail.com>
2026-05-26 12:34:28 +02:00
as-op 01b51ea36f [#75248] Jira Migrator stops the import for non-existing user in user mention
https://community.openproject.org/wp/75248
2026-05-21 11:36:38 +02:00
Pavel Balashou db189f0aaf [#72427] Jira Migrator imports project-based semantic work item identifiers
https://community.openproject.org/wp/72427
2026-05-20 13:44:28 +02:00
Pavel Balashou 265700a13e Merge branch 'dev' into feature/74807-jira-migrator-supports-due-date-estimated-hours-and-remaining-hours 2026-05-19 14:26:11 +02:00
Pavel Balashou 81da3e6295 [#74807] Jira Migrator supports due date, estimated hours and remaining hours.
https://community.openproject.org/wp/74807
2026-05-19 09:32:35 +02:00
as-op ed2881f594 [#74746] Avoid additional journal background jobs to be started by Jira import job
https://community.openproject.org/wp/74746
2026-05-07 14:59:44 +02:00
Andrej f42c781846 Merge pull request #22947 from opf/bug/74343-make-it-obvious-that-jira-migrator-is-in-beta-status
[#74343] Make it obvious that Jira Migrator is in Beta status.
2026-04-29 12:05:01 +02:00
Pavel Balashou e9c4860c8f [#74343] Make it obvious that Jira Migrator is in Beta status.
https://community.openproject.org/wp/74343

- rephrase a lot of text
- make sure backtrace is included in case of errors in all jira migrator related jobs.
- change InfoListBox component to support subheader and any icon
- remove link to users in review mode due to its uselessness
- sort jira configs by created_at (new configurations first)
2026-04-29 10:21:44 +02:00
as-op e3d664be92 Jira projects API returns projects for which the user does not have (deeper) view rights, check this and ignore those 2026-04-28 08:13:25 +02:00
as-op 4dd3760681 do not import unknown string array custom fields 2026-04-27 16:43:47 +02:00
as-op cf57231524 beware of keywords in JQL 2026-04-27 16:15:15 +02:00
as-op 3368ae22ab also guard against invalid UTF-8 in input 2026-04-23 12:56:26 +02:00
as-op 6a1fc6c1d3 fix merge commit 2026-04-22 08:15:47 +02:00
as-op d5c49adcfb Merge branch 'dev' into feature/73147-support-custom-fields-migration
# Conflicts:
#	app/workers/import/jira_import_projects_job.rb
2026-04-21 15:31:41 +02:00
Pavel Balashou a4e39efae0 Yield a tempfile to a given block in JiraClient#download_attachment.
Now callers do not need to care about removing the tempfile.
2026-04-21 13:49:32 +02:00
Pavel Balashou 181efda9c6 Ensure tempfile is always removed.
Co-authored-by: Andrej Sandorf <77627197+as-op@users.noreply.github.com>
2026-04-21 13:25:15 +02:00
Pavel Balashou 53e33770c2 Use ssrf filtering in Jira Import. 2026-04-21 10:29:45 +02:00
as-op b1aa3debdd obey rubocop 2026-04-20 17:16:58 +02:00
as-op 3a16ad279c don't add project suffix for single field context usage 2026-04-20 17:09:09 +02:00
as-op c30e3d7806 fix multicheckbox single option => boolean cf migration 2026-04-20 16:55:13 +02:00
as-op e0734a09f7 prevent duplicate custom fields in type attribute groups during migration 2026-04-20 16:11:35 +02:00
as-op 9ec0487e76 obey rubocop 2026-04-20 14:56:45 +02:00
as-op 68e3da07d7 import "checkboxes" as multi-select list cf if there is more than one value, otherwise a boolean cf 2026-04-20 14:54:00 +02:00
as-op e61f011f95 import "cascadeselect" as multi-select list cf without enterprise token 2026-04-20 14:09:38 +02:00
as-op 81a725becd filter out unsupported fields in migration 2026-04-20 13:28:37 +02:00
as-op c1507f4084 import "radiobuttons" as single-select list cf 2026-04-20 12:42:30 +02:00
as-op 9b3854d873 import "checkboxes" as multi-select list cf if there is more than one value, otherwise a boolean cf 2026-04-20 12:08:15 +02:00
as-op 5a68fdaeaf refactor in module subfolders 2026-04-20 11:04:38 +02:00
as-op 2fe28e8959 add support for multi-user picker custom field type 2026-04-16 16:29:15 +02:00
as-op 75dda5d430 import cascadingselect as hierarchy 2026-04-16 16:10:09 +02:00
as-op c02a9d3386 import labels as list 2026-04-16 14:40:04 +02:00
as-op d22644d9a4 add support for user selects 2026-04-16 13:07:01 +02:00
as-op 9717b1adf0 add tests and fix rubocop issues 2026-04-16 11:55:34 +02:00
as-op fe49ea9a44 implement importing custom field "multicheckbox" as several Boolean OP CF 2026-04-16 11:09:46 +02:00
as-op 5116846b94 implement custom fields synchronization and context handling 2026-04-16 10:39:36 +02:00
as-op 8bceda9434 retrieve list values via API, use collecting values as fallback 2026-04-14 16:54:43 +02:00
as-op ae8d15b3f8 fix merge 2026-04-13 10:39:29 +02:00
as-op 625f6308d1 Merge branch 'dev' into feature/73147-support-custom-fields-migration
# Conflicts:
#	app/workers/import/jira_import_projects_job.rb
2026-04-13 10:38:47 +02:00
Alexander Brandon Coles ccccead89f Merge branch 'dev' into merge-release/17.3-20260411112919
# Conflicts:
#	config/locales/crowdin/af.yml
#	config/locales/crowdin/ar.yml
#	config/locales/crowdin/az.yml
#	config/locales/crowdin/be.yml
#	config/locales/crowdin/bg.yml
#	config/locales/crowdin/ca.yml
#	config/locales/crowdin/ckb-IR.yml
#	config/locales/crowdin/cs.yml
#	config/locales/crowdin/da.yml
#	config/locales/crowdin/de.yml
#	config/locales/crowdin/el.yml
#	config/locales/crowdin/eo.yml
#	config/locales/crowdin/es.yml
#	config/locales/crowdin/et.yml
#	config/locales/crowdin/eu.yml
#	config/locales/crowdin/fa.yml
#	config/locales/crowdin/fi.yml
#	config/locales/crowdin/fil.yml
#	config/locales/crowdin/fr.yml
#	config/locales/crowdin/he.yml
#	config/locales/crowdin/hi.yml
#	config/locales/crowdin/hr.yml
#	config/locales/crowdin/hu.yml
#	config/locales/crowdin/id.yml
#	config/locales/crowdin/it.yml
#	config/locales/crowdin/ja.yml
#	config/locales/crowdin/js-af.yml
#	config/locales/crowdin/js-ar.yml
#	config/locales/crowdin/js-az.yml
#	config/locales/crowdin/js-be.yml
#	config/locales/crowdin/js-bg.yml
#	config/locales/crowdin/js-ca.yml
#	config/locales/crowdin/js-ckb-IR.yml
#	config/locales/crowdin/js-cs.yml
#	config/locales/crowdin/js-da.yml
#	config/locales/crowdin/js-de.yml
#	config/locales/crowdin/js-el.yml
#	config/locales/crowdin/js-eo.yml
#	config/locales/crowdin/js-es.yml
#	config/locales/crowdin/js-et.yml
#	config/locales/crowdin/js-eu.yml
#	config/locales/crowdin/js-fa.yml
#	config/locales/crowdin/js-fi.yml
#	config/locales/crowdin/js-fil.yml
#	config/locales/crowdin/js-fr.yml
#	config/locales/crowdin/js-he.yml
#	config/locales/crowdin/js-hi.yml
#	config/locales/crowdin/js-hr.yml
#	config/locales/crowdin/js-hu.yml
#	config/locales/crowdin/js-id.yml
#	config/locales/crowdin/js-it.yml
#	config/locales/crowdin/js-ja.yml
#	config/locales/crowdin/js-ka.yml
#	config/locales/crowdin/js-kk.yml
#	config/locales/crowdin/js-ko.yml
#	config/locales/crowdin/js-lt.yml
#	config/locales/crowdin/js-lv.yml
#	config/locales/crowdin/js-mn.yml
#	config/locales/crowdin/js-ms.yml
#	config/locales/crowdin/js-ne.yml
#	config/locales/crowdin/js-nl.yml
#	config/locales/crowdin/js-no.yml
#	config/locales/crowdin/js-pl.yml
#	config/locales/crowdin/js-pt-BR.yml
#	config/locales/crowdin/js-pt-PT.yml
#	config/locales/crowdin/js-ro.yml
#	config/locales/crowdin/js-ru.yml
#	config/locales/crowdin/js-rw.yml
#	config/locales/crowdin/js-si.yml
#	config/locales/crowdin/js-sk.yml
#	config/locales/crowdin/js-sl.yml
#	config/locales/crowdin/js-sr.yml
#	config/locales/crowdin/js-sv.yml
#	config/locales/crowdin/js-th.yml
#	config/locales/crowdin/js-tr.yml
#	config/locales/crowdin/js-uk.yml
#	config/locales/crowdin/js-uz.yml
#	config/locales/crowdin/js-vi.yml
#	config/locales/crowdin/js-zh-CN.yml
#	config/locales/crowdin/js-zh-TW.yml
#	config/locales/crowdin/ka.yml
#	config/locales/crowdin/kk.yml
#	config/locales/crowdin/ko.yml
#	config/locales/crowdin/lt.yml
#	config/locales/crowdin/lv.yml
#	config/locales/crowdin/mn.yml
#	config/locales/crowdin/ms.yml
#	config/locales/crowdin/ne.yml
#	config/locales/crowdin/nl.yml
#	config/locales/crowdin/no.yml
#	config/locales/crowdin/pl.yml
#	config/locales/crowdin/pt-BR.yml
#	config/locales/crowdin/pt-PT.yml
#	config/locales/crowdin/ro.yml
#	config/locales/crowdin/ru.yml
#	config/locales/crowdin/rw.yml
#	config/locales/crowdin/si.yml
#	config/locales/crowdin/sk.yml
#	config/locales/crowdin/sl.yml
#	config/locales/crowdin/sr.yml
#	config/locales/crowdin/sv.yml
#	config/locales/crowdin/th.yml
#	config/locales/crowdin/tr.yml
#	config/locales/crowdin/uk.yml
#	config/locales/crowdin/uz.yml
#	config/locales/crowdin/vi.yml
#	config/locales/crowdin/zh-CN.yml
#	config/locales/crowdin/zh-TW.yml
#	modules/backlogs/config/locales/crowdin/af.yml
#	modules/backlogs/config/locales/crowdin/ar.yml
#	modules/backlogs/config/locales/crowdin/az.yml
#	modules/backlogs/config/locales/crowdin/be.yml
#	modules/backlogs/config/locales/crowdin/bg.yml
#	modules/backlogs/config/locales/crowdin/ca.yml
#	modules/backlogs/config/locales/crowdin/ckb-IR.yml
#	modules/backlogs/config/locales/crowdin/cs.yml
#	modules/backlogs/config/locales/crowdin/da.yml
#	modules/backlogs/config/locales/crowdin/de.yml
#	modules/backlogs/config/locales/crowdin/el.yml
#	modules/backlogs/config/locales/crowdin/eo.yml
#	modules/backlogs/config/locales/crowdin/es.yml
#	modules/backlogs/config/locales/crowdin/et.yml
#	modules/backlogs/config/locales/crowdin/eu.yml
#	modules/backlogs/config/locales/crowdin/fa.yml
#	modules/backlogs/config/locales/crowdin/fi.yml
#	modules/backlogs/config/locales/crowdin/fil.yml
#	modules/backlogs/config/locales/crowdin/fr.yml
#	modules/backlogs/config/locales/crowdin/he.yml
#	modules/backlogs/config/locales/crowdin/hi.yml
#	modules/backlogs/config/locales/crowdin/hr.yml
#	modules/backlogs/config/locales/crowdin/hu.yml
#	modules/backlogs/config/locales/crowdin/id.yml
#	modules/backlogs/config/locales/crowdin/it.yml
#	modules/backlogs/config/locales/crowdin/ja.yml
#	modules/backlogs/config/locales/crowdin/ka.yml
#	modules/backlogs/config/locales/crowdin/kk.yml
#	modules/backlogs/config/locales/crowdin/ko.yml
#	modules/backlogs/config/locales/crowdin/lt.yml
#	modules/backlogs/config/locales/crowdin/lv.yml
#	modules/backlogs/config/locales/crowdin/mn.yml
#	modules/backlogs/config/locales/crowdin/ms.yml
#	modules/backlogs/config/locales/crowdin/ne.yml
#	modules/backlogs/config/locales/crowdin/nl.yml
#	modules/backlogs/config/locales/crowdin/no.yml
#	modules/backlogs/config/locales/crowdin/pl.yml
#	modules/backlogs/config/locales/crowdin/pt-BR.yml
#	modules/backlogs/config/locales/crowdin/pt-PT.yml
#	modules/backlogs/config/locales/crowdin/ro.yml
#	modules/backlogs/config/locales/crowdin/ru.yml
#	modules/backlogs/config/locales/crowdin/rw.yml
#	modules/backlogs/config/locales/crowdin/si.yml
#	modules/backlogs/config/locales/crowdin/sk.yml
#	modules/backlogs/config/locales/crowdin/sl.yml
#	modules/backlogs/config/locales/crowdin/sr.yml
#	modules/backlogs/config/locales/crowdin/sv.yml
#	modules/backlogs/config/locales/crowdin/th.yml
#	modules/backlogs/config/locales/crowdin/tr.yml
#	modules/backlogs/config/locales/crowdin/uk.yml
#	modules/backlogs/config/locales/crowdin/uz.yml
#	modules/backlogs/config/locales/crowdin/vi.yml
#	modules/backlogs/config/locales/crowdin/zh-CN.yml
#	modules/backlogs/config/locales/crowdin/zh-TW.yml
#	modules/bim/config/locales/crowdin/fr.yml
#	modules/budgets/config/locales/crowdin/cs.yml
#	modules/costs/config/locales/crowdin/ja.yml
#	modules/documents/config/locales/crowdin/af.yml
#	modules/documents/config/locales/crowdin/ar.yml
#	modules/documents/config/locales/crowdin/az.yml
#	modules/documents/config/locales/crowdin/be.yml
#	modules/documents/config/locales/crowdin/bg.yml
#	modules/documents/config/locales/crowdin/ca.yml
#	modules/documents/config/locales/crowdin/ckb-IR.yml
#	modules/documents/config/locales/crowdin/cs.yml
#	modules/documents/config/locales/crowdin/da.yml
#	modules/documents/config/locales/crowdin/de.yml
#	modules/documents/config/locales/crowdin/el.yml
#	modules/documents/config/locales/crowdin/eo.yml
#	modules/documents/config/locales/crowdin/es.yml
#	modules/documents/config/locales/crowdin/et.yml
#	modules/documents/config/locales/crowdin/eu.yml
#	modules/documents/config/locales/crowdin/fa.yml
#	modules/documents/config/locales/crowdin/fi.yml
#	modules/documents/config/locales/crowdin/fil.yml
#	modules/documents/config/locales/crowdin/fr.yml
#	modules/documents/config/locales/crowdin/he.yml
#	modules/documents/config/locales/crowdin/hi.yml
#	modules/documents/config/locales/crowdin/hr.yml
#	modules/documents/config/locales/crowdin/hu.yml
#	modules/documents/config/locales/crowdin/id.yml
#	modules/documents/config/locales/crowdin/it.yml
#	modules/documents/config/locales/crowdin/ja.yml
#	modules/documents/config/locales/crowdin/ka.yml
#	modules/documents/config/locales/crowdin/kk.yml
#	modules/documents/config/locales/crowdin/ko.yml
#	modules/documents/config/locales/crowdin/lt.yml
#	modules/documents/config/locales/crowdin/lv.yml
#	modules/documents/config/locales/crowdin/mn.yml
#	modules/documents/config/locales/crowdin/ms.yml
#	modules/documents/config/locales/crowdin/ne.yml
#	modules/documents/config/locales/crowdin/nl.yml
#	modules/documents/config/locales/crowdin/no.yml
#	modules/documents/config/locales/crowdin/pl.yml
#	modules/documents/config/locales/crowdin/pt-BR.yml
#	modules/documents/config/locales/crowdin/pt-PT.yml
#	modules/documents/config/locales/crowdin/ro.yml
#	modules/documents/config/locales/crowdin/ru.yml
#	modules/documents/config/locales/crowdin/rw.yml
#	modules/documents/config/locales/crowdin/si.yml
#	modules/documents/config/locales/crowdin/sk.yml
#	modules/documents/config/locales/crowdin/sl.yml
#	modules/documents/config/locales/crowdin/sr.yml
#	modules/documents/config/locales/crowdin/sv.yml
#	modules/documents/config/locales/crowdin/th.yml
#	modules/documents/config/locales/crowdin/tr.yml
#	modules/documents/config/locales/crowdin/uk.yml
#	modules/documents/config/locales/crowdin/uz.yml
#	modules/documents/config/locales/crowdin/vi.yml
#	modules/documents/config/locales/crowdin/zh-CN.yml
#	modules/documents/config/locales/crowdin/zh-TW.yml
#	modules/gitlab_integration/config/locales/crowdin/af.yml
#	modules/gitlab_integration/config/locales/crowdin/ar.yml
#	modules/gitlab_integration/config/locales/crowdin/az.yml
#	modules/gitlab_integration/config/locales/crowdin/be.yml
#	modules/gitlab_integration/config/locales/crowdin/bg.yml
#	modules/gitlab_integration/config/locales/crowdin/ca.yml
#	modules/gitlab_integration/config/locales/crowdin/ckb-IR.yml
#	modules/gitlab_integration/config/locales/crowdin/cs.yml
#	modules/gitlab_integration/config/locales/crowdin/da.yml
#	modules/gitlab_integration/config/locales/crowdin/de.yml
#	modules/gitlab_integration/config/locales/crowdin/el.yml
#	modules/gitlab_integration/config/locales/crowdin/eo.yml
#	modules/gitlab_integration/config/locales/crowdin/es.yml
#	modules/gitlab_integration/config/locales/crowdin/et.yml
#	modules/gitlab_integration/config/locales/crowdin/eu.yml
#	modules/gitlab_integration/config/locales/crowdin/fa.yml
#	modules/gitlab_integration/config/locales/crowdin/fi.yml
#	modules/gitlab_integration/config/locales/crowdin/fil.yml
#	modules/gitlab_integration/config/locales/crowdin/fr.yml
#	modules/gitlab_integration/config/locales/crowdin/he.yml
#	modules/gitlab_integration/config/locales/crowdin/hi.yml
#	modules/gitlab_integration/config/locales/crowdin/hr.yml
#	modules/gitlab_integration/config/locales/crowdin/hu.yml
#	modules/gitlab_integration/config/locales/crowdin/id.yml
#	modules/gitlab_integration/config/locales/crowdin/it.yml
#	modules/gitlab_integration/config/locales/crowdin/ja.yml
#	modules/gitlab_integration/config/locales/crowdin/ka.yml
#	modules/gitlab_integration/config/locales/crowdin/kk.yml
#	modules/gitlab_integration/config/locales/crowdin/ko.yml
#	modules/gitlab_integration/config/locales/crowdin/lt.yml
#	modules/gitlab_integration/config/locales/crowdin/lv.yml
#	modules/gitlab_integration/config/locales/crowdin/mn.yml
#	modules/gitlab_integration/config/locales/crowdin/ms.yml
#	modules/gitlab_integration/config/locales/crowdin/ne.yml
#	modules/gitlab_integration/config/locales/crowdin/nl.yml
#	modules/gitlab_integration/config/locales/crowdin/no.yml
#	modules/gitlab_integration/config/locales/crowdin/pl.yml
#	modules/gitlab_integration/config/locales/crowdin/pt-BR.yml
#	modules/gitlab_integration/config/locales/crowdin/pt-PT.yml
#	modules/gitlab_integration/config/locales/crowdin/ro.yml
#	modules/gitlab_integration/config/locales/crowdin/ru.yml
#	modules/gitlab_integration/config/locales/crowdin/rw.yml
#	modules/gitlab_integration/config/locales/crowdin/si.yml
#	modules/gitlab_integration/config/locales/crowdin/sk.yml
#	modules/gitlab_integration/config/locales/crowdin/sl.yml
#	modules/gitlab_integration/config/locales/crowdin/sr.yml
#	modules/gitlab_integration/config/locales/crowdin/sv.yml
#	modules/gitlab_integration/config/locales/crowdin/th.yml
#	modules/gitlab_integration/config/locales/crowdin/tr.yml
#	modules/gitlab_integration/config/locales/crowdin/uk.yml
#	modules/gitlab_integration/config/locales/crowdin/uz.yml
#	modules/gitlab_integration/config/locales/crowdin/vi.yml
#	modules/gitlab_integration/config/locales/crowdin/zh-CN.yml
#	modules/gitlab_integration/config/locales/crowdin/zh-TW.yml
#	modules/ldap_groups/config/locales/crowdin/af.yml
#	modules/ldap_groups/config/locales/crowdin/ar.yml
#	modules/ldap_groups/config/locales/crowdin/az.yml
#	modules/ldap_groups/config/locales/crowdin/be.yml
#	modules/ldap_groups/config/locales/crowdin/bg.yml
#	modules/ldap_groups/config/locales/crowdin/ca.yml
#	modules/ldap_groups/config/locales/crowdin/ckb-IR.yml
#	modules/ldap_groups/config/locales/crowdin/cs.yml
#	modules/ldap_groups/config/locales/crowdin/da.yml
#	modules/ldap_groups/config/locales/crowdin/de.yml
#	modules/ldap_groups/config/locales/crowdin/el.yml
#	modules/ldap_groups/config/locales/crowdin/eo.yml
#	modules/ldap_groups/config/locales/crowdin/es.yml
#	modules/ldap_groups/config/locales/crowdin/et.yml
#	modules/ldap_groups/config/locales/crowdin/eu.yml
#	modules/ldap_groups/config/locales/crowdin/fa.yml
#	modules/ldap_groups/config/locales/crowdin/fi.yml
#	modules/ldap_groups/config/locales/crowdin/fil.yml
#	modules/ldap_groups/config/locales/crowdin/fr.yml
#	modules/ldap_groups/config/locales/crowdin/he.yml
#	modules/ldap_groups/config/locales/crowdin/hi.yml
#	modules/ldap_groups/config/locales/crowdin/hr.yml
#	modules/ldap_groups/config/locales/crowdin/hu.yml
#	modules/ldap_groups/config/locales/crowdin/id.yml
#	modules/ldap_groups/config/locales/crowdin/it.yml
#	modules/ldap_groups/config/locales/crowdin/ja.yml
#	modules/ldap_groups/config/locales/crowdin/ka.yml
#	modules/ldap_groups/config/locales/crowdin/kk.yml
#	modules/ldap_groups/config/locales/crowdin/ko.yml
#	modules/ldap_groups/config/locales/crowdin/lt.yml
#	modules/ldap_groups/config/locales/crowdin/lv.yml
#	modules/ldap_groups/config/locales/crowdin/mn.yml
#	modules/ldap_groups/config/locales/crowdin/ms.yml
#	modules/ldap_groups/config/locales/crowdin/ne.yml
#	modules/ldap_groups/config/locales/crowdin/nl.yml
#	modules/ldap_groups/config/locales/crowdin/no.yml
#	modules/ldap_groups/config/locales/crowdin/pl.yml
#	modules/ldap_groups/config/locales/crowdin/pt-BR.yml
#	modules/ldap_groups/config/locales/crowdin/pt-PT.yml
#	modules/ldap_groups/config/locales/crowdin/ro.yml
#	modules/ldap_groups/config/locales/crowdin/ru.yml
#	modules/ldap_groups/config/locales/crowdin/rw.yml
#	modules/ldap_groups/config/locales/crowdin/si.yml
#	modules/ldap_groups/config/locales/crowdin/sk.yml
#	modules/ldap_groups/config/locales/crowdin/sl.yml
#	modules/ldap_groups/config/locales/crowdin/sr.yml
#	modules/ldap_groups/config/locales/crowdin/sv.yml
#	modules/ldap_groups/config/locales/crowdin/th.yml
#	modules/ldap_groups/config/locales/crowdin/tr.yml
#	modules/ldap_groups/config/locales/crowdin/uk.yml
#	modules/ldap_groups/config/locales/crowdin/uz.yml
#	modules/ldap_groups/config/locales/crowdin/vi.yml
#	modules/ldap_groups/config/locales/crowdin/zh-CN.yml
#	modules/ldap_groups/config/locales/crowdin/zh-TW.yml
#	modules/meeting/config/locales/crowdin/af.yml
#	modules/meeting/config/locales/crowdin/ar.yml
#	modules/meeting/config/locales/crowdin/az.yml
#	modules/meeting/config/locales/crowdin/be.yml
#	modules/meeting/config/locales/crowdin/bg.yml
#	modules/meeting/config/locales/crowdin/ca.yml
#	modules/meeting/config/locales/crowdin/ckb-IR.yml
#	modules/meeting/config/locales/crowdin/cs.yml
#	modules/meeting/config/locales/crowdin/da.yml
#	modules/meeting/config/locales/crowdin/de.yml
#	modules/meeting/config/locales/crowdin/el.yml
#	modules/meeting/config/locales/crowdin/eo.yml
#	modules/meeting/config/locales/crowdin/es.yml
#	modules/meeting/config/locales/crowdin/et.yml
#	modules/meeting/config/locales/crowdin/eu.yml
#	modules/meeting/config/locales/crowdin/fa.yml
#	modules/meeting/config/locales/crowdin/fi.yml
#	modules/meeting/config/locales/crowdin/fil.yml
#	modules/meeting/config/locales/crowdin/fr.yml
#	modules/meeting/config/locales/crowdin/he.yml
#	modules/meeting/config/locales/crowdin/hi.yml
#	modules/meeting/config/locales/crowdin/hr.yml
#	modules/meeting/config/locales/crowdin/hu.yml
#	modules/meeting/config/locales/crowdin/id.yml
#	modules/meeting/config/locales/crowdin/it.yml
#	modules/meeting/config/locales/crowdin/ja.yml
#	modules/meeting/config/locales/crowdin/ka.yml
#	modules/meeting/config/locales/crowdin/kk.yml
#	modules/meeting/config/locales/crowdin/ko.yml
#	modules/meeting/config/locales/crowdin/lt.yml
#	modules/meeting/config/locales/crowdin/lv.yml
#	modules/meeting/config/locales/crowdin/mn.yml
#	modules/meeting/config/locales/crowdin/ms.yml
#	modules/meeting/config/locales/crowdin/ne.yml
#	modules/meeting/config/locales/crowdin/nl.yml
#	modules/meeting/config/locales/crowdin/no.yml
#	modules/meeting/config/locales/crowdin/pl.yml
#	modules/meeting/config/locales/crowdin/pt-BR.yml
#	modules/meeting/config/locales/crowdin/pt-PT.yml
#	modules/meeting/config/locales/crowdin/ro.yml
#	modules/meeting/config/locales/crowdin/ru.yml
#	modules/meeting/config/locales/crowdin/rw.yml
#	modules/meeting/config/locales/crowdin/si.yml
#	modules/meeting/config/locales/crowdin/sk.yml
#	modules/meeting/config/locales/crowdin/sl.yml
#	modules/meeting/config/locales/crowdin/sr.yml
#	modules/meeting/config/locales/crowdin/sv.yml
#	modules/meeting/config/locales/crowdin/th.yml
#	modules/meeting/config/locales/crowdin/tr.yml
#	modules/meeting/config/locales/crowdin/uk.yml
#	modules/meeting/config/locales/crowdin/uz.yml
#	modules/meeting/config/locales/crowdin/vi.yml
#	modules/meeting/config/locales/crowdin/zh-CN.yml
#	modules/meeting/config/locales/crowdin/zh-TW.yml
#	modules/openid_connect/config/locales/crowdin/af.yml
#	modules/openid_connect/config/locales/crowdin/ar.yml
#	modules/openid_connect/config/locales/crowdin/az.yml
#	modules/openid_connect/config/locales/crowdin/be.yml
#	modules/openid_connect/config/locales/crowdin/bg.yml
#	modules/openid_connect/config/locales/crowdin/ca.yml
#	modules/openid_connect/config/locales/crowdin/ckb-IR.yml
#	modules/openid_connect/config/locales/crowdin/cs.yml
#	modules/openid_connect/config/locales/crowdin/da.yml
#	modules/openid_connect/config/locales/crowdin/de.yml
#	modules/openid_connect/config/locales/crowdin/el.yml
#	modules/openid_connect/config/locales/crowdin/eo.yml
#	modules/openid_connect/config/locales/crowdin/es.yml
#	modules/openid_connect/config/locales/crowdin/et.yml
#	modules/openid_connect/config/locales/crowdin/eu.yml
#	modules/openid_connect/config/locales/crowdin/fa.yml
#	modules/openid_connect/config/locales/crowdin/fi.yml
#	modules/openid_connect/config/locales/crowdin/fil.yml
#	modules/openid_connect/config/locales/crowdin/fr.yml
#	modules/openid_connect/config/locales/crowdin/he.yml
#	modules/openid_connect/config/locales/crowdin/hi.yml
#	modules/openid_connect/config/locales/crowdin/hr.yml
#	modules/openid_connect/config/locales/crowdin/hu.yml
#	modules/openid_connect/config/locales/crowdin/id.yml
#	modules/openid_connect/config/locales/crowdin/it.yml
#	modules/openid_connect/config/locales/crowdin/ja.yml
#	modules/openid_connect/config/locales/crowdin/ka.yml
#	modules/openid_connect/config/locales/crowdin/kk.yml
#	modules/openid_connect/config/locales/crowdin/ko.yml
#	modules/openid_connect/config/locales/crowdin/lt.yml
#	modules/openid_connect/config/locales/crowdin/lv.yml
#	modules/openid_connect/config/locales/crowdin/mn.yml
#	modules/openid_connect/config/locales/crowdin/ms.yml
#	modules/openid_connect/config/locales/crowdin/ne.yml
#	modules/openid_connect/config/locales/crowdin/nl.yml
#	modules/openid_connect/config/locales/crowdin/no.yml
#	modules/openid_connect/config/locales/crowdin/pl.yml
#	modules/openid_connect/config/locales/crowdin/pt-BR.yml
#	modules/openid_connect/config/locales/crowdin/pt-PT.yml
#	modules/openid_connect/config/locales/crowdin/ro.yml
#	modules/openid_connect/config/locales/crowdin/ru.yml
#	modules/openid_connect/config/locales/crowdin/rw.yml
#	modules/openid_connect/config/locales/crowdin/si.yml
#	modules/openid_connect/config/locales/crowdin/sk.yml
#	modules/openid_connect/config/locales/crowdin/sl.yml
#	modules/openid_connect/config/locales/crowdin/sr.yml
#	modules/openid_connect/config/locales/crowdin/sv.yml
#	modules/openid_connect/config/locales/crowdin/th.yml
#	modules/openid_connect/config/locales/crowdin/tr.yml
#	modules/openid_connect/config/locales/crowdin/uk.yml
#	modules/openid_connect/config/locales/crowdin/uz.yml
#	modules/openid_connect/config/locales/crowdin/vi.yml
#	modules/openid_connect/config/locales/crowdin/zh-CN.yml
#	modules/openid_connect/config/locales/crowdin/zh-TW.yml
#	modules/reporting/config/locales/crowdin/ro.yml
#	modules/reporting/config/locales/crowdin/vi.yml
#	modules/reporting/config/locales/crowdin/zh-TW.yml
#	modules/storages/config/locales/crowdin/ja.yml
#	modules/storages/config/locales/crowdin/js-ja.yml
#	modules/team_planner/config/locales/crowdin/js-fr.yml
#	modules/two_factor_authentication/config/locales/crowdin/af.yml
#	modules/two_factor_authentication/config/locales/crowdin/ar.yml
#	modules/two_factor_authentication/config/locales/crowdin/az.yml
#	modules/two_factor_authentication/config/locales/crowdin/be.yml
#	modules/two_factor_authentication/config/locales/crowdin/bg.yml
#	modules/two_factor_authentication/config/locales/crowdin/ca.yml
#	modules/two_factor_authentication/config/locales/crowdin/ckb-IR.yml
#	modules/two_factor_authentication/config/locales/crowdin/cs.yml
#	modules/two_factor_authentication/config/locales/crowdin/da.yml
#	modules/two_factor_authentication/config/locales/crowdin/de.yml
#	modules/two_factor_authentication/config/locales/crowdin/el.yml
#	modules/two_factor_authentication/config/locales/crowdin/eo.yml
#	modules/two_factor_authentication/config/locales/crowdin/es.yml
#	modules/two_factor_authentication/config/locales/crowdin/et.yml
#	modules/two_factor_authentication/config/locales/crowdin/eu.yml
#	modules/two_factor_authentication/config/locales/crowdin/fa.yml
#	modules/two_factor_authentication/config/locales/crowdin/fi.yml
#	modules/two_factor_authentication/config/locales/crowdin/fil.yml
#	modules/two_factor_authentication/config/locales/crowdin/fr.yml
#	modules/two_factor_authentication/config/locales/crowdin/he.yml
#	modules/two_factor_authentication/config/locales/crowdin/hi.yml
#	modules/two_factor_authentication/config/locales/crowdin/hr.yml
#	modules/two_factor_authentication/config/locales/crowdin/hu.yml
#	modules/two_factor_authentication/config/locales/crowdin/id.yml
#	modules/two_factor_authentication/config/locales/crowdin/it.yml
#	modules/two_factor_authentication/config/locales/crowdin/ja.yml
#	modules/two_factor_authentication/config/locales/crowdin/ka.yml
#	modules/two_factor_authentication/config/locales/crowdin/kk.yml
#	modules/two_factor_authentication/config/locales/crowdin/ko.yml
#	modules/two_factor_authentication/config/locales/crowdin/lt.yml
#	modules/two_factor_authentication/config/locales/crowdin/lv.yml
#	modules/two_factor_authentication/config/locales/crowdin/mn.yml
#	modules/two_factor_authentication/config/locales/crowdin/ms.yml
#	modules/two_factor_authentication/config/locales/crowdin/ne.yml
#	modules/two_factor_authentication/config/locales/crowdin/nl.yml
#	modules/two_factor_authentication/config/locales/crowdin/no.yml
#	modules/two_factor_authentication/config/locales/crowdin/pl.yml
#	modules/two_factor_authentication/config/locales/crowdin/pt-BR.yml
#	modules/two_factor_authentication/config/locales/crowdin/pt-PT.yml
#	modules/two_factor_authentication/config/locales/crowdin/ro.yml
#	modules/two_factor_authentication/config/locales/crowdin/ru.yml
#	modules/two_factor_authentication/config/locales/crowdin/rw.yml
#	modules/two_factor_authentication/config/locales/crowdin/si.yml
#	modules/two_factor_authentication/config/locales/crowdin/sk.yml
#	modules/two_factor_authentication/config/locales/crowdin/sl.yml
#	modules/two_factor_authentication/config/locales/crowdin/sr.yml
#	modules/two_factor_authentication/config/locales/crowdin/sv.yml
#	modules/two_factor_authentication/config/locales/crowdin/th.yml
#	modules/two_factor_authentication/config/locales/crowdin/tr.yml
#	modules/two_factor_authentication/config/locales/crowdin/uk.yml
#	modules/two_factor_authentication/config/locales/crowdin/uz.yml
#	modules/two_factor_authentication/config/locales/crowdin/vi.yml
#	modules/two_factor_authentication/config/locales/crowdin/zh-CN.yml
#	modules/two_factor_authentication/config/locales/crowdin/zh-TW.yml
#	modules/wikis/config/locales/crowdin/af.yml
#	modules/wikis/config/locales/crowdin/ar.yml
#	modules/wikis/config/locales/crowdin/az.yml
#	modules/wikis/config/locales/crowdin/be.yml
#	modules/wikis/config/locales/crowdin/bg.yml
#	modules/wikis/config/locales/crowdin/ca.yml
#	modules/wikis/config/locales/crowdin/ckb-IR.yml
#	modules/wikis/config/locales/crowdin/cs.yml
#	modules/wikis/config/locales/crowdin/da.yml
#	modules/wikis/config/locales/crowdin/de.yml
#	modules/wikis/config/locales/crowdin/el.yml
#	modules/wikis/config/locales/crowdin/eo.yml
#	modules/wikis/config/locales/crowdin/es.yml
#	modules/wikis/config/locales/crowdin/et.yml
#	modules/wikis/config/locales/crowdin/eu.yml
#	modules/wikis/config/locales/crowdin/fa.yml
#	modules/wikis/config/locales/crowdin/fi.yml
#	modules/wikis/config/locales/crowdin/fil.yml
#	modules/wikis/config/locales/crowdin/fr.yml
#	modules/wikis/config/locales/crowdin/he.yml
#	modules/wikis/config/locales/crowdin/hi.yml
#	modules/wikis/config/locales/crowdin/hr.yml
#	modules/wikis/config/locales/crowdin/hu.yml
#	modules/wikis/config/locales/crowdin/id.yml
#	modules/wikis/config/locales/crowdin/it.yml
#	modules/wikis/config/locales/crowdin/ja.yml
#	modules/wikis/config/locales/crowdin/ka.yml
#	modules/wikis/config/locales/crowdin/kk.yml
#	modules/wikis/config/locales/crowdin/ko.yml
#	modules/wikis/config/locales/crowdin/lt.yml
#	modules/wikis/config/locales/crowdin/lv.yml
#	modules/wikis/config/locales/crowdin/mn.yml
#	modules/wikis/config/locales/crowdin/ms.yml
#	modules/wikis/config/locales/crowdin/ne.yml
#	modules/wikis/config/locales/crowdin/nl.yml
#	modules/wikis/config/locales/crowdin/no.yml
#	modules/wikis/config/locales/crowdin/pl.yml
#	modules/wikis/config/locales/crowdin/pt-BR.yml
#	modules/wikis/config/locales/crowdin/pt-PT.yml
#	modules/wikis/config/locales/crowdin/ro.yml
#	modules/wikis/config/locales/crowdin/ru.yml
#	modules/wikis/config/locales/crowdin/rw.yml
#	modules/wikis/config/locales/crowdin/si.yml
#	modules/wikis/config/locales/crowdin/sk.yml
#	modules/wikis/config/locales/crowdin/sl.yml
#	modules/wikis/config/locales/crowdin/sr.yml
#	modules/wikis/config/locales/crowdin/sv.yml
#	modules/wikis/config/locales/crowdin/th.yml
#	modules/wikis/config/locales/crowdin/tr.yml
#	modules/wikis/config/locales/crowdin/uk.yml
#	modules/wikis/config/locales/crowdin/uz.yml
#	modules/wikis/config/locales/crowdin/vi.yml
#	modules/wikis/config/locales/crowdin/zh-CN.yml
#	modules/wikis/config/locales/crowdin/zh-TW.yml
2026-04-11 13:33:28 +02:00
Andrej 75d020b151 Merge pull request #22691 from opf/bug/73707-user-does-not-meet-password-requirements-during-jira-import
[#73707] User does not meet password requirements during Jira Import.
2026-04-09 09:21:28 +02:00
Pavel Balashou 78833fa836 [#73707] User does not meet password requirements during Jira Import.
https://community.openproject.org/wp/73707
2026-04-08 14:20:19 +02:00
Alexander Brandon Coles af06b51b6b Merge branch 'dev' into merge-release/17.3-20260402133137 2026-04-02 15:46:07 +02:00
as-op 28c0307c71 obey rubocop 2026-04-02 15:16:20 +02:00
as-op 1cf91a9700 Merge branch 'dev' into feature/73147-support-custom-fields-migration
# Conflicts:
#	app/workers/import/jira_import_projects_job.rb
2026-04-02 15:15:19 +02:00