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:
🆕 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:
Also, when you open the entity…It all “smells” like the same good old “AppWorks”! 💪
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
:
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 | I would like to build an advanced 'todo' application that structures my |
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:
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 | Add an auto generated ID to all the entities with a three character |
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:
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:
Give the app a name like task_management
(It can’t contain weird characters!); For the logo we can use Task 2.0
:
For your reference…The first (
Project 2.0
) try failed for the below reasons!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 deniedAfter 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 groupsotadmins
andotdsadmins
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 | at com.opentext.cordys.entity.rest.workflowTemplate.WorkflowTemplateRestController.generateWorkflowTemplate(WorkflowTemplateRestController.java:111) |
It’s an error on the workflow creation attempt:
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…
Here we can customize the workflow via prompting! Nice…Let’s see what a prompt like this will change:
1 | A manager must approve the creation of the project. Once the project gets into a |
With an interesting (and valid) outcome:
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:
Finally, a smooth AI eXperience:
…
What is generated in “the new” design-time/dev-space:
And the “good old” classic space:
In OTDS:
On the administration side of things:
In runtime (after creating a project and starting a dynamic workflow)
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 | export GOOGLE_API_KEY={your_key} |
This is an example via a service call after proper “Google Gemini” configuration (in my own organization via the ‘AI Configuration’ artifact)
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. 🤔
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:
Great stuff…And feels complete! 👌
AND…I LOVE already this menu switcher/opener/mover:
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:
Clicking the “bell” will show the notifications:
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:
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 | { |
…
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.
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!):
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
:
Next is a consolidation into OpenText Process Automation to see the result in the OPA artifact:
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:
Now what? Checkmark them all and hit the gazzz?
Unexpected!…It depends on a scheduled service container:
Let’s start it from a /system
perspective:
Right, so the “Fetching” is working fine…Now the “Update” part:
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:
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:
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:
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’:
So, creating a file in /opt/opentext/ProcessAutomationCE/defaultInst/fileconnector/input/test.txt
lets me call the ReadFile
like this:
1 | <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"> |
NICEEEE! AND reading a larger file gives me an error:
…
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
toOpenText 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”:
Let’s first attach ourselves to the correct roles:
My
Developer
role andAdministration
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:
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).
Right, so the alerting is in place…Now what? Well, how about logout and login and watch the magic:
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:
Set ‘Include in search’ on the property!
Configure the search in
/app/admin
Search (case_insensitive!) in runtime from a result list:
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 | SELECT * |
The final query fired in runtime on the search itself looks like this:
1 | SELECT DISTINCT o2opa_tipsprj_generalcase.id AS col1, |
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”?