/ Release  

Installation survival guide update 21.2 (and what's new!)

Hi there AppWorks fans,

Welcome to a new installment of AppWorks tips.

The new GA AppWorks platform version 21.2 (also known as version 21 EP2) is available and as you (probably) already know this is made available for Q2 2021. In this post we’ll have an update on the new features released for this version!


Let get right into it…

The main installation menu got an update for you to consume. It provides a 10 steps procedure to install a AppWorks environment from scratch. This post will do a review on the release notes (OpenText AppWorks Platform 21.2 Release Notes) delivered with the installation package. We will do a deeper dive on the newest functionalities delivered in this GA release. More information is also available in that release notes PDF.


🆕 Update on the available changes in 21.2 🆕

With a new version of the platform we also get a lot of new functionality. This will give you a proper overview of the ‘new stuff’.

Let’s just jump through the list of new features in the release notes and see what’s up in this release.

Renaming an entity

This was already possible in the platform, but when you are in ‘refactor’ mode for your solution you probably saw already several problems when you tried to rename an entity. Relations get corrupted, publication fails, packaging fails, other developers can’t consolidate without errors. This release solves these problems which make renaming of an entity a more save action to do. We can try it out in this post, but you just need to ‘experience’ it in your own solution and see if it works much more smoothly.

update_001

Sections support inside a repeating group container

A ‘repeating group container’ can be created on a form. Make sure you have a ‘to many’ relationship available to another entity which you can drag onto the create form. I have a ‘to many’ relation from my ‘project’ entity to the ‘todo’ entity.

Now that you have the container in place you are also able to insert ‘sections’ in the container. In previous releases you could only create sections on the form itself.

update_002

I hear you say…What is the advantage of sections? It makes the application responsive, and a section can be applied with a business rule, so you are able to hide/show it.

Filter options for repeating group containers

Again for the same container component as the previous feature. We have a filter option available which makes it possible filter out the repeating items in the container. Keep in mind that the option is only available one you create a ‘bi-directional’ relation. For this post I also created a ‘to one’ relation from the ‘todo’ entity to the ‘project’ entity which we also create as bi-directional.

update_003

After a publication in runtime we can use this filter like this:

update_004

Auto-suggest configuration to select an option in a drop list presentation

This ‘Auto-suggest’ option was already seen on ‘to one’ relation components in a form. This makes it possible to create a dropdown which supports ‘Type-a-head’ for filtering the items in the dropdown. We saw it also in ‘to many’ relation components in a form. This makes it possible to create a nice ‘keywords’ box.

For this feature we can now also create ‘autosuggest’ dropdown lists (not only for a relation component) for these type of properties: ‘Boolean’, ‘Static/Dynamic enumeration’.

Let’s see…

Add 2 properties to the ‘project’ entity

Name Label Type Length Default value
prj_status Status Enumerated integer 0, 1, 2, 3
prj_is_active Is active Boolean false

In the ‘Create’ form we add those 2 properties and when we make it of type ‘Drop list’ we see the ‘Enable autosuggest’ option…Trust me…It’s also the case for the ‘Is active’ property! 😎

update_005

How does it ‘feel’ in runtime?

update_006

Nice stuff…Next one!

Ability to design form grid column sizes and enable horizontal overflow in runtime

Add a ‘to many’ relation component on a form, and you see it’s possible to convert it to a grid. On this grid we can place properties for the columns of the grid. The screenshot shows how to move the width of the columns. This resized width is also respected (as a default) in runtime. Users are still able to move the column size in runtime.

update_007

Audit of AppWorks Administration

I will admit the ‘Audit viewer’ artifact is never used by me, but let’s see…can’t be that hard!?

After a first start of the artifact and hitting the ‘Search’ button we get our first error…A not running service container!

update_008

The ‘System resource manager’ brings solvation:

update_009

Let’s spin it up in /system as set it to ‘Auto’ start!

A second try will show the first results in the ‘Audit Viewer’…

Back to the feature which tells us the /app/admin is audited. Ok, let’s make our solution ‘Unavailable’!

update_010

hmmmm….nothing in the ‘Audit viewer’

A deletion of the solution maybe? Also, nothing!?

#RTFM…This time the administration guide:

update_011

Aha…Now it gets more clear….Let’s try an Email config! This is just a document in our project of type ‘Email Configuration’ nicely saved in a ‘mailconfigs’ folder in our project. After publication we get our (just deleted) solution back in /app/admin with a mail configuration node we can update:

update_012

Again…A search in the ‘Audit Viewer’ is not providing me any more information!?

Well, let’s see if the EIS connector will audit something as it’s also in the list of artifact types for auditing, and it’s also in the list with new features in 21.2.

Let’s continue and see if we get an update in the below section on what we’re doing wrong here:

UPDATE SECTION (after again #RTFM)

Ohhhh, now you see I also ‘journey’ along as we go!!!

In the /system organization we have an artifact called ‘Audit Configuration’ (You also see this artifact when a user is applied with the internal “Audit Administrator” role)…I should have known that one as I already mentioned it somewhere on this blogsite, but you see…Auditing is an underestimated feature…also for me!

update_013

Mark the options you want to audit on and try again…Now we’re getting somewhere:

update_014

Just to be curious…What’s happening in the database? Let’s do a double check with HeidiSQL, but not before we’ve enabled some logging on our database, so we see what’s inserted.

Edit this file (for our PostgreSQL database!) sudo vi /var/lib/pgsql/11/data/postgresql.conf

Update this setting: log_statement = 'all'

Restart the service: systemctl restart postgresql-11.service

Check the logging: sudo tail -f /var/lib/pgsql/11/data/log/postgresql-{day}.log

Update something in the mail configuration in /app/admin and we see an interesting query passing by:

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
INSERT INTO CORDYS_ARTIFACTS_REVISIONS(AUDIT_ID, OPERATION, PERFORMED_BY, PERFORMED_AT, STATE, REVISION_ID, REVISION_REMARK, GROUP_REVISION_ID, STATUS) VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9)

#The parameter details:
$1 = '0800273e-9411-a1eb-a9d0-20039726839d',
$2 = 'Update',
$3 = 'cn=awdev,cn=organizational users,o=appworks_tips,cn=cordys,cn=defaultInst,o=mydomain.com',
$4 = '1619519331520',
$5 = '"{JSONE_PART_BELOW}"',
$6 = '0800273e-9411-a1eb-a9d0-d70818b42910',
$7 = 'The ''Update'' operation was successfully performed on element ''EmailConfigConfiguration''.',
$8 = '',
$9 = '0'

#That json part formatted
{
"id":"3a7a463adc2b35b69adfe41b2811a257",
"name":"EmailConfigConfiguration",
"typeId":"94E27187D8E349ADB352483539FD30F1",
"type":"EmailConfigConfiguration",
"containerId":"0800273E9411A1EBA98223AA28E8B633",
"containerVersionId":null,
"displayName":"MyEmailConfiguration",
"parentId":"0800273e9411a1eba9ce2fd766aa3dc0",
"definition":{
"fromMailId":"contact@appworks-tips.com",
"replyToMailId":"contact@appworks-tips.com",
"fromMailName":"Appworks Tips Contact",
"emailProfileUserID":"contact@appworks-tips.com",
"chk":false,
"businessIDMappings":[]
},
"usage":{
}
}

Let’s have a same kind of query with HeidiSQL to grab all the same kind of data:

1
2
3
4
5
6
7
8
9
10
11
SELECT audit_id,
operation,
performed_by,
performed_at,
state,
revision_id,
revision_remark,
group_revision_id,
status
FROM cordys_artifacts_revisions
WHERE operation = 'Update'

hmmmmm….interesting! A table to watch out for as auditing can create a large table with entries in a database!

Don’t forget to disable the log setting again when you’re done!!

Next feature…

Audit of Entity Runtime

Well, I don’t know if you noticed the image from the previous audit feature section, but there is also a mark for auditing ‘Entity Instance’ data. Let us “unleash the power within” and see the results in the audit viewer (after we’ve created some instances in runtime of our ‘project’ entity). This even works without the usage of the ‘History’ BB on the entity itself.

update_015

Web service building block support for EIS entities

Now we’re getting into an interesting feature update! I’m a great fan of the EIS connector as it makes it possible to “embed” external data directly into our entity modeling solution. We already wrote about this feature on how to create an EIS connector…let’s follow that post again and see if we can get a glimpse of the ‘Webservice’ BB and the type of service group we need to apply to it!

After some time…There it is in full glory (see the ‘External Entity’ in the header)!

update_016

Let’s see what the ‘Web Service Interface Explorer’ is telling me!?

update_017

Ok, so we need to connect those interfaces to an ‘ApplicationServer’ service group!

We’ll quickly create one…I assume you already know by now how to do this? Let me know otherwise in the comments…

After a retest I still got an error to have a ‘synch’…That’s something we can trigger in the /app/admin:

update_018

After this you should be able to invoke a request like this to create a new EIS ‘project’ instance:

1
2
3
4
5
6
7
8
9
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<Createproject xmlns="http://schemas/appworks_tipsgeneric/project/operations">
<ns0:project-create xmlns:ns0="http://schemas/appworks_tipsgeneric/project">
<ns0:subject>hello</ns0:subject>
</ns0:project-create>
</Createproject>
</SOAP:Body>
</SOAP:Envelope>

And retrieve via an invoked request like this:

1
2
3
4
5
6
7
<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP:Body>
<find_hello_subject xmlns="http://schemas/appworks_tipsgeneric/project/operations">
<ns0:Cursor xmlns:ns0="http://schemas.opentext.com/bps/entity/core" offset="0" limit="100" />
</find_hello_subject>
</SOAP:Body>
</SOAP:Envelope>

Nice……Next!

Exporting more result list rows to a CSV file

It’s about this feature in runtime:

update_019

  • CSV can export: 50.000 rows
  • Excel can export: 5.000 rows

Better protection of passwords in the Magellan BI & Reporting data design export file

We’re talking about this feature from the /app/admin panel:

update_020

It exports the selected entity data (a kind of blueprint) in a ‘.datadesign’ file which can be uploaded into Magellan BI & Reporting (= iHub). This screenshot gives you a glimpse of my export where we see the encrypted-property passing by:

update_021

In earlier release this was ‘encoded’ instead of ‘encrypted’!

The difference? (quoted from here):

  • Encoding is for maintaining data usability and can be reversed by employing the same algorithm that encoded the content, i.e. no key is used.
  • Encryption is for maintaining data confidentiality and requires the use of a key (kept secret) in order to return to plaintext.

Integration with OpenText Intelligent Viewing (OTIV)

We already heard a lot about this new viewer during “OpenText Enterprise World Europe 2021 Q2”. We also learned this viewer works seamlessly with ‘OpenText Content Server’, but is not (yet!) fully functional with the also beloved ‘Documentum’ platform. As I’m a Documentum guy lets quickly see what we need to accomplish to make it work (or maybe we don’t need an external DMS!?). I have a backlog item available to play with the “Intelligent Viewer” where we do a deeper dive. This is already a quick list of items which we will cover in that post.

  • Is the viewer already available on the platform or do we need to install it locally (I guess this last one)…I know there’s a separate download available

  • Can we use this viewer already for content on the platform itself? When I look at the ‘Repository’ service container in /system I see already some options passing by:

    update_022

    Comments on this screen:

    • What are the values for those 2 URLs (publication/viewer). A quick look through the documentation of ‘Intelligent Viewing’ brings me to these kinds of URLs…(we’ll keep those in mind!)
      • Publication https://otiv-publication-<namespace>.<ingressDomainName>/publication/api/v1/version
        Viewer https://otiv-viewer-<namespace>.<ingressDomainName>/viewer/api/v1/version
    • Looks like we also need OTDS for the authentication details (Client ID / Client secret)
  • We can always create our own ‘Documentstore’ service connector in our own organization where we can apply the same details (maybe this is also a better choice to do, but we’ll see).

RPA service deployed as default deployment of AppWorks Platform

RPA is an abbreviation for Robotic Process Automation. A service which makes it possible to further automate processes and tasks. You can read more about this feature in the ‘Advanced Developer guide’ where we find a chapter called “Using an RPA connector in BPM”. This chapter also described a scenario where RPA can automate manual tasks.

The feature makes it easier to make RPA available for the platform…We’ll see because I just made a backlog item to have a deeper dive on this feature. To give you a small glimpse:

  • You need an account to an external service called UiPath. Let’s see if the ‘Free try-out’ options can be useful for our post on RPA.

    • On this site you need to get your hands on UiPath Studio and Orchestrator.
  • There is a manual about ‘RPA Service Cloud Deployment Guide’

    • The manual can be found in the ‘OpenTextRPAService’ folder of the downloaded ‘suite’ package

      update_023

    • The ‘On-premises’ folder contains the ‘rpaservice.war’ we can deploy to an application server like Tomcat.

  • Once the RPA service is available and connected with UiPath it’s possible to send an automation message within BPM like this:

    update_024

Let’s see what we can trigger in a separate post…Let’s continue to the next feature.

User experience enhancements of Activity Flow

Small changes in design-time:

  • We can now copy an ‘Activity flow’
  • Label changes in the ‘trigger’ options
  • Edit the name of the flow afterwards, but I thought this was already released!?

In runtime? Well, still the same!

TIP: If you didn’t know (I was not aware of it)…#RTFM “Activity flows complements a Lifecycle”…So, when you add this BB to your entity you will also see the ‘Task list’ BB popping up just like you also see when you add a ‘Lifecycle’ BB.

Multi-tenancy support for Email connector

This only applies when AppWorks is deployed as a container (like in Docker) in multiple nodes/tenants. It’s a bit hard to showcase this with nice screenshots, so we need to trust OpenText on their blue eyes this will work. What can we expect:

  • In multi-tenant mode each organization needed to create its own email connector (a new service container via the ‘Resource Manager’). With this release we only need an email connector in the /system organization which shares the information over the several organizations.
  • It reduces resources (as we only need 1 service container)
  • The cloud deployment guide explains (in YAML files) how to configure it all
  • Email connectors created in an older release will continue to work after the upgrade.

That’s it…Playground 21.2 is open and ready to be used. I give it a ‘DONE’ on this update post with a nice overview of the new features for this GA 2021 Q2 release. Happy low code with this brand-new release, and I see you in the next 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”?