Release notes

These release notes present the current version 4.0.5 of IBM Industry Solutions Workbench, which became generally available on 2023 May 12th (GA).

New features

FeatureDescriptionAvailable since version
Event Support 2.0With that version the product offers the possibility to connect to a central Schema Registry and manage schemas via the Solution Designer. The current functionality Event Support 1.0 is still supported with a compatability mode.4.0.5
Fully customizable Helm ChartsThe helm charts that are used for the build and deployment of service project can now be modified or completely overridden for specific projects if needed, see customized helm charts.4.0.5
Custom secrets for application composition projectsIt’s now possible in the Designer to add kubernetes secrets for Application Composition Projects such that it can be used by the external component.4.0.5
Enhancement for Low-code Service ProjectsInline and referenced responses in context of an API operation can now be edited via the Designer.4.0.5
Multiple Component Repositories supportThe product now offers the possibility to configure a default repository where built components are published automatically via the release pipeline. Besides that, additional component repositories can be registered in the design environment to re-use already existing components (bought or built by 3rd parties) in Application Composition Projects.4.0
Multiple Asset Catalogs supportWith that version, the Local Marketplace (which covered the functionality to export, store and import project templates) will be replaced by the so called Asset Catalogs which now are stored in a external Git repository. It allows a much easier management and comes with the possibility to have more than one Asset Catalog configured to share templates.4.0
IBM® API Connect® supportYou now have the option to add annotations to every modelled API Namepsace API Namespace in order to use the generated API specifications with IBM API Connect4.0
Persistence support for relational databasesThe new version also includes a new persistence mechanism to create, read, update, and delete root entities, entities and external entities from and to a relational database relational database. This is only available for low-code projects based on Java Spring Boot.4.0
Additional Environment Configuration for Service ProjectsThe product allows now to place an additional configuration (yaml.file) needed for the runtime and places an pre-generated one in the Git project of his service project. Within an Application Composition Project these additional configurations (of the values.yaml) can be seen and even be managed by the 'Configure Component' functionality.4.0
Streamlined installation & upgrade experience via OperatorThe IBM Industry Solution Workbench can be now installed via Operator Hub.4.0
Enhancement for Low-code Service ProjectsFrom this version on, you can use up to 20 characters to specify a project's acronym giving you more flexibility in naming your projects.4.0
Enhancement for Low-code Service ProjectsWithin Low-Code service projects there are now extended options for importing Open API specifications. The product now supports for imported APIs the full spectrum of an Open API (including e.g., Inline-Schemas, OneOf, AllOf, Patch-Operations and additional data formats).4.0
Enhancement for Low-code Service ProjectsEasily create an API dependency in an Integration Namespace by selecting an API from another Service built with IBM Industry Solutions Workbench.4.0
Enhancement for Low-code Service ProjectsWe optimized the way to integrate with external REST APIs. Now, each integration namespace has exactly one API dependency to integrate with one external API. Access to the operations and the service stub is provided from all namespaces of the project.4.0
Enhancement for Low-code Service ProjectsWithin this version the migration of Entities to Root Entities or External Entities and vice versa is supported.4.0
Enhancement for Low-code Service ProjectsAfter creation of a property the type of the property can be changed afterwards.4.0
Enhancement for Low-code Service ProjectsDeletion of a namespace is now only possible after confirming it by re-entering the namespace acronym.4.0
Enhancement for Low-code Service ProjectsModeling a property of type Selection Element without Enumeration Elements will result in a warning, which is displayed in the Problems View.4.0
Enhancement for Low-code Service ProjectsA User of the Solution Designer is now able to directly delete a property including all its usages.4.0

Resolved Issues

TopicDescriptionResolved since version
DesignerLeft menu navigation is available in case of an error4.0.5
Designer & Solution HubIn case of an invalid entered URL a 404 page is shown4.0.5
Designer Application CompositionAdjusted error message in case of missing permissions4.0.5
Designer Asset CatalogsAssets can now be filtered by tag4.0.5
Designer Asset CatalogsWhen sharing an asset the version (SemVer) is now checked properly4.0.5
Designer Asset CatalogsNew Service Projects created from Assets have no invalid references4.0.5
Designer Asset CatalogsCorrect error message is now shown in case of missing permissions4.0.5
Designer Low-code projectsWhile changing an API using the Expert View adjusted meta information and documentation on API Namespace level is now kept4.0.5
Designer Low-code ProjectsAPI Dependency in Integration Namespacesnow uses the full height for the code view4.0.5
Designer Low-code ProjectsDescription of business errors in Domain Namespaces migrated to a simple text field4.0.5
Designer Low-code ProjectsProblem navigation not working properly in case of missing k5_propagate_security_token4.0.5
Designer Low-code ProjectsSidebar action now closes after creation of a namespace4.0.5
Designer Low-code ProjectsPrefix of namespace allows now camelCase4.0.5
Designer Low-Code ProjectsAdded validation for invalid path parameters4.0.5
Designer Low-Code Projects“required” is now shown on the instance page of a schema4.0.5
Designer Low-Code ProjectsValidation fails in a nested oneOf hierarchy due to discriminator validation4.0.5
Designer Low-Code ProjectsOneOf Discriminator property error message is not clear4.0.5
Designer Low-code ProjectsAfter changing an API using the Expert View default parameters are shown as modelled Header Parameters4.0.5
Designer Low-code JavaDocumentation Setup Java for local profile is not correct4.0.5
Designer Low-code TypeScriptAPI Schemas with AllOf-schemas ignore the directly associated properties in the code4.0.5
Designer WorkspacesFilter options are now in relation to each other4.0.5
Designer WorkspacesAdding a project now supports filtering by tag4.0.5
Designer Asset CatalogsBitbucket is now supported for Asset Catalog4.0.3
Designer Low-code JavaWhen creating or editing enums, spaces that are entered at the beginning or end are automatically deleted4.0.3
Designer Low-code JavaExternal entity constructor input properties cause Java code to fail4.0.3
Designer Low-code JavaIt is now possible to call an integration service from within an agent execution and the required JWT token will be provided4.0.3
Designer Low-code JavaAPI parameters do not support uppercase for enum values4.0.3
Designer Low-code JavaUsing same service name in different namespaces may cause server errors4.0.3
Designer Low-code JavaIncorrect alignment of the configuration in the generated local configuration template4.0.3
Designer Low-code JavaoneOf schema discriminator enum value is generated incorrectly4.0.3
Designer Low-code JavaSetting table names for Java RDBMS on abstract root entities is now possible. Also, the limitation for table names to 30 chars has been removed.4.0.3
Designer Low-code TypeScriptError cloning TypeScript low code projects when using a custom schema type as query parameter in an API operation4.0.3
Designer Low-code TypeScriptSchemas with allOf schema ignore the directly assigned properties4.0.3
Designer Low-code TypeScriptisInstanceOf is missing for external entities4.0.3
Designer Low-code ProjectsThe service instances page displays the inputs and outputs of the deleted services4.0.3
Product InstallationError regarding k5-project resource when Istio support is enabled4.0.3
BAW Toolkit generation for API NamespacesError when using the BAW toolkit if the x tracing header object is not set4.0.2
BAW Toolkit generation for API NamespacesBAW toolkit now also works in container environments4.0.2
Designer Application Composition Projectsyaml editor for component configuration does not display more than 8 lines4.0.2
Designer Application Composition ProjectsError message is not displayed correctly if a selected component is not in the Helm repository4.0.2
Designer Service ProjectsDeploy pipeline cannot check deployment status4.0.2
Designer Low-code JavaRepo variable is not assigned to associated field in services constructor4.0.1
Designer Low-code JavaChanging property type does not delete additional information of associations4.0.1
Designer Low-code JavaIndentations in example application-local.template.yaml are incorrect4.0.1
Designer Low-code TypeScriptProjects can't be compiled if an API schema contains enum values4.0.1
Designer Low-code TypeScriptSchemaFactory always returns the same instance4.0.1
Designer Low-code TypeScriptReferences of linked schemas are not created and linked incorrectly.4.0.1
Product InstallationConfigMap k5-solution-global-values is not created automatically in k5-projects4.0.1

Known issues

TopicDescriptionKnown since version
Designer Low Code JavaThe root level "pom.xml" file is not automatically updated when the Java SDK version has changed.
Remediation: Update the pom.xml file manually if the Java SDK version has changed.
4.0
Designer Git ProvidersWhen getting new permissions or when permissions are changed in the repository membership or role assignment, it may take up to a maximum of 3 minutes to activate them if the repository membership is changed. This time period is currently not configurable.
Remediation: If the role assignment is changed, you have to log out and log back in to activate the permissions. To reduce the time required to activate the new permissions, you can clear the cache manually by calling the appropriate API, for example, via the Swagger UI interface.
4.0
Designer Low Code ProjectsWhen creating a "OneOf Schema" and specifying a discriminator, a required property is created with the name of the discriminator, which is automatically attached to each schema belonging to the "OneOf Schema".
Remediation: If one of these schemas is used independently, the discriminator property must be set to #/components/schemas/<schema_localIdentifier> accordingly.
4.0
Designer Low Code ProjectsIf one of the schemas of a oneOf-schema contains a property with the same name as the name of the discriminator, then this property will be replaced by the discriminator. The discriminator is an Enum value of type String.
Remediation: Make sure that there are no properties in any of the schemas of a "oneOf-schema" that have the same name as the discriminator.
4.0
Designer Low Code ProjectsWork with multiple developers on a project can lead to conflicts.
Remediation: In case of conflicts, delete the package-lock.json of the project and execute k5 pull.
4.0
Designer Git ProvidersThe first commit to GitHub Enterprise shows incorrect user data in the Git repository.4.0
Runtime ConfigurationExisting default or custom bindings in runtime namespaces are working, but are not displayed through the Configuration Management REST API.4.0
Environment ConfigurationIt is not possible to configure more than one Message Hub Service Binding (Kafka binding) at the environment level in Solution Hub.
Remediation: You can still configure and use multiple Message Hub service bindings at the project level.
4.0
Implementing Low-Code TypescriptLocal debugging of TypeScript low-code projects that contain events requires additional manual configuration to connect to the Kafka cluster.
Remediation: Manually configure the local debugging to connect to the Kafka cluster.
4.0
Implementing Low-Code TypescriptEvent using entity as payload fails if property "id" is used.
Remediation: Use schema for event payload or rename the property to a different naming
4.0.5
Implementing Low-CodeSending an array / a complex payload entity (i.e. has properties that are entities) is not supported due to the way an entity is represented (nested value dictionaries) that are not able to be constructed back when consuming events and firing agents. If the event payload is a simple structure (an entity with simple properties), it is successfully reconstructed, the event is consumed, and the agent is fired.4.0
Application Composition Project ConfigurationWhen the version of a component in use is changed, the associated binding information (API binding(s) and theme binding(s)) is not automatically updated.
Remediation: When you have changed the configuration of the component, please save a copy of the content and then remove the component. Then click the "cog wheel" icon and click the "API Bindings/Theme Bindings" button. Finally, add the component back in the desired version and paste the configuration again.
4.0
Running Pro-code Java servicesIn the generated Swagger UI/Docs of Java pro-code API's, the baseURL is incorrect, therefore calling a Java pro-code service API does not work via the Swagger UI.
Remediation: As a workaround, manually adjust the SwaggerConfiguration of your project.
  1. Open your Java pro-code solution
  2. Navigate to the path /src/main/java/ACRONYM/config/SwaggerConfiguration.java
  3. Replace the configuration with the following sample
  4. Commit and push your changes
  5. Re-execute the pipelines of your project in solution designer
import org.springdoc.core.customizers.OpenApiCustomiser;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import de.knowis.cp.common.environment.featureflag.condition.ConditionalOnFeatureFlag;
import de.knowis.cp.common.openapi.security.SecurityCustomizer;
import de.knowis.cp.common.openapi.ui.EnableOpenApiUi;
import de.knowis.cp.common.security.autoconfiguration.OidcConfiguration;
import de.knowis.cp.common.solution.autoconfiguration.SolutionConfigurationProperties;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.servers.Server;
@EnableOpenApiUi
@Configuration
@ConditionalOnFeatureFlag("feature.openapi.enabled")
public class SwaggerConfiguration {
private final SolutionConfigurationProperties solutionConfiguration;
private final OidcConfiguration oidcConfig;
@Value("${de.knowis.cp.server.baseurl}")
private String baseUrl;
public SwaggerConfiguration(SolutionConfigurationProperties solutionConfiguration,
OidcConfiguration oidcConfig) {
this.solutionConfiguration = solutionConfiguration;
this.oidcConfig = oidcConfig;
}
private static final String ACRONYM_GROUP_DESC = "";
private static final String ACRONYM_GROUP_VERSION = "1.0.0";
@Bean
public OpenApiCustomiser securityCustomizer() {
return new SecurityCustomizer(oidcConfig::getUserTokenUrl);
}
@Bean
public OpenApiCustomiser serversCustomizer() {
return openApi -> {
openApi.getServers().clear();
openApi.addServersItem(new Server().url(baseUrl));
};
}
@Bean
public OpenApiCustomiser infoCustomizer() {
return openApi -> openApi.info(new Info().title(solutionConfiguration.getAcronym())
.description(ACRONYM_GROUP_DESC).version(ACRONYM_GROUP_VERSION));
}
}
4.0
Swagger-UI - Execute button does not responseThe Swagger UI API has two known issues that can cause the "Execute" button to not work: #6295 Execute button is not working with 'malformed' JSON body, and #7784 OAS2: Execute button doesn't work if the request body fails schema validation4.0
Designer Low-code projectsAdding an entity name with a suffix "Entity" (e.g. petEntity) in the domain namespace results in a compilation error because the SDK currently uses the "Entity" suffix as the reserved name for the entity interface. In the future, the generated interfaces will be removed.4.0
Designer Low-code projectsIf you add any primitive type as operation response body this will lead to 502 statusCode.4.0
Designer Service ProjectsThe default branch name of a project cannot be changed later.4.0
Designer Low-code JavaEnum values in API parameters that are not written in uppercase only lead to the exception MethodArgumentTypeMismatchException
Workaround: The missing converters have to be created manually for each enum class, which is affected:
  1. Create a package web under your application package
  2. Create for each affected enum class a converter similar to:
    package [MYAPP].web;
    import org.springframework.core.convert.converter.Converter;
    import [MYAPP].sdk.api.[MYAPI].model.[MYENUM];
    public class StringTo[MYENUM]Converter implements ConverterString, [MYENUM] {
    @Override
    public [MYENUM] convert(String source) {
    return [MYENUM].fromValue(source);
    }
    }
  3. Register all converters by creating a class similar to:
    package [MYAPP].web;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.format.FormatterRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addFormatters(FormatterRegistry registry) {
    registry.addConverter(new StringTo[MYENUM]Converter());
    // one line per converter...
    }
    }
4.0
Designer Low-code TypeScriptAny designed query parameter with type boolean or number will be represented as string. This will lead to validation errors while using them as service input Workaround:
  1. Boolean Case: check if the value can be converted to boolean as following
    const booleans: string = ['true', 'false'];
    if(booleans.includes(request.query.booleanProperty)){
    const convertedBooleanProp = JSON.parse(request.query.booleanProperty);
    }
  2. Number Case: check if the value can be converted to number as following
    if (!Number.isNaN(+request.query.numberProperty) ){
    const convertedNumProp = +data.myNumber;
    }
4.0
Designer Low-code JavaUsing the date type for sending events is blocked by the sender due to wrong validation. Remediation:
  1. Open pom.xml of your project
  2. Adjust the jsonschema2pojo-maven-plugin plugin to have the following configuration values:
    • formatDates: true
    • formatDateTimes: true
    • dateType: java.util.Date
    • dateTimeType: java.time.OffsetDateTime
4.0
Designer Low-code projectsApicurio cannot handle event evolution with compatibility rules enabled. This is due to a bug in apicurio and leads to the situation that the Solution Designer cannot register a new schema or update it. Remediation: do not enable the compatibility rules for apicurio schema registry4.0