Version 0.13.0

addESDK-1800
Gradle Plugin: Upgrade to Gradle version 6.5
As an ESDK App Developer I want to be able to use the latest Gradle version so that I can profit from new features.

Acceptance criteria:

ESDK Gradle Plugin is compatible with Gradle version 6.5
Project Initializer generates projects with Gradle Wrapper in version 6.5
The nexus-artifact-publisher uses a Gradle Wrapper in version 6.5
warning

Version 0.12.35

bug_reportESDK-2220
Some jars get added to the app's classpath multiple times
E.g. for agliz:

{code}
sort java/apps/agliz/META-INF/de.abas.erp/classpath
lib/agliz-0.0.6.jar
lib/caffeine-2.6.2.jar
lib/commons-codec-1.11.jar
lib/commons-codec-1.11.jar
lib/commons-logging-1.2.jar
lib/commons-logging-1.2.jar
lib/eddsa-0.3.0.jar
lib/fluent-hc-4.5.8.jar
lib/httpclient-4.5.8.jar
lib/httpclient-4.5.8.jar
lib/httpcore-4.4.11.jar
lib/httpcore-4.4.11.jar
lib/ini4j-0.5.1.jar
lib/jackson-annotations-2.9.0.jar
lib/jackson-core-2.9.4.jar
lib/jackson-core-2.9.4.jar
lib/jackson-databind-2.9.4.jar
lib/slf4j-api-1.7.25.jar
lib/versionchecker-0.10.17.jar
{code}

It seems that all transitive dependencies are added for each dependency which has them as its own dependency. They have to be made unique before adding them to the app's classpath file.
check_circle
bug_reportESDK-1531
Exception "cannot be cast to de.abas.screen.model.core.GridLayout" after installScreens
If you try to install a line zoom tab into a screen which does not have a line zoom at all then the exception

{noformat}de.abas.screen.model.core.NotebookLayout cannot be cast to de.abas.screen.model.core.GridLayout{noformat}

occurs.

This happens because tabs are exported without a surrounding GridLayout but the screen structure must have a GridLayout as its parent container after import.
check_circle

Version 0.12.34

addESDK-2357
Improve data export documentation
As an ESDK App Developer I want the documentation on exportData to be understandable, so that I can use it to get started.

Acceptance criteria:
Clarify object identification and the use of GUID.
Clarify {{roots}} and {{dependents}}.
check_circle
bug_reportESDK-1702
abas Tools does not recognize the integTest configuration
If you create a new ESDK project with the Project Builder or Project Initializer and import it into abas Tools, the default configuration {{IntegTests}} cannot resolve the {{EsdkIntegTest}} classes.

Workaround:
In the {{build.gradle}} file replace the line

{{integTestImplementation 'de.abas.esdk.test.util:esdk-test-utils:0.0.2'}}

with

{{testImplementation 'de.abas.esdk.test.util:esdk-test-utils:0.0.2'}}
check_circle
bug_reportESDK-1100
Task importDictionaries runs too long for screens
Due to multiple screen reorgs and/or other repeated stuff we do during importDictionaries for screens, this task takes very long to run.
check_circle

Version 0.12.33

bug_reportESDK-2233
Java version and source encoding not configured
In the generated Java project (from Project Builder) no source and target Java version is configured. Also the source file encoding is not configured.
check_circle
addESDK-2201
Set env.ERP_VERSION in abasAppTests pipeline
As an ESDK App Developer I want to be able to check the ERP version outside of production code. Also I want the ESDK App Test Pipeline to have this environment variable to be set, so I can check if version specific dependencies have to be set.

Acceptance Criteria

Each container has env.ERP_VERSION environment variable which stores current erp version
check_circle
bug_reportESDK-1967
createWorkdirs does not create a new workdir object if none is there
When trying to install an app with a custom workdir on an empty system, the following error occurs:
{code}
> Task :createWorkdirs FAILED

FAILURE: Build failed with an exception.

What went wrong:
Execution failed for task ':createWorkdirs'.
> Problem while creating workdirs: No editable workdir object found, could not add working directory for the installing user
{code}

The Gradle Plugin should create a new workdir object if none is there and add the new working directory there.
check_circle

Version 0.12.32

addESDK-1936
Map BU4 to BU3 for Essentials versions from 2019r4 on
As an ESDK App Developer, if the target abas Essentials version is 2019r4 or later, I want the ESDK Gradle Plugin as well as the App Installer to automatically convert BU4 buttons to BU3 ones so that I don't have to modify and release new versions of all my existing apps in order to be able to be installed on these newer Essentials versions.

[Innovation Number 20180146|https://extranet.abas.de/sub_de/index.php?referrer=https://innosearch.abas.de/sn_en:20180146]

{quote}The button type BU4 has been discontinued.

Through upgrading, all individual variables in tables of variables and infosystems are changed from BU4 to BU3.

If after upgrading you import a table of variables from an older version using the service command, all BU4 types are also changed BU3.
{quote}

Acceptance Criteria:
When installing to an abas Essentials version 2019r4n00, the type BU4 gets replaced with BU3
The replacement takes place while the vartab is imported. Thus, already installed app versions (that were converted by the erp upgrade) don’t get changed if the BU3 which formerly was a BU4 gets installed.
check_circle
addESDK-1867
Allow SSH_KEY usage in the gradle.properties
As an ESDK App Developer I want my app project to be able to use ssh key pairs to connect to an abas client using public key authentication instead of using a password.

Acceptance Criteria

It is possible to connect to an abas client with an ssh key pair
check_circle
addESDK-1440
App Installer checks if the app to install was built with a newer ESDK Gradle Plugin version
As an app-installing System Administrator I want the ESDK App Installer to check if it is able to install the app completely so that I don't use a too old version by mistake.

Acceptance Criteria:

Before starting the first installation step, the ESDK App Installer reads the property {{builtWithEsdkVersion}} from the app's manifest file and aborts the installation if the installer's version is older than the Gradle plugin version the app was built with.
check_circle

Version 0.12.31

addESDK-2097
Add information about permissions to the ESDK App Installer documentation
As an Admin/SDP installing an ESDK App I want to know what users with what permissions I need to install an ESDK App, so that I can run the installation successfully.

Acceptance criteria:
The ESDK App Installer documentation contains a permissions section which describes the needed permissions in detail.

Details can be found in the [ESDK Documentation: Permissions|https://documentation.abas.cloud/en/esdk/#_permissions].
check_circle
addESDK-1571
Data Import: Row update instead of re-import
As an ESDK App Developer I want the rows of objects that belong to my app to be updated instead of deleted and recreated, so that exisiting rows are kept.

Acceptance criteria:

A data import mode exists to define row update instead of row re-import.
Fields for row identification can be defined.
If the data import row update mode is set, rows belonging to the app are:
if they already exist:
and can be identified uniquely: updated
else: if importMode is tolerant: update the first matching row
else: fail
else: appended at the end of the table
Any rows that already exist and are not contained in the import file will persist (same line number) and not be changed.

Details can be found in the [ESDK Documentation: Configuring the Import Behaviour|https://documentation.abas.cloud/en/esdk/#_configuring_the_import_behaviour].
check_circle
addESDK-717
Make exportVartab consider groups
As an ESDK App Developer I want to specify what groups of a database to export, so that I do not need to manually delete groups which I do not need from the exported schm file.

Acceptance criteria:

exportVartab considers groups
groups can be specified using:
Standard databases: the German group name
Custom databases: the classname
if no groups are specified all groups containing fields that belong to the ESDK App are exported

Details can be found in the [ESDK Documentation: exportVartab|https://documentation.abas.cloud/en/esdk/#exportVartab].
check_circle

Version 0.12.30

bug_reportESDK-2050
The Gradle Plugin does not close all file handles to log files
Already after running the task {{checkPreconditions}} the Gradle daemon holds file handles to some EDP log files:

{code}
build/logs/minimum-essentials-version-edp.log
build/logs/checkPreconditions-edp.log
{code}

They are closed when the Gradle daemon is stopped ore even disabled. See the [Gradle User Guide|https://docs.gradle.org/current/userguide/gradle_daemon.html] for getting to know how to do that.

There are situations where this does not help. E.g. when a task depends on {{clean}} and your OS is MS Windows. Then, the OS keeps locking the log files and prevents removing them. As a workaround you can exclude the {{clean}} task from being executed:
{code}
./gradlew -xclean
{code}
check_circle
addESDK-2011
Data Import: Make table deletion configurable
As an ESDK App Developer I want to configure whether a table of an object that is updated via data import gets deleted and re-imported or is ignored by the import.

Acceptance Criteria:
An option {{"rowimportmode"}} exists to switch table deletion off.
When table deletion is switched off ({{"rowimportmode": "alwaysAdd"}}) and the import file contains rows, the rows get appended.
Deleting the table on data import is the default behaviour ({{"rowimportmode": "clearBeforeImport"}}).

Details can be found in the [ESDK Documentation: Configuring the Import Behaviour|https://documentation.abas.cloud/en/esdk/#_configuring_the_import_behaviour].
check_circle

Version 0.12.29

bug_reportESDK-2040
CONFIGURE FAILED when importing an App Project into Eclipse/abas Tools
When importing an ESDK App project into Eclipse/abas Tools as a Gradle project, the build fails during configuration phase:

{code}
CONFIGURE FAILED in 40s

Caused by: java.lang.IllegalStateException: Task information is not available, as this task execution graph has not been populated.
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.ensurePopulated(DefaultTaskExecutionGraph.java:308)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.getAllTasks(DefaultTaskExecutionGraph.java:285)
at de.abas.esdk.gradle.EsdkPlugin.collectExecutedTasks(EsdkPlugin.kt:111)
at de.abas.esdk.gradle.EsdkPlugin.accesscollectExecutedTasks(EsdkPlugin.kt:26)
at de.abas.esdk.gradle.EsdkPluginapply4.execute(EsdkPlugin.kt:74)
at de.abas.esdk.gradle.EsdkPluginapply4.execute(EsdkPlugin.kt:26)
{code}

As a result, Eclipse cannot list and execute the project's Gradle tasks.
check_circle

Version 0.12.28

addESDK-2010
createEsdkAppJar prints a download link to the App Installer matching the Gradle plugin's version
As an ESDK App Developer I want the Gradle task {{createEsdkAppJar}} print a download link to the App Installer matching the used Gradle plugin's version so that I can write a build pipeline that provides all information a consultant needs for installing the app.

Acceptance Criteria:
After printing the path to the built app jar, {{createEsdkAppJar}} prints the following download links:
To the ESDK App Installer matching the version which was used for building the app
To the latest ESDK App Installer release version, if different than the previous one
check_circle
addESDK-2009
Add the old task names to the documentation (again)
As an App Developer using a Gradle plugin version before 0.12.23 I want the old task names to be mentioned in the documentation so that I can still find the right documentation without guessing.

Acceptance Criteria:
Each task that was renamed has its former name mentioned in parentheses in the documentation.
check_circle
bug_reportESDK-1996
If screen has no table, installation fails due to line zoom creation
If a screen has no table the installation of the ESDK App fails when trying to change the line zoom. In that case it should skip the line zoom completely.
check_circle

Version 0.12.27

bug_reportESDK-2006
Gradle Plugin: Version 0.12.26 has an internal dependency
The internal dependency {{app-meta-json-model}} cannot be resolved since it is only available from our internal repositories. This leads to:

{code}
A problem occurred configuring root project 'review'.
> Could not resolve all artifacts for configuration ':classpath'.
> Could not find de.abas.esdk.app.meta.json.model:app-meta-json-model:0.0.2.
Searched in the following locations: https://plugins.gradle.org/m2/de/abas/esdk/app/meta/json/model/app-meta-json-model/0.0.2/app-meta-json-model-0.0.2.pom
Required by:
project : > de.abas.esdk:de.abas.esdk.gradle.plugin:0.12.26 > esdk:gradlePlugin:0.12.26
{code}
check_circle

Version 0.12.26

addESDK-1756
Gradle Plugin: Write meta.json file for App
As an ESDK App Developer I sometimes use the Gradle Plugin for the final deployment for my App and expect the {{meta.json}} file to reflect the status of my App no matter which Tool I used to deploy it.

Acceptance criteria:

{{meta.json}} file is written for Apps installed with the Gradle Plugin as well
{{meta.json}} file contains all tasks executed to deploy the App (e.g. if task {{fullInstall}} was used the {{meta.json}}, should list all tasks contained in {{fullInstall}}, if a task was excluded using {{-x}} that should also be reflected)
The infosystem ESSENTIALSAPPS can show the Gradle tasks
check_circle
addESDK-1725
exportAll does not have a specific output for exportVartab
As an ESDK App Developer I want to see all export tasks that are executed when running {{exportAll}} so that I don’t get confused.

Currently the build output is misleading:

{code:bash} ./gradlew exportAll

> Task :exportData
Nothing to export
No or empty data section found in the app section of your build.gradle file

> Task :exportDictionaries
Could not generate sub dictionary for -1: ContainerContent

> Task :exportEnums
Nothing to export
No or empty enums section found in the app section of your build.gradle file

> Task :exportIS
Nothing to export
No or empty infosystems section found in the app section of your build.gradle file

> Task :exportKeys
Nothing to export
No or empty keys section found in the app section of your build.gradle file

> Task :exportNamedTypes
Nothing to export
No or empty namedtypes section found in the app section of your build.gradle file

> Task :exportScreens
Screens: {Container:Container=[A], Container:Containertype=[A]}

BUILD SUCCESSFUL in 7s
8 actionable tasks: 8 executed{code}

{{exportVartab}} is still being executed though.

Acceptance Criteria:

All export tasks that get executed print if there is nothing to export or (otherwise) what is currently being exported
An additional hint and a link to the documentation is given if an export task is called explicitly by its complete name (instead of run by a dependency of the lifecycle task {{exportAll}})

check_circle
addESDK-1375
Publish Release Notes Content to abas Community Platform
As an App Developer I want to read the ESDK release notes directly on the Community Platform, so that I don't have to click the link to the landing page and save time.

Acceptance criteria:

All future release notes are available for the stakeholders in one Topic "ESDK Release Notes" on community.abas.de, category Customers > For Developers
Release notes are properly formatted
check_circle

Version 0.12.25

bug_reportESDK-1990
Exclude all licensing classes from code coverage tasks
The licensing classes should not be considered for code coverage calculation and verification, however this did not work consistently.

Workaround:

After installing the ESDK App with {{fullInstall}} cleaning the build directory removes the licensing dependencies from the classes directory which is used for calculating and verifying the code coverage.
check_circle
addESDK-377
Publish Links to Release Notes to abas Community Platform
As an App Developer I want to be informed in a central place about new ESDK versions, so that I know about fixed bugs and new features.

Acceptance criteria:

Links to all future release notes are available for the stakeholders in one Topic "ESDK Release Notes" on community.abas.de category Customers > For Developers
There is one announcement entry in the topic, to define topic purpose.
Each release note is published automatically as a reply to the topic.
Stakeholders can comment on release notes.

check_circle

Version 0.12.24

bug_reportESDK-1966
Gradle Plugin: old tasks still need their dependencies
The task {{createAppJar}} was "renamed" to {{createEsdkAppJar}} however, the old task should still work as before. It currently does not depend on {{fullInstall}} anymore. Same is true for {{redeployApp}}, {{installApp}} and {{createApp}}.
check_circle
addESDK-1965
ESDK App Installer: Print head line including version in front of the usage
As an ESDK App Installer user I want the usage to output all relevant information, so that I do not need to use more than one help option.

Acceptance criteria:

The ESDK App Installer usage looks like this:

{code:java}ESDK App Installer, Version 0.12.23

usage: ./esdk-app-installer [-a ] [--eapps-only] [-f] [-h] [-l ] [--maven-repo-password ] [--maven-repo-user ] [-p ] [-q] [-s]
[--skip-essentials-versioncheck] [-u ] [-v] [--version] [--yes-i-have-a-backup]
-a,--artifact Archive path or link to nexus artifact{code}

check_circle
bug_reportESDK-1861
Wrong call to generate AJO when additional DB is mapped to next free DB number
When e.g. additional DB 25 is installed and the next free addDB is 18, it will be installed as addDB18, but the command called is: {{ajo_install.sh -c -s -q 25}} instead of {{ajo_install.sh -c -s -q 18}}
check_circle

Version 0.12.23

addESDK-1950
Increase SSH timeout to 10 seconds
As an ESDK App Developer I want my builds to only fail due to connection setting issues, if my connection settings are actually incorrect. Since the SSH connection takes quite long to establish, the default timeout should be higher.

Acceptance criteria:

SSH default timeout is set to 10s

check_circle
addESDK-1730
A Gradle Task that installs the ESDK App Jar
As an app developer I want a Gradle task that installs the app jar I built into the configured erp client so that I can simply test it against different erp containers without rebuilding the app jar or having to download and unpack a matching esdk app installer.

Acceptance Criteria:

A new Gradle task {{installEsdkAppInstaller}} exists in group {{abas professional}}.
The task downloads and unzips the ESDK App Installer on the client.
A new Gradle task {{installEsdkApp}} exists in group {{abas basic}} tasks.
The task installs the current app jar into the erp client that is configured in the gradle.properties file.
If there is no app jar available, a hint states which task has to be run to build one.
The task descriptions are reworked to clarify the difference between {{fullInstall}}, {{installApp}} and {{installEsdkApp}}.
The tasks {{createApp}}, {{installApp}} and {{redeployApp}} are renamed to {{createJfopServerApp}}, {{installJfopServerApp}} and {{redeployJfopServerApp}}. The old one's task groups are removed, so that the tasks are in task group {{Other}}.

check_circle

Version 0.12.22

addESDK-1827
Reduce the warnings to out of range versions, only
As an app installing system administrator I want the ESDK App Installer to warn only if the target Essentials version is not compatible with the app to install or the installer itself so that I can always set {{--skip-essentials-versioncheck}} in my own installation scripts.
check_circle

Version 0.12.21

bug_reportESDK-1806
Improve documentation
In the section [How the shared Option influences Additional Dependencies|https://documentation.abas.cloud/en/esdk/#_how_the_shared_option_influences_additional_dependencies]

{code:java}parent = DEFAULT{code}

this is wrong and should be changed to

{code:java}parent = "DEFAULT"{code}

check_circle
addESDK-1606
ESDK App Installer: Prohibit installation to not-supported versions of abas Essentials
As an app-installing system administrator I want the esdk-app-installer to prohibit an app installation to an abas Essentials client with a discontinued version so that I don't run into incompatibilities in the middle of the app installation process.

Acceptance Criteria:

A single and committed configuration value defines the {{minimumEssentialsVersion}} for all ESDK products.
The esdk-app-installer checks the ERP version and prohibits the app installation if it is older than the {{minimumEssentialsVersion}}.
An option {{--skip-essentials-versioncheck}} exists to force app installation to a non-supported abas Essentials version. A big WARNING is shown and logged that the installation is at his own risk.
That option also overrides the {{essentialsVersionRange}} defined in the app’s {{build.gradle}}. An additional WARNING is shown for that, too. (See ESDK-1611)
The abas Installer ESDK Module has that option as well.
The ESDK Gradle Plugin shows a WARNING when building against a non-supported abas Essentials version and stops. It has to be unlocked explicitly by a configuration option {{esdk.allowUnsupportedEssentialsVersions}} (in {{build.gradle}})
The Gradle Task {{esdkProjectInfo}} prints the {{minimumEssentialsVersion}} after {{Deploying on abas Version:}}

check_circle

Version 0.12.20

bug_reportESDK-1717
importKeys writes to importData-edp.log
The Gradle task {{importKeys}} writes its EDP communication to {{importData-edp.log}}. It should use its own log file.

Now that the bug is fixed, each task has its own EDP log file. This concerns: {{importData}}, {{importKeys}}, {{importNamedTypes}}, {{importEnums}} and {{importEnumsAfterVarreorg}}.
check_circle
bug_reportESDK-1711
Key import is not working if a similar key exists
When importing a key, e.g. to DB 2:1, an error occurs stating that a similar key already exists. ESDK always has to import all keys that are part of the app since Java source code might depend on them.
check_circle

Version 0.12.19

bug_reportESDK-1718
The varreorg task generates AJO schema classes on its own instead of postponing it to the installAjo task
The {{varreorg}} Gradle task generates AJO schema classes (calls {{ajo_install.sh}}) on its own instead of postponing it to the {{installAjo}} task.
check_circle
addESDK-1593
Validate that the parameters checked by checkPreconditions are not empty before using them
As an ESDK App Developer I want an easy to interpret message when my connection settings are not correct.

Acceptance criteria:

All connection settings in the {{build.gradle}} are parsed and result in proper error messages when incorrect

check_circle

Version 0.12.18

addESDK-1611
eapps: Add support for 2019 versions
As a customer installing an ESDK App I want eapps to be installable on the newest abas ERP Release, so that I can rely on it to show me the installed ESDK Apps.

Acceptance criteria:

Test eapps in a 2019 abas ERP
Support 2019 versions in the {{essentialsVersions}} ranges
Disable support for no longer supported versions

check_circle
addESDK-1538
ESDK App Installer: Write a meta data file for successfully installed app
As an app-installing system administrator I want the ESDK App Installer to write version information about the installed app into a file so that it can check reliably which app is successfully installed in which version.

Acceptance Criteria:

For a successful app installation the installer writes a single file ({{esdk-installations//meta.json}}) per app containing the installed app's version, installation date and installation state as well as a history of previously installed versions.
It uses this file to determine if the currently-to-be-installed app's version is already up-to-date and does not execute the infosystem ESSENTIALSAPPS anymore
Once per app the infosystem ESSENTIALSAPPS writes that file if it does not yet exist
Fall back to the old behaviour: Ask infosystem ESSENTIALSAPPS (which now is the current version) (do not fall back for eapps - it should be reinstalled if the file does not exist)

check_circle

Version 0.12.17

addESDK-1654
Log status message listener output to debug
As an Admin installing an ESDK App I do not want my info output to be cluttered up with messages that mostly do not concern me, so that I know if an error occurred or not.

Acceptance criteria:
Status message should be printed to debug log instead of info log.
check_circle
addESDK-1594
Use 'set -e' in our (internal and external) shell scripts
As an ESDK App Developer I want the shell scripts I use for development to fail fast and with the appropriate error message so that I know what the error was.

Acceptance criteria:

In order to fail fast and not to hide errors, add {{set -e}} to the beginning of all our shell scripts.
Stop at the first errornous command and forward the return status to its caller

check_circle
addESDK-1589
Always accept dialog box on key import
As an ESDK App Developer I want the key import to import my key in exactly the way I defined it, regardless of similar keys, so that I can be sure it is there and the installation succeeds.

Acceptance criteria:

Keys can be imported, regardless of similar already existing keys
If a similar key already exists a log entry is generated in the installation.log during installation with the ESDK App Installer.

check_circle
bug_reportESDK-1587
Check for uniqueness of fop.txt entries does not consider whitespace
The check for a line like
{code}
20 maskende [C]
{code}
does not find the same line with modifications in whitespace, e.g.
{code}
20 maskende [C]
{code}
check_circle

Version 0.12.16

addESDK-689
Improve object identification for data import
As an abas App Developer I want to have sufficient possibilities to identify whether to create or update a data object so that I can be sure my data import works as intended.

Acceptance criteria:

Use multiple fields as identifier

check_circle

Version 0.12.15

bug_reportESDK-1582
Alias fields will be mapped to IDab:cd when exported
When exporting a field like "PS12:26" it will be changed to "ID12:26".

(Since esdk-gradle-plugin 0.12.14)
check_circle
bug_reportESDK-1577
ESDK ShellTransferer: Unique entries check for fop.txt is working incorrectly
The unique entry check is based on contains function, which checks incorrectly if the entries have similar values.

{code:java}
20 maskende [C]
{code}
{code:java}
0 maskende [C]
{code}

In the above case, 2nd entry is checked as already existing in the string.
check_circle
addESDK-1568
Import Call Parameter Menu and Part Lists to ERP System
As an ESDK App developer, I want to be able to customize Call Parameter Menu and Part Lists, so user is able to see only necessary Items in specified Menu and Part Lists.

Acceptance Criteria

Call Parameter Menu Lists can be successfully imported
Call Parameter Menu List table items can be modified

Call Parameter Part Lists can be successfully imported
Call Parameter Part List table items can be modified

check_circle

Version 0.12.14

bug_reportESDK-1560
Transaction commit might lead to an error that is caught and ignored
Improve TransactionHandling so that no transaction commit can silently fail and show installation success without importing data.
check_circle
addESDK-1551
Import Standard Call Parameter Lists with non-editable table
As an ESDK App Developer I want standard call parameter lists with non-editable tables to be imported successfully, so that I can switch off standard menus and call parameters displayed in my call parameter lists.

Acceptance criteria:

Standard call parameter lists with non-editable tables can be imported successfully
Standard call parameter lists with non-editable tables can be activated
Standard call parameter lists with non-editable tables can be deactivated

check_circle

Version 0.12.13

addESDK-1496
Add abas version requirement to Marketplace quality requirements
As an SDP I want to know which certification expectations I have to fulfill so that I can publish my ESDK App on the Marketplace.

Acceptance criteria
A list of certification criteria is available on the ESDK documentation.
check_circle
addESDK-1484
Use classname as identifier when exporting standard enumerations
As an app developer I want the Gradle Plugin to use the classname as default identifier when exporting standard enumerations since this is unique and this way I don't have to write customized dependant selections.
check_circle
addESDK-1438
Import call parameter lists
As an ESDK App developer I want to deploy reduced call parameter lists so that parts of abas Essentials are not visible to SaaS customers.

Acceptance criteria

Rows of standard call parameter list can be deactivated
Rows of standard call parameter list can be activated
Customized call parameter lists can be created
Rows of customized call parameter lists can be modified

check_circle

Version 0.12.12

bug_reportESDK-1532
ESDK App Installer Hotfix: `UnexpectedCharacterException: null` when checking already installed apps
When installing into a not-yet fully configured erp client, the check for already installed apps fails on unexpected messages like {{HINWEIS: \!Fibu-Eröffnung noch nicht abgeschlossen}}.

Then the installation log file contains error entries as the following:

{code:java}2019-07-08 07:12:31 DEBUG [de.abas.esdk.core.installers.local.LocalCommandHelper:64] Executing command: edpinfosys.sh -p -n 'ESSENTIALSAPPS ow1' -s 'appidsel=eapps,bstart' -f 'appversion,installlerror' -o LANGISO=de 2>&1
2019-07-08 07:12:32 DEBUG [de.abas.esdk.core.installers.local.LocalCommandHelper:79] HINWEIS: !Fibu-Eröffnung noch nicht abgeschlossen\n
0.7.12;icon:ok;

2019-07-08 07:12:32 DEBUG [de.abas.esdk.installer.InstallationServiceconfigureLogger1:98] Exception in thread main
com.github.zafarkhaja.semver.UnexpectedCharacterException: null
at com.github.zafarkhaja.semver.VersionParser.consumeNextCharacter(VersionParser.java:516)
at com.github.zafarkhaja.semver.VersionParser.digits(VersionParser.java:448)
at com.github.zafarkhaja.semver.VersionParser.numericIdentifier(VersionParser.java:408)
at com.github.zafarkhaja.semver.VersionParser.parseVersionCore(VersionParser.java:285)
at com.github.zafarkhaja.semver.VersionParser.parseValidSemVer(VersionParser.java:255)
at com.github.zafarkhaja.semver.VersionParser.parseValidSemVer(VersionParser.java:195)
at com.github.zafarkhaja.semver.Version.valueOf(Version.java:265)
at de.abas.esdk.installer.ComponentInstaller.checkUpToDate(ComponentInstaller.kt:76)
at de.abas.esdk.installer.InstallationService.install(InstallationService.kt:37)
at de.abas.esdk.installer.CommandLineInstallerCompanion.main(CommandLineInstaller.kt:46)
at de.abas.esdk.installer.CommandLineInstaller.main(CommandLineInstaller.kt)
2019-07-08 07:12:32 ERROR [de.abas.esdk.installer.InstallationServiceconfigureLogger1:99] An error occurred: null see log file /mnt/abas/erp/esdk-installations/eapps/0.7.17/installation.log for further information{code}

check_circle

Version 0.12.11

bug_reportESDK-1528
Gradle Plugin: Task clean cannot complete due to file lock
Due to one or more EDP Sessions that are not closed, on MS Windows the EDP log file is locked after task execution finished and task clean cannot remove the file.
check_circle

Version 0.12.10

bug_reportESDK-1506
ESDK Installer: Up-to-date check does not work if workdir ow1 is not installed
If workdir ow1 is not installed (`FEHLER 220`) assume not-up-to-date with appropriate log message since eapps cannot be executed (either not installed or user has no right to access ow1).
check_circle
addESDK-1494
Add marketplace submittal quality criteria to the documentation
As an ESDK App Developer I want to be able to look up what quality criteria my app must meet to be eligible for the abas Marketplace.

Acceptance criteria:
Quality criteria are documented
Link to the quality criteria documentation is send to [~accountid:5af93ee8525ba96b58655f5c]
check_circle
addESDK-1483
ESDK App Installer: Install same SNAPSHOT version without --force option set
As an app developer I want to install the same SNAPSHOT version of an app without specifying the --force option, even if it is installed already, since this is a SNAPSHOT version's purpose.

Acceptance Criteria:
A SNAPSHOT version can change while keeping the same version number. It should be installable without having to force the installation.
Higher SNAPSHOT version numbers still don't get over-installed with a lower SNAPSHOT version without forcing.
check_circle
addESDK-1482
Infosystem ESSENTIALSAPPS: Only check the License for successfully installed Apps
As an Admin checking the installed App with the ESSENTIALSAPPS Infosystem I am only interested in a licensing status if the app is actually installed successfully.
check_circle
addESDK-1481
Gradle Plugin: Improve log file location for edp.log
As an ESDK App Developer I want my edp.log in my build directory so that I can easily access it and send it to the ESDK Team for further analysis of issues.

Acceptance criteria:

Gradle Plugin: write log to {{build/logs/edp.log}}
Installer: write log to {{esdk-installations///edp.log}}

check_circle
bug_reportESDK-1477
ESSENTIALSAPPS: NullPointerException when an app's log file does not contain start or end date
The Error:

If an app's installation log file does not contain the right installation time stamps, the infosystem fails with the following stack trace:

{code:java}FEHLER 1550: java.lang.NullPointerException
at java.util.Date.getMillisOf(Date.java:958)
at java.util.Date.compareTo(Date.java:978)
at de.abas.esdk.app.artifacts.LogArtifact.compareTo(LogArtifact.java:46)
at de.abas.esdk.app.apps.AppVersions.getCurrentVersion(AppVersions.java:48)
...{code}



Remedy:
Remove the broken log files (or move them into a different directory). In the erp client's directory:

{code:java}grep -L "Starting app installation for" esdk-installations///.log | xargs rm{code}



Workaround:

To get the newer version of the infosystem installed and skip the check that produces the message above, call the esdk-app-installer with option {{-f }}(or {{--force}}).

check_circle
addESDK-1445
Gradle Task packProjectForSupport collects all necessary version numbers
As an ESDK App developer I want to have a simple way to provide the ESDK team useful and needed information to get my problem solved quickly without additional loops.

Acceptance Criteria:

{{packProjectForSupport}} collects version numbers of:
Gradle
ESDK Plugin
JDK/JRE
Nexus Version
Used EDP, Nexus and SSH ports
The Essentials docker image
... additional useful information needed frequently in support tickets
prints them to the console
writes them into a text file
and packs that file together with the project into the zip file

check_circle
addESDK-1434
Gradle task packEsdkApp should validate that the version to pack is not a SNAPSHOT
As an App Developer I want to get informed as early as possible about mistakes in my app to avoid unnecessary turnarounds when submitting the app for the marketplace.

Acceptance criteria:
{{packEsdkApp}} avoids creating the app zip file if the version contains "SNAPSHOT"
check_circle

Version 0.12.9

bug_reportESDK-1478
Error when updating standard enumerations
When trying to update a standard enumeration the installation fails.
check_circle
bug_reportESDK-1477
ESSENTIALSAPPS: NullPointerException when an app's log file does not contain start or end date
The Error:

If an app's installation log file does not contain the right installation time stamps, the infosystem fails with the following stack trace:

{code:java}FEHLER 1550: java.lang.NullPointerException
at java.util.Date.getMillisOf(Date.java:958)
at java.util.Date.compareTo(Date.java:978)
at de.abas.esdk.app.artifacts.LogArtifact.compareTo(LogArtifact.java:46)
at de.abas.esdk.app.apps.AppVersions.getCurrentVersion(AppVersions.java:48)
...{code}



Remedy:
Remove the broken log files (or move them into a different directory). In the erp client's directory:

{code:java}grep -L "Starting app installation for" esdk-installations///.log | xargs rm{code}



Workaround:

To get the newer version of the infosystem installed and skip the check that produces the message above, call the esdk-app-installer with option {{-f }}(or {{--force}}).

check_circle
addESDK-1443
Update Configuration Object
As an ESDK App Developer I want to be able to update the configuration object in a safe way, so that I can activate/deactivate standard modules and/or integrate custom modules.

Due to "Alleinmodus" when editing the configuration, editing it within a transaction is not possible. In order to do as little as possible outside a transaction all data necessary before updating the configuration goes into a seperate internal installation step, that executes within a transaction and only the configuration object itself is updated outside a transaction.

Acceptance criteria:

Data that is referenced in the configuration object gets imported correctly
Data that references the configuration object gets imported correctly
Tasks and installation steps execute in the right order (configuration dependencies - configuration update - data import)

check_circle

Version 0.12.8

addESDK-1473
Use eapps version 0.7.14 in esdk
As an ESDK App User I want to use the latest version of the ESSENTIALSAPPS Infosystem so that I can make use of the latest functionalities.

New feature in ESSENTIALSAPPS version 0.7.14: A new table field “app licensed” which shows if the app is licensed or not.
check_circle
bug_reportESDK-1471
Task importDictionaries fails if none of the app's languages are installed in the client
We recommend always adding German as one of the languages, which prevents this bug. However, we don't enforce it and, if German is not one of the app's languages and all other languages are not installed, the installation fails.
check_circle
bug_reportESDK-1461
Error when importing Customer DB with customized screen
When importing a customized screen for customer DB an error occurs:


{code}Couldn't find Screen 0:0{code}

check_circle
addESDK-384
Update ESDK app only if necessary
As an ESDK App-installing system administrator I want ESDK Apps only being installed if there is a newer version available, so that the same version is not installed again.

Acceptance criteria:

If the app version read from MANIFEST is greater than the currently installed app's version, always install the app.
esdk-app-installer has optional option ‘force’
if force is set, always download and install the app

check_circle

Version 0.12.7

bug_reportESDK-1418
Gradle Task publishHomeDirJars does not publish jar files in sub-directories
For example, libraries in {{HOMEDIR/java/lib/jaxb-ri/lib/}} are missing in the Nexus repository:

{code}
ls HOMEDIR/java/lib/jaxb-ri/lib/
jaxb-api.jar
jaxb-impl.jar
jaxb-xjc.jar
{code}
check_circle
bug_reportESDK-1287
Infosystem ESSENTIALSAPPS does not close log files
There are three file descriptors opened per app log file per version:

{code:java}erp@dockerbau:/proc/861/fd ll | grep esdk-installations
lr-x------ 1 erp abas 64 Mar 14 10:55 388 -> /abas/erp/esdk-installations/train/0.10.5/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 389 -> /abas/erp/esdk-installations/train/0.10.5/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 390 -> /abas/erp/esdk-installations/train/0.10.5/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 391 -> /abas/erp/esdk-installations/train/0.10.5/installation.log
lr-x------ 1 erp abas 64 Mar 14 10:55 392 -> /abas/erp/esdk-installations/train/0.10.5/installation.log
lr-x------ 1 erp abas 64 Mar 14 10:55 393 -> /abas/erp/esdk-installations/train/0.10.5/installation.log
lr-x------ 1 erp abas 64 Mar 14 10:55 394 -> /abas/erp/esdk-installations/eapps/0.7.10/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 395 -> /abas/erp/esdk-installations/eapps/0.7.10/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 396 -> /abas/erp/esdk-installations/eapps/0.7.10/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 398 -> /abas/erp/esdk-installations/eapps/0.7.10/essentialsApps-0.7.10.jar
lr-x------ 1 erp abas 64 Mar 14 10:55 399 -> /abas/erp/esdk-installations/eapps/0.7.10/installation.log
lr-x------ 1 erp abas 64 Mar 14 10:55 400 -> /abas/erp/esdk-installations/eapps/0.7.10/installation.log
lr-x------ 1 erp abas 64 Mar 14 10:55 401 -> /abas/erp/esdk-installations/eapps/0.7.10/installation.log{code}

They have to be closed. Otherwise we have a resource leak that leads to a {{FileNotFoundException (Too many open files)}}.

Installations with that problem have to update this Infosystem using at least version 0.12.7 of the ESDK App Installer.

Use the new command line option {{--eapps-only}} to update that infosystem without installing anything else.
check_circle

Version 0.12.6

addESDK-1450
Add an option for ESDK App Installer to update Infosystem ESSENTIALSAPPS
As an ESDK User I want to have the possibility to update the Infosystem ESSENTIALSAPPS directly with the ESDK App Installer.

Acceptance criteria

The App Installer has the new option {{--eapps-only}} to only update the infosystem ESSENTIALSAPPS and install nothing more
Use latest eapps version

check_circle
bug_reportESDK-1287
Infosystem ESSENTIALSAPPS does not close log files
There are three file descriptors opened per app log file per version:

{code:java}erp@dockerbau:/proc/861/fd ll | grep esdk-installations
lr-x------ 1 erp abas 64 Mar 14 10:55 388 -> /abas/erp/esdk-installations/train/0.10.5/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 389 -> /abas/erp/esdk-installations/train/0.10.5/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 390 -> /abas/erp/esdk-installations/train/0.10.5/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 391 -> /abas/erp/esdk-installations/train/0.10.5/installation.log
lr-x------ 1 erp abas 64 Mar 14 10:55 392 -> /abas/erp/esdk-installations/train/0.10.5/installation.log
lr-x------ 1 erp abas 64 Mar 14 10:55 393 -> /abas/erp/esdk-installations/train/0.10.5/installation.log
lr-x------ 1 erp abas 64 Mar 14 10:55 394 -> /abas/erp/esdk-installations/eapps/0.7.10/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 395 -> /abas/erp/esdk-installations/eapps/0.7.10/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 396 -> /abas/erp/esdk-installations/eapps/0.7.10/installation-1.log
lr-x------ 1 erp abas 64 Mar 14 10:55 398 -> /abas/erp/esdk-installations/eapps/0.7.10/essentialsApps-0.7.10.jar
lr-x------ 1 erp abas 64 Mar 14 10:55 399 -> /abas/erp/esdk-installations/eapps/0.7.10/installation.log
lr-x------ 1 erp abas 64 Mar 14 10:55 400 -> /abas/erp/esdk-installations/eapps/0.7.10/installation.log
lr-x------ 1 erp abas 64 Mar 14 10:55 401 -> /abas/erp/esdk-installations/eapps/0.7.10/installation.log{code}

They have to be closed. Otherwise we have a resource leak that leads to a {{FileNotFoundException (Too many open files)}}.

Installations with that problem have to update this Infosystem using at least version 0.12.7 of the ESDK App Installer.

Use the new command line option {{--eapps-only}} to update that infosystem without installing anything else.
check_circle

Version 0.12.5

addESDK-1441
Dependent enumeration gets automatically imported
As an ESDK App developer I want the data export to export enumerations automatically as standard objects so that I don’t need to modify the exported data manually in my project.
check_circle
bug_reportESDK-1439
Fix missing dependencies for ERP Version > 2018 in trainingApp builds
As an ESDK App Developer I want the trainingApp to work for all ERP versions available, so that I can work along its example.
check_circle
addESDK-1437
Give an example for fop.json for additional tables
As an ESDK App developer I want to have a fop.json example for an additional table documented, since this is a frequent case and has to be specified slightly different than in the example for a standard database.
check_circle
addESDK-1436
Support for Password Definitions and Permissions
As an ESDK App Developer I want to import password definitions and permissions so that I can use the data import to initialize my client`s users.

Acceptance criteria:

Password definitions can be imported
Permissions can be imported

check_circle

Version 0.12.4

addESDK-1428
Improve logging for exportScreens
As an ESDK App Developer I want to find helpful logging for the {{exportScreens}} task so that I can analyze what is going wrong and get faster support from the ESDK team.

Acceptance criteria:

Info logging is outputted for any type of screen
Additional debug logging shows what kind of screen is currently handled

check_circle
addESDK-1421
Create standard screens with specific priority
As an ESDK App developer I want to import a screen with a specific priority even if no standard screen for this priority exists yet, so that I can design screens specific to users permissions.

Acceptance criteria:

A missing priority for a screen can be created
A screen in any priority can be imported

check_circle
bug_reportESDK-1417
The isrein directory should also be taken into account when installing the infosystems with the ESDK App Installer
Version 0.12.3 of the ESDK App Installer does not take into account the directory isreinwhen importing Infosystems. Both isand isreindirectory must be taken into account when importing Infosystems.
check_circle
bug_reportESDK-1410
Install additional DB screens fails
When installing additional database screens and the additional database is installed in a different database than initially exported from, the screen installation fails because the screen is installed from src/main/resources/dbscreens instead of build/main/resources/dbscreens.
check_circle
bug_reportESDK-1408
Fix how the ERP containers are started
In order to start the ERP container correctly, there has to run an init inside the container.

In docker-compose files
Update version to 3.7
add “init: true” to the service

Projects:

ESDK (+ documentation) (/)
Project Initializer (/)
Training App (/)
Geolocation App (/)
app-tests pipeline (/)
Sparepart Catalogue (/)

See: [https://docs.docker.com/compose/compose-file/#init|https://docs.docker.com/compose/compose-file/#init]
check_circle
bug_reportESDK-1405
Wrong screen/db mapping in trainingApp
The screen for the CustomTestDb has a wrong screen number.
check_circle
bug_reportESDK-1376
Enums that are imported after Varreorg don't trigger installAjo and ident number mappings in infosystems
When an ESDK App makes use of {{enumsAfterVarreorg}}, there are two defects that can happen in special cases:

# If the app does not import Infosystems, install variable tables and import enumerations, the Gradle task {{installAjo}} is not invoked automatically.
# If the app imports an Infosystem that references one of the enumerations imported after varreorg, those references don’t get updated with the {{installIS}} Gradle task.

check_circle
addESDK-1167
Ex- and import menu buttons
As an app developer I want to export and import menu buttons and install them to multiple Essentials installations/clients.

Acceptance criteria:

Menu buttons can be exported and imported



!grafik-20190211-153045.png|thumbnail!
check_circle

Version 0.12.3

addESDK-1367
Add backup suggestion to ESDK App Installer
As an abas Customer I want to be reminded that an App Installation could break my abas client and that I should backup before installing, so that I do not accidentally break my client.

Acceptance criteria:

User needs to accept backup agreement \[y/N]
Option {{--yes-i-have-a-backup}} skips the backup agreement
(!) Without agreeing installation stops
Log option value to installation.log

warning
addESDK-1312
Import complete standard Screens
As an ESDK App Developer I want to import complete screens also for Standard Databases, so that I can use ESDK for initializing a new client‘s screens.

Acceptance criteria:

A switch allowing to install complete customized screen exists
Check that the switch is not active for Marketplace Apps
When the switch is active, the complete screen is imported

To import complete screens, list them in the {{esdk}} section of your app’s {{build.gradle}} as {{advancedScreens}} in the same format as already known for {{screens}}.

Example:



{code}esdk {
...
advancedScreens = ["75": ["A"]]
...
}{code}

check_circle
addESDK-1139
Read URL of the License Controller from .server.conf in Installer and Client-Library
As an App installing System Administrator I want the ESDK App Installer to read its connection settings from the commonly used {{.server.conf}} file so that I do not have to configure that URL in different files.

As an App Developer I want the ESDK Client API to behave the same way so that I can integration test my apps consistently.

(!) Cloud Connect / License Controller Setup writes the License Controller’s URL to {{.server.conf}} - the same file which is used by the erp license checker itself. {{CLOUD.CONNECT.SETTINGS}} is deprecated.

The file is evaluated in the following hierarchical way:

server--wide: {{/etc/abas/server.conf}}
installation-wide: {{HOMEDIR/.server.conf}}
on client level: {{MANDANTDIR/.server.conf}}

The more specific configuration overrides the more general one.

Acceptance Criteria:

The following components read the License Controller’s URL from {{.server.conf}} instead of {{CLOUD.CONNECT.SETTINGS}}:

The ESDK Client API
The ESDK App Installer

warning
addESDK-1128
Tab name is freely definable
As an ESDK App Developer, I can define the tab name freely and do not have to use the App ID as tab name.

Acceptance criteria:

Tab name is freely definable

check_circle
addESDK-687
Ex- and import more than one screen tab
As an ESDK App Developer I want to export and import more than one tab (which then belongs to my app) so that I can extend standard screens by multiple tabs.

Acceptance criteria:

more than one tab can be exported and imported

check_circle

Version 0.12.2

addESDK-1402
Read URL of the License Controller from .server.conf in JFOP-Server
As an abas Essentials System Administrator I want the App-License-checking JFOP-Server to read its connection settings from the commonly used {{.server.conf}} file so that I do not have to configure that URL in different files.

As an App Developer I want the ESDK Client API to behave the same way so that I can integration test my apps consistently.

(!) Cloud Connect / License Controller Setup writes the License Controller’s URL to {{.server.conf}} - the same file which is used by the erp license checker itself. {{CLOUD.CONNECT.SETTINGS}} is deprecated.

The file is evaluated in the following hierarchical way:

server--wide: {{/etc/abas/server.conf}}
installation-wide: {{HOMEDIR/.server.conf}}
on client level: {{MANDANTDIR/.server.conf}}

The more specific configuration overrides the more general one.

The same mechanism e.g. is used to [configure the password character set|https://extranet.abas.de/sub_de/help/he/html/33B.4.html#33B.4.4].

Acceptance Criteria:

The following components read the License Controller’s URL from {{.server.conf}} instead of {{CLOUD.CONNECT.SETTINGS}}:

The License Checker in the JFOP-Server

check_circle
bug_reportESDK-1374
The license in erp docker image version 2017r4n16 has expired
Remove docker image 2017r4n16 from SDP Registry.

Switch the erp docker image version from 2017r4n16 to 2017r4n16p02 in all our demo projects and docker-compose files that are publicly available.
check_circle
bug_reportESDK-1372
Typos in the ESDK documentation
Fix small typos and make some minor improvements to the ESDK documentation.
check_circle
bug_reportESDK-1369
Task createAppJar packs edited dependent files instead of original ones
In case of {{fullInstall}} installing e.g. a vartab in a different variable table than specified in the schm file and therefore editing the references in dependent files such as enums after varreorg or screens, the edited files are packed into the standalone app jar instead of the original ones.

Solution: The files that are to be packed into the standalone app jar should be in a dedicated directory. This is done for the Infosystem files already but should be done for all files that should be located in the standalone app jar. The Gradle tasks should still install from the resources folder that is also used to edit the files.
check_circle
bug_reportESDK-1092
Broken Link in documentation
In Section [https://documentation.abas.ninja/en/esdk/#project|https://documentation.abas.ninja/en/esdk/#project] the internal link to to "ERP and Nexus as Docker containers" ([https://documentation.abas.ninja/en/esdk/#download-docker-compose-yml)|https://documentation.abas.ninja/en/esdk/#download-docker-compose-yml)] is not working.

Also Fix:

In -You- order to use these Docker images you need to have access to the {{sdp.registry.abas.sh}} Docker Registry.
check_circle
addESDK-744
Add a note to the documentation to use UTF-8
As an App Developer I should be informed that I need to use UTF-8 encoding for all files in my ESDK App project except for base files which are explicitly needed in s3 encoding (FOPs).

Acceptance criteria:

Documentation contains a note regarding encoding.

check_circle
bug_reportESDK-178
Build process fails without files in src/main/resources folder
This is not very common but an example could be an only logic app which customized another app.
check_circle

Version 0.12.1

bug_reportESDK-1310
Project tree wrong representation
Project tree is not represented in Tree structure.

Acceptance Criteria
Project tree is represented in tree structure
check_circle
addESDK-1163
Generic import and export of data objects referencing vartabs and infosystems
As an app developer I can export and import data objects that reference an additional database or infosystem, so that I can be sure my reference works and points to the right object even if my additional database was installed in a database with a different number.

Acceptance criteria

User defined call parameters can be exported and imported easily.
References to additional databases are mapped to the imported ones.
References to infosystems are mapped to the imported ones.
An example for importing and exporting call parameters exists in the documentation.
check_circle
addESDK-1085
Docker Images: Add link to accept terms of use form to the documentation
As an ESDK App Developer I want to have a link to the _terms of use_ I have to accept to get access to the Partner Docker Registry on sdp.registry.abas.sh

Acceptance criteria:

There is a link to the _terms of use_ right before [https://documentation.abas.cloud/en/esdk/#_log_in_to_the_abas_partner_docker_registry|https://documentation.abas.cloud/en/esdk/#_log_in_to_the_abas_partner_docker_registry]
in the documentation



check_circle
addESDK-974
Create testing API/library for ESDK Apps
As an ESDK App developer I want to make use of a testing library for ESDK Apps, so that I do not need to implement common use cases in every ESDK App integration test.

Acceptance criteria:

An API/a library exists that is publicly accessible
Our example apps use the library
It consists of methods/tools for:
reading the {{gradle.properties}}‌file in the project’s root
creating a ClientContext (e.g. with a JUnit {{@Rule}})
registrering a MessageListener so that
informational messages from the ERP get recorded in the JUnit report files as stdout
error messages from the ERP result in a test failure with an appropriate message
check_circle
addESDK-832
Extend the exportData and importData task for customized mapping models.
As an ESDK Developer I want to export and import the mapping model and schemata edi object.
This is important for vmibo, PLM interface, and futher PLM software.

Acceptance criteria:
The customized mapping model can be exported exportData Task
The exported xml File can be imported with the importData Task
check_circle
addESDK-831
Extend the import and exportEnum task for customized standard enumeration.
As an ESDK Developer I want to customized e.g. EDIMESSAGE 20131 by adding new rows.

Acceptance criteria:
The customized standard enums can exported with the exportEnum Task.
The exported enum.xml file can imported with the importEnum Task. The exported enum.xml have to update the extisting standard enum in target client.
Figure out what are the standard enums and define them.

E.g. Edp File for possible tests
{code:java}
#!TRANSACTION=1
#!CHARSET=UTF-8
#!database=109
#!group=2
#!action=store
#!dontchange=-
#!EDP_STOREROWMODE=DELNONE
such ;such ;name1 ;name14
EDI-VMI-IMO-EDIFACT;EDI-VMI-IMO-EDIFACT;VMI IMO-EDIFACT;VMI IMO-EDIFACT
EDI-VMI-DELFORP ;EDI-VMI-DELFORP ;VMI DELFORP ;VMI DELFORP


#!database=107
#!group=1
#!action=store
#!dontchange=-
#!EDP_STOREROWMODE=DELNONE

nummer;tabangepasst\
zeile;vaufzelem;0:reosofort;
20131;1\
+;109 EDI-VMI-IMO-EDIFACT;0;\
+;109 EDI-VMI-DELFORP;0;\


#!TRANSACTION=0

#!database=107
#!group=1
#!action=store
#!dontchange=-
#!EDP_STOREROWMODE=DELNONE

nummer;reosofort;
20131;1

{code}
check_circle
addESDK-707
Import and Export of FieldAssignments
As an abas App Developer I want to be able to export and import Abbildungsmodelle even if the textual referenced variable table changes during app installation.

Acceptance criteria:

FieldAssignments can be exported
FieldAssignments can be imported
FieldAssignments get updated as dependent objects during variable table installation
FieldAssignments referencing an additional database always reference the right one after installation
check_circle
addESDK-564
Import number range changes into the according record
As an app developer I want to change the number ranges for the additional tables my app consists of so that the range matches the app's needs.
check_circle

Version 0.12.0

addESDK-1309
Use explicit dependencies in Demo Apps
Since shared option is set to “false” per default now, the dependencies for ESDK Apps has to be added explicitly.
check_circle
addESDK-1284
Preparation EUG
Preparation for EUG 2019
check_circle
addESDK-1263
Rename abas App to ESDK App
As somebody learning about ESDK the name abas App is confusing, therefore the more specific name ESDK App should be used.

Acceptance criteria:
All documentation use ESDK App instead of abas App
The abas-app-installer is renamed to esdk-app-installer
All unresolved stories use ESDK App instead of abas App and esdk-app-installer instead of abas-app-installer
warning
addESDK-1185
JFOP-Server App: Make the parent attribute's value configurable
As an App Developer I want to be able to define my app's dependencies to third-party libraries and its classpath explicitly to avoid conflicts with other versions of these libraries the customer has on its DEFAULT_SHARED classpath.

Currently the {{java/apps//META-INF/de.abas.erp/config.properties}} always gets generated with {{parent=DEFAULT_SHARED}}. While this provides an easy initial setup it causes problems since {{DEFAULT_SHARED}} is customizable and might contain libraries with conflicting versions.

Acceptance Criteria:

{{parent.delegation=false}} is the default
(!) The line {{parent=DEFAULT_SHARED}} is not generated as the default <- this is the incompatible change
The {{parent}} value is configurable by setting the new property {{esdk.app.parent}}
The project initializer generates the dependencies needed for development & runtime using AJO
The ESDK Gradle plugin validates that the libs in {{HOMEDIR/java/s3jfopserver_bootstrap.classpath}} aren’t on the app’s classpath:
{code}
# Bootstrap class path for JFOP execution
#
{de.abas.homedir}/java/lib/abas-jfopapi.jar
{de.abas.homedir}/java/lib/abas-jfop-runtime-api.jar
{de.abas.homedir}/java/lib/jedp.jar
{de.abas.homedir}/java/lib/abas-jedp-netty4.jar
{de.abas.homedir}/java/lib/groovy.jar
{de.abas.homedir}/java/lib/abas-db-base.jar
{de.abas.homedir}/java/lib/abas-erp-common.jar
{de.abas.homedir}/java/lib/abas-enums.jar
#!include jfopserver_bootstrap.classpath
{code}
warning
bug_reportESDK-1115
The client-api's java doc is broken
The esdk-client-api’s Javadoc seems to be broken. The frames do not work: [https://documentation.abas.cloud/en/client-api/]

The version without frames can still be shown:

[https://documentation.abas.cloud/en/client-api/index-all.html]
check_circle

Version 0.11.8

bug_reportESDK-1243
ClientDir dependencies are not always refreshed in Eclipse (and abas Tools)
Always refresh SNAPSHOT dependencies.

Even the workaround

{code}configurations.all {
resolutionStrategy.cacheChangingModulesFor 0, 'seconds'
}
{code}
does not work with Gradle 5.\+ (and thus version 0.11.x of our Gradle Plugin).
check_circle
addESDK-1145
ESDK Project Nature for an App Project
As an app developer who uses abas Tools I want the ESDK Gradle Plugin to add a nature to the Eclipse Project that identifies it as an ESDK project so that abas Tools is able to use its properties and makes configuration less redundant.
check_circle
addESDK-1127
Subscribe/Unsubscribe for Review Participation
As an abas App Developer I want to sign up and unsubscribe as Review Participant in the ESDK Review, so that I have access to all the recent developments if I am interested in it.

Acceptance criteria:

JSD Request for Review Participation
check_circle

Version 0.11.7

bug_reportESDK-1249
Supplementing documentation: reference fields need quotes in .schm file
Add example for references to specific group in vartabs to documentation.
check_circle
bug_reportESDK-1195
NullPointerException in Infosystem ESSENTIALSAPPS
If there is a directory within {{esdk-installations}} with no subdirectory, a NullPointerException is thrown when trying to access AppVersion attributes.

E.g. for file tree:

{code}esdk-installations
--broken
----installation.log
{code}
check_circle

Version 0.11.6

bug_reportESDK-1240
Task importKeys fails for keys not in group 0:1
If {{bgrliste}} is other than {{0:1}}, import fails with

{code}de.abas.ceks.jedp.CantChangeFieldValException: Ungültiger Feldwert bgrliste(0) = [11:1]Unzulässige Datenbankangabe{code}
check_circle

Version 0.11.5

bug_reportESDK-1221
Gradle task calculateCodeCoverage includes packages com.abas.licensing.client and de.abas.esdk.client
Those two packages belong to our own APIs and must not be included in the app developer's code coverage report.
check_circle

Version 0.11.4

bug_reportESDK-1186
The Gradle Plugin generates ${de.abas.clientdir} instead of ${de.abas.mandantdir} to the app's classpath
In the JFOP-Server app’s classpath file {{java/apps//META-INF/de.abas.erp/classpath}}, the key for referencing the client directory is wrong. It has to be {{\{de.abas.mandantdir\}}}. This behaviour is located in the Gradle task {{createApp}} and leads to wrong class path entries for installed apps (regardless if installed by the task {{installApp}} or by the app installer).

This bug is only effective if your app was built with the property {{esdk.app.shared}} set to {{false}} and {{provided}} dependencies to the ERP client’s jar files (the generated AJO classes) are stated explicitly in the app’s {{build.gradle}}.
check_circle

Version 0.11.3

addESDK-1191
Installer: Don't print the check for jfopserver.*.dat on stdout/stderr
As a customer installing an abas App I do not want to be alarmed by jfopserver error messages during the installation, so that I do not have to worry that something went wrong.

While installation there is a check if the JFOP-Server App is to be redeployed. It produces error messages if no such file is there (and nothing is to be redeployed):

{code}ls: cannot access jfopserver..dat: No such file or directory{code}
check_circle
bug_reportESDK-1187
There is a jar file produced too much in build/libs and used for publishing
A duplicate empty jar file named as \-.jar is generated and used as the only output of createAppJar, therefore createAppJar cannot be used as artifact in maven publish definition.
check_circle
bug_reportESDK-1180
Wrong repoURL when using Nexus 3
When Nexus version 3 is set, the wrong URL for the repository is used.
check_circle
addESDK-1179
Automatically notify developer about test results of their submitted apps
As an abas App developer I want to know if all tests and the code coverage checks for my submitted abas App passed, so that I can quickly update my app in case of failures.

Acceptance criteria:
Automatically find and comment the JSD issue after the tests have completed.
Automatically upload the result JSON file and the zipped reports

(!) All abas App Submittals must follow the App Submittal Guidelines for the Summary field (-)!
check_circle
bug_reportESDK-1146
IS ESSENTIALSAPPS: NullPointerException in versionStringParser()
Installed Apps:

{code}
DEFAULT [ rev=1;users=0;srcDir=/abas/s3/java/apps/DEFAULT;deployDir=/abas/s3/eks/java/jfopserver/instances/dockerbau.1616/deployed/HOMEDIR/DEFAULT/1;deployTime=2019-02-07T12:07:53.366Z ]
DEFAULT_SHARED [ rev=1;users=1;srcDir=/abas/s3/java/apps/DEFAULT_SHARED;deployDir=/abas/s3/eks/java/jfopserver/instances/dockerbau.1616/deployed/HOMEDIR/DEFAULT_SHARED/1;deployTime=2019-02-07T12:07:51.561Z ]
Runtime-License-Checker [ rev=1;users=0;srcDir=/abas/s3/eks/java/apps/Runtime-License-Checker ]
de.abas.erp.infosystem.st.viesvatws [ rev=1;users=0;srcDir=/abas/s3/java/apps/de.abas.erp.infosystem.st.viesvatws ]
edi-internal [ rev=1;users=0;srcDir=/abas/s3/eks/java/apps/edi-internal ]
essentialsApps [ rev=1;users=1;srcDir=/abas/s3/eks/java/apps/essentialsApps;deployDir=/abas/s3/eks/java/jfopserver/instances/dockerbau.1616/deployed/MANDANTDIR/essentialsApps/1;deployTime=2019-02-07T12:18:15.079Z ]
is-satzenglvar [ rev=1;users=0;srcDir=/abas/s3/eks/java/apps/is-satzenglvar ]
notLicensed [ rev=1;users=0;srcDir=/abas/s3/eks/java/apps/notLicensed ]
{code}

When invoking `bstart`, the first row is loaded successfully (agliz), but then:
{code}
java.lang.NullPointerException
at de.abas.esdk.versionchecker.AbasVersion.versionStringParser(AbasVersion.java:63)
at de.abas.esdk.versionchecker.AbasVersion.(AbasVersion.java:14)
at de.abas.esdk.app.parsers.VersionParser.parseVersion(VersionParser.java:11)
at de.abas.esdk.app.Main.startAfter(Main.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at de.abas.erp.axi2.internal.MethodInvoker.invoke(MethodInvoker.java:51)
at de.abas.erp.axi2.EventHandlerRunner.run(EventHandlerRunner.java:134)
at de.abas.erp.axi2.EventHandlerRunner.invokeRunFop(EventHandlerRunner.java:103)
at de.abas.erp.jfop.rt.core.FOPSessionContextImpl.invokeRunFop(FOPSessionContextImpl.java:629)
at de.abas.erp.jfop.rt.core.FOPSessionContextImpl.runFop(FOPSessionContextImpl.java:579)
at de.abas.erp.jfop.rt.core.io.Communication.runFop0(Communication.java:418)
at de.abas.erp.jfop.rt.core.io.Communication.runFop(Communication.java:393)
at de.abas.erp.jfop.rt.core.FOPRunnerRunnable.run(FOPRunnerRunnable.java:60)
at java.util.concurrent.ExecutorsRunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutorWorker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
unbehandelte Exception im Java-FOP
{code}

The same Exception is thrown when loading the information of app with ID `agliz`, only.
check_circle
bug_reportESDK-1141
Passwords are logged to the installer's log file
Right before checking the license on installation, the following line is logged to the install log:

{code}
2019-02-04 15:20:19 DEBUG [de.abas.esdk.core.installers.local.LocalCommandHelper:63] Executing command: edpexport.sh -l 12:18 -p sy -f instnr -k such==KONFIG
2019-02-04 15:20:19 DEBUG [de.abas.esdk.core.installers.local.LocalCommandHelper:77] 2;
{code}

It contains the installing user's password in plain text.
check_circle

Version 0.11.2

bug_reportESDK-1132
FreeText (TN2) cannot be exported with more than 300 characters
When exported, a freetext field gets truncated at the 300th character.

The import fails if a freetext has more than 300 characters.
check_circle

Version 0.11.1

addESDK-1096
Add documentation and JIRA Service Desk Routine for submitting abas Apps
As an abas App Developer I want a simple and well-documented way of submitting my abas Apps for Marketplace approval while a Gradle task is not yet available.

Acceptance criteria:
A JIRA Service Desk issue type for abas App submittal exists
The issue type in JSD is appropriately documented
The documentation of the packAbasApp task is extended so it includes hints for submitting the app
check_circle
bug_reportESDK-1084
SplitScreen Pane in Screens is not exported
A standard database screen with a SplitScreen Pane in the app tab cannot be reimported after export.
check_circle

Version 0.11.0

addESDK-1086
Update references to previously imported variable tables in following vartab import files
As an abas App Developer I want to use one additional variable table as a reference in another variable table and the import should fix the references if the additional variable table number changes during import.

Acceptance criteria:
Additional variables tables used as references in variable tables that are imported later during the same import process get updated if the variable table number changes.
Import order is still alphabetical so if Table A depends on Table B this will not work since Table A is imported before Table B.
check_circle
addESDK-1077
Update to Gradle 5.1
As an abas App Developer I want to use the latest Gradle version for my builds, so that I can make use of its faster execution times and new features.

Acceptance criteria:
Gradle 5.1 can be used for abas App Development with ESDK

(!) All projects using the new ESDK version must upgrade to Gradle 5.1.
warning
bug_reportESDK-1044
Broken internal links in Documentation
Broken links in section: [https://documentation.abas.cloud/en/esdk/\#project|https://documentation.abas.cloud/en/esdk/#project]

wrong: [https://documentation.abas.cloud/en/esdk/\#download-docker-compose-yml|https://documentation.abas.cloud/en/esdk/#download-docker-compose-yml]
wrong: [https://documentation.abas.cloud/en/esdk/\#data|https://documentation.abas.cloud/en/esdk/#data]
right: [https://documentation.abas.cloud/en/esdk/\#\_data|https://documentation.abas.cloud/en/esdk/#data]
check_circle
bug_reportESDK-999
App name is used as JFOP Server app name, AppID should be used instead
Problems with the App name in this case:

App name allows spaces \-> causes problems in file names
App name is not unique \-> potentially conflicts with other apps already installed

(!) Apps that are installed with an installer containing this bug fix have to register their event handlers using the AppID instead of the app name.

Example:

Old: {{java:com.my.company.someapp.MyEventHandler@someAppName}}

New: {{java:com.my.company.someapp.MyEventHandler@appid}}
warning
bug_reportESDK-942
Unwanted UP-TO-DATE state of createApp task
When createApp is run when {{build/abas}} is already present it is UP-TO-DATE if no classes/resouces changed even though libraries might have been updated.
check_circle
bug_reportESDK-928
Use project directory for local creation of fop.txt template file
If no daemon is started and the user has no write rights in the directory where abas Tools is installed, installFopText task fails, since then the installation directory is used to create the local fop.txt template file.

In case of task execution we should use the project directory instead of the eclipse installation directory to temporarily store the local template file.
check_circle
addESDK-781
References between groups of an additional database
As an abas App Developer I want the possibility to add an additional table with groups containing references from one group to another within this database.

Acceptance criteria:
The references getting updated when importing the database with a different DB number
check_circle
addESDK-1
Determine import order of vartab files
As an abas App Developer, I want multiple vartab import files that depend on each other imported in the right order.

Acceptance criteria:
A developer can add multiple vartab import files for his abas Essentials app that depend on each other (e.g. one vartab import file imports an additional vartab and the other contains a field of the type of the additonal vartab)
A developer can reference a non-existing additional vartab that will be imported for that specific abas Essentials App in other vartab import file and the reference will be translated while installVartab runs according to in which additional database the vartab import file is imported.
check_circle

Version 0.10.16

bug_reportESDK-1066
exportVartabs breaks when iterating over an alias for a standard field
When exporting a variable table that contains an individual alias (belonging to the app) to a standard field, the Gradle Plugin stops exporting and throws a {{TaskExecutionException}}:
{code}
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':exportVartabs'.
{code}
check_circle
addESDK-1061
Create Task to pack the abas App project for support
As an abas App Developer I want to be able to quickly pack my abas App project so that I can submit it for support without the project containing sensible information like passwords and/or being to large for submittal due to e.g. the whole build folder being included.

Acceptance criteria:
Add task packProjectForSupport
Only pack necessary information
check_circle

Version 0.10.15

bug_reportESDK-1035
Task installLog copies logging.custom.properties into wrong directory when executed on Windows
When {{installLog}} is executed on Windows, it copies {{logging.custom.properties}} to {{MANDANTDIR}} as {{abaserpjavalogconfiglogging.custom.properties}} because the backslashes are not converted to forward slashes.
check_circle
bug_reportESDK-1027
Plugin Collision: ssh is not an extension of esdk
Make extensions sub-extentions of 'esdk' to avoid collisions with other projects.
check_circle
addESDK-1026
How to use dependent libraries that are already provided by standard client installation.
As an abas App Developer I want to know when to use {{parentDelegation = false}} and {{shared=false}} and how dependency management works in ESDK, so that I can use third party libraries and know when to use {{provided}} and when to use {{compile}}.

Acceptance criteria:

Explain {{shared=true}} and {{shared=false}} {{build.gralde}} options
Explain {{provided}} and {{compile}} dependencies
Add Knowledge Base Article on how to handle {{LinkageError}}:

{code}licensing ("de.abas.esdk:client-api:0.0.1:all") {
exclude group: 'org.slf4j', module: 'slf4j-api'
}{code}
check_circle
bug_reportESDK-1014
Project files on wrong level in documentation
{code}├── fop.json
└── logging.custom.properties {code}
Should be in {{resources}} folder, not on the same level.

[https://documentation.abas.cloud/en/esdk/\#project|https://documentation.abas.cloud/en/esdk/#project]
check_circle
bug_reportESDK-1008
Task check should only execute unit tests
Currently check depends on integTest, however check is a dependency of build. Currently during build all integration tests would be executed. We should change this so check only executes unit tests. The task integTest should be a dependency of verify so verify executes all tests.
check_circle
bug_reportESDK-1007
Row number can be greater than 128
The row number is stored internally as a byte. This leads to an overflow and therefore negative results.

e.g.:

{code}
(1593,12,0,143)
143
(295,94,0)
0.000000
0.000000
{code}
check_circle
bug_reportESDK-990
Skip dictionary import if app language is only German
The dictionary uses German as base language, therefore it does not need to import texts if German is the only language for the app. Unfortunately, the trans_tool.sh script fails if it is executed for German only, therefore we need to skip its execution for German altogether.
check_circle
addESDK-763
Jenkins jobs for App verification and release
As Marketplace operator I want to have a Jenkins job that automatically checks an App to achieve a certain level of quality.

Acceptance criteria:

The job gets triggered when a new version of an App is uploaded for testing
For each abas Essentials version:
Install the App
Run all tests provided by the app developer
Collect metrics described [here|https://abascloud.atlassian.net/wiki/spaces/ESDK/pages/27625442/Certification+Requirements+for+ESDK+Apps]
When everything is ok: Publish the App jar
Report the result (everything ok or all violations) to the App developer and Albrecht via Email
In the “ok case” the mail to Albrecht contains a Link to the App jar on the Nexus server and the documentation. He uses it to provide it on the Marketplace (c)
check_circle

Version 0.10.14

addESDK-982
Create an app with OnRunTime licensing
As an abas ESDK backend developer I want to know if on run time licensing has been implemented correctly.

Acceptance criteria:

We receive a message when the app is not registered, and the following algorithm can not be executed.
The algorithm e.g. in an Evanthandler can be executed, if the App is licensed.
check_circle
bug_reportESDK-936
Missing fields in enum export
There are some fields in the enumerations that are missing in the export:

Head fields: "fldname", "fldkname", "fldbezname", "fldiname", "leerok"
Table fields: "aefix", "aekfix", "aebezfix", "aeaktiv", "aedefault", "aebezeichner"

They are relevant and should be exported.
check_circle

Version 0.10.13

bug_reportESDK-970
Revise documentation chapter "Advanced enumerations"
In the [ESDK documentation for Gradle task exportEnums|https://documentation.abas.cloud/en/esdk/#exportEnums] the file name is {{enums.json}}, not {{enum.json}}.
check_circle
addESDK-941
Make ssh connection timeout configurable
As an abas App Developer I want to configure the timeout for connecting to abas Essentials via SSH, so that I can connect to my client even if the connection takes more than 3 seconds to establish.

Acceptance criteria:

There is a configuration option for the SSH timeout
If the configuration option is not used the standard timeout is 3 seconds

The option is:
{code}
ssh {
timeout = 5000
}
{code}
check_circle
bug_reportESDK-935
Task printDockerTags does not work if user does not have browse rights
If the user does not have browse rights in registry.abas.sh {{printDockerTags}} does not work.

We should use a publicly accessible endpoint instead of getting the information directly from registry.abas.sh.
check_circle
bug_reportESDK-929
Heading "Documentation tasks" is not a heading
Currently in the documentation:
You need to have access to the partner.registry.abas.sh Docker Registry. == Documentation tasks

”Documentation tasks” should be a headline.
check_circle
addESDK-701
Provide API for license check at execution time
As an abas App Developer, I want to execute a license check whenever I find it suitable during the execution of logic of my App, so that I can make sure the customer still has a valid license.

Acceptance criteria:

An ESDK client library exists and contains a method for checking the App's license during app execution time.
Project / JAR should be named esdk-client-api.
The demo apps check license at execution time as an example on how to do it but have a free license, so they still can be installed by everybody.
One PopUp at each license check. User has to ask the admin to deactivate or re-license the app.
Add checkLicense() method to ESDK App library (so that the developer does not have to implement it in every single app).
check_circle

Version 0.10.12

bug_reportESDK-912
abas-app-installer usage is no longer available in documentation
The abas-app-installer usage is outputted to stderr and we only capture stdout. Therefore the usage is missing from the documentation.
check_circle
bug_reportESDK-911
Make names of build artifacts independent of project name
Before the name of build artifacts in ESDK (JFOP server app JAR, abas App JAR, zipped abas App Project and zipped documentation) depended on the project name. Now the base name of these artifacts is the app name as specified in the `build.gradle` file.

In most cases this does not make a difference since the project name and app name are generally the same, however in some cases like automated builds with Jenkins the project name gets generated and does not match the app name anymore.
check_circle
bug_reportESDK-900
Fix images dir for abas App Documentation
The images directory was an absolute path, so the image only got displayed on the computer the documentation was built on.
check_circle

Version 0.10.11

addESDK-874
Rework Documentation
As an abas App Developer I want the Documentation and FAQs to be well-structured so that I can quickly find what I am looking for.
check_circle
addESDK-864
Preparation for abas 2018
Prepare for abas 2018

Presentation
App Programming Sessions
Finalizing
check_circle
addESDK-700
Add license check to abas-app-installer
As an abas App Developer, I want a license check for my app to be automatically executed when my app is installed, so that only customers with a license or customers I provided with my customizing (non-marketplace) app can install it.

Acceptance criteria:

License check is executed during app installation
For non-marketplace apps the license is valid as long as its App ID is registered in the App ID DB (App ID is in the DB but no Hashes for the App's jars)
For marketplace apps the license is valid if customer purchased valid license

(!) This is an incompatible change, installing with the abas App Installer now requires internet connection.
warning
addESDK-691
Gradle task `printDockerTags` that prints all versions in essentialsVersions interval
As QA of some App developers I want to use a gradle task that provides all abas Essentials versions in the app's essentialsVersions interval for that docker images are available to avoid figuring out these versions and configure Jenkins Jobs for them manually.
check_circle

Version 0.10.10

addESDK-881
Add zipAbasApp task and documentation tasks to the abas Gradle Plugin
As an abas App Developer I want tasks to zip the project and to render and zip the documentation to be a part of the abas Gradle Plugin, so that I do not need to have this configured in my build.gradle file.

Accpetance criteria:
Task zipAbasApp for zipping the abas App Project including the abas App JAR and zipped documentation.
Task asciidoctor for rendering the documentation (apply and configure Asciidoctor plugin)
Task packAbasAppDocumentation for zipping the documentation
check_circle
bug_reportESDK-845
Variable tables are not imported in ascending name order
In the Gradle Plugin variable tables are imported during installVartabs in ascending name order, this is not the case when installing with the abas-app-installer. Therefore installation fails with the abas-app-installer when Vartab file order matters.
check_circle
addESDK-844
Improve documentation
As an abas App developer I want to have a well-structured documentation to refer to for all common questions.

Acceptance criteria:

Improve documentation according to developer feedback.
check_circle
addESDK-834
Presentation for abas 2018
As a conference attendee I want to know all about ESDK so that I can start developing/installing abas Apps.

Acceptance criteria
Presentation
Live Demo
check_circle
bug_reportESDK-779
Nexus publishing does not use authentication everywhere
The nexus publishing misses authentication for downloading the metadata.xml to check whether a jar file is up to date or needs to be published again.
check_circle

Version 0.10.9

bug_reportESDK-833
installAjo task does not generate dependent database classes
installAjo currently only considers infosystems and enumerations
check_circle
bug_reportESDK-822
Installation fails if there is no App code
If an App without a code section is installed with the abas App installer, an error occurs.
check_circle

Version 0.10.8

bug_reportESDK-808
References to additional databases aren't mapped correctly on import
Example:

An additional database has {{number 30}} in its {{.schm}} file
Another database has a reference {{P30:0}} to this additional db
{{:installVartabs}} fails with error {code}Error while installing variable table from file /path/to/app/build/resources/main/vartab/AnotherDatabase.schm Ungültiger Feldwert vitf(.) = [P30:0]
P30:0: Unzulässige Datenbankangabe.
at de.abas.esdk.core.installers.edp.EDPVartabHandler.installVartab(EDPVartabHandler.kt:53)
at de.abas.esdk.gradle.vartab.InstallVartabTask.run(InstallVartabTask.kt:23){code}
check_circle
bug_reportESDK-807
Import order of vartabs broken
In former times the vartab files (or genereally spoken, an app's resource files of the same type) were installed in lexicographical order of their file names. This got broken in version 0.10.2 of the ESDK Gradle Plugin and caused problems when one vartab references another, for example. In this case the latter has to be imported first.
check_circle
bug_reportESDK-790
Resolving new ID numbers gets wrong IDs when importing several enumerations
The replacement of the ID numbers of the imported enums in the .schm files puts wrong AZL-Numbers into the files:

{code}
src/main/resources/vartab/
structure Kurztexte {
groupNumber 1
head {
field AZL1000007 qm1ktart {
label ""
heading ""
description Kurztextart
screen EDITABLE
showPriority A
changePriority A
}
field AZL1000011 qm1mnart {
label ""
heading ""
description "Kategorie Sofortmaßnahme"
screen EDITABLE
showPriority A
changePriority A
}
}
table {
}
}
structure Pruefeinstellung {
groupNumber 2
head {
field B1 qm2std {
label ""
heading ""
description "QM-Stammdaten"
screen EDITABLE
showPriority A
changePriority A
}
field AZL1000011 qm2pruefobj {
label ""
heading ""
description "Objekttyp für das Prüfeinstellungen definiert werden"
screen EDITABLE
showPriority A
changePriority A
}
}
table {
}
}
{code}

Is changed to:

{code}
src/main/resources/vartab/
structure Kurztexte {
groupNumber 1
head {
field AZL1000007 qm1ktart {
label ""
heading ""
description Kurztextart
screen EDITABLE
showPriority A
changePriority A
}
field AZL1000012 qm1mnart {
label ""
heading ""
description "Kategorie Sofortmaßnahme"
screen EDITABLE
showPriority A
changePriority A
}
}
table {
}
}
structure Pruefeinstellung {
groupNumber 2
head {
field B1 qm2std {
label ""
heading ""
description "QM-Stammdaten"
screen EDITABLE
showPriority A
changePriority A
}
field AZL1000011qm2pruefobj {
label ""
heading ""
description "Objekttyp für das Prüfeinstellungen definiert werden"
screen EDITABLE
showPriority A
changePriority A
}
}
table {
}
}
{code}

But AZL1000011is a different enumeration.
check_circle

Version 0.10.7

addESDK-806
Developer Support for Jasmin M.
Jasmin M. gets direct support form the ESDK Team.

What we achieved
Docker for Windows has been installed
The docker instance was allocated enough memory.
New AppId has been registered
ESDK expertise could be built up
Problem with the Enums could be prioritized directly and fixed in this sprint
Problem with the additional databases could be reconstructed and will be addressed in the next sprint.
check_circle
addESDK-805
Basic Traning for Bernd
Bernd gets an introductory training in ESDK.

Acceptance criteria
Bernd can download a Docker image
Bernd has a basic understanding of ESDK development process
check_circle
addESDK-793
Provide assistance for VMI Bosch App's Code Review
The VMI Bosch App is to be reviewed by an external consultant. In order to work efficiently he needs support from a developer in the following fields:

What is AJO and how is the API used?
How can an infosystem that is implemented with AJO be tested automatically?
How is the test infrastructure set up?

Beyond that the following technical surrounding conditions have to be established:

Access to Bitbucket repository
Access to the docker registry for pulling abas Essentials docker images
Access to a Jenkins instance
A template Jenkinsfile which starts up the whole infrastructure
A (failing) test that uses the infrastructure
check_circle
bug_reportESDK-787
createAppJar strips newline (\n) from Infosystem files
If the files from {{resources/IS/IS..}} are packed into the standalone app jar, the files are missing all {{newlines}}.
check_circle

Version 0.10.6

bug_reportESDK-782
Tasks which copy files to project folder do not export all files recursively
Not all exported IS files are copied to the project {{resources/IS/}} folder with task {{exportIS}}.
Not all exported dictionary files are copied to the project {{resources/}} folders with task {{exportDictionaries}}.
check_circle
bug_reportESDK-778
exportKeys task is missing bbvname if bart is a different key type than "automatic"
See online help: https://extranet.abas.de/sub_de/help/hd/html/2.6.29.6.html#2.6.29.4.BBVNAME
check_circle
bug_reportESDK-777
installFopTxt with screenNumber generates a wildcard line in fop.txt
fop.json
{code:java}
{
"screenNumber": "22",
"editorMode": "",
"event": "maskpruef",
"key": "",
"field": "",
"headOrTable": "K",
"isContinue": "[C]",
"handler": "java:NegativeStockCheck@negativeStockCheckApp"
}
{code}


Should result in fop.txt as:

{code:java}
#### myfap.start ####
22 maskpruef K [C] java:NegativeStockCheck@negativeStockCheckApp
#### myfap.end ####
{code}

But is:

{code:java}
#### myfap.start ####
maskpruef K [C] java:NegativeStockCheck@negativeStockCheckApp
#### myfap.end ####
{code}


check_circle
addESDK-775
Extend our web pages with abas logo and header
Acceptance criteria:
The abas logo with the hyperlink https://documentation.abas.cloud/ and the black bar is visible on the following websites:

[ESDK Documentation|https://documentation.abas.cloud/en/esdk/]
[Project Initializer Documentation|https://documentation.abas.cloud/en/esdk-project-initializer/]
Use [abas Cloud Documentation|https://documentation.abas.cloud/] as template
check_circle

Version 0.10.5

addESDK-772
Extend our pages with Legal notice and Privacy
As an ESDK Developer I want to have the legal and privacy notice easily accessible on all ESDK websites.

Acceptance criteria:
The legal and privacy notice are easily accessible on the following websites:

[Project Builder|https://esdk-project-builder.prod.eu-central-1.api.eu.abas.cloud]
[ESDK Documentation|https://documentation.abas.cloud/en/esdk/]
[Project Initializer Documentation|https://documentation.abas.cloud/en/esdk-project-initializer/]
Use [abas Cloud Documentation|https://documentation.abas.cloud/] as template
check_circle
addESDK-649
Implement an ESDK abas installer module
As a user installing an abas App I want to use the abas Installer and not care about how to use or get the abas App Installer, so that I can concentrate on installing the App and not getting the infrastructure needed for installation.



Acceptance criteria:

abas App Installer is part of abas Installer
abas Installer can be used for installing abas Apps
check_circle

Version 0.10.4

bug_reportESDK-771
abas App Installer fails for empty abas App
Due to createAppJar creating a Manifest with `screens = []` and the abas App Installer expecting `[:]` to indicate an empty map, the app installation fails.
check_circle
bug_reportESDK-770
installBaseFiles should only run if directory base exists
The task installBaseFiles is always executed and fails if no base directory exists.

Currently as a workaround just add an empty `base` directory to your project.
check_circle
bug_reportESDK-769
The configurations provided and integTestCompile cannot be resolved
The ESDK Plugin creates and configures provided and integTestCompile correctly but since this is done after project evaluation they cannot be used for declaring dependencies, without configuring them in the abas App Project again.

Current workaround is adding the following to the build.gradle file of the abas App Project:

{code}
configurations {
compile.extendsFrom provided
integTestCompile.extendsFrom testCompile
}
{code}
check_circle

Version 0.10.3

bug_reportESDK-767
JFOP server app jar was published instead of abas App Jar
When createAppJar was referenced as artifact in maven publishing the JFOP server app jar was published instead of the complete abas App Jar.
check_circle
bug_reportESDK-766
List of preconditions in MANIFEST.MF of abas App cannot be converted to proper List
If the precondition list in an abas App's MANIFEST.MF has an item that contains a comma, e.g. {{preconditions=\["workdirs=ow1,isfop,isrein"\]}}, the the item cannot be converted to one proper List item resulting in three items {{"workdir=ow1"}}, {{"isfop"}}, {{"isrein"}}.
check_circle
addESDK-562
Display Warnings as warnings
Currently when pushing jars to the nexus for the first time, there are several messages "Could not find metadata". The user should be able to recognize them as warnings.
check_circle

Version 0.10.2

addESDK-751
Improve error messages during Gradle task execution
As an abas App Developer I want to directly see why a task failed, so that I do not need to run --stacktrace.

Acceptance criteria:
All tasks display not only an error message but also a reason for failing
The --stacktrace option only needs to be used to see in what class the Exception was thrown
check_circle
addESDK-746
Possibility to specify Repo URL for Nexus
As an abas App Developer I want to specify my own Nexus URL so that I can use my own hosted Nexus Server.

Acceptance criteria:
Repo URL can be specified
Repo URL replaces Nexus Host and Nexus Port if specified
check_circle
addESDK-738
Improve task grouping
As an abas App Developer I want a short structured list of the most important ESDK tasks, so that I can find them easier.

Acceptance criteria:
There is a task that executes both, publishHomeDirJars and publishClientDirJars (publishJars)
Tasks are grouped in abas-basic and abas-advanced instead of just abas
abas-basic contains publishJars, checkPreconditions, exportAll, fullInstall and redeployApp
abas-advanced contains all other tasks
check_circle
bug_reportESDK-737
abas-app-installer runs some steps in the wrong order
E.g.
{{redeployApp}} is executed after {{importData}} which produces {{ClassNotFoundException}}s when data is imported in a newly configured additional database.
{{importKeys}} is executed after {{installAjo}} which leads to non-updated classes without the corresponding search key constants.
check_circle
bug_reportESDK-718
Installer and checkPrecondition check wrong GRADLE_USER_HOME directory since Essentials Version 2018r4n04
Since [abas Essentials Bugfix 83127|https://extranet.abas.de/sub_de/index.php?referrer=https://bugsearch.abas.de/nummer_en:83127] {{ajo_install.sh}} uses the default {{GRADLE_USER_HOME}} if it is not set explicitly. Therefore ESDK checks permissions for the wrong directory since abas Essentials Version 2018r4n04.

The bug fix contains:
Since abas Essentials Version 2018r4n04: Check permissions in default GRADLE_USER_HOME (HOME/.gradle) if it is not set explicitly otherwise.
In general: Deactivate the Gradle daemon for all `ajo_install.sh` calls (even for indirect ones during `varreorg`). This makes apps installable for client users as well as for homedir users.
check_circle
bug_reportESDK-692
DependencyResolver cannot create or change password definitions
Due to the DependencyResolver creating/updating objects by creating the head first and only adding the table after saving the head, password definitions cannot be imported, since they cannot have an empty table.

We need to use the same special editor hander routine we also use for importing keys.
check_circle
addESDK-679
Improve data import
As an abas App Developer, I want to have maximum foolproofness on importing data, so that I can import complex stuff without worrying about errors.

Acceptance criteria:

Only change field if field value actually is different
Add option {{mode}} with possible values {{normal}} and {{tolerant}}
On {{normal}} password field is exported, but fails on import. On {{tolerant}} password field or other empty fields are ignored ( {{}}).
On {{tolerant}} only output warnings if during import a field cannot be changed because it is not writeable
Add additional debug logging so it is clearer what was imported already at any point during the import
check_circle
addESDK-655
Make introduction video
As an abas App Developer, I want to be able to work along a short video tutorial, so that I know how to get started with abas App development for abas customization.

Acceptance criteria:

Content:
How to use docker image for development
How to create Infosystem in dockerized abas
How to export Infosystem
How to add logic to Infosystem
How to use fullInstall
How to create a standalone app jar
How to install with the abas App Installer
How to display apps with essentialsApps infosystem
Spoken text is available as storyboard
Text description of tutorial is also available.
check_circle
bug_reportESDK-351
If fop.txt changes execute class on Infosystem new the installIS task fails
This is from the jfopRecorder: It attaches an EventHandler to all Screens (including the infosystem screen), this leads to the the infosystems not being able to be installed, since the EventHandler is configured but cannot be found since it is only imported after installIS
check_circle
addESDK-114
Make VendorID optional in VarName
As a developer or maintainer of a legacy project I want to be able to leave the VendorID empty so that I can install and update legacy apps.

current status is: {color:#59afe1}be{color}y{color:#d04437}qmss1{color}{color:#654982}abcdefghijkl{color}

{color:#59afe1}VendorID{color}
{color:#d04437}AppID{color}
{color:#654982}VarName{color}

The problem discussed was, that 36x26 = 936 VendorIDs might not be enough.

Acceptance Criteria:

The VendorID is not used as prefix for variables
check_circle
addESDK-113
Dynamically get homedir dependencies
As a developer I want all available HOMEDIR jars to be available as homedir dependencies.

Acceptance criteria:

All homedir dependencies are added dynamically.

Right now all homedir dependencies are hardcoded.

This is bad, if there are changes from one version to another there might be dependencies missing etc.

All homedir dependencies should be added dynamically.
warning

Version 0.10.1

bug_reportESDK-698
installVartab only considers vitf to check if field is already there
Task installVartab should consider both vitf and vitnf to determine if a field has correct type or needs update. Currently only vitf is considered. This leads to named types and enums always being updated (they will lose their data each time).
check_circle
bug_reportESDK-697
Task exportEnums still requires dependent selection for 109:1
Unfortunately we add two dependent selections for 109:2 in the EnumExporter instead of one for 109:1 and one for 109:2. This leads to a dependent selection being required when referencing 109:1 objects.
check_circle
addESDK-696
Add support for group rights for workdir creation
As a user installing an abas App I want to use any user with appropriate rights no matter whether the user has group rights or user rights configured, so that I do not have to create a separate user for installing abas Apps.

Acceptance criteria:
When arber2 is empty and group rights are configured check workdirs from group rights instead of arber2
Only execute workdir creation if workdir is not in group rights either
check_circle
bug_reportESDK-695
Minor bugs in documentation
Use abasgui.exe instead of wineks.exe for newer Essentials versions.
{{edp://erp:6550//abas/erp}} instead of {{edp://erp:6550//abas/erp1}} for newer dockerized Essentials versions.
Include Gradle Task and path for fop.json in documentation
Wrong text "Adding lines ..." under "21. mandantdir.env"
check_circle
bug_reportESDK-693
Support for all allowed characters in Infosystem search words
As an abas App Developer I want to use any allowed character in my Infosystem search word and still have the import and export work appropriately.

The used regular expression does not contain special characters, only letters and numbers are allowed, this leads to the import just ignoring Infosystems with a dot or dash in search word.
check_circle
bug_reportESDK-686
Link to docker-compose.yml in online documentation is not working.
In the online documentation the second link to the docker-compose-yml is not working.
https://documentation.abas.cloud/en/esdk/#download-docker-compose-yml

"Alternatively you can download the docker-compose.yml file and run"
Link: https://documentation.abas.cloud/en/esdk/docker-compose.yml

{{404 Not Found
Code: NoSuchKey
Message: The specified key does not exist.
Key: en/esdk/docker-compose.yml
RequestId: D58B85C27A934949
HostId: MedWtqpvfunfaVODXCq5L7mSRgmTNpQDDkH6ueSTH1Zb0TB42RMY5SohbcMZsdbGLSQ1vCB8d7s=
An Error Occurred While Attempting to Retrieve a Custom Error Document
Code: NoSuchKey
Message: The specified key does not exist.
Key: 404.html}}

"download docker-compose.yml"
Link: https://documentation.abas.cloud/en/esdk/downloads/docker-compose.yml
check_circle
bug_reportESDK-676
Export Vartab is not working for V-28-02 (Materialzuordnungsmaske)
As an abas App Developer I want to be able to create, export and install additional variables in all databases and groups, so that I can build fully automatically installable Apps.

Problem might be that the table comes from a different group (Hülse), although that is not a problem for Sales and Purchasing as far as we now.
check_circle
addESDK-527
Publish source and documentation archives with the jars on publishClientDirJars
As an abas App developer I want to be able to use the java doc and navigate the sources of the AJO client dependencies, so that I can get all information from within the IDE.

Acceptance criteria:
the documentation archives are published as additional jars belonging to the clientdir artifact
the sources archives are published as additional jars belonging to the clientdir artifact
check_circle
addESDK-467
Add support for Nexus 3
As an abas App Developer I want to choose whether to use the Nexus Artifact Server in version 2 or 3, so that I can use additional features (especially if I deploy and maintain the Nexus Server myself and do not use Docker containers).

Acceptance criteria:
Nexus version is configurable via a property in gradle.properties
Repository creation and publishing works for Nexus 2 and 3
Nexus version 2 is default (no incompatible API change, changes are only necessary to use Nexus version 3)
check_circle

Version 0.10.0

addESDK-672
Improvements on the landing page
As a customer or partner I want to have a similar look and feel on [abas-essentials-sdk.com|http://abas-essentials-sdk.com] as on [abas-erp.com|http://abas-erp.com].

Acceptance criteria:

privacy policy take from [https://abas-erp.com/en/privacy-copyright].
Eliminate color gradients.
This color on this page [https://www.abas-essentials-sdk.com/support.html] does not exist in the CI.
~ESDK~ from start page in permanent Marker.
Navigation similar to abas-erp.com.
For MouseOver effects on buttons, show red or green color.
Take over uniform fonts from abas-erp.com.
Try to make the first page look similar to the first page of abas-erp.com.
check_circle
bug_reportESDK-600
Missing naming definition for exported IS in documentation
Chapter Infosystems ([https://documentation.abas.cloud/en/esdk/\#infosystems|https://documentation.abas.cloud/en/esdk/#infosystems]) there is no definition on how to name the infosystems. I found the naming some chapters before in some example build.gradle file.
check_circle
addESDK-528
Import and Export Named Types (Benannte Arten, V-132-03)
As an abas App Developer I want to be able to export and import Named Types (Benannte Arten), so that I can use them as types in my variable table.

Acceptance criteria:

Named Types can be exported with Gradle task and in the ESDK installer
Named Types can be imported with Gradle task and in the ESDK installer
The referenced Named Types is updated in the variable table if it got imported with a different identity number
The appropriate reorg is run after importing Named Types
The Named Types import is run in the right order during fullInstall and with the ESDK installer
check_circle
bug_reportESDK-273
importDictionaries fails for Infosystems if search word is ambiguous
Task importDictionaries fails for Infosystems if search word is ambiguous.
{{Problem while executing HOMEDIRSCHREIBEN=1 trans.sh \-l 16 TESTIS}}

Alternatively, trans.sh can also take the Infosystem identity number as argument, this means we have to convert the Infosystem search word to the identity number by the help of the workdir. We need to query EDP for this within the {{TranslationHelper}} classes.

(!) You need to rerun the {{exportDictionaries}} task or manually rename the .msg.ma files for your Infosystems to include the working directory. E.g. for an Infosystem IS.OW1.REPLACEMENTCATALOGUE the infosystem's .msg.ma file was named REPLACEMENTCATALOGUE.msg.ma in previous versions, it now has to be renamed to OW1.REPLACEMENTCATALOGUE.msg.ma.
warning

Version 0.9.8

bug_reportESDK-674
createAppJar does not create a standalone app Jar file anymore
Because of restructuring in the ESDK Gradle Plugin building a standalone app Jar file does not work anymore.
check_circle

Version 0.9.7

bug_reportESDK-671
Errors during installation and execution of eapps Infosystem
The following problems need to be fixed:
during installation of eapps importing the infosystem sometimes fails due infosystem number already being used
during execution NumberFormatException is thrown due to differently formatted MANIFEST.MF file since version 0.9.4
check_circle
bug_reportESDK-654
msg.ma files need to be updated if vartab is installed in different additional variable table
As an abas App Customer I want my app to have proper translations, even if the vartab is installed in a different additional variable table as exported from originally.

Acceptance criteria:

after vartab installation, the msg.ma files are modified so they import the texts for the right variable table
check_circle
bug_reportESDK-653
importDictionaries Gradle task fails if language is not installed
As an abas App Developer I want to develop against different abas versions and don't want to edit my language configurations each time, so that I have less effort.

Acceptance criteria:

Language should be ignored if not activated.
check_circle
bug_reportESDK-641
ESDK gradle plugin does not know the abas-db-index.jar
In 2018 the new client dir jar abas-db-index.jar was introduced. It has to be on the app's class path in order to use AJO schema classes.

This results in
{{java.lang.RuntimeException: Class de.abas.erp.db.index.GroupROInterfaceClassIndexImpl not found.}}

ToDo:
add abas-db-index.jar to the provided configuration for these erp versions
add a test in one ESDK test project that makes use of the generated ajo schema classes (and hence needs the abas-db-index.jar at runtime)
check_circle

Version 0.9.6

bug_reportESDK-645
Check preconditions should fail on any problem when executing find on GRADLE_HOME
As an Admin installing an abas App I want to be sure that all rights are correct for the installing user before the installation starts.
check_circle
bug_reportESDK-644
Vartab references in Infosystems don't get updated if Vartab is imported in different additional database
As an abas App Developer I want to have the Vartab reference in my Infosystem updated when the Vartab is imported in a different additional database so that I can use Additional Vartab references in Infosystems.

check_circle
bug_reportESDK-643
Enumerations used in Infosystems don't get updated if imported Enum has different idno
As an abas App Developer I want to have the Enumeration reference in my Infosystem updated when the Enumeration gets a different identity number on import so that I can use Enumerations in Infosystems.

check_circle
addESDK-569
Publish documentation to a central abas documentation domain
As an abas App developer I want to have a single short URL as entry point for all abas cloud products so that I can find information fast.

Acceptance criteria:

A single short URL as entry point is available.
([https://documentation.abas.cloud/en/esdk/])
check_circle
addESDK-565
Create esdk landing page
As an abas App Developer I want to find all relevant links in one central place.

Acceptance criteria:

A landing page exists with some general information on ESDK
The landing page links to the ESDK Documentation
The landing page links to the Project Builder
The landing page links to the Jira Service Desk Support Portal for ESDK
The landing page is available with a proper URL ([www.abas-essentials-sdk.com|http://www.abas-essentials-sdk.com])
check_circle
bug_reportESDK-147
Delete app directory when redeploying app
When installing the same app multiple times the app directory gets created multiple times. Old app directory needs to be deleted before redeployment.
check_circle

Version 0.9.5

addESDK-625
Use workdir creation in essentialsApps project
As an abas Essentials App user I want the eapps project to be able to install even if the ow1 workdir does not exist.

Acceptance criteria:
If ow1 does not exist it will be added for the installing user
If ow1 is inactive it will be activated for the installing user
check_circle

Version 0.9.4

bug_reportESDK-628
Show appropriate error message if App Jar file is corrupted
When the App Jar download ends prematurely and the App Jar file is corrupted a ZipException is thrown. This is not very straight forward for a user installing with the abas-app-installer. Instead a proper message should be printed.
check_circle
bug_reportESDK-619
Abas App Installer fails if umlauts are used in fop.json on windows systems
While installing an app with the abas App Installer an error occurs if the fop.json contains umlauts.
check_circle
bug_reportESDK-597
For standard screens without tabs import fails
For standard screens without tabs to add a tab for the app first a general tab has to be created. When this is done and screen import is tried with the exported screen, it fails due to no tabs being there. So for standard screens without a tab, we first have to add a general tab on import.
check_circle
addESDK-595
Import table fields in standard dbscreens into line zoom
As an abas App Developer I want to be able to import table fields into database screens, so that all my fields are in the screen not just the head fields.

Acceptance criteria:
Table fields in standard screens require a tab with appId name in the line zoom.
Table fields in line zoom can be exported and imported.
check_circle
addESDK-594
Add another way to specify screens for exporting
As an abas App Developer, I want be able to export all the screens I added a tab for my app in, so that I can edit all screens necessary for my app and automatically install the changes.

Acceptance criteria:
Screens without a variable table (e.g. type command screens) can be exported and imported.
Screens from variable tables with multiple screens (e.g. screen 77 of vartab V-09-01) can be exported.
check_circle
bug_reportESDK-570
On screenexportTask save as XML file only what is necessary for the abas App
As an abas App Developer, I want only the relevant parts of the my screen exported, so I do not get unnecessary diffs in case the standard parts change throughout versions.
check_circle
bug_reportESDK-151
Do not require folders to be present on export tasks
On an export task folders should automatically created if not present.
check_circle
addESDK-55
Use new workdir during IS installation
As a developer I want to use any workdir regardless if it is already defined or not for installing infosystems.

Acceptance criteria:

If a non-existing workdir is used it is added for the user with the password used for importing automatically.
Write file with post installation remarks and display it in eapps infosystem as installation remark
check_circle

Version 0.9.3

addESDK-437
Change checkPreconditons task
As a developer I want to check if my configurations are correct and abas Essentials client and Nexus can be reached.

Acceptance criteria

Task checkPreconditons checks environment:
environment variables are set correctly (esp. HOMEDIR != MANDANTDIR)
the SSH_USER has sufficient rights to generate, compile and pack AJO classes (check GRADLE_USER_HOME from homedir.env/mandantdir.env/ajo_install.sh)
Task checkPreconditons does not demo install any components anymore (no installation with rollback anymore)
check_circle
bug_reportESDK-275
Task checkPreconditions already imports keys
Instead of just running in test mode {{importKeys}} during {{checkPreconditions}} already imports the keys.
check_circle

Version 0.9.2

bug_reportESDK-592
Tasks publishHomeDirJars and publishClientDirJars won't run in abas Tools
Both tasks create a temporary file in the local file system, the base directory for the file system is not set, therefore in abas Tools the tasks try to create the file in the base directory of the JVM which for Mac at least is read-only for normal users. The project base dir has to be passed to the method creating the temporary file.
check_circle
bug_reportESDK-573
Abas App Installer fails if umlauts are used in fop.json
While installing an app with the abas App Installer an error occurs if the fop.json contains umlauts.
check_circle

Version 0.9.1

addESDK-578
Show esdk.app configuration in gradle task properties
As an abas App developer I want the gradle task‌{{gradle properties}} to show all properties configured for my project.

Acceptance criteria

The task {{gradle properties}} shows all configured project properties
check_circle
addESDK-571
License Server Proof of Concept together with Team Fusion
As an abas App developer I want to check if my app has a valid license.

Acceptance criteria

license is checked on abas App installation
license is checked when App is running
check_circle
addESDK-550
Rename esdk-installer to abas-app-installer
As a customer installing an abas App I want the installer to have a clear name that states that it installs an abas App not ESDK itself, so that I do not get confused.

Acceptance criteria:
All mentions of ESDK Installer are replaced by abas App Installer
the esdk-installer script is renamed to abas-app-installer

(!) The `esdk-installer` script is renamed to `abas-app-installer`. All calls have to be changed to the new name.
warning

Version 0.9.0

bug_reportESDK-549
Installer does not remove identity number of infosystem before installing
The Installer does not remove the infosystem's identity number before installing, therefore the infosystem installation fails if the search word is already in use. This should be fixed similar to how it is done in the copyIS task in the abas Gradle Plugin.

Reported here: https://community.abas.de/t/debug-abas-bpm-prozesse/1772/7
check_circle
bug_reportESDK-547
Export Tasks do not work in Eclipse
Eclipse tries to export the elements to the JVM's working directory instead of the project directory.
check_circle
bug_reportESDK-546
BU4 in the table section are not exported
If there is a BU4 button in the table section it can be importet, but not exported:
Example snipped for import:

{code}table {
field "BU4" butest {
label ""
heading ""
description "BU4"
screen EDITABLE
showPriority A
changePriority A
}
}
{code}
Will result after exportVartab task in:

{code}table {

}
{code}
check_circle
addESDK-472
Move FAQ section from esdk documentation into Jira Service Desk
Frequently asked questions are handled by Jira Service Desk, now. The corresponding section in the ESDK documentation is dropped.
check_circle
addESDK-392
Provide docker-compose file as download
A as app developer I want to have a docker-compose file that initially starts an erp and nexus container to have an easy to start environment for starting development of my first app.

Acceptance criteria:
docker-compose.yml is a static resource of the documentation
in the documentation the docker-compose.yml can be downloaded
Include downloading the docker-compose.yml in the Big Picture.
check_circle
addESDK-376
Each ESDK component must know about their version
As an App Developer I want to be able to see/query the version of an ESDK component, so that I can get quick support for the specific version.

Acceptance criteria:

esdk-installer gets \-\-version option
esdk gradle-plugin gets a task to output its version
esdk project builder displays its version in the header
abas App has information about ESDK version in MANIFEST.MF
check_circle

Version 0.8.2

bug_reportESDK-525
When no vartab folder exists, installData task is always skipped
Task installData is always skipped, if the abas App does not contain a vartab folder due to the following logic:

{code}
static void disableTaskForDeployWithoutVartab(Project project, AppConfig appConfig) {
List skippedTasks = ["installScreens", "varreorg", "installVartabs", "importData"]
skippedTasks.each({
Task task = project.tasks.getByName(it)
task.onlyIf({
return appConfig.tables != null && !appConfig.tables.isEmpty()
})
})
}
{code}

As data imports are not necessarily connected to variable tables being added or modified, skipping importData does not make any sense here.
check_circle
addESDK-420
Build very first basic app tutorial
As an app developer I want to have a short tutorial I can follow along so that I have a working basic app in the end.

Acceptance criteria:

Example code on GitHub with automatic builds
max. 5 minute example of a basic app creation (e.g. infosystem with some logic)
additional text description of all involved steps
steps in abas Essentials are demonstrated using the native UI
check_circle

Version 0.8.1

bug_reportESDK-524
abas-compliance is an implicit dependency when using the ESDK Gradle plugin but was discarded in 2017r4n05
The ESDK Gradle plugin sets {{de.abas.homedir:abas-compliance}} as a {{provided}} dependency which is inteded to be pushed to the maven repository for HOMEDIR jars. Since it was discarded in abas Essentials from versions 2017r4n05, 2018r1n02 and 2018r2n00 on, this dependency cannot be resolved anymore.

(!) To fix this bug, this dependency was removed. For earlier abas Essentials versions it has to be added manually to you project's {{build.gradle}}.
check_circle

Version 0.8.0

bug_reportESDK-514
redeployApp onlyIf check always fails
The redeployApp onlyIf check uses the command helper to execute a command, but in the EsdkPlugin class the helper is not initialized, this leads to the command failing and the onlyIf always is false. That is why redeployApp always gets skipped.
check_circle
addESDK-510
Change searchword to classname for enumerations in build.gradle
As an abas app developer I want to have unique identification for my enumeration, so that I can ensure the right one gets exported.

Acceptance criteria:
Put classname of enums in build.gradle instead of search word (the latter is not necessarily unique)
For gradle plugin we can get all enum classnames from build.gradle for esdk-installer we can get them from MANIFEST.MF

(!) Incompatible change:
If your project uses abas enumerations, change their references in the project's {{build.gradle}}
({{esdk.app.enums = [ ... ]}}) from search word to classname.
warning
bug_reportESDK-509
No authentication needed if nexus repo is abas.maven-public
The abas.maven-public repository does not need authentication, therefore if the abas app is in this repository we should not ask for authentication, since this will confuse the users.

Or instead of hardcoding the repo we can also introduce a new installer param \-\-public-repo.
check_circle
bug_reportESDK-500
No identification field given on non standard enumerations
There is a fixed dependency defined for enumerations, it uses guid as identifier but the guid field is not among the head fields. Further it is set to 107:1 however enumerations can also have different types (in the linked issue the enum field is of type 109:2).

JEDPDataProvider.scala:58 in dependency-resolver:
{code}
val selection = new RootSelection(107, 1, Option("guid"), Option("false"), Option("false"), List("id", "nummer", "such", "namebspr"), List("1:zid", "1:aebez", "1:vaufzelem"), crit)
{code}
check_circle
bug_reportESDK-478
publishClientDirJars reads jar files from wrong directory
The gradle task {{publishClientDirJars}} calls {{publishAllClientJars}} in the nexus project on the essentials server. The latter searches for the jar files to publish in {{MANDANTDIR/java/lib}} which is the wrong place. This directory only contains symbolic links (if they were generated) to the original files in {{MANDANTDIR/abasbase/java/lib}}.

-> Read the client dir jars from {{MANDANTDIR/abasbase/java/lib}}.
check_circle
bug_reportESDK-477
Issue Tracker Link on Bintray points to the old URL
The Issue Tracker Link on https://bintray.com/abas/abas-essentials-sdk/de.abas.esdk points to https://support.abas-usa.com/.

It should point to https://abascloud.atlassian.net/servicedesk/customer/portal/1 instead.
check_circle
bug_reportESDK-476
On windows hosts installBaseFiles does not copy any files to the server
The problem is: There is the source file system's file separator char used even for the target file system. This does not work if one of them is Windows and the other Linux.

Unfortunately the file copy operation does not fail with an error in this case. Just the files are not there.
check_circle
addESDK-475
Write every environment variable and parameter to installation log
As an app developer I want all environment variables and parameters the installer depends on to be logged to the installation.log for easy debugging.

Acceptance criteria:

Every environment variable and every parameter value of the installer (except the password) is written to the installation log file.
check_circle
addESDK-423
Rename Enumeration before importing when necessary
As a developer I want to import an enumeration even if there is another one with the same {{such}}/{{idno}} in the target abas Essentials client.

Acceptance criteria
The new enumeration get's imported
all references to this enumeration will be considered:
Infosystems
Enumerations
Vartabs
check_circle
addESDK-388
Run app installation with one Gradle task
As an abas app developer I want the tasks {{publishHomeDirJars}} and {{publishClientDirJars}} to only run if necessary, so that I can install the abas App with only one command.

Acceptance criteria:
{{publishHomeDirJars}} and {{publishClientDirJars}} show UP-TO-DATE if all jars are already in the Nexus repositories and have not changed
the task {{fullInstall}} includes {{publishHomeDirJars}}, so that to install an app via the abas Gradle plugin only {{fullInstall}} must be executed

(!) Incompatible change:
The nexus SNAPSHOT repositorie`s default name has changed from {{NEXUS_NAME-SNAPSHOTS}} to {{NEXUS_NAME-SNAPSHOT}}. If you are using our nexus setup inside a docker container, provided by our docker-compose file, please change the following line in your project's {{build.gradle}}:

{code}
repositories {
...
- maven { url "http://NEXUS_HOST:NEXUS_PORT/nexus/content/repositories/NEXUS_NAME-SNAPSHOTS" }
+ maven { url "http://NEXUS_HOST:NEXUS_PORT/nexus/content/repositories/NEXUS_NAME-SNAPSHOT" }
}
{code}
warning

Version 0.7.5

bug_reportESDK-474
Naming inconsistency: "importonce" instead of "importOnce"
In the data.json all attributes are lower case, only. The new attribute "importOnce", introduced in version 0.7.4, marches to a different drummer.

(!) This is an incompatible change compared to ESDK version 0.7.4 which introduced this attribute. Use 0.7.5 right from the beginning to avoid later efforts.
warning

Version 0.7.4

bug_reportESDK-469
jfopserver_cmds.sh fails if ls jfopserver.*.dat lists more than one file
{{jfopserver_cmds.sh}} fails if {{ls jfopserver..dat}} lists more than one file
check_circle
bug_reportESDK-465
Missing DependentSelection error message does not include mandatory guid field
The guid field is missing from the Exception message:

{code}
Caused by: java.lang.Exception: You have to give a DependentSelection for 88:4
To define it in your json data export file add:       
"dependents" : [
                {
                        "dbnr" : 88,
                        "grnr" : 4,
                        "headfields" : [ "id", "such", "name" ],
                        "tablefields" : []
                }       
]       
at de.abas.esdk.core.installers.edp.EDPDataExporter.exportData(EDPDataExporter.groovy:45)        at de.abas.esdk.core.data.DataExporterexportData.call(Unknown Source)        at de.abas.esdk.gradle.data.ExportDataTask_run_closure1.doCall(ExportDataTask.groovy:16)        ... 111 more
{code}
check_circle
bug_reportESDK-450
Favicon for online documentation
The online documentation should have a favicon.
check_circle
addESDK-439
Make it possible to import files into subdirectories of $MANDANTDIR
As a developer I want to import files into subdirectories of MANDANTDIR on multiple levels (e.g. MANDANTDIR/win/layouts/layout.jrxml) so that I can work with these files (e.g. for printing).

Acceptance criteria:
Printing layouts can be imported into win directory.
Rights and overwrite permissions can be set/are evaluated.
check_circle
bug_reportESDK-438
Make it possible to deactivate parent = DEFAULT_SHARED
As a developer I want to use newer java libraries than those delivered with abas Essentials to use their new features.

Acceptance criteria:
{{parent_delegation}} is set to false when {{config.app.shared}} is {{false}}
check_circle
addESDK-395
Possibility to import data only once
As a developer I would like to be able to define that an import of specific data happens only once on the first installation in order to support default values that can be overridden by customers afterwards and don't break after an update of the app.

Acceptance criteria:
there is a different folder that specifies the data which gets imported once or on every update.
It is only possible to specify for "normal" data object to only be imported once (so enums and keys are out of scope)
check_circle
addESDK-288
Possibility to include alias fields in own DB schemas.
As an eSDK developer, I want to be able to include alias fields in my DB schemas, so that I can install my eSDK packages which have aliases in them.

Acceptance criteria:
Alias fields can be exported
Alias fields can be imported
For now only alias fields of app fields are to be supported
check_circle
addESDK-229
For data.json add a possibility to update arbitrary objects
As a developer, I don't want standard objects I depend on to be recreated but I still want to be able to reference them in my data.json file for the objects I want to create.

Acceptance criteria:
in the data.json there is an option "standard object"
in the data.json I can add how the standard object is identified (e.g. identity number, search word, object id)
check_circle

Version 0.7.3

bug_reportESDK-451
Version 0.7.2 throws ClassNotFoundException for TransactionException
If the Gradle Plugin from the Gradle Plugin Page is used, a {{ClassNotFoundException}} for the {{TransactionException}} is thrown.

For the same reason, the eclipse tasks fails with an error:
{code}
gradle eclipse
FAILURE: Build failed with an exception.
What went wrong:
A problem occurred configuring root project 'pdmSearchDocuments'.
> Could not resolve all files for configuration ':classpath'.
> Could not find core.jar (de.abas.esdk:core:0.7.2).
Searched in the following locations:
https://plugins.gradle.org/m2/de/abas/esdk/core/0.7.2/core-0.7.2.jar
Try:Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED in 2s
{code}
check_circle
bug_reportESDK-385
Semantic version check fails when using gradle plugin mechanism
If I change my gradle.build to use

{code:groovy}
buildscript {
repositories {
mavenLocal()
}
dependencies {
classpath "gradle.plugin.esdk:gradlePlugin:0.7.0"
}
}
{code}

+
{code:groovy}
apply plugin: 'de.abas.esdk'
{code}
AFTER I set the version, then it works.


instead of :
{code:groovy}
plugins {
id "groovy"
id "idea"
id "maven-publish"
id 'com.palantir.git-version' version '0.5.2'
id 'de.abas.esdk' version '0.7.0'
}
{code}
check_circle

Version 0.7.2

bug_reportESDK-449
Pictures are not shown in documentation
Make big picture visible in the documentation
check_circle
addESDK-446
Discontinue app-loader
As a developer I want ESDK to be as stable as possible, so that I can rely on its functionality, I also want the ESDK team to concentrate on the main product components.

The app-loader is not a stable component and also not widely used (usage is currently restricted to abas AG internally anyway).

Acceptance criteria:
The app-loader is no longer a subproject of abas-essentials-sdk
The app-loader is removed from the build and release pipelines
check_circle
bug_reportESDK-442
Task :installBaseFiles fails if directory exists
If the target directory exists the task installBaseFiles fails.
check_circle
bug_reportESDK-441
Path to essentialsApps Jar contains relative path
The esdk-installer contains a relative path to the essentialsApps.jar, therefore the esdk-installer can only be used if {{esdk-installer/bin}} is the working directory.

The esdk-installer should be working directory independent.
check_circle
bug_reportESDK-422
Make installation for the development clients (v9999) work again
Since we are checking the compatible abas Essentials versions, its master version (v9999r9) is not treated as compatible anymore. The installer should shout a warning but not refuse to install.
check_circle
addESDK-413
Validate appId
As a user I want to be sure to use a valide appId so that failing app installations can be prevented.

Acceptance criteria:
A valide appId must be 5 characters long, start with a lower case alphanumerical value and only contain lower case alphanumerical values and numbers.
The app cannot be build if the appId is invalid, an appropriate error message will be displayed.
The project builder will not validate the appId at this point.
check_circle
addESDK-396
Line-ending error occurs when using Windows as development system.
As a Windows user I want to make sure the carriage return / line feeds are treated correctly.

When checking out with git the line endings are replaced for the target (Windows) system.

This leads to error messages similar to the following:
{{./gradlew: line 2: '\r': command not found}}

Acceptance criteria
there is a FAQ describing what to do and were
check_circle
addESDK-387
Export all components with one Gradle task
As an abas App developer I want to have the possibility to run a tasks that exports all components at once, so that I do not have to run all export tasks separately (especially during project setup).

Acceptance criteria:
task {{exportAll}} exports all components that are configured in the build.gradle of the abas App project
task {{exportAll}} skips export tasks of components that are not configured
check_circle
addESDK-358
Add esdk setup manual for new projects and existing projects to documentation
As a newby abas Essentials app developer I want a step by step setup manual for new and existing projects in the esdk documentation, so that its easier for new developers to create a project and also the documentation is up to date with a "getting started guide".

Acceptance criteria:
A newbie app developer can follow the getting started guide to create a new app
A newbie app developer can follow the getting started guide to install and further develop an existing app
Underlying technologies (gradle, docker, etc.) will not be explained
check_circle

Version 0.7.1

addESDK-375
Write the ESDK version to MANIFEST.MF of the essentialsApp
As a developer and as a customer I want to know which ESDK version is used to build a specific essentialsApp.

Acceptance criteria:
The {{buildWithEsdkVersion}} property is included to the MANIFEST.MF of the essentialsApp.
check_circle
bug_reportESDK-373
Improve documentation for version in gradle.properties
There is no mention of a version in the gradle.properties of an abas App project.
It is mandatory to have a version and should therefore be mentioned.
check_circle
bug_reportESDK-372
importDictionaries task fails if no vartab dir and/or no Infosys dir exist
For projects with no vartabs the vartabs folder does not exist, for projects without infosystems the infosystems folder does not exist.
It needs to be checked whether the folder exists:
if both do not exist, the task can be skipped
if one does not exist, it needs to be checked and the part for that folder should be skipped
check_circle
bug_reportESDK-370
esdk-installer does not check if JFOP server is up before redeploy is executed
In the gradlePlugin, we check whether the JFOP server is running and only redeploy it if that is the case:
{code}
def runRedeployTask = true
try {
esdkConfig.helper.executeCmd("ls jfopserver..dat")
} catch (ignored) {
runRedeployTask = false
}
redeployAppTask.onlyIf {
return runRedeployTask
}
{code}

There is no such check in the esdk-installer which leads to an error.
check_circle
addESDK-359
HowTo video: use all ESDK components to build and install an app
As an ESDK developer I want quickly gather information about how to use all ESDK components to build and install an app.

Acceptance Criteria
Provide abas academy with relevant information
Content:
Overview: What different ESDK components exist and how and when to use what
Example: Show and explain, what to use and where to find more information.
check_circle
addESDK-182
App Metadata in Essentials Client
As a developer and as a customer I want to know which apps in which version are installed on my client ("mandant")

Acceptance criteria:
The following information must be accessible:
Which apps are installed?
For each app:
App id
App version
abas Essentials version compatibility
Date of installation
List all components that belong to it
Installation log file ESDK-183

The directory structure is: {{MANDANTDIR/esdk\-installations///}}
check_circle
addESDK-141
Automatically refresh dependencies for client jars
As an app developer I want to develop and compile against the latest schema so that the development is fluent and less error prone.

Acceptance criteria
Clientdir jars are published as snapshots
Gradle immediatley checks if clientdir jar Snapshots were published

Current state:
One needs to run {{--refresh-dependencies}} after schema changes for recompiling to get the new published jars that contain the changes, if the new jars where published less than 30min after the jars before that.

We want to implement that gradle immediately checks whether new clientdir jar SNAPSHOTS were published.

(!) The following line has to be added to the repository closure of your build.gradle file:
{code}
maven { url "http://NEXUS_HOST:NEXUS_PORT/nexus/content/repositories/NEXUS_NAME-SNAPSHOTS" }
{code}
(!) To use this version in an abas ERP docker container without shutting down the container after the version change or when building against an installed abas ERP (no docker container), make sure to delete {{MANDANTDIR/nexus}} manually before building with the new version.
warning

Version 0.7.0

bug_reportESDK-369
When a user has no permissions for the nexus repository the esdkInstaller just shows the usage
It should show the root cause (401 or 403), instead.
check_circle
bug_reportESDK-357
The 0.6.9 installer zip contains folders `esdk-installer-0.6.9` and `esdk-installer-0.6.9-SNAPSHOT`
The 0.6.9 installer zip contains folders `esdk-installer-0.6.9` and `esdk-installer-0.6.9-SNAPSHOT`

Tasks to remove signing from esdk-installer jar need to be adapted so no old esdk-installer versions get packaged into the unsigned zip
check_circle
bug_reportESDK-355
enumReorg reorganizes keys instead of enums
enumReorg functionality reorganizes keys (uses btreorg) instead of enums. It should run {{azverw -pur -e -I}}
check_circle
bug_reportESDK-352
Task installAjo does not regenerate the enumerations for enumsAfterVarreorg
If there are only enumsAfterVarreorg installAjo does not regenerate the enumerations.
check_circle
addESDK-329
Introduction video for ESDK
As an ESDK developer I want quickly gather information about abas ESDK, so that I know what abas ESDK is about.

Acceptance Criteria:
Provide abas academy with relevant information
Content:
Overview: What are main features/benefits of abas ESDK
Comparison: Current way of customization vs "the ESDK-way"
check_circle
addESDK-327
Create EDP log for dbconfig
As a developer, I want to get an error message with more context when vartab import fails.

Acceptance criteria:
EDP log can be enabled/disabled
If enabled, EDP log is saved locally
check_circle
addESDK-319
Store abas Essentials version compatibility within standalone app JAR
As an abas Essentials app developer I want the abas Essentials version compatibility range to be a project property and gets stored within the standalone app JAR, so that the esdk-installer can determine what artifact to use for the abas Essentials client the app gets installed in.

Acceptance criteria:
Only one abas Essentials version range is supported
Version range is validated and error message is displayed in case of invalid version range
esdk-installer checks whether abas Essentials client version is compatible with app version range
warning
addESDK-249
Make esdk-installer output success/failure output after it finished executing
Currently, a successful installation just stops the installer with return code 0. As an App Developer or Operator I want to have a SUCCESSFUL message so that I can see when an installation was definitely successful.
check_circle
addESDK-248
Create EDP log for dependency-resolver
As a developer, I want to get an error message with more context when data import fails.

Acceptance criteria:
EDP log can be enabled/disabled
If enabled, EDP log is saved locally
check_circle
addESDK-247
Give stand-alone app jar a version number
As an app developer, I want the standalone app jar of my app to contain the version number, so that I know what version of my app I/my customer is installing.

Acceptance criteria:
The version number of the app (Gradle standard variable) is added to the name of the standalone app jar on the {{createAppJar}} task
(!) The version number is required (in settings.gradle or gradle.properties) for using the gradlePlugin
The version must be a valid semantic version
warning
addESDK-183
Installation log file
As an admin I want to have an installation log file to find information about an app's installation process (e.g. errors) in a unique place.

Acceptance criteria:
A log file is written by the esdk-installer
The log file's path name is: {{MANDANTDIR/esdk\-installations///install\-.log}}
Each installation creates a new log file, the older ones' rolling file numbers are shifted
A new option {{-q}} reduces the console output down to a minimum
check_circle

Version 0.6.9

bug_reportESDK-328
Use database and group name instead of number to identify additional databases
Since 0.5.2 dependency resolver uses database and group number instead of name.
For additional databases this is not sufficient as the database number changes if the database was imported in a different additional database as originally exported.
It was initially switched from name to number because of language independency but since we use German as fixed EDP language, this is not an issue anymore.
check_circle
bug_reportESDK-284
sparePartCatalogueApp Jenkins Job successful despite Exception
https://workflow.jenkins.abas.sh/view/ESDK/job/sparePartCatalogueApp/job/master/10/consoleFull contains an Exception but the job does not fail:

{code}
13:57:51 Fehler in Bedingung: vdntxt=={Replacement}
13:57:51 de.abas.ceks.jedp.InvalidQueryException: Selektionskriterien nicht korrekt
13:57:51 Fehler in Bedingung: vdntxt=={Replacement}
13:57:51 at de.abas.ceks.jedp.internal.query.EDPQueryExecutorImpl.execute(EDPQueryExecutorImpl.java:205)
13:57:51 at de.abas.ceks.jedp.internal.query.EDPQueryExecutorImpl.execute(EDPQueryExecutorImpl.java:194)
13:57:51 at de.abas.ceks.jedp.internal.query.EDPQueryExecutorImpl.execute(EDPQueryExecutorImpl.java:182)
13:57:51 at de.abas.ceks.jedp.internal.query.EDPQueryExecutorImpl.execute(EDPQueryExecutorImpl.java:134)
13:57:51 at de.abas.ceks.jedp.internal.query.EDPQueryImpl.doStartQueryExecution(EDPQueryImpl.java:604)
13:57:51 at de.abas.ceks.jedp.internal.query.EDPQueryImpl.doStartQuery(EDPQueryImpl.java:583)
13:57:51 at de.abas.ceks.jedp.internal.query.EDPQueryImpl.startQuery(EDPQueryImpl.java:744)
13:57:51 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
13:57:51 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
13:57:51 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
13:57:51 at java.lang.reflect.Method.invoke(Method.java:498)
13:57:51 at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSitePojoCachedMethodSite.invoke(PojoMetaMethodSite.java:192)
13:57:51 at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:56)
13:57:51 at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
13:57:51 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
13:57:51 at de.abas.esdk.core.installers.edp.EDPScreenHandler.getGrpToScreenNrForTable(EDPScreenHandler.groovy:62)
13:57:51 at de.abas.esdk.core.installers.edp.EDPScreenHandlergetGrpToScreenNrForTable.call(Unknown Source)
13:57:51 at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
13:57:51 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
13:57:51 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
13:57:51 at de.abas.esdk.core.installers.edp.EDPScreenImporter.importScreens(EDPScreenImporter.groovy:22)
13:57:51 at de.abas.esdk.core.installers.edp.EDPScreenImporterimportScreens.call(Unknown Source)
13:57:51 at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
13:57:51 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
13:57:51 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:141)
13:57:51 at de.abas.esdk.core.installers.edp.EDPScreenHandler.installScreen(EDPScreenHandler.groovy:30)
13:57:51 at de.abas.esdk.core.screens.ScreenHandlerinstallScreen.call(Unknown Source)
13:57:51 at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
13:57:51 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
13:57:51 at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:133)
13:57:51 at de.abas.esdk.gradle.screens.InstallScreenTask_run_closure1.doCall(InstallScreenTask.groovy:21)
{code}
check_circle
bug_reportESDK-276
Task importKeys cannot be run multiple times
Trying to update already imported keys during task {{importKeys}} fails due to:
{{Caused by: de.abas.ceks.jedp.CantChangeFieldValException: Feld ist nicht änderbar bart(0) = \[automatisch (Kopf)\]}}

See also: https://workflow.jenkins.abas.sh/view/ESDK/job/trainingApp/job/master/4/console
check_circle
bug_reportESDK-257
App Loader's entrypoint.sh: take the esdk-installer version into account
With {{esdk-installer}} version 0.6.1 its parameters are named: ESDK-222

{{entrypoint.sh}} does not take this incompatible change into account. There has to be a switch on {{installer}} which contains the esdk-installer version to use.
check_circle
addESDK-139
Export part screens (tabs) instead of complete screens
As a customer I want to have multiple apps installed that can customize the same screen and I want both app's screen changes without manual adaptions necessary.

Acceptance criteria:
Screen export for standard databases will only export the tab of the screen that belongs to the app
Screen import for standard databases will import the app's screen changes as a tab and integrate it in the existing screen
Screen export for additonal databases can export both one tab of the screen or the whole screen depending on developer configuration
Screen import for additonal databases can import both one tab of the screen or the whole screen depending on developer configuration
New Screen definition is compatible with QT gui and native gui
warning

Version 0.6.6

bug_reportESDK-309
esdk-installer fails to download from Nexus in case of active webproxy
The esdk-installer does not consider web proxy settings and therefore fails to download standalone app jars from Nexus in case of an active web proxy.

This can be fixed by reading from the web proxy environment variables and considering the web proxy accordingly if set.

Environment variables to read the web proxy from:
http_proxy
https_proxy

e.g.
http_proxy=http://webproxy.abas.de:8000
https_proxy=http://webproxy.abas.de:8000
check_circle
bug_reportESDK-294
Adding VP98 via Vartabimporter is not possible
Adding a VP98 via the VartabImporter (and therefore eSDK) ist not possible because it has to be a skip field.
The skip field has to be set BEFORE the variable type or an error pops up from ERP saying

'VP98: Dieser V-Verweis ist nur bei Skip-Items erlaubt'.

The order of setting fields has to be changed to allow the addition of VP98.
check_circle
bug_reportESDK-179
Build process fails without entry points
{code}
Caused by: org.gradle.api.GradleException: Problem while creating abas app:
at de.abas.made.gradle.app.CreateAbasAppTask.run(CreateAbasAppTask.groovy:29)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStoreStandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:136)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStoreStandardTaskAction.execute(DefaultTaskClassInfoStore.java:129)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStoreStandardTaskAction.execute(DefaultTaskClassInfoStore.java:118)
at org.gradle.api.internal.AbstractTaskTaskActionWrapper.execute(AbstractTask.java:623)
at org.gradle.api.internal.AbstractTaskTaskActionWrapper.execute(AbstractTask.java:606)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
... 68 more
Caused by: java.lang.NullPointerException: Cannot invoke method join() on null object
at de.abas.made.gradle.app.CreateAbasAppTask.createMetaFolder(CreateAbasAppTask.groovy:51)
at de.abas.made.gradle.app.CreateAbasAppTask.run(CreateAbasAppTask.groovy:27)
... 76 more
{code}
check_circle
addESDK-4
Possibility to import vartab dependent enums
As a developer, I want all imports to be automatically run in the right order when executing the fullInstall task so that the fullInstall task does not fail due to dependencies not being imported yet.

Acceptance criteria:
A developer can specify per enum whether to install it before or after vartabs
Fullinstall and standalone installer take this into account
Cycles will not be resolved.
check_circle

Version 0.6.7

bug_reportESDK-309
esdk-installer fails to download from Nexus in case of active webproxy
The esdk-installer does not consider web proxy settings and therefore fails to download standalone app jars from Nexus in case of an active web proxy.

This can be fixed by reading from the web proxy environment variables and considering the web proxy accordingly if set.

Environment variables to read the web proxy from:
http_proxy
https_proxy

e.g.
http_proxy=http://webproxy.abas.de:8000
https_proxy=http://webproxy.abas.de:8000
check_circle
bug_reportESDK-294
Adding VP98 via Vartabimporter is not possible
Adding a VP98 via the VartabImporter (and therefore eSDK) ist not possible because it has to be a skip field.
The skip field has to be set BEFORE the variable type or an error pops up from ERP saying

'VP98: Dieser V-Verweis ist nur bei Skip-Items erlaubt'.

The order of setting fields has to be changed to allow the addition of VP98.
check_circle
bug_reportESDK-179
Build process fails without entry points
{code}
Caused by: org.gradle.api.GradleException: Problem while creating abas app:
at de.abas.made.gradle.app.CreateAbasAppTask.run(CreateAbasAppTask.groovy:29)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStoreStandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:136)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStoreStandardTaskAction.execute(DefaultTaskClassInfoStore.java:129)
at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStoreStandardTaskAction.execute(DefaultTaskClassInfoStore.java:118)
at org.gradle.api.internal.AbstractTaskTaskActionWrapper.execute(AbstractTask.java:623)
at org.gradle.api.internal.AbstractTaskTaskActionWrapper.execute(AbstractTask.java:606)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
... 68 more
Caused by: java.lang.NullPointerException: Cannot invoke method join() on null object
at de.abas.made.gradle.app.CreateAbasAppTask.createMetaFolder(CreateAbasAppTask.groovy:51)
at de.abas.made.gradle.app.CreateAbasAppTask.run(CreateAbasAppTask.groovy:27)
... 76 more
{code}
check_circle
addESDK-4
Possibility to import vartab dependent enums
As a developer, I want all imports to be automatically run in the right order when executing the fullInstall task so that the fullInstall task does not fail due to dependencies not being imported yet.

Acceptance criteria:
A developer can specify per enum whether to install it before or after vartabs
Fullinstall and standalone installer take this into account
Cycles will not be resolved.
check_circle

Version 0.6.8

addESDK-440
Test Issue for JSD
This is only for testing!!!!
check_circle
bug_reportESDK-325
Make enumAfterVarreorg dir optional
Right now the enumAfterVarreorg directory is mandatory. It should be optional.
check_circle
bug_reportESDK-290
ExportIS crashes when IS search word contains a dot
The exportIS task crashes if the infosystem name contains a dot, i.e. IS.OW1.COST.CALCULATION
check_circle
addESDK-91
Introduce language independency for all components
As a user, I want to be able to install any app in my client non-regarding what operating language I am using.

As a developer, I want my app to be able to get installed in any client non-regarding that client's operating language.

Acceptance criteria:
All components are language independent
The demoApp can be installed in an English and a German client without changing operating languages for installation
The default variable language (e.g. in data import/export) is English
The variable language can be configured to be German
check_circle

Version 0.6.5

addESDK-443
Test issue for JSD
Only for testing
check_circle
bug_reportESDK-307
esdk-installer always gets and checks console whether needed or not
The esdk-installer always gets and tries to null check the console, even if all parameters are provided and the console is not needed.
This poses a problem for Team Fusion during installation via ssh.
check_circle
addESDK-265
A publicly available demo project
A demo project for the following purposes should be developed:

Demonstrate each ESDK feature in an isolated way
Use as end-to-end test cases for new features
check_circle


Version 0.6.2

bug_reportESDK-246
s3_conv learned option -I in version 2017r2, only, and ESDK core uses it
In version of abas Essentials before 2017r2 {{s3_conv}} did not have the option {{-I}}. Hence, it cannot be used in a version-agnostic way.
check_circle
addESDK-58
Localizable ESDK Apps
As a developer I want to be able to localize my App so that I can sell it to a wider target group.

Acceptance criteria:
For all in {{java/apps/}} and {{screens/}}:
The properties files are whitelisted and not overridden by Essentials' dictionary
Apps use property files that are part of an ESDK project for localization
check_circle

Version 0.6.3

bug_reportESDK-246
s3_conv learned option -I in version 2017r2, only, and ESDK core uses it
In version of abas Essentials before 2017r2 {{s3_conv}} did not have the option {{-I}}. Hence, it cannot be used in a version-agnostic way.
check_circle
addESDK-58
Localizable ESDK Apps
As a developer I want to be able to localize my App so that I can sell it to a wider target group.

Acceptance criteria:
For all in {{java/apps/}} and {{screens/}}:
The properties files are whitelisted and not overridden by Essentials' dictionary
Apps use property files that are part of an ESDK project for localization
check_circle

Version 0.6.1

bug_reportESDK-228
Login information for the installer should be an optional argument
The user should be able to give the password for the installer in a hidden format. So if it's not given directly in the call, the user should be asked for the password/s instead, with asteriks for the input.
Along the lines of ssh calls.
warning
bug_reportESDK-227
An already existing "Vorbereitete Vartab" should not result in a crash of the installation process.
A failed installation process might have added a "vorbereitete vartab", though if it has the same name, it should only be updated and it should not cause an error during installation.

Project: dbconfig
Task: installVartab (implementation in `core`)
check_circle
addESDK-225
Run task installBaseFiles before task installIS as the infosystem might use FOPs that need to be present already
As a developer, I want to have the possibility to install an infosystem with ESDK that depends on FOPs that are part of my project. I am aware, that this project cannot be accepted to the marketplace as long as it contains FOPs.

Acceptance criteria:
All infosystems can be installed regardless of FOPs they depend on.
All dependent FOPs that are part of the ESDK project will also get installed.
check_circle
addESDK-222
Named parameters for the standalone-installer
As a person who deploys Apps to abas Essentials I want to specify named parameters to the stand-alone installer so that their meanings are clear and I don't have to fill up gaps with empty strings.

Currently, the standalone-installer's command line parameters always have to be specified completely and in the right order. This leads to lines like this:

{{./esdk-installer '' 'sy' '' '' /abas/erp1/sparePartCatalogueApp-standalone-app.jar}}

Acceptance Criteria:
Parameters are named
Parameters that can remain empty, are optional
warning
bug_reportESDK-221
On bintray versions aren't displayed correctly
For Example on https://bintray.com/abas/abas-essentials-sdk/de.abas.esdk#files/de%2Fabas%2Fesdk%2Finstaller all Versions are displayed as {{com.jfrog.bintray.gradle.BintrayExtensionVersionConfig@4e7f90ee}}. Seems like a missing toString() method.
check_circle
addESDK-220
Generate Release Notes
As a Developer I want to get to know when there is a new ESDK Release and what the new features are so that I can use it immediately and benefit from the fixed bugs and new features.

Acceptance Criteria:
ESDK Versions are managed in JIRA
In their release step the release pipelines read unreleased versions from JIRA and show them in a drop-down list
Release Notes are generated in the release pipeline step of the main project {{abas-essentials-sdk}} using the corresponding Stories and Bugs from the ESDK JIRA project
Technical Stories and Tasks are not part of the release notes since they are of internal use, only
New JIRA project for ESDK Project Builder exists
Making the description of each Story publishable is part of the DoD
Release Notes are generated in the release pipeline step of the esdk-project-builder using the corresponding Stories and Bugs from the ESDK Project Builder JIRA project
check_circle
addESDK-27
Rename References (Additional Databases)
As an ESDK developer I want to use one Variable Table as a Type in another Variable Table to have more flexibility in database schema modeling.

One Variable Table may be used as a type in another Variable Table.
Regarding Enumerations: They may be used as types in Variable Tables and Variable Tables can be used in Enums as well. This story ignores the latter. In the first step, Enums are always imported first.

Acceptance criteria:
Data types get automatically renamed
Preview(Darstellungsmodus) remains intact
Cycles can be ignored, they are printed as error messages
References to standard databases will not be touched
check_circle


Version 0.5.2

bug_reportESDK-199
Task redeployApp gets error when JFOP server is shutdown
Skip redeploy task if jfopserver is not running.
check_circle
bug_reportESDK-197
core component of esdk does not find all dependencies in latest release
jar does not contain all internal jars and pom contains them but should not.
check_circle
bug_reportESDK-148
Constant extract dir /tmp/extractDir leads to conflicts
The extract dir is the same for all apps.
check_circle

Version 0.5.1

bug_reportESDK-192
ShellRedeployer tries to redeploy a JFOP-Server which is shut down
Skip JFOP-Server instances with `shutdown` in their `.dat` file name.
check_circle
bug_reportESDK-191
gawk is not a preinstalled program on all operating systems abas can officially be installed on
Revert these changes (commit f26dc9876e2a6c4932b0b254eeadffb26e7d9abc):
{code}
- private replaceAppStartMarker(to) {
- helper.executeCmd("awk -v r=\"\(cat abasClientDir/tmpDir/tmpFopTxt)\" '{gsub(/#### {appId}.start ####/,r)}1' abasClientDir/tmpDir/fop.txt.templ > abasClientDir/to")
Add a comment to this line
+ private replaceAppStartMarker() {
+ helper.executeCmd("gawk -i inplace -v r=\"\(cat abasClientDir/tmpDir/tmpFopTxt)\" '{gsub(/#### {appId}.start ####/,r)}1' abasClientDir/tmpDir/fop.txt.new")
{code}
check_circle
bug_reportESDK-177
DEFAULT_SHARED app not redeployed
After installation of an esdk app, which needs an AJO regeneration the DEFAULT_SHARED app needs to be redeployed.
check_circle


Version 0.4.11

addESDK-180
On fullInstall updating fop.txt should be possible
As a developer, I want to be able to update all components of my app. Right now I can add new entries to fop.txt, but I cannot remove old entries automatically.

Acceptance criteria:
New entries can be added to fop.txt
Old entries can be deleted
Existing entries stay put
The documentation contains a warning that fop.txt lines that were imported with a previous ESDK version aren't changed automatically
check_circle

Version 0.0.1

bug_reportESDK-175
Values with trailing whitespaces in build.gradle should not lead to error
This currently leads to an UnknownHostException
check_circle
bug_reportESDK-145
fop.txt has charset s3, therefore edit mode "ändern" leads to error
We can fix this by running {{s3conv.sh}} first to convert the new lines to s3 charset before adding them to fop.txt.
check_circle
bug_reportESDK-129
Allow star (*) in fop.json
Allow star () in fop.json
check_circle
addESDK-128
File configuration options
As an eSDK developer, I want to tell the standalone/gradlePlugin to not deploy certain files of in my src/main/resources/base/ folder, so that my customer can keep their configuration files intact even if I need to deploy a new version of the app.

Acceptance criteria:
Specified file will not be copied over if already present in the target company, using either the standalone app or the gradlePlugin.
Specified file will be set to read only after being copied
Specified file will be set to read+write after being copied
Specified file will be set to executable after being copied
Specified file will have crlf- applied to it after being copied
check_circle
bug_reportESDK-127
Files get transformed when transferred to abas
All files get 'crlf-' on them after transfer. This is OK for text files, but for any other type of file (mainly binaries), it destroys them.

Suggestion from Ronny: add a in folder config file similar to the .gitattributes to apply transformation when necessary (I support that idea).
I don't think transformation should be automatic.
check_circle
bug_reportESDK-126
Installed enums won't get updated
Running importEnums twice fails because the enums don't get updated, instead they get reinstalled, which fails due to: 'Keine doppelten Bezeichnungen zulässig!'
check_circle
bug_reportESDK-110
Include goal createAppJar to publishMavenJavaPublicationToMavenRepository
We probably need a super goal on top of it:
When executing the goal publishMavenJavaPublicationToMavenRepository, we need to create the standalone app with the goal createAppJar. It's not obvious and should be part of the life cycle of that goal.
publishAbasAppToNexus ?
check_circle
bug_reportESDK-109
Remove dependencies of unnecessary folders
When doing a standalone install, if the base dir is not here, or does not contain a sub dir, or keys or IS is missing --> it crashes / reports the directories are missing.
A lot of projects do not need any of these directories, why are we forced to have them in the project with .gitkeep (which will then be copied to abas...) ?
check_circle
bug_reportESDK-99
Extract credentials for nexus into properties / vault
Add possibility to specify username for nexus.
check_circle
addESDK-92
Publish documentation to S3 bucket
Publish the documentation to nexus as zip file and in html representation to S3 bucket.
check_circle
bug_reportESDK-77
Make all database/group names language independent
E.g.: in fop.json you need to use:

English client:
{code:json}
[
{
"databaseName" : "Sales",
"groupName" : "Sales packing slip",
"editorMode" : "",
"event" : "maskpruef",
"key" : "",
"field" : "",
"headOrTable" : "K",
"isContinue" : "[C]",
"handler" : "java:groovy/NegativeStock.groovy@app"
}
]
{code}

German client:
{code:json}
[
{
"databaseName" : "Verkauf",
"groupName" : "Lieferschein",
"editorMode" : "",
"event" : "maskpruef",
"key" : "",
"field" : "",
"headOrTable" : "K",
"isContinue" : "[C]",
"handler" : "java:groovy/NegativeStock.groovy@app"
}
]
{code}

Instead it should be possible to use:
{code:json}
[
{
"databaseName" : "(Sales)",
"groupName" : "(PackingSlip)",
"editorMode" : "",
"event" : "maskpruef",
"key" : "",
"field" : "",
"headOrTable" : "K",
"isContinue" : "[C]",
"handler" : "java:groovy/NegativeStock.groovy@app"
}
]
{code}
check_circle
addESDK-61
Export Keys
As a developer, I want to be able to export all Keys belonging to my app.

Acceptance criteria:
A developer can export the keys using a Gradle task.
The keys can be reimported.
check_circle
addESDK-60
Import Keys
As a developer, I want to specify a key description to my project so that the keys get created and are usable.

Acceptance criteria:
A developer can specify keys in a key description.
A developer can create the keys using a Gradle task.
The key is usable.
check_circle
addESDK-46
Export Enumerations
As a developer, I want to be able to export all enumerations belonging to my app.

Acceptance criteria:
A developer can export the enumerations using a Gradle task.
check_circle
bug_reportESDK-45
Deactivate strict host key checking
Strict host key checking impedes the dev process. It is not needed for trusted machines in the same LAN.
check_circle
addESDK-32
AJO: Interfaces for common parts of Infosystems
As a
workflow backend developer
I want to
implement a single EventHandler that can be bound to arbitrary Infosystems
to
reduce redundancy and maintenance effort.

Acceptance Criteria:

- A single interface for all Infosystems exists
- This interface can be used in axi2 API to implement EventHandlers for Infosystems in general

Bonus:

- This interface contains meta information for all common fields of all Infosystems

Relates to abas AG internal JIRA Issues [AJO-267|https://jira.abasag.intra/browse/AJO-267], [AJO-265|https://jira.abasag.intra/browse/AJO-265]
check_circle
addESDK-31
AJO: Introduce Gradle to the ERP shipment process
As
a user of Essentials SDK
I want to
compile and package all changed AJO sources and not more in a single command
so that I
reduce the time for testing and deployment of Apps.

Acceptance Criteria for this story:
- The gradle wrapper is part of the abas erp release and can be executed on the customer's machines.

Relates to abas AG internal JIRA Issue [AJO-171|https://jira.abasag.intra/browse/AJO-171]
check_circle
bug_reportESDK-24
Helpful exception message of exportData has bug in json format
The helpful exception message telling the developer what dependent selection to add to his export description json file has an invalid format.

Acceptance criteria:
A developer should be able to copy the json format from the missing dependency exception and paste it to the export description json file without having to edit anything and the exportData task doesn't show the same missing dependency exception.
check_circle
addESDK-15
Essentials SDK standalone installer retrieves apps from nexus
This once was a Workflow story. In the build pipeline, push the workflow app to nexus3 and let the stand-alone installer fetch it from there.
check_circle
addESDK-14
Check installation preconditions
Check if preconditions are met before executing tasks.

Acceptance criteria:
A user installing an app gets notified if ssh authentication does not provide the necessary abas ERP environment.
A user installing an app gets notified if a varreorg cannot be executed because the database module is not in single user mode.
A user installing an app gets notified if certain modules in the abas configurations are needed but not activated.
A user installing an app gets notified if the app is designed for specific abas versions and will not be able to install the app in an unsupported version

There need to be checks in place before an installation is even attempted.
That includes:
being alone in the client (there )
correct user
access rights
all workdirs available
all docker images running (ports)/erp client available
all necessary modules in abas configurations activated
abas version
check_circle
addESDK-13
Task importData should only try to import xml files
Right now the importData task tries to import everything in the src/main/resources/data folder of an abas Essentials project. If the file is not an xml file the import fails. The importData task should first check whether a file in src/main/resources/data is an xml file and should only try to import it if it is an xml file.

Acceptance criteria:
A developer should be able to store non xml files in src/main/resources/data (e.g. json for exporting or .gitkeep if the directory is empty) and the importData task should still work and ignore non xml files.
A developer should not be required to change his project settings to so.
check_circle
addESDK-12
Introduce guid mechanism for datasets in essentials SDK
As a developer I want to be able to update my imported data rather than recreate it.

We need to be able to add guids into your export format and then use that for the import in order to support updates on data records.
It's important for the cebit and the cloud demosystem!!
check_circle
addESDK-11
Check before install
As a developer I want to be notified if basic settings prevent the installation before the installation process is attempted.

There need to be checks in place before an installation is even attempted.
That includes:
being alone in the client
correct user
access rights
check_circle
addESDK-10
Import Enumerations
As a developer, I want to specify a enumeration description to my project so that the enumerations get created and are usable.

Acceptance criteria:
A developer can specify enumeration in a enumeration description.
A developer can create the enumerations using a Gradle task.
The enumeration is usable e.g. as a type in a variable table.
check_circle
addESDK-9
Delete Variables from Variable Tables
As a developer, I want to delete exiting individual variables from Variable Tables so that the Variable Table does not contain these Variable Tables and these Variable Tables cannot be used in Code and Screens anymore.

Acceptance criteria:
A developer can delete individual variables from Variable Tables.
A developer gets notified when he tries to delete a variable from a Variable Table that is used in code or screens of his project's scope.
A developer can delete individual variables from Standard and Additional Variable Tables.
A developer cannot delete standard variables from Variable Tables.
check_circle
addESDK-8
Adapt existing Variables in Variable Tables
As a developer, I want to adapt existing individual variables in Variable Tables so that the Variable Tables are changed accordingly.

Acceptance criteria:
A developer can change a individual variable's properties in the project's Variable Table descriptions and on importing the Variable Tables the variable is adapted accordingly.
A developer can adapt individual variables in Standard and Additional databases.
A developer cannot change a standard variable.
check_circle
addESDK-7
Gradle task exportVartabs should export all variables in the app's namespace
As a developer, I want to use the exportVartabs Gradle task to export all variables in my app's namespace regardless of the variable table they are defined in.

Acceptance criteria:
The exportVartabs task should export all variables in the app's namespace.
For each variable table there should be a separate `.schm` file.
check_circle
addESDK-6
importData task should check if data object already exists and not reimport
As a developer, I want to import data with the importData task and have matching existing data not reimported.

Acceptance criteria:
A developer can mark data as standard to reference existing standard data without reimporting.
There is some kind of identification (e.g. guid) to determine whether data was already imported and does not need to be reimported or just needs updating.

It's important for the cebit and the cloud demosystem!!
check_circle
addESDK-5
Export Data
As a developer, I want to export data so that I can import the exported data using the importData Task.

Acceptance criteria:
A developer can specify what data to export.
A developer can export the data using a Gradle task.
The data gets exported in a format that is able to be imported using the importData Gradle task.
A developer gets notified if the specified data to export misses dependencies.
A developer can react to a missing dependencies notification.

.
check_circle
addESDK-3
Add Variables to Variable Tables
As a developer, I want to add Variables to Variable Tables, so that the Variable Table is expanded to include the variable.

Acceptance criteria:
A developer can specify what variables to add to which databases/groups.
A developer can add the variables using a Gradle task.
check_circle