Skip to main content

SuiteCRM integration - Releases

← App details

Nextcloud 34

SuiteCRM integration 3.0.2
Release Details
UpdatedJuly 29, 2026, 2:54 p.m.
Changelog

App Store metadata refresh, take two. The 3.0.1 upload was rejected by the App Store validator with Element 'summary': [facet 'maxLength'] The value has a length of '166'; this exceeds the allowed maximum length of '128'., so this release trims <summary> under the 128-character cap while keeping the widget-count and coverage cue that made the new listing useful in the first place.

Changed

  • appinfo/info.xml <summary> shortened from 166 to 117 characters to satisfy the App Store's apps/info.xsd maxLength facet on <summary>. New form drops the module enumeration and keeps the "nine widgets" specificity: "Nine dashboard widgets, unified search and notifications for SuiteCRM 8.x. Calendar, tasks, cases, pipeline and more." The full nine-widget breakdown is still in <description>, which the schema does not cap.

Notes for maintainers

The apps/info.xsd caps to remember when editing the top of appinfo/info.xml: - <name> max 40 characters - <summary> max 128 characters - <description> no practical cap (Markdown-friendly, use it for the full pitch)

Add a wc -c check on the summary line to release-nc-app.sh phase 1 to catch this locally next time.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhOvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI4MTIwMjUxWhcNMzYxMTAyMTIwMjUxWjAfMR0wGwYD
VQQDDBRpbnRlZ3JhdGlvbl9zdWl0ZWNybTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAK0Ns160Hj+trG84ndnLXeskq5GS2HZe/v1g1gS/jhZPi9fshEwm
eDP0YmbbY58HhN3f2TKy1UqsYLezEZ8lDv7V/4nLoeHso8JgQhvGdYqJ9juRu0C+
Ef6y4EhOGempbZxANBPRNYnGDSq/8azygm+bLaPOGp64cCx7Ly1uWeGt91gl3RVy
LeBF+9SFfpiGPDy7bFE8ryM0coA0SPu6i5O2vkLCEDT1jlvpZ1C7xo57hIQW8z9O
O5QTuQQR+JcaZcMZMfevhmcclnQ6mn2rUHgxksz1oyHQC12FbJelDEsuHvW+kowi
WtV4SBEKq2kEOuNn1NoR0bzw8Qn8uaAZ78hpahxwahL5SHrTSBZtzDZECZ3E+0A2
dc5sfhi2RPEgvhcVgp7YLw2YuC+jcbUp1C427Q/L12b+of0aFCUKDLP7sPRgsUVy
m9rVgFw+i2SXu56GMYsSf0RGRDiiUljeHvLZZKyD9gofGQZlrQ9QLncMKZG819cS
dbzwR+hOD+GUt7o5C2xCCuq3OFAyXy36vnE3NimUlmFLgXl3v1K8RDm1db/o7E1H
zadrr4hWEEvd0pDamSQCnTWksHskB2YsERqg11hnEVjVzD6JZ++SUx8glcdiUhNI
LwjFJaqPgS3sK2krz36kyEOOMUQ6GutNszqcoIB8cm5PpVcMVKsRZq9LAgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAGEElf1vz20eScuu3ko3VBG+60Rw8UWnRPLIyfXf
69O604BePbo0fAeEvHl3tRc9LGzVmoNoJT107nLBDtFwF6uoiec6SXrO6x4gswQE
oCNYebUrwbFokjBzUASTLigldBiliNIPGFpe9s6bm6Q6Wp0bYnXRNYId2zO4TlCf
nLyB1KHL+FgMqIHnDdRnnmkLuKsEWgzElDLsxvE1y/JnQ6FlpRuX25GU/vqRW1Yq
GVcPd6VsAd8fKGCgexgBTHamCQCUcw+F/S4VGqwyq3QunCUaYeOW/rwXcS7IZHRE
Xy+bqlzii+RL9HBexZC8JyTX5oMUWWDaL8Jv5VcvoM2FtQM=
-----END CERTIFICATE-----
SignatureX4/pzvjKgONWyCtn4SRPhCb11mYQF8NyrEtydiOD9dttFgiLxLwcYhEQJfdBKLxY
KiG0c53jkSZHI0osL7UoSRWBu61KYv5AoRHS9ajdJSXD7xXR46nl56LH//teun3+
tbLSa2YsyNbIlcXDy8/ZeMrNApHk0HkEi9N8yv/m+sPERK975Oy8CrmgfGk7afuW
AkCY1NuDvZL4I5Dstt30Z6BW94hyiYXtky2W+voCjB2nAd6P/k5gGShDw61BrZnf
q1Y3moshtF/XV5niYLsvsj55mL24E8x22/VeMCYzQMKQtAahO8dcl9YrZ5rqho/b
NrxOFNrRVboUIZu5LSkHJgGC8y4GFwKUeyWtzKK6qUESaGU7qZlgi78ISdrh09yP
RLCmZBdE0QLOK0ZZ+Y9wWrq4/3+eE+5QFGJ3Itc4kvvbw80NIOhFL74NzAH15CuP
AFZ6EHUKNpqZ/9Ek0ppmRAaYrPnBsVqSCvDnRFVL8a3mi6Beul1B2Tixpx0wOKzd
wy5nx/eXEwBXBZJY91CgQDUFNMKMflxlIXgUIpAWUAjEemKlUJojxcmbB3+oNUPz
t8XTqPkcKedrDnLBdmyai6G2CTT187b6gx3u+qX2GT0HY1NG1x9PpH6+0ubL3loP
5GyLf0FkVjBVMgCVx08wRCnYWkTokDobVeDrHDkFiDo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
SuiteCRM integration 3.0.0
Release Details
UpdatedJuly 29, 2026, 1:38 p.m.
Changelog

Renames the Nextcloud app id from njordium_suitecrm back to integration_suitecrm. This is the only breaking change in the release. Every setting on your existing 2.x install, admin OAuth config (instance URL, client ID/secret, authorize path), every per-user OAuth token, every widget preference (pipeline_mode, quick_actions_enabled, calendar_show_tasks) carries across automatically via a Repair step that runs on occ upgrade. Users do not need to re-authorise SuiteCRM.

Why the rename. When the fork first shipped in 2.0.0, Julien Veyssier's original integration_suitecrm App Store record was stale and blocked our updates from reaching his ~200 existing installs. The pragmatic response was to rename the fork's app id to njordium_suitecrm so we could ship on the App Store under our own record. In July 2026, Julien transferred ownership of the original record to this fork (see nextcloud/app-certificate-requests#1104 and #1114), which removed the original blocker. 3.0.0 restores the canonical integration_suitecrm app id so:

  • Julien's existing 1.x installs get updates seamlessly from the App Store, no manual reinstall.
  • There's one canonical id on the store, no user confusion about which of two records to install.
  • The GitHub org stays njordium/integration_suitecrm — the App Store app id and the GitHub org name are decoupled.

See docs/upgrade-2.x-to-3.0.md for the end-to-end upgrade walkthrough, rollback procedure, and post-upgrade verification steps.

Changed

  • App id renamed from njordium_suitecrm back to integration_suitecrm. The install folder is now custom_apps/integration_suitecrm/; the old custom_apps/njordium_suitecrm/ will no longer be recognised. Every HTTP route the frontend calls (/apps/integration_suitecrm/*) and every internal string reference has been updated in a single atomic pass across 35 files.
  • occ command name is now occ integration_suitecrm:test-connection. The 2.x form occ njordium_suitecrm:test-connection no longer resolves.
  • OAuth redirect URL on the SuiteCRM OAuth2 client must be updated from <nextcloud>/apps/njordium_suitecrm/oauth-callback to <nextcloud>/apps/integration_suitecrm/oauth-callback. Byte-for-byte match required. Same manual step users hit on the 1.9 to 2.0 upgrade; instructions in docs/upgrade-2.x-to-3.0.md.
  • Webpack bundle filenames flipped from njordium_suitecrm-*.js back to integration_suitecrm-*.js. Direct-install admins with cached JS in a reverse proxy should invalidate the cache on upgrade.
  • Migration\CopyLegacyAppConfig SQL body unchanged, LEGACY_APP_ID constant flipped from integration_suitecrm (2.0.0) to njordium_suitecrm (3.0.0). The class continues to run on every occ upgrade as a post-migration Repair step. On a fresh install (no rows to copy) it's a silent no-op.

Migration path

  • From 2.x (any 2.0-2.6 release) to 3.0.0: occ upgrade runs Migration\CopyLegacyAppConfig which copies every oc_appconfig row where appid='njordium_suitecrm' and every oc_preferences row for the same app id into appid='integration_suitecrm'. Legacy rows are left in place so rollback stays trivial. Encrypted OAuth tokens survive the copy because they live in oc_preferences under app id-scoped rows.
  • From 1.9.x directly to 3.0.0: oc_appconfig and oc_preferences rows are already under integration_suitecrm (that was Julien's app id), so the Repair step is a silent no-op and the deployment picks the settings up under the same id automatically.

Rollback

If 3.0.0 misbehaves, rollback to 2.6.0 is safe because the migration is copy-only, not move: occ app:disable integration_suitecrm && occ app:enable njordium_suitecrm && occ upgrade restores every setting. Detailed steps in docs/upgrade-2.x-to-3.0.md.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhOvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI4MTIwMjUxWhcNMzYxMTAyMTIwMjUxWjAfMR0wGwYD
VQQDDBRpbnRlZ3JhdGlvbl9zdWl0ZWNybTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAK0Ns160Hj+trG84ndnLXeskq5GS2HZe/v1g1gS/jhZPi9fshEwm
eDP0YmbbY58HhN3f2TKy1UqsYLezEZ8lDv7V/4nLoeHso8JgQhvGdYqJ9juRu0C+
Ef6y4EhOGempbZxANBPRNYnGDSq/8azygm+bLaPOGp64cCx7Ly1uWeGt91gl3RVy
LeBF+9SFfpiGPDy7bFE8ryM0coA0SPu6i5O2vkLCEDT1jlvpZ1C7xo57hIQW8z9O
O5QTuQQR+JcaZcMZMfevhmcclnQ6mn2rUHgxksz1oyHQC12FbJelDEsuHvW+kowi
WtV4SBEKq2kEOuNn1NoR0bzw8Qn8uaAZ78hpahxwahL5SHrTSBZtzDZECZ3E+0A2
dc5sfhi2RPEgvhcVgp7YLw2YuC+jcbUp1C427Q/L12b+of0aFCUKDLP7sPRgsUVy
m9rVgFw+i2SXu56GMYsSf0RGRDiiUljeHvLZZKyD9gofGQZlrQ9QLncMKZG819cS
dbzwR+hOD+GUt7o5C2xCCuq3OFAyXy36vnE3NimUlmFLgXl3v1K8RDm1db/o7E1H
zadrr4hWEEvd0pDamSQCnTWksHskB2YsERqg11hnEVjVzD6JZ++SUx8glcdiUhNI
LwjFJaqPgS3sK2krz36kyEOOMUQ6GutNszqcoIB8cm5PpVcMVKsRZq9LAgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAGEElf1vz20eScuu3ko3VBG+60Rw8UWnRPLIyfXf
69O604BePbo0fAeEvHl3tRc9LGzVmoNoJT107nLBDtFwF6uoiec6SXrO6x4gswQE
oCNYebUrwbFokjBzUASTLigldBiliNIPGFpe9s6bm6Q6Wp0bYnXRNYId2zO4TlCf
nLyB1KHL+FgMqIHnDdRnnmkLuKsEWgzElDLsxvE1y/JnQ6FlpRuX25GU/vqRW1Yq
GVcPd6VsAd8fKGCgexgBTHamCQCUcw+F/S4VGqwyq3QunCUaYeOW/rwXcS7IZHRE
Xy+bqlzii+RL9HBexZC8JyTX5oMUWWDaL8Jv5VcvoM2FtQM=
-----END CERTIFICATE-----
Signatureogxzom4kGvfPpSAHfscVLCco55DbReJH1/78dRCmY1oXJ2XiHb1LEXA33NKJMSEt
OBKUO3MKw31GLqvjOSh/q1nIThsgvMviEnvqSHKf3A3Xd9zeJCW0gtuQsFrFGrIV
qsw16PpfY8qwa/WSpV7i3hVEY38BohCGP+GtlTiTg4OZUouyBkt7c5xqO6PlhXBX
fkIJepB1Lf6NLFa9B67Lxuzn0LLXG9BHamrfhCMvENcoJ3gfEXlbqB8/Isxg7i9D
hzgQD+pR/l6nNgJVwT8oatJpeS4SiarOH2RTMxSIkbBU1d9GgXTRSEZ2zLmU1/do
R2W9vcNWnLfNYpIzWVy9UQNG/OLd7aGGMp6Q5EJSKPQGleKLlCzoVwyb7ghNu6fU
NDeEpJQu9wNmCTEWJKzXrDiENJKAAoWHocLv5CL00xK/yGRTXj3of6NOmUfDkAq5
TfHMQcxnpj7PG103qqaZI/JQ3X49MXDbe/BOnXafNyhEXJVReYHTqXfSk+HTE4dm
VwJjN8cjunijsld5PLDWY3xyK8s/or+5xgikAwm5apcI/Masfk/FGsPWq4NJUXQN
VsQOX5KwNrGdPZmxxMdd5Rov8CkC9eE/Yrtwhem8fd1vs8b0T88PPv/224Fwb4jJ
oI9709FIemcZF3xrQTMPnwOmfKIVKiGVlOsva3IbYl8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 33

SuiteCRM integration 3.0.2
Release Details
UpdatedJuly 29, 2026, 2:54 p.m.
Changelog

App Store metadata refresh, take two. The 3.0.1 upload was rejected by the App Store validator with Element 'summary': [facet 'maxLength'] The value has a length of '166'; this exceeds the allowed maximum length of '128'., so this release trims <summary> under the 128-character cap while keeping the widget-count and coverage cue that made the new listing useful in the first place.

Changed

  • appinfo/info.xml <summary> shortened from 166 to 117 characters to satisfy the App Store's apps/info.xsd maxLength facet on <summary>. New form drops the module enumeration and keeps the "nine widgets" specificity: "Nine dashboard widgets, unified search and notifications for SuiteCRM 8.x. Calendar, tasks, cases, pipeline and more." The full nine-widget breakdown is still in <description>, which the schema does not cap.

Notes for maintainers

The apps/info.xsd caps to remember when editing the top of appinfo/info.xml: - <name> max 40 characters - <summary> max 128 characters - <description> no practical cap (Markdown-friendly, use it for the full pitch)

Add a wc -c check on the summary line to release-nc-app.sh phase 1 to catch this locally next time.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhOvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI4MTIwMjUxWhcNMzYxMTAyMTIwMjUxWjAfMR0wGwYD
VQQDDBRpbnRlZ3JhdGlvbl9zdWl0ZWNybTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAK0Ns160Hj+trG84ndnLXeskq5GS2HZe/v1g1gS/jhZPi9fshEwm
eDP0YmbbY58HhN3f2TKy1UqsYLezEZ8lDv7V/4nLoeHso8JgQhvGdYqJ9juRu0C+
Ef6y4EhOGempbZxANBPRNYnGDSq/8azygm+bLaPOGp64cCx7Ly1uWeGt91gl3RVy
LeBF+9SFfpiGPDy7bFE8ryM0coA0SPu6i5O2vkLCEDT1jlvpZ1C7xo57hIQW8z9O
O5QTuQQR+JcaZcMZMfevhmcclnQ6mn2rUHgxksz1oyHQC12FbJelDEsuHvW+kowi
WtV4SBEKq2kEOuNn1NoR0bzw8Qn8uaAZ78hpahxwahL5SHrTSBZtzDZECZ3E+0A2
dc5sfhi2RPEgvhcVgp7YLw2YuC+jcbUp1C427Q/L12b+of0aFCUKDLP7sPRgsUVy
m9rVgFw+i2SXu56GMYsSf0RGRDiiUljeHvLZZKyD9gofGQZlrQ9QLncMKZG819cS
dbzwR+hOD+GUt7o5C2xCCuq3OFAyXy36vnE3NimUlmFLgXl3v1K8RDm1db/o7E1H
zadrr4hWEEvd0pDamSQCnTWksHskB2YsERqg11hnEVjVzD6JZ++SUx8glcdiUhNI
LwjFJaqPgS3sK2krz36kyEOOMUQ6GutNszqcoIB8cm5PpVcMVKsRZq9LAgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAGEElf1vz20eScuu3ko3VBG+60Rw8UWnRPLIyfXf
69O604BePbo0fAeEvHl3tRc9LGzVmoNoJT107nLBDtFwF6uoiec6SXrO6x4gswQE
oCNYebUrwbFokjBzUASTLigldBiliNIPGFpe9s6bm6Q6Wp0bYnXRNYId2zO4TlCf
nLyB1KHL+FgMqIHnDdRnnmkLuKsEWgzElDLsxvE1y/JnQ6FlpRuX25GU/vqRW1Yq
GVcPd6VsAd8fKGCgexgBTHamCQCUcw+F/S4VGqwyq3QunCUaYeOW/rwXcS7IZHRE
Xy+bqlzii+RL9HBexZC8JyTX5oMUWWDaL8Jv5VcvoM2FtQM=
-----END CERTIFICATE-----
SignatureX4/pzvjKgONWyCtn4SRPhCb11mYQF8NyrEtydiOD9dttFgiLxLwcYhEQJfdBKLxY
KiG0c53jkSZHI0osL7UoSRWBu61KYv5AoRHS9ajdJSXD7xXR46nl56LH//teun3+
tbLSa2YsyNbIlcXDy8/ZeMrNApHk0HkEi9N8yv/m+sPERK975Oy8CrmgfGk7afuW
AkCY1NuDvZL4I5Dstt30Z6BW94hyiYXtky2W+voCjB2nAd6P/k5gGShDw61BrZnf
q1Y3moshtF/XV5niYLsvsj55mL24E8x22/VeMCYzQMKQtAahO8dcl9YrZ5rqho/b
NrxOFNrRVboUIZu5LSkHJgGC8y4GFwKUeyWtzKK6qUESaGU7qZlgi78ISdrh09yP
RLCmZBdE0QLOK0ZZ+Y9wWrq4/3+eE+5QFGJ3Itc4kvvbw80NIOhFL74NzAH15CuP
AFZ6EHUKNpqZ/9Ek0ppmRAaYrPnBsVqSCvDnRFVL8a3mi6Beul1B2Tixpx0wOKzd
wy5nx/eXEwBXBZJY91CgQDUFNMKMflxlIXgUIpAWUAjEemKlUJojxcmbB3+oNUPz
t8XTqPkcKedrDnLBdmyai6G2CTT187b6gx3u+qX2GT0HY1NG1x9PpH6+0ubL3loP
5GyLf0FkVjBVMgCVx08wRCnYWkTokDobVeDrHDkFiDo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
SuiteCRM integration 3.0.0
Release Details
UpdatedJuly 29, 2026, 1:38 p.m.
Changelog

Renames the Nextcloud app id from njordium_suitecrm back to integration_suitecrm. This is the only breaking change in the release. Every setting on your existing 2.x install, admin OAuth config (instance URL, client ID/secret, authorize path), every per-user OAuth token, every widget preference (pipeline_mode, quick_actions_enabled, calendar_show_tasks) carries across automatically via a Repair step that runs on occ upgrade. Users do not need to re-authorise SuiteCRM.

Why the rename. When the fork first shipped in 2.0.0, Julien Veyssier's original integration_suitecrm App Store record was stale and blocked our updates from reaching his ~200 existing installs. The pragmatic response was to rename the fork's app id to njordium_suitecrm so we could ship on the App Store under our own record. In July 2026, Julien transferred ownership of the original record to this fork (see nextcloud/app-certificate-requests#1104 and #1114), which removed the original blocker. 3.0.0 restores the canonical integration_suitecrm app id so:

  • Julien's existing 1.x installs get updates seamlessly from the App Store, no manual reinstall.
  • There's one canonical id on the store, no user confusion about which of two records to install.
  • The GitHub org stays njordium/integration_suitecrm — the App Store app id and the GitHub org name are decoupled.

See docs/upgrade-2.x-to-3.0.md for the end-to-end upgrade walkthrough, rollback procedure, and post-upgrade verification steps.

Changed

  • App id renamed from njordium_suitecrm back to integration_suitecrm. The install folder is now custom_apps/integration_suitecrm/; the old custom_apps/njordium_suitecrm/ will no longer be recognised. Every HTTP route the frontend calls (/apps/integration_suitecrm/*) and every internal string reference has been updated in a single atomic pass across 35 files.
  • occ command name is now occ integration_suitecrm:test-connection. The 2.x form occ njordium_suitecrm:test-connection no longer resolves.
  • OAuth redirect URL on the SuiteCRM OAuth2 client must be updated from <nextcloud>/apps/njordium_suitecrm/oauth-callback to <nextcloud>/apps/integration_suitecrm/oauth-callback. Byte-for-byte match required. Same manual step users hit on the 1.9 to 2.0 upgrade; instructions in docs/upgrade-2.x-to-3.0.md.
  • Webpack bundle filenames flipped from njordium_suitecrm-*.js back to integration_suitecrm-*.js. Direct-install admins with cached JS in a reverse proxy should invalidate the cache on upgrade.
  • Migration\CopyLegacyAppConfig SQL body unchanged, LEGACY_APP_ID constant flipped from integration_suitecrm (2.0.0) to njordium_suitecrm (3.0.0). The class continues to run on every occ upgrade as a post-migration Repair step. On a fresh install (no rows to copy) it's a silent no-op.

Migration path

  • From 2.x (any 2.0-2.6 release) to 3.0.0: occ upgrade runs Migration\CopyLegacyAppConfig which copies every oc_appconfig row where appid='njordium_suitecrm' and every oc_preferences row for the same app id into appid='integration_suitecrm'. Legacy rows are left in place so rollback stays trivial. Encrypted OAuth tokens survive the copy because they live in oc_preferences under app id-scoped rows.
  • From 1.9.x directly to 3.0.0: oc_appconfig and oc_preferences rows are already under integration_suitecrm (that was Julien's app id), so the Repair step is a silent no-op and the deployment picks the settings up under the same id automatically.

Rollback

If 3.0.0 misbehaves, rollback to 2.6.0 is safe because the migration is copy-only, not move: occ app:disable integration_suitecrm && occ app:enable njordium_suitecrm && occ upgrade restores every setting. Detailed steps in docs/upgrade-2.x-to-3.0.md.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhOvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI4MTIwMjUxWhcNMzYxMTAyMTIwMjUxWjAfMR0wGwYD
VQQDDBRpbnRlZ3JhdGlvbl9zdWl0ZWNybTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAK0Ns160Hj+trG84ndnLXeskq5GS2HZe/v1g1gS/jhZPi9fshEwm
eDP0YmbbY58HhN3f2TKy1UqsYLezEZ8lDv7V/4nLoeHso8JgQhvGdYqJ9juRu0C+
Ef6y4EhOGempbZxANBPRNYnGDSq/8azygm+bLaPOGp64cCx7Ly1uWeGt91gl3RVy
LeBF+9SFfpiGPDy7bFE8ryM0coA0SPu6i5O2vkLCEDT1jlvpZ1C7xo57hIQW8z9O
O5QTuQQR+JcaZcMZMfevhmcclnQ6mn2rUHgxksz1oyHQC12FbJelDEsuHvW+kowi
WtV4SBEKq2kEOuNn1NoR0bzw8Qn8uaAZ78hpahxwahL5SHrTSBZtzDZECZ3E+0A2
dc5sfhi2RPEgvhcVgp7YLw2YuC+jcbUp1C427Q/L12b+of0aFCUKDLP7sPRgsUVy
m9rVgFw+i2SXu56GMYsSf0RGRDiiUljeHvLZZKyD9gofGQZlrQ9QLncMKZG819cS
dbzwR+hOD+GUt7o5C2xCCuq3OFAyXy36vnE3NimUlmFLgXl3v1K8RDm1db/o7E1H
zadrr4hWEEvd0pDamSQCnTWksHskB2YsERqg11hnEVjVzD6JZ++SUx8glcdiUhNI
LwjFJaqPgS3sK2krz36kyEOOMUQ6GutNszqcoIB8cm5PpVcMVKsRZq9LAgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAGEElf1vz20eScuu3ko3VBG+60Rw8UWnRPLIyfXf
69O604BePbo0fAeEvHl3tRc9LGzVmoNoJT107nLBDtFwF6uoiec6SXrO6x4gswQE
oCNYebUrwbFokjBzUASTLigldBiliNIPGFpe9s6bm6Q6Wp0bYnXRNYId2zO4TlCf
nLyB1KHL+FgMqIHnDdRnnmkLuKsEWgzElDLsxvE1y/JnQ6FlpRuX25GU/vqRW1Yq
GVcPd6VsAd8fKGCgexgBTHamCQCUcw+F/S4VGqwyq3QunCUaYeOW/rwXcS7IZHRE
Xy+bqlzii+RL9HBexZC8JyTX5oMUWWDaL8Jv5VcvoM2FtQM=
-----END CERTIFICATE-----
Signatureogxzom4kGvfPpSAHfscVLCco55DbReJH1/78dRCmY1oXJ2XiHb1LEXA33NKJMSEt
OBKUO3MKw31GLqvjOSh/q1nIThsgvMviEnvqSHKf3A3Xd9zeJCW0gtuQsFrFGrIV
qsw16PpfY8qwa/WSpV7i3hVEY38BohCGP+GtlTiTg4OZUouyBkt7c5xqO6PlhXBX
fkIJepB1Lf6NLFa9B67Lxuzn0LLXG9BHamrfhCMvENcoJ3gfEXlbqB8/Isxg7i9D
hzgQD+pR/l6nNgJVwT8oatJpeS4SiarOH2RTMxSIkbBU1d9GgXTRSEZ2zLmU1/do
R2W9vcNWnLfNYpIzWVy9UQNG/OLd7aGGMp6Q5EJSKPQGleKLlCzoVwyb7ghNu6fU
NDeEpJQu9wNmCTEWJKzXrDiENJKAAoWHocLv5CL00xK/yGRTXj3of6NOmUfDkAq5
TfHMQcxnpj7PG103qqaZI/JQ3X49MXDbe/BOnXafNyhEXJVReYHTqXfSk+HTE4dm
VwJjN8cjunijsld5PLDWY3xyK8s/or+5xgikAwm5apcI/Masfk/FGsPWq4NJUXQN
VsQOX5KwNrGdPZmxxMdd5Rov8CkC9eE/Yrtwhem8fd1vs8b0T88PPv/224Fwb4jJ
oI9709FIemcZF3xrQTMPnwOmfKIVKiGVlOsva3IbYl8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 32

SuiteCRM integration 3.0.2
Release Details
UpdatedJuly 29, 2026, 2:54 p.m.
Changelog

App Store metadata refresh, take two. The 3.0.1 upload was rejected by the App Store validator with Element 'summary': [facet 'maxLength'] The value has a length of '166'; this exceeds the allowed maximum length of '128'., so this release trims <summary> under the 128-character cap while keeping the widget-count and coverage cue that made the new listing useful in the first place.

Changed

  • appinfo/info.xml <summary> shortened from 166 to 117 characters to satisfy the App Store's apps/info.xsd maxLength facet on <summary>. New form drops the module enumeration and keeps the "nine widgets" specificity: "Nine dashboard widgets, unified search and notifications for SuiteCRM 8.x. Calendar, tasks, cases, pipeline and more." The full nine-widget breakdown is still in <description>, which the schema does not cap.

Notes for maintainers

The apps/info.xsd caps to remember when editing the top of appinfo/info.xml: - <name> max 40 characters - <summary> max 128 characters - <description> no practical cap (Markdown-friendly, use it for the full pitch)

Add a wc -c check on the summary line to release-nc-app.sh phase 1 to catch this locally next time.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhOvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI4MTIwMjUxWhcNMzYxMTAyMTIwMjUxWjAfMR0wGwYD
VQQDDBRpbnRlZ3JhdGlvbl9zdWl0ZWNybTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAK0Ns160Hj+trG84ndnLXeskq5GS2HZe/v1g1gS/jhZPi9fshEwm
eDP0YmbbY58HhN3f2TKy1UqsYLezEZ8lDv7V/4nLoeHso8JgQhvGdYqJ9juRu0C+
Ef6y4EhOGempbZxANBPRNYnGDSq/8azygm+bLaPOGp64cCx7Ly1uWeGt91gl3RVy
LeBF+9SFfpiGPDy7bFE8ryM0coA0SPu6i5O2vkLCEDT1jlvpZ1C7xo57hIQW8z9O
O5QTuQQR+JcaZcMZMfevhmcclnQ6mn2rUHgxksz1oyHQC12FbJelDEsuHvW+kowi
WtV4SBEKq2kEOuNn1NoR0bzw8Qn8uaAZ78hpahxwahL5SHrTSBZtzDZECZ3E+0A2
dc5sfhi2RPEgvhcVgp7YLw2YuC+jcbUp1C427Q/L12b+of0aFCUKDLP7sPRgsUVy
m9rVgFw+i2SXu56GMYsSf0RGRDiiUljeHvLZZKyD9gofGQZlrQ9QLncMKZG819cS
dbzwR+hOD+GUt7o5C2xCCuq3OFAyXy36vnE3NimUlmFLgXl3v1K8RDm1db/o7E1H
zadrr4hWEEvd0pDamSQCnTWksHskB2YsERqg11hnEVjVzD6JZ++SUx8glcdiUhNI
LwjFJaqPgS3sK2krz36kyEOOMUQ6GutNszqcoIB8cm5PpVcMVKsRZq9LAgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAGEElf1vz20eScuu3ko3VBG+60Rw8UWnRPLIyfXf
69O604BePbo0fAeEvHl3tRc9LGzVmoNoJT107nLBDtFwF6uoiec6SXrO6x4gswQE
oCNYebUrwbFokjBzUASTLigldBiliNIPGFpe9s6bm6Q6Wp0bYnXRNYId2zO4TlCf
nLyB1KHL+FgMqIHnDdRnnmkLuKsEWgzElDLsxvE1y/JnQ6FlpRuX25GU/vqRW1Yq
GVcPd6VsAd8fKGCgexgBTHamCQCUcw+F/S4VGqwyq3QunCUaYeOW/rwXcS7IZHRE
Xy+bqlzii+RL9HBexZC8JyTX5oMUWWDaL8Jv5VcvoM2FtQM=
-----END CERTIFICATE-----
SignatureX4/pzvjKgONWyCtn4SRPhCb11mYQF8NyrEtydiOD9dttFgiLxLwcYhEQJfdBKLxY
KiG0c53jkSZHI0osL7UoSRWBu61KYv5AoRHS9ajdJSXD7xXR46nl56LH//teun3+
tbLSa2YsyNbIlcXDy8/ZeMrNApHk0HkEi9N8yv/m+sPERK975Oy8CrmgfGk7afuW
AkCY1NuDvZL4I5Dstt30Z6BW94hyiYXtky2W+voCjB2nAd6P/k5gGShDw61BrZnf
q1Y3moshtF/XV5niYLsvsj55mL24E8x22/VeMCYzQMKQtAahO8dcl9YrZ5rqho/b
NrxOFNrRVboUIZu5LSkHJgGC8y4GFwKUeyWtzKK6qUESaGU7qZlgi78ISdrh09yP
RLCmZBdE0QLOK0ZZ+Y9wWrq4/3+eE+5QFGJ3Itc4kvvbw80NIOhFL74NzAH15CuP
AFZ6EHUKNpqZ/9Ek0ppmRAaYrPnBsVqSCvDnRFVL8a3mi6Beul1B2Tixpx0wOKzd
wy5nx/eXEwBXBZJY91CgQDUFNMKMflxlIXgUIpAWUAjEemKlUJojxcmbB3+oNUPz
t8XTqPkcKedrDnLBdmyai6G2CTT187b6gx3u+qX2GT0HY1NG1x9PpH6+0ubL3loP
5GyLf0FkVjBVMgCVx08wRCnYWkTokDobVeDrHDkFiDo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
SuiteCRM integration 3.0.0
Release Details
UpdatedJuly 29, 2026, 1:38 p.m.
Changelog

Renames the Nextcloud app id from njordium_suitecrm back to integration_suitecrm. This is the only breaking change in the release. Every setting on your existing 2.x install, admin OAuth config (instance URL, client ID/secret, authorize path), every per-user OAuth token, every widget preference (pipeline_mode, quick_actions_enabled, calendar_show_tasks) carries across automatically via a Repair step that runs on occ upgrade. Users do not need to re-authorise SuiteCRM.

Why the rename. When the fork first shipped in 2.0.0, Julien Veyssier's original integration_suitecrm App Store record was stale and blocked our updates from reaching his ~200 existing installs. The pragmatic response was to rename the fork's app id to njordium_suitecrm so we could ship on the App Store under our own record. In July 2026, Julien transferred ownership of the original record to this fork (see nextcloud/app-certificate-requests#1104 and #1114), which removed the original blocker. 3.0.0 restores the canonical integration_suitecrm app id so:

  • Julien's existing 1.x installs get updates seamlessly from the App Store, no manual reinstall.
  • There's one canonical id on the store, no user confusion about which of two records to install.
  • The GitHub org stays njordium/integration_suitecrm — the App Store app id and the GitHub org name are decoupled.

See docs/upgrade-2.x-to-3.0.md for the end-to-end upgrade walkthrough, rollback procedure, and post-upgrade verification steps.

Changed

  • App id renamed from njordium_suitecrm back to integration_suitecrm. The install folder is now custom_apps/integration_suitecrm/; the old custom_apps/njordium_suitecrm/ will no longer be recognised. Every HTTP route the frontend calls (/apps/integration_suitecrm/*) and every internal string reference has been updated in a single atomic pass across 35 files.
  • occ command name is now occ integration_suitecrm:test-connection. The 2.x form occ njordium_suitecrm:test-connection no longer resolves.
  • OAuth redirect URL on the SuiteCRM OAuth2 client must be updated from <nextcloud>/apps/njordium_suitecrm/oauth-callback to <nextcloud>/apps/integration_suitecrm/oauth-callback. Byte-for-byte match required. Same manual step users hit on the 1.9 to 2.0 upgrade; instructions in docs/upgrade-2.x-to-3.0.md.
  • Webpack bundle filenames flipped from njordium_suitecrm-*.js back to integration_suitecrm-*.js. Direct-install admins with cached JS in a reverse proxy should invalidate the cache on upgrade.
  • Migration\CopyLegacyAppConfig SQL body unchanged, LEGACY_APP_ID constant flipped from integration_suitecrm (2.0.0) to njordium_suitecrm (3.0.0). The class continues to run on every occ upgrade as a post-migration Repair step. On a fresh install (no rows to copy) it's a silent no-op.

Migration path

  • From 2.x (any 2.0-2.6 release) to 3.0.0: occ upgrade runs Migration\CopyLegacyAppConfig which copies every oc_appconfig row where appid='njordium_suitecrm' and every oc_preferences row for the same app id into appid='integration_suitecrm'. Legacy rows are left in place so rollback stays trivial. Encrypted OAuth tokens survive the copy because they live in oc_preferences under app id-scoped rows.
  • From 1.9.x directly to 3.0.0: oc_appconfig and oc_preferences rows are already under integration_suitecrm (that was Julien's app id), so the Repair step is a silent no-op and the deployment picks the settings up under the same id automatically.

Rollback

If 3.0.0 misbehaves, rollback to 2.6.0 is safe because the migration is copy-only, not move: occ app:disable integration_suitecrm && occ app:enable njordium_suitecrm && occ upgrade restores every setting. Detailed steps in docs/upgrade-2.x-to-3.0.md.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhOvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI4MTIwMjUxWhcNMzYxMTAyMTIwMjUxWjAfMR0wGwYD
VQQDDBRpbnRlZ3JhdGlvbl9zdWl0ZWNybTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAK0Ns160Hj+trG84ndnLXeskq5GS2HZe/v1g1gS/jhZPi9fshEwm
eDP0YmbbY58HhN3f2TKy1UqsYLezEZ8lDv7V/4nLoeHso8JgQhvGdYqJ9juRu0C+
Ef6y4EhOGempbZxANBPRNYnGDSq/8azygm+bLaPOGp64cCx7Ly1uWeGt91gl3RVy
LeBF+9SFfpiGPDy7bFE8ryM0coA0SPu6i5O2vkLCEDT1jlvpZ1C7xo57hIQW8z9O
O5QTuQQR+JcaZcMZMfevhmcclnQ6mn2rUHgxksz1oyHQC12FbJelDEsuHvW+kowi
WtV4SBEKq2kEOuNn1NoR0bzw8Qn8uaAZ78hpahxwahL5SHrTSBZtzDZECZ3E+0A2
dc5sfhi2RPEgvhcVgp7YLw2YuC+jcbUp1C427Q/L12b+of0aFCUKDLP7sPRgsUVy
m9rVgFw+i2SXu56GMYsSf0RGRDiiUljeHvLZZKyD9gofGQZlrQ9QLncMKZG819cS
dbzwR+hOD+GUt7o5C2xCCuq3OFAyXy36vnE3NimUlmFLgXl3v1K8RDm1db/o7E1H
zadrr4hWEEvd0pDamSQCnTWksHskB2YsERqg11hnEVjVzD6JZ++SUx8glcdiUhNI
LwjFJaqPgS3sK2krz36kyEOOMUQ6GutNszqcoIB8cm5PpVcMVKsRZq9LAgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAGEElf1vz20eScuu3ko3VBG+60Rw8UWnRPLIyfXf
69O604BePbo0fAeEvHl3tRc9LGzVmoNoJT107nLBDtFwF6uoiec6SXrO6x4gswQE
oCNYebUrwbFokjBzUASTLigldBiliNIPGFpe9s6bm6Q6Wp0bYnXRNYId2zO4TlCf
nLyB1KHL+FgMqIHnDdRnnmkLuKsEWgzElDLsxvE1y/JnQ6FlpRuX25GU/vqRW1Yq
GVcPd6VsAd8fKGCgexgBTHamCQCUcw+F/S4VGqwyq3QunCUaYeOW/rwXcS7IZHRE
Xy+bqlzii+RL9HBexZC8JyTX5oMUWWDaL8Jv5VcvoM2FtQM=
-----END CERTIFICATE-----
Signatureogxzom4kGvfPpSAHfscVLCco55DbReJH1/78dRCmY1oXJ2XiHb1LEXA33NKJMSEt
OBKUO3MKw31GLqvjOSh/q1nIThsgvMviEnvqSHKf3A3Xd9zeJCW0gtuQsFrFGrIV
qsw16PpfY8qwa/WSpV7i3hVEY38BohCGP+GtlTiTg4OZUouyBkt7c5xqO6PlhXBX
fkIJepB1Lf6NLFa9B67Lxuzn0LLXG9BHamrfhCMvENcoJ3gfEXlbqB8/Isxg7i9D
hzgQD+pR/l6nNgJVwT8oatJpeS4SiarOH2RTMxSIkbBU1d9GgXTRSEZ2zLmU1/do
R2W9vcNWnLfNYpIzWVy9UQNG/OLd7aGGMp6Q5EJSKPQGleKLlCzoVwyb7ghNu6fU
NDeEpJQu9wNmCTEWJKzXrDiENJKAAoWHocLv5CL00xK/yGRTXj3of6NOmUfDkAq5
TfHMQcxnpj7PG103qqaZI/JQ3X49MXDbe/BOnXafNyhEXJVReYHTqXfSk+HTE4dm
VwJjN8cjunijsld5PLDWY3xyK8s/or+5xgikAwm5apcI/Masfk/FGsPWq4NJUXQN
VsQOX5KwNrGdPZmxxMdd5Rov8CkC9eE/Yrtwhem8fd1vs8b0T88PPv/224Fwb4jJ
oI9709FIemcZF3xrQTMPnwOmfKIVKiGVlOsva3IbYl8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 31

SuiteCRM integration 3.0.2
Release Details
UpdatedJuly 29, 2026, 2:54 p.m.
Changelog

App Store metadata refresh, take two. The 3.0.1 upload was rejected by the App Store validator with Element 'summary': [facet 'maxLength'] The value has a length of '166'; this exceeds the allowed maximum length of '128'., so this release trims <summary> under the 128-character cap while keeping the widget-count and coverage cue that made the new listing useful in the first place.

Changed

  • appinfo/info.xml <summary> shortened from 166 to 117 characters to satisfy the App Store's apps/info.xsd maxLength facet on <summary>. New form drops the module enumeration and keeps the "nine widgets" specificity: "Nine dashboard widgets, unified search and notifications for SuiteCRM 8.x. Calendar, tasks, cases, pipeline and more." The full nine-widget breakdown is still in <description>, which the schema does not cap.

Notes for maintainers

The apps/info.xsd caps to remember when editing the top of appinfo/info.xml: - <name> max 40 characters - <summary> max 128 characters - <description> no practical cap (Markdown-friendly, use it for the full pitch)

Add a wc -c check on the summary line to release-nc-app.sh phase 1 to catch this locally next time.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhOvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI4MTIwMjUxWhcNMzYxMTAyMTIwMjUxWjAfMR0wGwYD
VQQDDBRpbnRlZ3JhdGlvbl9zdWl0ZWNybTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAK0Ns160Hj+trG84ndnLXeskq5GS2HZe/v1g1gS/jhZPi9fshEwm
eDP0YmbbY58HhN3f2TKy1UqsYLezEZ8lDv7V/4nLoeHso8JgQhvGdYqJ9juRu0C+
Ef6y4EhOGempbZxANBPRNYnGDSq/8azygm+bLaPOGp64cCx7Ly1uWeGt91gl3RVy
LeBF+9SFfpiGPDy7bFE8ryM0coA0SPu6i5O2vkLCEDT1jlvpZ1C7xo57hIQW8z9O
O5QTuQQR+JcaZcMZMfevhmcclnQ6mn2rUHgxksz1oyHQC12FbJelDEsuHvW+kowi
WtV4SBEKq2kEOuNn1NoR0bzw8Qn8uaAZ78hpahxwahL5SHrTSBZtzDZECZ3E+0A2
dc5sfhi2RPEgvhcVgp7YLw2YuC+jcbUp1C427Q/L12b+of0aFCUKDLP7sPRgsUVy
m9rVgFw+i2SXu56GMYsSf0RGRDiiUljeHvLZZKyD9gofGQZlrQ9QLncMKZG819cS
dbzwR+hOD+GUt7o5C2xCCuq3OFAyXy36vnE3NimUlmFLgXl3v1K8RDm1db/o7E1H
zadrr4hWEEvd0pDamSQCnTWksHskB2YsERqg11hnEVjVzD6JZ++SUx8glcdiUhNI
LwjFJaqPgS3sK2krz36kyEOOMUQ6GutNszqcoIB8cm5PpVcMVKsRZq9LAgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAGEElf1vz20eScuu3ko3VBG+60Rw8UWnRPLIyfXf
69O604BePbo0fAeEvHl3tRc9LGzVmoNoJT107nLBDtFwF6uoiec6SXrO6x4gswQE
oCNYebUrwbFokjBzUASTLigldBiliNIPGFpe9s6bm6Q6Wp0bYnXRNYId2zO4TlCf
nLyB1KHL+FgMqIHnDdRnnmkLuKsEWgzElDLsxvE1y/JnQ6FlpRuX25GU/vqRW1Yq
GVcPd6VsAd8fKGCgexgBTHamCQCUcw+F/S4VGqwyq3QunCUaYeOW/rwXcS7IZHRE
Xy+bqlzii+RL9HBexZC8JyTX5oMUWWDaL8Jv5VcvoM2FtQM=
-----END CERTIFICATE-----
SignatureX4/pzvjKgONWyCtn4SRPhCb11mYQF8NyrEtydiOD9dttFgiLxLwcYhEQJfdBKLxY
KiG0c53jkSZHI0osL7UoSRWBu61KYv5AoRHS9ajdJSXD7xXR46nl56LH//teun3+
tbLSa2YsyNbIlcXDy8/ZeMrNApHk0HkEi9N8yv/m+sPERK975Oy8CrmgfGk7afuW
AkCY1NuDvZL4I5Dstt30Z6BW94hyiYXtky2W+voCjB2nAd6P/k5gGShDw61BrZnf
q1Y3moshtF/XV5niYLsvsj55mL24E8x22/VeMCYzQMKQtAahO8dcl9YrZ5rqho/b
NrxOFNrRVboUIZu5LSkHJgGC8y4GFwKUeyWtzKK6qUESaGU7qZlgi78ISdrh09yP
RLCmZBdE0QLOK0ZZ+Y9wWrq4/3+eE+5QFGJ3Itc4kvvbw80NIOhFL74NzAH15CuP
AFZ6EHUKNpqZ/9Ek0ppmRAaYrPnBsVqSCvDnRFVL8a3mi6Beul1B2Tixpx0wOKzd
wy5nx/eXEwBXBZJY91CgQDUFNMKMflxlIXgUIpAWUAjEemKlUJojxcmbB3+oNUPz
t8XTqPkcKedrDnLBdmyai6G2CTT187b6gx3u+qX2GT0HY1NG1x9PpH6+0ubL3loP
5GyLf0FkVjBVMgCVx08wRCnYWkTokDobVeDrHDkFiDo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
SuiteCRM integration 3.0.0
Release Details
UpdatedJuly 29, 2026, 1:38 p.m.
Changelog

Renames the Nextcloud app id from njordium_suitecrm back to integration_suitecrm. This is the only breaking change in the release. Every setting on your existing 2.x install, admin OAuth config (instance URL, client ID/secret, authorize path), every per-user OAuth token, every widget preference (pipeline_mode, quick_actions_enabled, calendar_show_tasks) carries across automatically via a Repair step that runs on occ upgrade. Users do not need to re-authorise SuiteCRM.

Why the rename. When the fork first shipped in 2.0.0, Julien Veyssier's original integration_suitecrm App Store record was stale and blocked our updates from reaching his ~200 existing installs. The pragmatic response was to rename the fork's app id to njordium_suitecrm so we could ship on the App Store under our own record. In July 2026, Julien transferred ownership of the original record to this fork (see nextcloud/app-certificate-requests#1104 and #1114), which removed the original blocker. 3.0.0 restores the canonical integration_suitecrm app id so:

  • Julien's existing 1.x installs get updates seamlessly from the App Store, no manual reinstall.
  • There's one canonical id on the store, no user confusion about which of two records to install.
  • The GitHub org stays njordium/integration_suitecrm — the App Store app id and the GitHub org name are decoupled.

See docs/upgrade-2.x-to-3.0.md for the end-to-end upgrade walkthrough, rollback procedure, and post-upgrade verification steps.

Changed

  • App id renamed from njordium_suitecrm back to integration_suitecrm. The install folder is now custom_apps/integration_suitecrm/; the old custom_apps/njordium_suitecrm/ will no longer be recognised. Every HTTP route the frontend calls (/apps/integration_suitecrm/*) and every internal string reference has been updated in a single atomic pass across 35 files.
  • occ command name is now occ integration_suitecrm:test-connection. The 2.x form occ njordium_suitecrm:test-connection no longer resolves.
  • OAuth redirect URL on the SuiteCRM OAuth2 client must be updated from <nextcloud>/apps/njordium_suitecrm/oauth-callback to <nextcloud>/apps/integration_suitecrm/oauth-callback. Byte-for-byte match required. Same manual step users hit on the 1.9 to 2.0 upgrade; instructions in docs/upgrade-2.x-to-3.0.md.
  • Webpack bundle filenames flipped from njordium_suitecrm-*.js back to integration_suitecrm-*.js. Direct-install admins with cached JS in a reverse proxy should invalidate the cache on upgrade.
  • Migration\CopyLegacyAppConfig SQL body unchanged, LEGACY_APP_ID constant flipped from integration_suitecrm (2.0.0) to njordium_suitecrm (3.0.0). The class continues to run on every occ upgrade as a post-migration Repair step. On a fresh install (no rows to copy) it's a silent no-op.

Migration path

  • From 2.x (any 2.0-2.6 release) to 3.0.0: occ upgrade runs Migration\CopyLegacyAppConfig which copies every oc_appconfig row where appid='njordium_suitecrm' and every oc_preferences row for the same app id into appid='integration_suitecrm'. Legacy rows are left in place so rollback stays trivial. Encrypted OAuth tokens survive the copy because they live in oc_preferences under app id-scoped rows.
  • From 1.9.x directly to 3.0.0: oc_appconfig and oc_preferences rows are already under integration_suitecrm (that was Julien's app id), so the Repair step is a silent no-op and the deployment picks the settings up under the same id automatically.

Rollback

If 3.0.0 misbehaves, rollback to 2.6.0 is safe because the migration is copy-only, not move: occ app:disable integration_suitecrm && occ app:enable njordium_suitecrm && occ upgrade restores every setting. Detailed steps in docs/upgrade-2.x-to-3.0.md.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhOvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI4MTIwMjUxWhcNMzYxMTAyMTIwMjUxWjAfMR0wGwYD
VQQDDBRpbnRlZ3JhdGlvbl9zdWl0ZWNybTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAK0Ns160Hj+trG84ndnLXeskq5GS2HZe/v1g1gS/jhZPi9fshEwm
eDP0YmbbY58HhN3f2TKy1UqsYLezEZ8lDv7V/4nLoeHso8JgQhvGdYqJ9juRu0C+
Ef6y4EhOGempbZxANBPRNYnGDSq/8azygm+bLaPOGp64cCx7Ly1uWeGt91gl3RVy
LeBF+9SFfpiGPDy7bFE8ryM0coA0SPu6i5O2vkLCEDT1jlvpZ1C7xo57hIQW8z9O
O5QTuQQR+JcaZcMZMfevhmcclnQ6mn2rUHgxksz1oyHQC12FbJelDEsuHvW+kowi
WtV4SBEKq2kEOuNn1NoR0bzw8Qn8uaAZ78hpahxwahL5SHrTSBZtzDZECZ3E+0A2
dc5sfhi2RPEgvhcVgp7YLw2YuC+jcbUp1C427Q/L12b+of0aFCUKDLP7sPRgsUVy
m9rVgFw+i2SXu56GMYsSf0RGRDiiUljeHvLZZKyD9gofGQZlrQ9QLncMKZG819cS
dbzwR+hOD+GUt7o5C2xCCuq3OFAyXy36vnE3NimUlmFLgXl3v1K8RDm1db/o7E1H
zadrr4hWEEvd0pDamSQCnTWksHskB2YsERqg11hnEVjVzD6JZ++SUx8glcdiUhNI
LwjFJaqPgS3sK2krz36kyEOOMUQ6GutNszqcoIB8cm5PpVcMVKsRZq9LAgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAGEElf1vz20eScuu3ko3VBG+60Rw8UWnRPLIyfXf
69O604BePbo0fAeEvHl3tRc9LGzVmoNoJT107nLBDtFwF6uoiec6SXrO6x4gswQE
oCNYebUrwbFokjBzUASTLigldBiliNIPGFpe9s6bm6Q6Wp0bYnXRNYId2zO4TlCf
nLyB1KHL+FgMqIHnDdRnnmkLuKsEWgzElDLsxvE1y/JnQ6FlpRuX25GU/vqRW1Yq
GVcPd6VsAd8fKGCgexgBTHamCQCUcw+F/S4VGqwyq3QunCUaYeOW/rwXcS7IZHRE
Xy+bqlzii+RL9HBexZC8JyTX5oMUWWDaL8Jv5VcvoM2FtQM=
-----END CERTIFICATE-----
Signatureogxzom4kGvfPpSAHfscVLCco55DbReJH1/78dRCmY1oXJ2XiHb1LEXA33NKJMSEt
OBKUO3MKw31GLqvjOSh/q1nIThsgvMviEnvqSHKf3A3Xd9zeJCW0gtuQsFrFGrIV
qsw16PpfY8qwa/WSpV7i3hVEY38BohCGP+GtlTiTg4OZUouyBkt7c5xqO6PlhXBX
fkIJepB1Lf6NLFa9B67Lxuzn0LLXG9BHamrfhCMvENcoJ3gfEXlbqB8/Isxg7i9D
hzgQD+pR/l6nNgJVwT8oatJpeS4SiarOH2RTMxSIkbBU1d9GgXTRSEZ2zLmU1/do
R2W9vcNWnLfNYpIzWVy9UQNG/OLd7aGGMp6Q5EJSKPQGleKLlCzoVwyb7ghNu6fU
NDeEpJQu9wNmCTEWJKzXrDiENJKAAoWHocLv5CL00xK/yGRTXj3of6NOmUfDkAq5
TfHMQcxnpj7PG103qqaZI/JQ3X49MXDbe/BOnXafNyhEXJVReYHTqXfSk+HTE4dm
VwJjN8cjunijsld5PLDWY3xyK8s/or+5xgikAwm5apcI/Masfk/FGsPWq4NJUXQN
VsQOX5KwNrGdPZmxxMdd5Rov8CkC9eE/Yrtwhem8fd1vs8b0T88PPv/224Fwb4jJ
oI9709FIemcZF3xrQTMPnwOmfKIVKiGVlOsva3IbYl8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0

Nextcloud 30

SuiteCRM integration 3.0.2
Release Details
UpdatedJuly 29, 2026, 2:54 p.m.
Changelog

App Store metadata refresh, take two. The 3.0.1 upload was rejected by the App Store validator with Element 'summary': [facet 'maxLength'] The value has a length of '166'; this exceeds the allowed maximum length of '128'., so this release trims <summary> under the 128-character cap while keeping the widget-count and coverage cue that made the new listing useful in the first place.

Changed

  • appinfo/info.xml <summary> shortened from 166 to 117 characters to satisfy the App Store's apps/info.xsd maxLength facet on <summary>. New form drops the module enumeration and keeps the "nine widgets" specificity: "Nine dashboard widgets, unified search and notifications for SuiteCRM 8.x. Calendar, tasks, cases, pipeline and more." The full nine-widget breakdown is still in <description>, which the schema does not cap.

Notes for maintainers

The apps/info.xsd caps to remember when editing the top of appinfo/info.xml: - <name> max 40 characters - <summary> max 128 characters - <description> no practical cap (Markdown-friendly, use it for the full pitch)

Add a wc -c check on the summary line to release-nc-app.sh phase 1 to catch this locally next time.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhOvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI4MTIwMjUxWhcNMzYxMTAyMTIwMjUxWjAfMR0wGwYD
VQQDDBRpbnRlZ3JhdGlvbl9zdWl0ZWNybTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAK0Ns160Hj+trG84ndnLXeskq5GS2HZe/v1g1gS/jhZPi9fshEwm
eDP0YmbbY58HhN3f2TKy1UqsYLezEZ8lDv7V/4nLoeHso8JgQhvGdYqJ9juRu0C+
Ef6y4EhOGempbZxANBPRNYnGDSq/8azygm+bLaPOGp64cCx7Ly1uWeGt91gl3RVy
LeBF+9SFfpiGPDy7bFE8ryM0coA0SPu6i5O2vkLCEDT1jlvpZ1C7xo57hIQW8z9O
O5QTuQQR+JcaZcMZMfevhmcclnQ6mn2rUHgxksz1oyHQC12FbJelDEsuHvW+kowi
WtV4SBEKq2kEOuNn1NoR0bzw8Qn8uaAZ78hpahxwahL5SHrTSBZtzDZECZ3E+0A2
dc5sfhi2RPEgvhcVgp7YLw2YuC+jcbUp1C427Q/L12b+of0aFCUKDLP7sPRgsUVy
m9rVgFw+i2SXu56GMYsSf0RGRDiiUljeHvLZZKyD9gofGQZlrQ9QLncMKZG819cS
dbzwR+hOD+GUt7o5C2xCCuq3OFAyXy36vnE3NimUlmFLgXl3v1K8RDm1db/o7E1H
zadrr4hWEEvd0pDamSQCnTWksHskB2YsERqg11hnEVjVzD6JZ++SUx8glcdiUhNI
LwjFJaqPgS3sK2krz36kyEOOMUQ6GutNszqcoIB8cm5PpVcMVKsRZq9LAgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAGEElf1vz20eScuu3ko3VBG+60Rw8UWnRPLIyfXf
69O604BePbo0fAeEvHl3tRc9LGzVmoNoJT107nLBDtFwF6uoiec6SXrO6x4gswQE
oCNYebUrwbFokjBzUASTLigldBiliNIPGFpe9s6bm6Q6Wp0bYnXRNYId2zO4TlCf
nLyB1KHL+FgMqIHnDdRnnmkLuKsEWgzElDLsxvE1y/JnQ6FlpRuX25GU/vqRW1Yq
GVcPd6VsAd8fKGCgexgBTHamCQCUcw+F/S4VGqwyq3QunCUaYeOW/rwXcS7IZHRE
Xy+bqlzii+RL9HBexZC8JyTX5oMUWWDaL8Jv5VcvoM2FtQM=
-----END CERTIFICATE-----
SignatureX4/pzvjKgONWyCtn4SRPhCb11mYQF8NyrEtydiOD9dttFgiLxLwcYhEQJfdBKLxY
KiG0c53jkSZHI0osL7UoSRWBu61KYv5AoRHS9ajdJSXD7xXR46nl56LH//teun3+
tbLSa2YsyNbIlcXDy8/ZeMrNApHk0HkEi9N8yv/m+sPERK975Oy8CrmgfGk7afuW
AkCY1NuDvZL4I5Dstt30Z6BW94hyiYXtky2W+voCjB2nAd6P/k5gGShDw61BrZnf
q1Y3moshtF/XV5niYLsvsj55mL24E8x22/VeMCYzQMKQtAahO8dcl9YrZ5rqho/b
NrxOFNrRVboUIZu5LSkHJgGC8y4GFwKUeyWtzKK6qUESaGU7qZlgi78ISdrh09yP
RLCmZBdE0QLOK0ZZ+Y9wWrq4/3+eE+5QFGJ3Itc4kvvbw80NIOhFL74NzAH15CuP
AFZ6EHUKNpqZ/9Ek0ppmRAaYrPnBsVqSCvDnRFVL8a3mi6Beul1B2Tixpx0wOKzd
wy5nx/eXEwBXBZJY91CgQDUFNMKMflxlIXgUIpAWUAjEemKlUJojxcmbB3+oNUPz
t8XTqPkcKedrDnLBdmyai6G2CTT187b6gx3u+qX2GT0HY1NG1x9PpH6+0ubL3loP
5GyLf0FkVjBVMgCVx08wRCnYWkTokDobVeDrHDkFiDo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0
SuiteCRM integration 3.0.0
Release Details
UpdatedJuly 29, 2026, 1:38 p.m.
Changelog

Renames the Nextcloud app id from njordium_suitecrm back to integration_suitecrm. This is the only breaking change in the release. Every setting on your existing 2.x install, admin OAuth config (instance URL, client ID/secret, authorize path), every per-user OAuth token, every widget preference (pipeline_mode, quick_actions_enabled, calendar_show_tasks) carries across automatically via a Repair step that runs on occ upgrade. Users do not need to re-authorise SuiteCRM.

Why the rename. When the fork first shipped in 2.0.0, Julien Veyssier's original integration_suitecrm App Store record was stale and blocked our updates from reaching his ~200 existing installs. The pragmatic response was to rename the fork's app id to njordium_suitecrm so we could ship on the App Store under our own record. In July 2026, Julien transferred ownership of the original record to this fork (see nextcloud/app-certificate-requests#1104 and #1114), which removed the original blocker. 3.0.0 restores the canonical integration_suitecrm app id so:

  • Julien's existing 1.x installs get updates seamlessly from the App Store, no manual reinstall.
  • There's one canonical id on the store, no user confusion about which of two records to install.
  • The GitHub org stays njordium/integration_suitecrm — the App Store app id and the GitHub org name are decoupled.

See docs/upgrade-2.x-to-3.0.md for the end-to-end upgrade walkthrough, rollback procedure, and post-upgrade verification steps.

Changed

  • App id renamed from njordium_suitecrm back to integration_suitecrm. The install folder is now custom_apps/integration_suitecrm/; the old custom_apps/njordium_suitecrm/ will no longer be recognised. Every HTTP route the frontend calls (/apps/integration_suitecrm/*) and every internal string reference has been updated in a single atomic pass across 35 files.
  • occ command name is now occ integration_suitecrm:test-connection. The 2.x form occ njordium_suitecrm:test-connection no longer resolves.
  • OAuth redirect URL on the SuiteCRM OAuth2 client must be updated from <nextcloud>/apps/njordium_suitecrm/oauth-callback to <nextcloud>/apps/integration_suitecrm/oauth-callback. Byte-for-byte match required. Same manual step users hit on the 1.9 to 2.0 upgrade; instructions in docs/upgrade-2.x-to-3.0.md.
  • Webpack bundle filenames flipped from njordium_suitecrm-*.js back to integration_suitecrm-*.js. Direct-install admins with cached JS in a reverse proxy should invalidate the cache on upgrade.
  • Migration\CopyLegacyAppConfig SQL body unchanged, LEGACY_APP_ID constant flipped from integration_suitecrm (2.0.0) to njordium_suitecrm (3.0.0). The class continues to run on every occ upgrade as a post-migration Repair step. On a fresh install (no rows to copy) it's a silent no-op.

Migration path

  • From 2.x (any 2.0-2.6 release) to 3.0.0: occ upgrade runs Migration\CopyLegacyAppConfig which copies every oc_appconfig row where appid='njordium_suitecrm' and every oc_preferences row for the same app id into appid='integration_suitecrm'. Legacy rows are left in place so rollback stays trivial. Encrypted OAuth tokens survive the copy because they live in oc_preferences under app id-scoped rows.
  • From 1.9.x directly to 3.0.0: oc_appconfig and oc_preferences rows are already under integration_suitecrm (that was Julien's app id), so the Repair step is a silent no-op and the deployment picks the settings up under the same id automatically.

Rollback

If 3.0.0 misbehaves, rollback to 2.6.0 is safe because the migration is copy-only, not move: occ app:disable integration_suitecrm && occ app:enable njordium_suitecrm && occ upgrade restores every setting. Detailed steps in docs/upgrade-2.x-to-3.0.md.

Licenses GNU Affero General Public License v3.0 or later
Certificate-----BEGIN CERTIFICATE-----
MIIEDzCCAvcCAhOvMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwNzI4MTIwMjUxWhcNMzYxMTAyMTIwMjUxWjAfMR0wGwYD
VQQDDBRpbnRlZ3JhdGlvbl9zdWl0ZWNybTCCAiIwDQYJKoZIhvcNAQEBBQADggIP
ADCCAgoCggIBAK0Ns160Hj+trG84ndnLXeskq5GS2HZe/v1g1gS/jhZPi9fshEwm
eDP0YmbbY58HhN3f2TKy1UqsYLezEZ8lDv7V/4nLoeHso8JgQhvGdYqJ9juRu0C+
Ef6y4EhOGempbZxANBPRNYnGDSq/8azygm+bLaPOGp64cCx7Ly1uWeGt91gl3RVy
LeBF+9SFfpiGPDy7bFE8ryM0coA0SPu6i5O2vkLCEDT1jlvpZ1C7xo57hIQW8z9O
O5QTuQQR+JcaZcMZMfevhmcclnQ6mn2rUHgxksz1oyHQC12FbJelDEsuHvW+kowi
WtV4SBEKq2kEOuNn1NoR0bzw8Qn8uaAZ78hpahxwahL5SHrTSBZtzDZECZ3E+0A2
dc5sfhi2RPEgvhcVgp7YLw2YuC+jcbUp1C427Q/L12b+of0aFCUKDLP7sPRgsUVy
m9rVgFw+i2SXu56GMYsSf0RGRDiiUljeHvLZZKyD9gofGQZlrQ9QLncMKZG819cS
dbzwR+hOD+GUt7o5C2xCCuq3OFAyXy36vnE3NimUlmFLgXl3v1K8RDm1db/o7E1H
zadrr4hWEEvd0pDamSQCnTWksHskB2YsERqg11hnEVjVzD6JZ++SUx8glcdiUhNI
LwjFJaqPgS3sK2krz36kyEOOMUQ6GutNszqcoIB8cm5PpVcMVKsRZq9LAgMBAAEw
DQYJKoZIhvcNAQELBQADggEBAGEElf1vz20eScuu3ko3VBG+60Rw8UWnRPLIyfXf
69O604BePbo0fAeEvHl3tRc9LGzVmoNoJT107nLBDtFwF6uoiec6SXrO6x4gswQE
oCNYebUrwbFokjBzUASTLigldBiliNIPGFpe9s6bm6Q6Wp0bYnXRNYId2zO4TlCf
nLyB1KHL+FgMqIHnDdRnnmkLuKsEWgzElDLsxvE1y/JnQ6FlpRuX25GU/vqRW1Yq
GVcPd6VsAd8fKGCgexgBTHamCQCUcw+F/S4VGqwyq3QunCUaYeOW/rwXcS7IZHRE
Xy+bqlzii+RL9HBexZC8JyTX5oMUWWDaL8Jv5VcvoM2FtQM=
-----END CERTIFICATE-----
Signatureogxzom4kGvfPpSAHfscVLCco55DbReJH1/78dRCmY1oXJ2XiHb1LEXA33NKJMSEt
OBKUO3MKw31GLqvjOSh/q1nIThsgvMviEnvqSHKf3A3Xd9zeJCW0gtuQsFrFGrIV
qsw16PpfY8qwa/WSpV7i3hVEY38BohCGP+GtlTiTg4OZUouyBkt7c5xqO6PlhXBX
fkIJepB1Lf6NLFa9B67Lxuzn0LLXG9BHamrfhCMvENcoJ3gfEXlbqB8/Isxg7i9D
hzgQD+pR/l6nNgJVwT8oatJpeS4SiarOH2RTMxSIkbBU1d9GgXTRSEZ2zLmU1/do
R2W9vcNWnLfNYpIzWVy9UQNG/OLd7aGGMp6Q5EJSKPQGleKLlCzoVwyb7ghNu6fU
NDeEpJQu9wNmCTEWJKzXrDiENJKAAoWHocLv5CL00xK/yGRTXj3of6NOmUfDkAq5
TfHMQcxnpj7PG103qqaZI/JQ3X49MXDbe/BOnXafNyhEXJVReYHTqXfSk+HTE4dm
VwJjN8cjunijsld5PLDWY3xyK8s/or+5xgikAwm5apcI/Masfk/FGsPWq4NJUXQN
VsQOX5KwNrGdPZmxxMdd5Rov8CkC9eE/Yrtwhem8fd1vs8b0T88PPv/224Fwb4jJ
oI9709FIemcZF3xrQTMPnwOmfKIVKiGVlOsva3IbYl8=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
PHP>=8.2.0