/ Release  

A brand-new year, with a brand-new release; AppWorks 24.1 is GA for a features review

Hi there AppWorks fans,

Welcome to a new installment of AppWorks tips.

Who doesn’t like new features!? It’s like presents under the Christmas tree. With AWP 24.1 (GA for Q1 2024), we’re ready to have a first look. Grab your snacks and party-poppers, and have yourself an update on the latest features of OpenText AppWorks.


Let get right into it…

I made it myself easy to do an upgrade on my healthy 23.4 VM! Just because we can, and it saves lots of time; I follow my own upgrade post and this time, I also did an upgrade from OTDS 23.3 to 34.4 which was done within 1 min. following my own guide. I also did an upgrade of CARS from version 2.8 build 4 to build 6; This also removed all data insight of it (for some strange reason!), so #CYA with a backup and restore; See the upgrade post!

In this post we’ll review the OpenText AppWorks Platform CE 24.1 Release Notes. Have a look yourself at the PDF too; We’ll just dive through the latest futures delivered in this GA release.

The quick tag for this release would be #AppWorks24.1, but this didn’t include the above platform release notes.

What I DO see at the support site, is a great performance boost on searching and finding your things!! What works great must be spread, so here you have it; A great applause for the team behind it as I was amazed by the quick responses I get using the filter options on the left-side (you know; those annoying ones that were always upside-down and never did what they needed to return). It’s the first time (since long!!) that I can just start with clean search, simply select the “AppWorks Platform” and scope down on version “24.1” and get all I wanted! Looks like Santa didn’t sit still last year! Again; A great job! Comment me when you read this and are part of the team…Love to have a chat! 😉


🆕 Update on the available changes in 24.1 🆕

I already had a glimpse at the release notes about a license change, AI connectors, and JS API updates…Smells already great, let’s dive through the features…


New license format for AppWorks Platform

Great, a new licensing format!? Why would the world want this!? I thought OpenText already knew everything of us with all the AI-power; Why still licensing with even more tracking and metering? Or does it also open the door for a community/developer license for self-supportive companies or developers just wanting to try out the software (AND promote it to their customers!). It’s a long-lasting discussion and I find it’s about time to deliver our beloved platform to the outside world, so we can all benefit from it; Companies that require support will still find OpenText and with a community license the platform can be used by a far bigger audience that can also give you a greater feedback cycle to work with. Maybe it’s just me, but I will be first in line… 😁

The new format uses the Software Protection Service (SPS) module of OpenText Directory Services (OTDS); That’s why I also did an upgrade on OTDS to version 23.4 (which is included in the downloaded software package). The only license part I can remember done in OTDS is when I played with an OTCS installation for xECM (see the section “License upload”); So, will AppWorks start using this same license section in OTDS?

update_001

I can’t answer the question as the old licensing is still in place and works still greatly. It’s a recommendation (according to the documentation) to move to the new format (for an upgrade), but I already experienced differently (for a new installation)!

The license manager still looks and feels the same (on my upgrade):

update_002

FYI: I did an upgrade; that’s why the old license still works. Specially for you, I also did a quick fresh installation and indeed…The license screens are removed from the installation wizard! Finally, OT takes a new turn! So, a licenseless installation is possible now for simple development environments. I haven’t seen any limitation so far, but it’s a non-OTDS with non-SPS installation checked with the ‘sysadmin’ account. This is the license manager view after this clean installation:

update_003

I asked the AWP Product Owner on an update on my mindset:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Dear PO,

Best wishes for you (and the team) as well for 2024!

The years start great with a fresh licenseless installation of AWP 24.1
Does this mean a developer (non-production) can finally just install,
try the software, and spread the word? Or will we hit a restriction wall
somewhere with a non-OTDS and non-SPS-module installation? Will OT also
unfreeze by uploading the software into the public domain in the future?

24.1 "feels" also blazing fast (on loading things) or is this just a
placebo effect?

Great job!
Best regards,
//AppWorks Tips

This is the answer:

1
2
3
4
5
6
7
8
9
10
Hi Antal

Happy New Year!

My understanding is that without a license configured in OTDS,
you can only use sysadmin user and nobody else.
As for the speed - there isn't anything specific with 24.1 that
would make it faster that I know of!

//The product owner (PO)

So, that’s no “try-out the software option” from a developer perspective to spread the word; We even need to prepare to hit the wall when you do a fresh installation of the platform without a connected OTDS instance! 😞

Well, it is what it is…We’ll find a way!
Next one…


Runtime email templates support the expression editor

In runtime, we can create our own ‘End user email templates’ (already from earlier versions):

update_004

From the template creation screen, you can now read information (with the expression buttons) from the selected entity:

update_005

You need the ‘Email’ BB available on an entity (like my ‘Project’) to select it from the entity selection dropdown!


Enhanced size for email recipient fields

Next to the previous ‘Email’ BB on our entity, we can also add a new ‘Email template’ BB; The ‘To’, ‘Cc’, and ‘Bcc’ are now of type ‘Long Text’ to extend the list of email addresses:

update_006

To make sure this all works seamlessly together with the ‘Email’ connector (over the corresponding service container), the connector is enhanced to support these longer mailing lists! Have a look at this E-mail post for more details about the XML-emailboxes-part to configure the connector.


Artificial Intelligence support in AppWorks Platform

Now we’re talking. AI in AppWorks, we did a first implementation ourselves for the ‘Discussion’ BB in this post, but now we get an out-of-the-box AI connector and relevant ‘AI Tasks’ in BPM…It’s time to play! 🤓

I did some exploring, but couldn’t find anything in the first place…Until I did a look in the ‘Application Deployer’ artifact in the shared/system space:

update_007

Yes, my friend! Select all three of them and do an express deployment…Just follow the wizard; You’ll be fine!

After the deployment step, the first glimpse is already seen:

update_008

Looks like the Aviator icon? That’s a separate platform…right? Or are we misusing things here? Or is Aviator just an OpenText UI over ChatGPT and Google Bard; I guess not…Give me a comment!

Let’s open it and do a first configuration; Without #RTFM

update_009

I got the API-key from OpenAI; The platform behind ChatGPT!

The real information is eventually saved in the XML store:
update_010

Now what?

Time for a new service container of connector type ‘AI Client’. Open the ‘System Resource Manager’ and create a new service group with corresponding service container. You can use this input:

  • Connector type: AI Client
  • Name service group: sg_ai_client
  • Select the method set: Method Set AI Client Service 1.0 (with namespace http://schemas.opentext.com/ai/1.0)
  • Name service container: sc_ai_client
  • Let’s start automatically and assign the OS process (as recommended for all containers)

One screen is worth sharing in this wizard….It just took my attention:

update_011

So, the service container probably uses the settings for the earlier (Aviator) AI configuration part…I guess!

WAIT…There is no need for a new service container!! It looks like the deployment initiated one in the shared space with name ‘AI Client’!! So, I just stop mine and continue using the one in system! How did I find out? Continue the read…Eventually I even removed the service container I just created!

Next…What about a first service call? Via the ‘Web Service Interface Explorer’ artifact…Have a search for the namespace http://schemas.opentext.com/ai/1.0:

update_012

You see here that there is already a service group available which I didn’t notice!

What can we do with all the services? Well, most stuff is to maintain the config; There is one interesting SOAP service call:

1
2
3
4
5
6
7
8
9
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<SendRequestToAI xmlns="http://schemas.opentext.com/ai/1.0">
<ApplicationName>AviatorAI</ApplicationName>
<Message>What is the weather today in the Netherlands?</Message>
<Context>Be my weatherman</Context>
</SendRequestToAI>
</SOAP:Body>
</SOAP:Envelope>

Hmmmmm…That’s a nothing telling failure:

1
2
3
4
5
6
The request  did not process successfully because 
of java.lang.IllegalArgumentException:
Unexpected character 'B' (Codepoint: 66) on
[lineNumber=1, columnNumber=104, streamOffset=103].
Reason is [[Expected structural character or digit or 't' or 'n' or 'f' or '-']].
You can find a detailed report of this error in the log viewer.

My logging sudo tail -999f /opt/opentext/AppWorksPlatformCE/defaultInst/Logs/Application_Server.xml isn’t extremely helpful too!?

Doing it like this is working better; I also don’t have a clue what “Context” it should be (yet!)!?:

1
2
3
4
5
6
7
8
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<SendRequestToAI xmlns="http://schemas.opentext.com/ai/1.0">
<ApplicationName>AviatorAI</ApplicationName>
<Message>What is the weather today in the Netherlands?</Message>
</SendRequestToAI>
</SOAP:Body>
</SOAP:Envelope>

A quick #RTFM tells me what “Context” is…
update_013

Currently, I get an ‘UnknownHostException’ on api.openai.com over URL https://api.openai.com/v1/chat/completions…Strange!? A quick double-check on my VM with ping api.openai.com is indeed the same error!? Locally on my laptop it’s fine!? What is going on here!?

Installing sudo yum install bind-utils -y to get the ‘nslookup’-tool failed as well!? Pinging the IP received on my local laptop is working fine…Hmmmmm; Sounds like a DNS problems to me! AHA…A light starts to burn! I gave my VM a fixed IP with sudo nmtui (I normally use the DHCP settings) and didn’t fill in a gateway and DNS server!
You can use the Google DNS server on 8.8.8.8, but also have a look at Mullvad DNS…Interesting stuff!
Restart your network with systemctl restart NetworkManager

I simply did a quick fix adding an entry in /etc/hosts like this 104.18.7.192 api.openai.com

Now it’s working better with a valid response (which I can’t show you because of an exceeded quota on my try-out account). That’s the world of APIs and API-keys; Everything is possible as long as you pay your bill! What happened during this API mindset for the free opensource community!?

I don’t have any Google Bard API experiences (yet!), but asking How can I access your API layer? on https://bard.google.com gave some interesting resources (incl. this website):

update_014

I leave this one for you to try out! Comment me on the results…

Now for the BPM “AI Task”…A fascinating one:

update_015

Only, What is the point of doing it like this; It’s COOL, but if you add the Method Set AI Client Service 1.0 webservice interface as runtime reference to your project, you can do the same…right? Again, comment me…Also, if you don’t have a clue about “runtimerefs”.

Enough of all the AI…Let’s continue!


Dynamic workflow task reject action enhancements

2 improvements are found in the release notes for this feature. To get it implemented, I assign the role ‘Workflow Template Administrator’ to my account and add the ‘Dynamic Workflow’ BB to the entity (to start a new workflow on the entity instance in runtime!). On the related ‘LifecycleTask’ entity for this BB, you need to add a new ‘Task configuration’ to get an “Approval” to make it rejectable. Just like this:

update_016

The improvements sound like this:

  1. When a task is rejected and assigned, “Assign to workflow initiator” is the default option.
  2. When a task is rejected, a new option “without assignment” is available. Here, the task can be only rejected and not assigned to any task owner or user.

update_017

I guess “without assignment” equals the “Do not assign to anyone” option!?

Read more about the ‘Dynamic workflow’ in this post…Newer releases of the platform also have information about this BB as it gets improved in almost each release!


AppWorks Client API to refresh the current layout

Have a look here, to get yourself a quick start. The change for this release looks like this call with support to refresh the current layout (refreshCurrentItem) loading the latest data without any impact to the breadcrumb navigation:

1
2
3
4
5
6
7
8
9
10
publicAPIProvider.navigate(
"{itemId}",
{
"layoutId": "{layoutId}",
"clearBreadcrumb": true,
"breadcrumbName": "{newName}",
"refreshCurrentItem": true,
"type":"reusable"
}
);

New web service on the ‘Sharing’ building block

My first thought was ReST, but it’s a SOAP service which you can find in the ‘Web Service Interface Explorer:

1
2
3
4
5
6
7
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<GetEffectiveACLEntries xmlns="http://schemas.cordys.com/entity/sharing/1.0">
<ns0:ItemId>PARAMETER</ns0:ItemId>
</GetEffectiveACLEntries>
</SOAP:Body>
</SOAP:Envelope>

This is the result after creating a simple ‘Project’ entity with the ‘Sharing’ BB (and mandatory ‘Security’ BB) implemented like this:

update_018

update_019

Publish the entity, create an instance in runtime, and share it:

update_020

Back in design-time, we can have a valid response (cleaned from namespaces!) on our ‘ItemId’ for the ‘GetEffectiveACLEntries’ call:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<data>
<GetEffectiveACLEntriesResponse>
<EffectiveACLEntries>
<EffectiveACLEntry>
<UserID>awdev@awp</UserID>
<UserDisplayName>AppWorks Developer</UserDisplayName>
<PermissionName>ins_sharing</PermissionName>
<PermissionDisplayName>ins_sharing</PermissionDisplayName>
</EffectiveACLEntry>
<EffectiveACLEntry>
<UserID>otadmin@otds.admin</UserID>
<UserDisplayName>otadmin@otds.admin</UserDisplayName>
<PermissionName>NoAccess</PermissionName>
<PermissionDisplayName>No Access</PermissionDisplayName>
</EffectiveACLEntry>
</EffectiveACLEntries>
</GetEffectiveACLEntriesResponse>
</data>

Integration with Core Content – Preview release

Before reading the feature have a look at the 23.4 update post. Here “OpenText Core Content” is explained in more detail. The post already quotes about the ‘Business Workspace’ integration from AppWorks with Core Content. I don’t have access to any Core-stuff, so I simply make it easy with a copy of the release notes information:

1
2
3
4
5
6
7
8
The AppWorks Platform integration with Core Content (which is still a preview 
feature in AppWorks Platform 24.1) has been enhanced to support linking of an
existing workspace in Core Content with an entity instance. Administrators can
configure whether workspaces need to be created or linked, while creating
entity instances. When an application user creates an entity instance, based
on configuration, the matching workspace in found in Core Content and linked
to the entity instance. After the workspace is linked, the application user can
work with the workspace and documents using the Business workspace panel.

I trust the blue eyes of OpenText that it works as described! 😇


Discontinued and deprecated features

Nothing is deprecated, but we do have some discontinued features:

  1. You can’t install AWP using the old license model; I saw already the removal of the license screen during my fresh installation. So, no fetching or providing a license key during installation! Great, but now AppWorks Platform 24.1 requires the SPS based license file. How will this limit our AppWorks Tips path must be seen!? Hopefully, they still provide demo licenses to try the latest features possible to show you what’s new and to help you further during your explorations.
  2. Support for SQL Server 2014; That’s 10 years ago…So, agree!
  3. PostgreSQL 11.x; Fine, I already moved to version 13.x; Having a look here tells me there is indeed no support anymore.
  4. OTDS 22.1 and earlier versions of OTDS; Probably because of the new license implementation…I guess!?

That’s it…AppWorks playground 24.1 is open and ready to build/upgrade your solution. It’s a ‘DONE’ from my side on this update post with a small overview of the new GA features for this Q1 2024 release. Have a great weekend and I CU in the next post; next week.

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”?