/ Release  

General Available; A new release for this last quarter of 2024; It's OPA (aka "AppWorks") 24.4 time...WHAT!?

Hi there AppWorks fans,

Welcome to a new installment of AppWorks tips.

The final one for this year…OpenText AppWorks 24.4 (Q4 in 2024), it’s a month later than the expected range of first 2 weeks of the quarter; It is what it is. Let’s see if it’s worth it as the first communication channels tell me “AppWorks” got a rebranding to “OpenText Process Automation” (OPA in short, which means “Grandpa” in Dutch 🤣)

Grab something to drink and some peanuts (or whatever you like) and extend your knowledge on the update of this new release!


Let get right into it…

It’s been a while on a fresh installation, and because I saw some strange things after upgrading my VM, I decide to do a fresh installation this time. This post reviews the OpenText AppWorks Platform CE 24.4 Release Notes PDF. We’ll jump through each feature one by one to figure out what value it brings, how it works, and how we can benefit from it.

Normally there is a quick tag for a release like #AppWorks24.4, but it doesn’t give any results!? At least not at this moment of writing! You can still filter it out like this:
opa_001


🆕 Update on the available changes in 24.4 🆕

First a quick note on the rebranding!? So, we move from AppWorks to “OpenText Process Automation”. An interesting move that will slightly hit this blog too as what to do with the “AppWorks Tips” name! Have a comment below…

But why rebranding? Does “AppWorks” not fit the overall package? Is “Process Automation” what we do at our customers? Well, after grabbing a coffee it eventually is indeed what we do and, in that case, it can be a better name. Especially with the new “developer” eXperience, all the AI power, connector enhancements, and looking below we have this name for 5 years, I can imagine that a new name can help the platform to a new level.

Let’s have a recap on the platform versioning so far (with a long history…):

💥 In the ‘Cordys’ era:

Release Note Time
Business Operations Platform 4.3 (before Cordys is now OpenText) 2013

💥 ‘BOP’ taken over by ‘OpenText’ with a new name ‘Process suite’

Release Note Time
Process suite 10.5 contains Process platform 10.5 Q1 2014
Process suite 10.6 contains Process platform 10.6 Q3 2014
Process suite 10.7 contains Process platform 10.7 Q1 2015
Process suite 10.8 contains Process platform 10.8 Q3 2015

💥 No rename, but a version labeling in line with other OpenText products

Release Note Time
Process suite 16 contains Process platform 16 Q1 2016
Process suite 16.1 contains Process platform 16.1 Q3 2016
Process suite 16.2 contains Process platform 16.2 Q1 2017
Process suite 16.3 contains Process platform 16.3 Q3 2017

💥 Rename to ‘AppWorks’ with the version labeling in line with other OpenText products. Later, it is named ‘AppWorks suite’

Release Note Time
AppWorks 16.4 contains AppWorks platform 16.4 Q2 2018
AppWorks platform 16.4.1 patch release
AppWorks 16.5 contains AppWorks platform 16.5 Q1 2019
AppWorks platform 16.5.2 patch release
AppWorks suite 16.6 contains AppWorks platform 16.6 Q2 2019
AppWorks platform 16.6.1 patch release
AppWorks suite 16.7 contains AppWorks platform 16.7 Q4 2019

💥 No rename, but again a version labeling in line with other OpenText products. This makes it a quarterly release of the full OpenText product range! Still available are the patch releases for that quarter release like for example 20.2.1

Release Note Time
AppWorks suite 20.2 contains AppWorks platform 20.2 Q2 2020
AppWorks suite 20.3 contains AppWorks platform 20.3 Q3 2020
AppWorks suite 20.4 contains AppWorks platform 20.4 Q4 2020
AppWorks suite 21.1 contains AppWorks platform 21.1 Q1 2021
AppWorks suite 21.2 contains AppWorks platform 21.2 Q2 2021
AppWorks suite 21.3 contains AppWorks platform 21.3 Q3 2021
AppWorks suite 21.4 contains AppWorks platform 21.4 Q4 2021
AppWorks suite 22.1 contains AppWorks platform 22.1 Q1 2022
AppWorks suite 22.2 contains AppWorks platform 22.2 Q2 2022
AppWorks suite 22.3 contains AppWorks platform 22.3 Q3 2022
AppWorks suite 22.4 contains AppWorks platform 22.4 Q4 2022
AppWorks suite 23.1 contains AppWorks platform 23.1 Q1 2023
AppWorks suite 23.2 contains AppWorks platform 23.2 Q2 2023
AppWorks suite 23.3 contains AppWorks platform 23.3 Q3 2023
AppWorks suite 23.4 contains AppWorks platform 23.4 Q4 2023
AppWorks suite 24.1 contains AppWorks platform 24.1 Q1 2024
AppWorks suite 24.2 contains AppWorks platform 24.2 Q2 2024
AppWorks suite 24.3 contains AppWorks platform 24.3 Q3 2024

💥 So far consistent! Now 2024…The year that we move from “AppWorks” to “OpenText Process Automation”.

Release Note Time
OpenText Process Automation 24.4 A solution on itself; No suite! Q4 2024
OpenText Process Automation 25.1 It’s the future…? Q1 2025

My final question would be: What does this do for the UI in runtime? Well, I just created a new basic entity with some quick BBs for publication and see the result:

opa_002

Also, when you open the entity…It all “smells” like the same good old “AppWorks”! 💪

opa_003

Let’s continue through the list of new features…


Process Automation Aviator enhancements

Read about my Aviator AI experiences from the previous release. When you follow the drill as explained in the post, you’ll end up with a new Aviator icon in /dev:

opa_004

Hit it, accept the welcome screen, and “Build an application using AI prompts”…And because the feature tells me AI can do more, we’ll put it to the test with a proper prompt:

1
2
3
4
I would like to build an advanced 'todo' application that structures my 
thoughts and clears the mind by planning it via due dates and notifications.
My manager requires approval for a new planning board and I need
board members to delegate my tasks to.

opa_005

Interesting…That’s a YES, please! Next is a detected question about “Project management” or “Construction management”; I go for a “Project…”

I can already see some app-details:

opa_006

I asked (in between): Can you add a lifecycle to the project? Nice try, but it adds a lifecycle property of type ‘Enum’ to the entity!?
I also tried this prompt:

1
2
3
Add an auto generated ID to all the entities with a three character 
entity prefix and underscore; Make also sure to prefix the properties
and use only non-capital letters!

The three-character prefix works great; Except for the auto generated ID, this adds {prefix}_id properties and does not enable the entity identity ID! You can change it yourself…I hit Next…

Interesting is the ‘User’ entity! It’s an entity on itself and not the ‘User’ entity of the identity package which was a feature update!? Did we make a wrong move?…Have a comment!

I see generated relationships, but the outcome can be questionable:

opa_007

Does it use bidirectional relation or two uni-directional relations. There is an option to manipulate, but I don’t have a feeling it creates bidirectional relations! And why can’t a user run multiple project or multiple tasks? Let’s update it ourselves for now and continue to the next AI generation parts on ‘Document’ using and I also hit the security generation button:

opa_008

Give the app a name like task_management (It can’t contain weird characters!); For the logo we can use Task 2.0:

opa_009

For your reference…The first (Project 2.0) try failed for the below reasons!
opa_0010

The log file (catalina.out) on the TomEE server instance shows these details:

1
2
3
Unexpected exception: Unable to create the OTDS partition 'AviatorApplicationRoles_020f61c0-bb42-40a7-af45-a924cb551f55'.
com.opentext.otds.tool.SynchronizationException: Unable to create the OTDS partition 'AviatorApplicationRoles_020f61c0-bb42-40a7-af45-a924cb551f55'.
Caused by: com.opentext.otds.OtdsException: Access denied

After a remote debug session, I can conclude that the full resource (in my case opa_resource) in OTDS must have sufficient permission as an OTDS administration! Have a look in the ‘Users & Groups’ section of OTDS where you find an ID-user for your resource; This one must be member of the correct OTDS admin groups. I applied membership of this special user to the groups otadmins and otdsadmins to nail the problem!

It’s too bad you can’t retry the action in the Aviator panel itself! I give it a second shot from start…

This time, I see also see this error (I got this one too in previous attempts!):

1
2
3
at com.opentext.cordys.entity.rest.workflowTemplate.WorkflowTemplateRestController.generateWorkflowTemplate(WorkflowTemplateRestController.java:111)
The requested permission 'Create' was denied.
HTTP 403 Forbidden

It’s an error on the workflow creation attempt:

opa_0011

We nail this one by applying the correct internal “Workflow Template…” roles to my user account from the ‘User Manager’ artifact!

Third try…which brings me further now…

opa_0012

Here we can customize the workflow via prompting! Nice…Let’s see what a prompt like this will change:

1
2
3
A manager must approve the creation of the project. Once the project gets into a 
final state it can automatically be archived, and it will be unchangeable from
a security perspective.

With an interesting (and valid) outcome:

opa_0013

Ohhh boy…When is the time we say goodbye to our low-code developer jobs and book a one-way trip to Bali? 😎

Let’s hit next where we can manipulate the “security/roles” part:

opa_0014

Finally, a smooth AI eXperience:

opa_0015

What is generated in “the new” design-time/dev-space:

opa_0016

And the “good old” classic space:

opa_0017

In OTDS:

opa_0018

On the administration side of things:

opa_0019

In runtime (after creating a project and starting a dynamic workflow)

opa_0020

Interesting notes after clicking around:

  • From an OTDS management perspective, I’m not happy; This is something that could be better.
  • Setting the “Package Owner” from a package properties standpoint could be smarter; Instead of the default My Company
  • That’s the same for the “Supported Deployment Spaces”; You normally want to have such application in an “Organization” space and not in “Shared”
  • Naming wise it’s not my thing, but I see the prompt can manipulate it; So, this output is my own fault. But again, good luck as “citizen” developer to change it! 😏
  • What will happen when 10 developers generate apps with similar roles, and names? Comment me when you hit that point in time…
  • It’s all pure entity modelling; Not one single BPM generation; which sounds fair to me.
  • Adding a theme-generation part to the AI with colors would help the “User eXperience”.
  • And the option to add the simple BBs, like the ‘Discussion’, ‘Tracking’, ‘Sharing’, ‘Assignee’.

It’s all basic stuff going on, but let’s admit…It’s a great accomplishment on a non-manipulated AI prompt! Excellent job.

Update, update…”read all about it”; I always required a VPN connection for the Google Gemini API (because of Europe), but it’s working fine now without VPN!

This is a quick test CURL-command:

1
2
export GOOGLE_API_KEY={your_key}
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=$GOOGLE_API_KEY -H 'Content-Type: application/json' -X POST -d '{"contents": [{"parts":[{"text": "What is the weather today in the Netherlands?"}]}]}'

This is an example via a service call after proper “Google Gemini” configuration (in my own organization via the ‘AI Configuration’ artifact)
opa_0021


New application developer experience

NEW is a big word (as its first introduction was in version 24.2 as preview). Let’s tune in to the /dev path of your favorite URL http://192.168.56.107:8080/home/opa_tips/dev with a UI specifically designed for the “citizen” developers! Well, now you know at least which box you belong to. 🤔

opa_0022

That’s a warm welcome screen to start off your day! Opening the workspace and corresponding project moves us to a mature development space…That’s at least my first impression:

opa_0023

Great stuff…And feels complete! 👌

AND…I LOVE already this menu switcher/opener/mover:

opa_0024

For your reference:

  • “Application client”: /{org_name}/app/start
  • “ReST API”: /{org_name}/app/entityservice/{package_owner}{product_name}
  • “Application administration”: /{org_name}/app/admin
  • “System administration”: /{org_name} (the good old classic development CWS workspace…it’s a thing from the past!…can we already call it “legacy”?)

In-app notifications

When configured well, you will start to see several notifications on the runtime “bell” icon:

opa_0025

Clicking the “bell” will show the notifications:

opa_0026

Here you can also mark them as read and delete them. It’s also possible to click on them and jump into the referred entity instance (if not deleted!). This same panel lets the end-user also configure the events as required:

opa_0027

Watching the <F12> developer console brings me to a URL like this: http://192.168.56.101:8080/home/opa_tips/app/entityRestService/notifications?unreadCountOnly=false with an interesting JSON response:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
{
"totalCount": 4,
"notifications": [
{
"Identity": {
"ItemId": "D4F32D5988BDA1EF8FA2AD0754FFE112.9",
"Id": "9"
},
"Properties": {
"Status": "UnRead",
"EventTime": "2024-11-04T16:49:28Z",
"EventName": "CREATE",
"SourceType": "Task",
"SourceName": "Untitled_Entity",
"SourceItemId": "080027607520a1efa6aca890237da73c.327683.327683",
"ReferenceLink": "http://opa:8080/home/opa_tips/app/start/web/item/080027607520a1efa6aca890237da73c.327683.327683/00000000000000000000000000000000",
"Message": "A new task 'Activity' added to the workflow 'Case' on case."
}
},
{
"Identity": {
"ItemId": "D4F32D5988BDA1EF8FA2AD0754FFE112.5",
"Id": "5"
},
"Properties": {
"Status": "UnRead",
"EventTime": "2024-11-04T16:42:43Z",
"EventName": "Delete",
"SourceType": "Entity",
"SourceName": "Case",
"SourceItemId": "080027607520a1efa6aca0da3f5692fc.4",
"ReferenceLink": "http://opa:8080/home/opa_tips/app/start/web/item/080027607520a1efa6aca0da3f5692fc.4",
"Message": "case has been deleted by opadev@opa."
}
},
{
"Identity": {
"ItemId": "D4F32D5988BDA1EF8FA2AD0754FFE112.6",
"Id": "6"
},
"Properties": {
"Status": "UnRead",
"EventTime": "2024-11-04T16:42:43Z",
"EventName": "TerminateLifecycle",
"SourceType": "Lifecycle",
"SourceName": "Case",
"SourceItemId": "080027607520a1efa6aca0da3f5692fc.4",
"ReferenceLink": "NA",
"Message": "The workflow of case has been terminated by opadev@opa."
}
},
{
"Identity": {
"ItemId": "D4F32D5988BDA1EF8FA2AD0754FFE112.4",
"Id": "4"
},
"Properties": {
"Status": "UnRead",
"EventTime": "2024-11-04T16:26:35Z",
"EventName": "CREATE",
"SourceType": "Task",
"SourceName": "Untitled_Entity",
"SourceItemId": "080027607520a1efa6aca890237da73c.4.4",
"ReferenceLink": "http://opa:8080/home/opa_tips/app/start/web/item/080027607520a1efa6aca890237da73c.4.4/00000000000000000000000000000000",
"Message": "A new task 'Activity' added to the workflow 'case' on case."
}
}
]
}

This is the required configuration of the notification on entity level. For task-type of notifications you can do the same trick on the related ‘LifecycleTask’ entity.

opa_0028

Notes:

  • Some notification never arrived; Like the creation or update of an entity!? The reason is never found in the time I have for the post!
  • For Email notifications, you require an ‘E-mail’ service container…dûh!
  • "SourceName": "Untitled_Entity" in the JSON seems to show the incorrect entity name!?

What else? (a common question to ask yourself!)

I see BPM instances passing by in the PIM of EntityRuntimeEvents_BPM\EntityRuntimeEvents…Who knows what’s behind this logic? That’s a post on itself!
Another open question (but not for now!); How does it relate to the ‘notification’ location on the server %CORDYS_HOME%\components\notification and does it have a relation with the ‘Notification’ service container in the ‘System Resource Manager’ artifact!? If you know…Have a comment! Maybe it’s only old, deprecated stuff!?
Also read the documentation on this feature under section “Enabling notifications” of the low-code guide as some notifications require additional building blocks to function properly; Like the ‘Tracking’ BB for lifecycle events and the ‘Email’ BB for mail notifications.


User rename

A new user interface called the “User rename manager”…WHAT!? Yes, it took a while before finding it in the /system space as it’s called “Manage renamed users” (let’s say that’s the gap between what “development” builds and what “management” communicates!):

opa_0029

To put this to the test, I create a quick full enriched ‘Case’ entity with an action rule start a BPM. After publication, I use my opaadmin account to create entity instances and start BPM instances. Once done, I move into OTDS to update the username to opaadmin2:

opa_0030

Next is a consolidation into OpenText Process Automation to see the result in the OPA artifact:

opa_0031

Hmmmmm…nothing? Well, that’s just stupid me (and maybe too late when writing this!)…This ‘Managed renamed users’ artifact is also available in the specific organization:

opa_0032

Now what? Checkmark them all and hit the gazzz?

opa_0033

Unexpected!…It depends on a scheduled service container:

opa_0034

Let’s start it from a /system perspective:

opa_0035

Right, so the “Fetching” is working fine…Now the “Update” part:

opa_0036

Ohwwww nice…The state moved from “Triggered” to “Completed”. What I currently see is that the records are all 0!? Only, from a PIM perspective it did do the trick:

opa_0037

Or is this not the use-case? And if so, is this all? As from an entity instance perspective I still see the old names in crucial information:

opa_0038

So, nice feature, but work in process…


File Connector enhancements

Before we can use this connector, we need to do a deployment (with an “Express deploy”) of the two relevant CAP files in /system into the “Shared” space of the platform:

opa_0039

Just follow the wizard, and you’ll be fine…(You did the same exercise for the Aviator AI packages in the first section!)

And the next step? Well, follow this blogpost on this connector! You can skip the installation part, but have a look at the service container creation, runtime references and the possible service calls!

For this post we’ll look at the new settings which you find during creation of the service container of type ‘File connector’:

opa_0040

So, creating a file in /opt/opentext/ProcessAutomationCE/defaultInst/fileconnector/input/test.txt lets me call the ReadFile like this:

1
2
3
4
5
6
7
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<ReadFile xmlns="http://schemas.cordys.com/1.0/ac/FileConnector">
<filename>/input/test.txt</filename>
</ReadFile>
</SOAP:Body>
</SOAP:Envelope>

opa_0041

NICEEEE! AND reading a larger file gives me an error:

opa_0042

The release notes also describe cloud edition updates in YAML files during container creation and cluster settings on multi-node environments dur fail-over mode; Those are things I trust OpenText on their blue eyes. 😇

Notes during quick usage of the connector:

  • A naming-move from Cordys File Connector to OpenText File Connector.
  • Cleaning of a strange method set FileConnector3_0.FileConnector3_0 from the old connector.
  • Solid naming of the correct method sets for plain “File” and “Excel” (via Apache POI)!

Hopefully, the platform will also embrace the “ReST Gateway Connector” as standard installation package in the future!


System alerts

I looked in the section “Understanding the alert system” in the administration manual (that’s a post on its own!), but I quickly conclude we need to investigate the low-code guide under section “System alerts”:

opa_0043

Let’s first attach ourselves to the correct roles:

opa_0044

My Developer role and Administration role are sufficient too!

It’s a runtime-thingy (according to the roles), so let’s dive into runtime and move to the ‘Alerts’ homepage (for our own organization). Here we create a new alert (of type ‘Solution’) looking like this:

opa_0045

If you need a ‘System’ type of alert, you need to create this in the UI from the /system organization point of view! Interesting, as this is the first time we do something in the system/shared space in runtime! But fair…I get the point; I’ll dive into it with the sysadmin account (with a new incognito tab).

opa_0046

Right, so the alerting is in place…Now what? Well, how about logout and login and watch the magic:

opa_0047

You can click them away, but next login they show again until the alert is set inactive or expires!

It’s a nice feature, but will we use it that much? Large companies mostly have their own central emergency communication channels to broadcast the message (mostly also from a dedicated communications department that don’t have a clue about OPA).

Let’s not end negatively…I understand there is a demand for it, so great stuff as additional feature to the platform making it more mature.

Last thing…It would be nice to make it toggleable clicking the header itself (instead the collapse button on the far right). #FEATURE_REQUEST


Single entity searches on lists

Version 24.3 of the platform had this feature as a preview release; It’s now GA…AND Postgres seems to have support now!

These are the steps to enable it in runtime:

  1. Set ‘Include in search’ on the property!
    opa_0048

  2. Configure the search in /app/admin
    opa_0049

  3. Search (case_insensitive!) in runtime from a result list:
    opa_0050

Ohwwww mama!! The OpenText product/dev team will make friends with this feature!

I did a quick double-check on related entities on a new property (like ‘LifecycleTask’, ‘DynamicWorkflows’, ‘Contents’, or ‘Discussions’), but none of them inherit the ‘Include in search’ flag!

What happens on database level for this feature? Great question! Especially when you hit the “Configure Search” button in /app/admin! For this my friends, I raised the log-level of Postgres with these interesting queries as a result:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
SELECT *
FROM s_elementdefinitions
WHERE s_name = 'ItemListConfiguration'
AND s_payload IS NOT NULL
AND s_payload LIKE '%isFullextSearchId%'
LIMIT 10;

SELECT *
FROM s_elementdefinitions
WHERE s_name = 'ItemListConfiguration'
AND s_payload IS NOT NULL
AND s_payload LIKE '%case_name%'
LIMIT 10;

SELECT s_name
FROM s_elementdefinitions
GROUP BY s_name;

CREATE INDEX ei_fti_o2_365bac0bcac138a18983ee79908403b3 ON
o2opa_tipsprj_generalcase USING gin (to_tsvector('english', coalesce(case_name,
'') || ' ' || coalesce(case_subject, '')))

SELECT tablename,
indexname,
indexdef
FROM pg_indexes
WHERE schemaname = 'public'
AND tablename LIKE '%prj_general%'
ORDER BY tablename,
indexname;

The final query fired in runtime on the search itself looks like this:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
SELECT DISTINCT o2opa_tipsprj_generalcase.id                  AS col1,
o2opa_tipsprj_generalcase.case_name AS col2,
o2opa_tipsprj_generalcase.case_subject AS col3,
o2opa_tipsprj_generalcase.s_item_status AS col4,
o2opa_tipsprj_generalcase.s_is_temporary_copy AS col5,
o2opa_tipsprj_generalcase.s_lbb_id AS col6,
o2opa_tipsprj_generalcase.createdby_id AS col7,
o2opa_tipsprj_generalcase.lastmodifiedby_id AS col8
FROM o2opa_tipsprj_generalcase
LEFT JOIN o2opa_tipsprj_generaldiscussions
ON o2opa_tipsprj_generaldiscussions.id = o2opa_tipsprj_generalcase.id
WHERE (
o2opa_tipsprj_generalcase.s_item_status = '1'
OR o2opa_tipsprj_generalcase.s_item_status IS NULL)
AND (
o2opa_tipsprj_generalcase.s_is_temporary_copy = 'f'
OR o2opa_tipsprj_generalcase.s_is_temporary_copy IS NULL)
AND (
To_tsvector('english', COALESCE(s_discussion_topicname, '')
|| ' '
|| COALESCE(s_discussion_body, '')) @@ to_tsquery('sub001')
OR To_tsvector('english', COALESCE(case_name, '')
|| ' '
|| COALESCE(case_subject, '')) @@ to_tsquery('sub001'))
ORDER BY o2opa_tipsprj_generalcase.id limit '200' offset '0';

Here we can also clearly see it will find entity instances on discussion BB topics!


Discontinued and deprecated features

Nothing, nada, zero, none! So, we are “happy campers” during this GA release…🤠


That’s a “DONE” on AppWorks Platform 24.4; The playground is open on further consumption with interesting new features for this Q4 2024 release. Have a perfect weekend, and we see each other next week, with a brand-new “AppWorks Tips” post.

Don’t forget to subscribe to get updates on the activities happening on this site. Have you noticed the quiz where you find out if you are also “The AppWorks guy”?