FINERACT-2336: improve asciidoc post-1.12.1 release

* update release notice years in NOTICE_RELEASE and NOTICE_SOURCE
* step 5
  * simplify mention of tests: "Ensure all tests pass for this commit both in CI and locally"
  * recommend GPG signing annotated release tag
* step 8: improve svn commands
  * This way is simpler and more efficient, especially with a bunch of release candidate dirs in the staging area.
* step 10: mention need to test rc before +1 vote -- See:
  * https://www.apache.org/legal/release-policy.html#release-approval
  * https://www.apache.org/legal/release-policy.html#approving-a-release
* step 12: only PMC members can upload releases
* step 13: simplify & explain "finalize branch" instructions
  * Document what worked for me for 1.12.1.
  * I didn't need to create the extra `merge-$VERSION` branch and do the recursive merge.
* document how asciidoctor upgrade is blocked
  * see "official docs - deps stuck" thread on fineract dev mailing list
  * https://lists.apache.org/thread/7mmsj13spb11vgz0z38fhwgzwtq03brr
  * can't upgrade to 4.x because of one of these:
    * https://github.com/asciidoctor/asciidoctorj-pdf/issues/25
    * https://github.com/jruby/jruby/issues/5573
    * https://github.com/asciidoctor/asciidoctorj-pdf/issues/16
* improve asciidoc config - opt for simplicity where the complexity adds nothing
  * compat-mode is off by default, no need for it here
  * default optimization should be fine
  * media should have been screen | print | prepress, just leave it as default instead
  * page size? I really don't think this is going to be printed much, just go with default
  * PDF version 1.8 is invalid, just use the default unless we someday have a good reason to pin this
  * reduce copyright years sources of truth
  * see also: https://docs.asciidoctor.org/pdf-converter/latest/asciidoc-attributes/
* remove unnecessary asciidoctorj 3.0.0 version string -- no need to pin this
* remove prompt character from Bash shell examples
  * it isn't properly syntax-highlighted and it looks confusing with line numbers (which we might want to add)
  * it isn't necessary
  * the prompt character ("%" in this case) is not typically included in shell code examples because it makes it harder to copy and paste shell code examples
  * $ is likely more common than % (at least on Debian/Ubuntu), but either way I'd say exclude it
* fix source code syntax labels - use "bash" only when it is actually Bash shell code
* persistence.adoc
  * fix broken enumerated list
    * resolves these warnings seen with, e.g.: `gradle --info doc`
    * `Jul 27, 2025 8:26:48 PM uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb parse_list_item`
    * `WARNING: chapters/architecture/persistence.adoc: line 104: list item index: expected 1, got 2`
    * `Jul 27, 2025 8:26:48 PM uri:classloader:/gems/asciidoctor-2.0.10/lib/asciidoctor/parser.rb parse_list`
    * `WARNING: chapters/architecture/persistence.adoc: line 110: list item index: expected 1, got 3`
  * fix wrapping (we use hardbreaks)
  * fix typo: `s/plane text/plain text/`
* switch to rouge syntax highlighter - it handles more source languages
* fix broken long shell code lines
* fix .avro file syntax highlighting (it's JSON)
* configuration-gpg.adoc
  * fix accidental block continuation
    * One little plus sign was making `= Email` appear verbatim in rendered output because it was interpreted as a list continuation.
    * See https://docs.asciidoctor.org/asciidoc/latest/lists/continuation/#list-continuation
  * recommend more secure keys
  * add a line continuation for an enumerated list
* architecture-overview.puml: remove this unused (likely a "Hello World") diagram
* release-schedule.puml: fix pluralization of days
  * purely aesthetic: doesn't affect chart rendering
* fix src/bin/binary tarball name typos
  * missed a few in e090da2a01
* fix release branch name
  * must match `release/{revnumber}`, per gitVersioning stanza in top level build.gradle
* harden.adoc: fix broken link to CISA
* fineract-doc/build.gradle
  * ensure HTML task has diagrams and images availble
This commit is contained in:
Adam Monsen
2025-08-07 07:02:10 -07:00
parent ebda7cee4b
commit 67272d1aea
33 changed files with 265 additions and 171 deletions
@@ -213,7 +213,7 @@ The business steps are configurable through APIs:
Retrieving the configuration for a job:
[source]
[source,text]
----
GET /fineract-provider/api/v1/jobs/{jobName}/steps?tenantIdentifier={tenantId}
HTTP 200
@@ -235,7 +235,7 @@ HTTP 200
Updating the business step configuration for a job:
[source]
[source,text]
----
PUT /fineract-provider/api/v1/jobs/{jobName}/steps?tenantIdentifier={tenantId}
@@ -274,7 +274,7 @@ When the Inline job gets triggered then the corresponding existing job will run
Triggering the Inline Loan COB Job:
[source]
[source,text]
----
POST /fineract-provider/api/v1/jobs/LOAN_COB/inline?tenantIdentifier={tenantId}
@@ -33,22 +33,32 @@ The actual code can be found in the `DatabaseTypeResolver` class.
== Tenant database security
The tenant database schema password is stored in the `tenant_server_connections` table in the tenant database.
The password and the read only schema password are encrypted using the `fineract.tenant.master-password` property.
By default, the database property will be encrypted in the first start from a plane text.
The tenant database schema password is stored in the `tenant_server_connections` table in the tenant database. The password and the read only schema password are encrypted using the `fineract.tenant.master-password` property. By default, the database property will be encrypted in the first start from a plain text.
When you want to generate a new encrypted password, you can use the `org.apache.fineract.infrastructure.core.service.database.DatabasePasswordEncryptor` class.
=== Database password encryption usage
```
java -cp fineract-provider.jar -Dloader.main=org.apache.fineract.infrastructure.core.service.database.DatabasePasswordEncryptor org.springframework.boot.loader.PropertiesLauncher <masterPassword> <plainPassword>
```
[%nowrap,bash]
----
java -cp fineract-provider.jar \
-Dloader.main=org.apache.fineract.infrastructure.core.service.database.DatabasePasswordEncryptor \
org.springframework.boot.loader.PropertiesLauncher \
<masterPassword> \
<plainPassword>
----
For example:
```
java -cp fineract-provider-0.0.0-48f7e315.jar -Dloader.main=org.apache.fineract.infrastructure.core.service.database.DatabasePasswordEncryptor org.springframework.boot.loader.PropertiesLauncher fineract-master-password fineract-tenant-password
[%nowrap,text]
----
java -cp fineract-provider-0.0.0-48f7e315.jar \
-Dloader.main=org.apache.fineract.infrastructure.core.service.database.DatabasePasswordEncryptor \
org.springframework.boot.loader.PropertiesLauncher \
fineract-master-password \
fineract-tenant-password
The encrypted password: VLwGl7vOP/q275ZTku+PNGWnGwW4mzzNHSNaO9Pr67WT5/NZMpBr9tGYYiYsqwL1eRew2jl7O3/N1EFbLlXhSA==
```
----
== Data-access layer
@@ -85,38 +95,38 @@ The switch from Flyway (1.6.x) to Liquibase (1.7.x) was planned to be as smooth
=== Troubleshooting
1. During upgrade from Fineract 1.5.0 to 1.6.0, Liquibase fails
+
After dropping the flyway migrations table (schema_version), Liquibase runs its
own migrations which fails (in recreating tables which already exist) because
we are aiming to re-use DB with existing data from Fineract 1.5.0.
+
Solution: The latest release version (1.6.0) doesn't have Liquibase at all, it
still runs Flyway migrations. Only the develop branch (later to be 1.7.0) got
switched to Liquibase. Do not pull the develop before upgrading your instance.
+
Make sure first you upgrade your instance (aka database schema with Fineract 1.6.0).
Then upgrade with the current develop branch. Check if some migration scripts
did not run which led to some operations failing due to slight differences in
schema. Try with running the missing migrations manually.
+
Note: develop is considered unstable until released.
2. Upgrading database from MySQL 5.7 as advised to Maria DB 10.6, fails. If we
use data from version 18.03.01 it fails to migrate the data. If we use databases
running on 1.5.0 release it completes the startup but the system login fails.
+
Solution: A database upgrade is separate thing to take care of.
3. We are getting `ScehmaUpgradeNeededException: Make sure to upgrade to Fineract
1.6 first and then to a newer version` error while upgrading to `tag 1.6`.
+
1.6 version shouldn't include Liquibase. It will only be released after 1.6.
Make sure Liquibase is dropping `schema_version` table, as there is no Flyway
it is not required. Drop Flyway and use Liquibase for both migrations and
database independence. In case, if you still get errors, you can use git SHA
`746c589a6e809b33d68c0596930fcaa7338d5270` and Flyway migration will be done to
the latest.
+
```
TENANT_LATEST_FLYWAY_VERSION = 392;
TENANT_LATEST_FLYWAY_SCRIPT_NAME =
@@ -156,7 +156,7 @@ For example the OfficeDataV1 Avro schema looks the following:
.`OfficeDataV1.avsc`
[%collapsible]
====
[source,avroschema]
[source,json]
----
include::{rootdir}/fineract-avro-schemas/src/main/avro/office/v1/OfficeDataV1.avsc[]
----
@@ -175,7 +175,7 @@ This implies that for putting a single event message onto a message queue for ex
The message schema looks the following:
.`MessageV1.avsc`
[source,avroschema]
[source,json]
----
include::{rootdir}/fineract-avro-schemas/src/main/avro/MessageV1.avsc[]
----
@@ -370,7 +370,7 @@ New Avro schemas can be easily created. Just create a new Avro schema file in th
=== BigDecimal support in Avro schemas
Apache Avro by default doesn't support complex types like a BigDecimal. It has to be implemented using a custom snippet like this:
[source,avroschema]
[source,json]
----
include::{rootdir}/fineract-avro-schemas/src/main/resources/avro-templates/bigdecimal.avsc[]
----
@@ -380,7 +380,7 @@ It's a 20 precision and 8 scale BigDecimal.
Obviously it's quite challenging to copy-paste this snippet to every single BigDecimal field, so there's a customization in place for Fineract.
The type `bigdecimal` is supported natively, and you're free to use it like this:
[source,avroschema]
[source,json]
----
{
"default": null,