<!DOCTYPE html>
<html lang="en-us">

  <head>
  <meta charset="utf-8">
  <meta name="robots" content="all,follow">
  <meta name="googlebot" content="index,follow,snippet,archive">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  
  <title>What is new &amp; noteworthy in Hono? :: Eclipse Hono&trade;</title>
  <meta name="author" content="The Eclipse Hono Project" />
  
  
  
  
  
  <meta name="description" content="Information about changes in recent Hono releases. Includes new features, fixes, enhancements and API changes.">

  <meta name="generator" content="Hugo 0.81.0" />

  
  <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,500,700,800' rel='stylesheet' type='text/css'>

  
  <link rel="stylesheet" href="//use.fontawesome.com/releases/v5.11.2/css/all.css">
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

  
  <link href="/hono/css/animate.css" rel="stylesheet">

  
  
    <link href="/hono/css/style.hono.css" rel="stylesheet" id="theme-stylesheet">
  

  
  <link href="/hono/css/custom.css" rel="stylesheet">

  
  
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
        <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  

  
  <link rel="apple-touch-icon" sizes="180x180" href="/hono/favicon/apple-touch-icon.png">
  <link rel="icon" type="image/png" sizes="48x48" href="/hono/favicon/favicon-48x48.png">
  <link rel="icon" type="image/png" sizes="32x32" href="/hono/favicon/favicon-32x32.png">
  <link rel="icon" type="image/png" sizes="16x16" href="/hono/favicon/favicon-16x16.png">
  <link rel="manifest" href="/hono/favicon/site.webmanifest">
  <link rel="mask-icon" href="/hono/favicon/safari-pinned-tab.svg" color="#5bbad5">
  <link rel="shortcut icon" href="/hono/favicon/favicon.ico">
  <meta name="msapplication-TileColor" content="#da532c">
  <meta name="msapplication-config" content="/hono/favicon/browserconfig.xml">
  <meta name="theme-color" content="#ffffff">

  
  <link href="/hono/css/owl.carousel.css" rel="stylesheet">
  <link href="/hono/css/owl.theme.css" rel="stylesheet">

  
  <link rel="alternate" href="/hono/index.xml" type="application/rss+xml" title="Eclipse Hono&amp;trade;">

  
  
  
  
  
  
  
  <meta property="og:locale" content="en_us">
  <meta property="og:site_name" content="Eclipse Hono&amp;trade;">
  <meta property="og:title" content="What is new &amp; noteworthy in Hono?">
  <meta property="og:type" content="website">
  <meta property="og:url" content="https://www.eclipse.org/hono/release-notes/" />
  <meta property="og:description" content="Information about changes in recent Hono releases. Includes new features, fixes, enhancements and API changes.">
  <meta property="og:image" content="https://www.eclipse.org/hono/img/sharing-default.png">
  <meta property="og:image:type" content="image/png">
  
  
  
    <meta property="og:image:width" content="1655">
    <meta property="og:image:height" content="827">
  
  
  
  

  
  <meta name="twitter:card" content="summary">
  <meta name="twitter:site" content="@EclipseHono">
  <meta name="twitter:title" content="What is new &amp; noteworthy in Hono?">
  
  <meta name="twitter:image" content="https://www.eclipse.org/hono/img/sharing-default.png">
  
  <meta name="twitter:description" content="Information about changes in recent Hono releases. Includes new features, fixes, enhancements and API changes.">
  

</head>


  <body>

    <div id="all">

        <header>

          <div class="navbar-affixed-top" data-spy="affix" data-offset-top="200">

    <div class="navbar navbar-default yamm" role="navigation" id="navbar">

        <div class="container">
            <div class="navbar-header">
                <a class="navbar-brand home" href="/hono/">
                    <img src="https://www.eclipse.org/hono/img/HONO-Logo_Bild-Wort_quer-s-310x120px.svg" alt="What is new &amp; noteworthy in Hono? logo" class="logo">
                    <span class="sr-only">What is new &amp; noteworthy in Hono? - go to homepage</span>
                </a>
                <div class="navbar-buttons">
                    <button type="button" class="navbar-toggle btn-template-main" data-toggle="collapse" data-target="#navigation">
                      <span class="sr-only">Toggle Navigation</span>
                        <i class="fas fa-align-justify"></i>
                    </button>
                </div>
            </div>
            

            <div class="navbar-collapse collapse" id="navigation">
                <ul class="nav navbar-nav navbar-right">
                  
                  
                  
                  <li class="dropdown">
                    
                    <a href="/hono/getting-started/">Getting started</a>
                    
                  </li>
                  
                  
                  <li class="dropdown">
                    
                    <a href="/hono/docs/">Documentation</a>
                    
                  </li>
                  
                  
                  <li class="dropdown">
                    
                    <a href="/hono/downloads/">Download</a>
                    
                  </li>
                  
                  
                  <li class="dropdown">
                    
                    <a href="/hono/sandbox/">Sandbox</a>
                    
                  </li>
                  
                  
                  <li class="dropdown">
                    
                      <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Community <span class="caret"></span></a>
                    <ul class="dropdown-menu">
                      
                        <li><a href="/hono/community/contributing/">Contributing</a></li>
                      
                        <li><a href="/hono/community/presentations/">Resources</a></li>
                      
                        <li><a href="/hono/community/get-in-touch/">Get in Touch</a></li>
                      
                        <li><a href="/hono/community/road-map/">Road Map</a></li>
                      
                        <li><a href="/hono/community/thankyou/">Thank you</a></li>
                      
                    </ul>
                    
                  </li>
                  
                </ul>
            </div>
            

            <div class="collapse clearfix" id="search">

                <form class="navbar-form" role="search">
                    <div class="input-group">
                        <input type="text" class="form-control" placeholder="Search">
                        <span class="input-group-btn">

                    <button type="submit" class="btn btn-template-main"><i class="fas fa-search"></i></button>

                </span>
                    </div>
                </form>

            </div>
            

        </div>
    </div>
    

</div>




        </header>

        <div id="heading-breadcrumbs">
    <div class="container">
        <div class="row">
            <div class="col-md-12">
                <h1>What is new &amp; noteworthy in Hono?</h1>
            </div>
        </div>
    </div>
</div>


        <div id="content">
            

            <div class="container">

                <div class="row">

                    <div class="col-md-12">

                        <div>
                          <h2 id="1100">1.10.0</h2>
<h3 id="fixes--enhancements">Fixes &amp; Enhancements</h3>
<ul>
<li>The Quarkus based variants of Hono&rsquo;s components now support configuring the Hot Rod client with a key and/or
trust store in order to enable TLS secured connections to Infinispan servers and to authenticate using a
client certificate.</li>
<li>The MongoDB based DeviceManagementService erroneously removed the original device registration when trying to
register a new device using the existing device&rsquo;s identifier. This has been fixed.</li>
<li>The Mongo DB based registry implementation now uses a proper DB index to find credentials by type and authentication
ID. This will speed up query execution significantly when there are a lot of devices registered for a tenant.</li>
<li>The JDBC based device registry&rsquo;s <em>get Credentials</em> operation used by the protocol adapters now also supports
matching credentials against a given <em>client context</em>.</li>
<li>The device registry implementations did not return a JSON object in a response to a failed request as specified
in the Device Registry Management API. This has been fixed.</li>
</ul>
<h2 id="190">1.9.0</h2>
<h3 id="new-features">New Features</h3>
<ul>
<li>The Mongo DB based registry now supports enforcement of registration limits configured at the tenant level.
In particular, the maximum number of devices and the maximum number of credentials per device can be set in
a tenant&rsquo;s registration-limits property. Please refer to the Mongo DB User Guide for details.</li>
<li>Hono now sends a device provisioning notification when a device or a gateway is successfully auto-provisioned.</li>
<li>Northbound applications sending request/response Command &amp; Control messages via Kafka will now receive
a notification about a failed command delivery via a command response message. See the
<a href="https://www.eclipse.org/hono/docs/api/command-and-control-kafka/">Command &amp; Control API for Kafka</a> for details.</li>
<li>The Mongo DB based device registry implementation now supports transparent (symmetric) encryption of Pre-Shared Key
secrets. Please refer to the user guide for details regarding configuration.</li>
</ul>
<h3 id="fixes--enhancements-1">Fixes &amp; Enhancements</h3>
<ul>
<li>The value of the properties <code>auto-provisioned</code> and <code>auto-provisioning-notification-sent</code> had always been <em>false</em> when
retrieving device registration information using the MongoDB based registry implementation. This has been fixed.</li>
<li>The LoRA protocol adapter will now skip registering itself for receiving commands for a given gateway device if
that gateway device has no command endpoint defined. The adapter will now also free command consumer resources when
the idle timeout of the corresponding tenant (configured via the <code>hono.lora.tenantIdleTimeout</code> property) has elapsed
and the tenant is already removed or disabled.</li>
<li>The device registry implementations have already supported the limitation of the body size of requests to the
<code>/tenants</code> and <code>/credentials</code> resources of the HTTP based Device Registration Management API.
However, the admin guides did not cover the corresponding <code>HONO_REGISTRY_HTTP_MAXPAYLOADSIZE</code> configuration variable
yet. The <code>/devices</code> resources have been added to the scope of the feature and the admin guides have been amended
accordingly.</li>
<li>The protocol adapters now invoke the <em>set last known gateway</em> Command Router service operation a lot less frequently,
reducing the load on the Command Router component if gateways send messages on behalf of devices at a high rate.
The <em>last known gateway</em> entry for a device is now set with a delay of at most 400ms as part of a batch request.</li>
<li>The <code>keyStorePassword</code> and <code>trustStorePassword</code> properties of the Hono clients now also support specifying a file
to read the password from. If the property value starts with <code>file:</code> then the value after the prefix is interpreted as
as the path to a file to read the password from.</li>
<li>The registry implementations failed to reject a request to update a device&rsquo;s empty set of credentials, e.g. right
after the device has been created, if the request contained a secret having an ID. In fact, the registry
implementations would have accepted such a request even if the secrets did not contain a password/key/etc at all
but only the identifier. This has been fixed.</li>
<li>A potential issue processing Command &amp; Control messages from a Kafka cluster while Command Router instances are
getting stopped or started has been fixed.</li>
<li>The rate at which the Command Router component handles Command &amp; Control messages from a Kafka cluster is now
limited to prevent potential memory issues and reduce the load on dependent services. The limit value is adopted from
the configured <code>max.poll.records</code> Kafka consumer configuration value.</li>
<li>The default properties of the Hono CLI tool have been updated to match typical Hono installations. It provides now
3 types of profiles that need to be combined: 1. select the &ldquo;mode&rdquo;: <code>receiver</code> or <code>command</code>; 2. select the &ldquo;target&rdquo;:
<code>sandbox</code> or <code>local</code> (aims for deployment in Minikube but works for every deployment of the Helm chart); 3. select the
&ldquo;messaging-type&rdquo;: <code>kafka</code> (if not set, it defaults to AMQP-based messaging). For details refer to the file
<code>application.yml</code> of the CLI module.</li>
</ul>
<h3 id="deprecations">Deprecations</h3>
<ul>
<li>The file based device registry implementation has been deprecated and will be removed in a future version of Hono.
Please use the Mongo DB or JDBC based registry implementations instead. The JDBC based registry can be configured
to use an H2 database in either <em>embedded</em> or <em>in-memory</em> mode. The former can be used to persist data to the local
file system while the latter keeps all data in memory only.</li>
<li>The MongoDB based registry implementation no longer supports the configuration variables for disabling modification
of existing data. In real life deployments this feature has no meaning because write access to data will need to
be authorized more explicitly anyway, e.g. at the tenant level.</li>
</ul>
<h2 id="api-changes">API Changes</h2>
<ul>
<li>The client classes used by the protocol adapters for accessing the device registry, the Command Router
and the south bound C&amp;C APIs have been reorganized into dedicated modules.
In particular, the <em>adapter</em>, <em>adapter-amqp</em> and <em>adapter-kafka</em> modules have been resolved into modules
<em>command</em>, <em>command-amqp</em>, <em>command-kafka</em>, <em>registry</em>, <em>registry-amqp</em>, <em>telemetry</em>, <em>telemetry-amqp</em> and
<em>telemetry-kafka</em>. This allows Hono&rsquo;s components to define more specific dependencies on client classes
that they require. This change should have no effect on application clients.</li>
<li>The <em>set last known gateway</em> Command Router API operation has been extended to also support setting multiple
values in one request.</li>
</ul>
<h2 id="end-of-life">End of life</h2>
<ul>
<li>The Maven profiles for compiling in support for exporting metrics to Graphite and InfluxDB have been removed.</li>
</ul>
<h2 id="182">1.8.2</h2>
<h3 id="fixes--enhancements-2">Fixes &amp; Enhancements</h3>
<ul>
<li>The MQTT adapter didn&rsquo;t close the CONNECT tracing span and didn&rsquo;t report metrics on failed connection attempts. This
has been fixed.</li>
<li>The registry implementations failed to reject a request to update a device&rsquo;s empty set of credentials, e.g. right
after the device has been created, if the request contained a secret having an ID. In fact, the registry
implementations would have accepted such a request even if the secrets did not contain a password/key/etc at all
but only the identifier. This has been fixed.</li>
<li>A potential issue processing Command &amp; Control messages from a Kafka cluster while Command Router instances are
getting stopped or started has been fixed.</li>
</ul>
<h2 id="181">1.8.1</h2>
<h3 id="fixes--enhancements-3">Fixes &amp; Enhancements</h3>
<ul>
<li>Letting the trace sampling settings of the Hono components be defined via sampling strategies served by the Jaeger
Collector did not work for components using Quarkus native images. This has been fixed.</li>
<li>Command messages with no payload could not be sent to an MQTT device. This has been fixed.</li>
<li>The value of the properties <code>auto-provisioned</code> and <code>auto-provisioning-notification-sent</code> are always <em>false</em> while
retrieving device registration information using the MongoDB based registry implementation. This has been fixed now.</li>
<li>The Command Router service could have gotten into a state of very high CPU utilization when protocol
adapters submitted non-existing tenant IDs for which command routing should be re-enabled. This has been fixed.</li>
<li>The LoRA protocol adapter will now free command consumer resources when the idle timeout of the corresponding tenant
(configured via the <code>hono.lora.tenantIdleTimeout</code> property) has elapsed and the tenant is already removed or disabled.</li>
<li>The device registry implementations have already supported the limitation of the body size of requests to the
<code>/tenants</code> and <code>/credentials</code> resources of the HTTP based Device Registration Management API.
However, the admin guides did not cover the corresponding <code>HONO_REGISTRY_HTTP_MAXPAYLOADSIZE</code> configuration variable
yet. The <code>/devices</code> resources have been added to the scope of the feature and the admin guides have been amended
accordingly.</li>
</ul>
<h2 id="180">1.8.0</h2>
<h3 id="new-features-1">New Features</h3>
<ul>
<li>The CoAP adapter now supports authentication of client certificates using ECDSA based cipher suites.</li>
<li>The JDBC-based device registry implementation now supports the automatic creation of the database schema, both for
device registration and tenant data. This is especially useful for experimental setups where an embedded database,
such <a href="http://www.h2database.com/html/features.html#embedded_databases">as H2 provides</a>, is sufficient. To enable
automatic schema creation, activate the application profile <code>create-schema</code>.</li>
<li>Hono&rsquo;s components now support configuration of supported TLS cipher suites. The cipher suites can be configured
separately for both the endpoints exposed by the components as well as the clients used for accessing service
endpoints exposed by other components. Please refer to the corresponding admin guides for details regarding the
corresponding configuration variables.</li>
<li>Hono now supports <em>auto-provisioning</em> of gateways. For more information please refer to the
<a href="https://www.eclipse.org/hono/docs/concepts/device-provisioning/#automatic-gateway-provisioning">Gateway Provisioning</a>
concept and to the <a href="https://www.eclipse.org/hono/docs/api/management#/tenants/createTenant">Device Registry Management API</a>
on how to configure a tenant&rsquo;s trusted CA authority for that.</li>
<li>Now the tenant configuration supports a new property namely <em>auto-provisioning-device-id-template</em> in it&rsquo;s trusted CA
section. During auto-provisioning of devices and gateways, the device identifier is generated based on this template
and used for the device registration. For more information please refer to the
<a href="https://www.eclipse.org/hono/docs/concepts/device-provisioning/">Device Provisioning</a> concept and to the
<a href="https://www.eclipse.org/hono/docs/api/management#/tenants/createTenant">Device Registry Management API</a>
on how to configure a tenant&rsquo;s trusted CA authority for that.</li>
<li>The Hono CLI supports now Kafka as a messaging system. Please refer to the module&rsquo;s
<a href="https://github.com/eclipse/hono/tree/master/cli">README</a> file for examples of using the CLI to receive events and
telemetry data and send commands.</li>
<li>The example business application supports now Kafka as a messaging system. Please refer to the
<a href="https://www.eclipse.org/hono/docs/dev-guide/java_client_consumer/">Developer Guide</a> for details.</li>
</ul>
<h3 id="fixes--enhancements-4">Fixes &amp; Enhancements</h3>
<ul>
<li>The CoAP adapter did not correctly track the time it took to forward a command message to a device. This has been fixed.</li>
<li>Sending requests using the Hono AMQP request-response client erroneously increased the <code>hono.downstream.timeout</code> metric.
This has been fixed.</li>
<li>Support for uplink messages from the Embedded LNS on MultiTech gateways.</li>
<li>The <em>hono.connections.attempts</em> metric has been extended with a <code>cipher-suite</code> tag which contains the name of the
cipher suite that is used in a device&rsquo;s attempt to establish a TLS based connection to an adapter.</li>
<li>The Quarkus based Command Router native image failed to start an embedded cache that was configured to persist data
to the local file system. This has been fixed.</li>
<li>The delivery of a command message sent to an AMQP device potentially didn&rsquo;t get settled if the connection to the
AMQP device got disconnected. This has been fixed.</li>
<li>The Prometheus based resource limit checks' performance has been improved. This should result in considerably less
load on the Prometheus server when failing over all of a crashed/stopped adapter instance&rsquo;s device connections.</li>
<li>The Hono component container images now contain the <em>Gson</em> library which is required by the Jaeger client for
processing sampling strategy configuration retrieved from the Jaeger Collector.</li>
<li>The Kafka based implementation of the north bound application client
<code>org.eclipse.hono.application.client.kafka.impl.KafkaApplicationClientImpl</code> now supports sending commands and
receiving responses in a <em>request/response</em> fashion.</li>
</ul>
<h3 id="deprecations-1">Deprecations</h3>
<ul>
<li>The <code>org.eclipse.hono.client.ApplicationClientFactory</code>, <code>org.eclipse.hono.client.AsyncCommandClient</code> and
<code>org.eclipse.hono.client.CommandClient</code> classes have been deprecated. Client code should use
<code>org.eclipse.hono.application.client.ApplicationClient</code> instead.</li>
</ul>
<h2 id="174">1.7.4</h2>
<h3 id="fixes--enhancements-5">Fixes &amp; Enhancements</h3>
<ul>
<li>Letting the trace sampling settings of the Hono components be defined via sampling strategies served by the Jaeger
Collector did not work for components using Quarkus native images. This has been fixed.</li>
<li>Command messages with no payload could not be sent to an MQTT device. This has been fixed.</li>
<li>The value of the properties <code>auto-provisioned</code> and <code>auto-provisioning-notification-sent</code> are always <em>false</em> while
retrieving device registration information using the MongoDB based registry implementation. This has been fixed now.</li>
<li>The Command Router service could have gotten into a state of very high CPU utilization when protocol
adapters submitted non-existing tenant IDs for which command routing should be re-enabled. This has been fixed.</li>
<li>The LoRA protocol adapter will now free command consumer resources when the idle timeout of the corresponding tenant
(configured via the <code>hono.lora.tenantIdleTimeout</code> property) has elapsed and the tenant is already removed or disabled.</li>
<li>The device registry implementations have already supported the limitation of the body size of requests to the
<code>/tenants</code> and <code>/credentials</code> resources of the HTTP based Device Registration Management API.
However, the admin guides did not cover the corresponding <code>HONO_REGISTRY_HTTP_MAXPAYLOADSIZE</code> configuration variable
yet. The <code>/devices</code> resources have been added to the scope of the feature and the admin guides have been amended
accordingly.</li>
</ul>
<h2 id="173">1.7.3</h2>
<h3 id="fixes--enhancements-6">Fixes &amp; Enhancements</h3>
<ul>
<li>The Hono component container images now contain the <em>Gson</em> library which is required by the Jaeger client for
processing sampling strategy configuration retrieved from the Jaeger Collector.</li>
</ul>
<h2 id="172">1.7.2</h2>
<h3 id="fixes--enhancements-7">Fixes &amp; Enhancements</h3>
<ul>
<li>The Quarkus based Command Router native image failed to start an embedded cache that was configured to persist data
to the local file system. This has been fixed.</li>
<li>The delivery of a command message sent to an AMQP device potentially didn&rsquo;t get settled if the connection to the
AMQP device got disconnected. This has been fixed.</li>
</ul>
<h2 id="171">1.7.1</h2>
<h3 id="fixes--enhancements-8">Fixes &amp; Enhancements</h3>
<ul>
<li>The CoAP adapter did not correctly track the time it took to forward a command message to a device. This has been fixed.</li>
<li>The downstream mapping endpoint was not correctly serialized which resulted in not being able to send commands using the downstream mapping endpoint. This has been fixed.</li>
<li>When using Kafka as messaging system, the Command Router now creates the internal Command &amp; Control topic with the
replication factor defined in the broker <code>default.replication.factor</code> setting.</li>
<li>Sending requests using the Hono AMQP request-response client erroneously increased the <code>hono.downstream.timeout</code> metric.
This has been fixed.</li>
</ul>
<h2 id="170">1.7.0</h2>
<h3 id="new-features-2">New Features</h3>
<ul>
<li>Apache Kafka is now supported as a messaging system for command messages.
This can be enabled by configuring protocol adapters to use Hono&rsquo;s new Kafka-based
client. Please refer to <a href="https://www.eclipse.org/hono/docs/admin-guide/hono-kafka-client-configuration/">Hono Kafka Client Configuration</a>
for details. The new <a href="https://www.eclipse.org/hono/docs/api/command-and-control-kafka/">Command &amp; Control API for Kafka</a> defines
how applications can use Apache Kafka to send command messages to devices.
Note that support for Kafka based messaging is still considered an <strong>experimental</strong> feature.</li>
<li>The Device Registry Management API has been extended now to support an optional unique identifier
for trust anchors belonging to a tenant. The file, JDBC and MongoDB based device registries
support this feature. Please refer to the
<a href="https://www.eclipse.org/hono/docs/api/management#/tenants/">Device registry management API</a> for details.</li>
<li>The LoraWAN protocol adapter has been extended with support for <em>The Things Stack</em> provider.</li>
<li>The LoraWAN protocol adapter now supports command and control for providers <em>Chirpstack</em>, <em>Firefly</em> and <em>Loriot</em>.</li>
<li>Added (experimental) Quarkus based variant of the Authentication service.</li>
<li>Added (experimental) Quarkus based variant of the CoAP protocol adapter.</li>
<li>Added (experimental) Quarkus based variant of the Command Router component.</li>
<li>The container images for the (experimental) Quarkus based variant of Hono components are now being published on
Docker Hub as well. The JVM based image names contain a <code>-quarkus</code> suffix whereas the native image names contain a
<code>-quarkus-native</code> suffix. Note that the Quarkus based protocol adapter images do <strong>not</strong> support using the Device
Connection service but require a connection to the Command Router service being configured instead.</li>
<li>The MQTT adapter now lets devices subscribe on a new error topic to get informed about errors during the processing
of telemetry, event or command response message. With such an error subscription in place, the default behaviour
on such errors is now to keep the MQTT connection open. Please refer to the
<a href="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/#error-reporting-via-error-topic">MQTT Adapter User Guide</a> for details.</li>
<li>The MQTT adapter now supports mapping the command payload through an external http service.</li>
<li>The Command Router component has been promoted from <em>tech preview</em> to <em>fully supported</em>.</li>
<li>The AMQP adapter now closes the network connection to the device if any terminal errors happen. Please refer to the
<a href="https://www.eclipse.org/hono/docs/user-guide/amqp-adapter/#error-handling">AMQP Adapter User Guide</a> for details.</li>
</ul>
<h3 id="fixes--enhancements-9">Fixes &amp; Enhancements</h3>
<ul>
<li>The common configuration property for setting the vert.x instance&rsquo;s max-event-loop-execute-time had erroneously
been documented as <code>HONO_VERTX_MAX_EVENT_LOOP_EXECUTE_TIME_MILLIS</code>, accepting an integer representing the duration as
number of milliseconds. However, the correct property is named <code>HONO_VERTX_MAX_EVENT_LOOP_EXECUTE_TIME</code> and accepts an
ISO-8601 Duration string instead of an integer.</li>
<li>The MQTT adapter failed to handle a command response message if the corresponding tenant object wasn&rsquo;t available
in the cache. This has been fixed.</li>
<li>A failed connection attempt in the default <code>org.eclipse.hono.connection.ConnectionFactory</code> implementation could
have led to the AMQP connection not getting closed, occupying connection resources. This has been fixed.</li>
<li>Validation of MQTT topics containing property bags has been improved, preventing unhandled exceptions.</li>
<li>The hugo themes for the Hono website and the documentation have been updated to the latest versions respectively.
In order for the site module build to succeed with the <code>hugo</code> binary installed locally, the
<code>site/homepage/themes/hugo-universal-theme</code> and <code>site/documentation/themes/hugo-theme-learn</code> folders need to be deleted.
They will automatically be (re-)created as part of the build.</li>
<li>The Infinispan client used by the protocol adapters, the Device Connection and Command Router services has been
updated to version 11.0.9. The syntax of configuration file used for defining an embedded cache in the Device
Connection and/or Command Router service has changed as documented
<a href="https://infinispan.org/docs/stable/titles/upgrading/upgrading.html#upgrading_from_10_1_to_11_0">in the Infinispan version details</a>.</li>
<li>The Command Router no longer uses the <code>embedded-cache</code> <em>Spring profile</em> in order to configure an embedded cache.
Instead, the Command Router determines the type of cache (embedded or remote) by means of the
<code>HONO_COMMANDROUTER_CACHE_REMOTE_SERVERLIST</code> configuration variable. Please refer to the
<a href="https://www.eclipse.org/hono/docs/admin-guide/command-router-config/#data-grid-connection-configuration">Command Router Admin Guide</a>
for details.</li>
<li>The Prometheus based resource limit checks can now be configured with a time out for establishing the TCP connection
to the Prometheus server. This is useful to limit the time it takes to invoke the Prometheus Query API.
Please refer to the
<a href="https://www.eclipse.org/hono/docs/admin-guide/common-config/#resource-limits-checker-configuration">Protocol Adapter Common Configuration guide</a>
for details.</li>
</ul>
<h3 id="api-changes-1">API Changes</h3>
<ul>
<li>The already deprecated classes <code>org.eclipse.hono.service.cache.SpringBasedExpiringValueCache</code> and
<code>org.eclipse.hono.service.cache.SpringCacheProvider</code> have been removed.</li>
<li>The <code>org.eclipse.hono.service.AbstractApplication</code> and <code>org.eclipse.hono.service.AbstractBaseApplication</code> classes
have been moved to <code>org.eclipse.hono.service.spring.AbstractApplication</code> and <code>org.eclipse.hono.service.spring.AbstractApplication</code>
in the newly added <code>service-base-spring</code> module respectively.</li>
<li>The existing <code>mapper</code> configuration has been renamed to <code>downstream-message-mapper</code>.</li>
<li>The Command Router component now requires the configuration of a tenant service client. Please refer to
<a href="https://www.eclipse.org/hono/docs/admin-guide/command-router-config/#tenant-service-connection-configuration">Tenant Service Connection Configuration</a>
for details.</li>
</ul>
<h3 id="end-of-life-1">End of Life</h3>
<ul>
<li>
<p>The <code>build-docker-image</code> build profile is no longer activated automatically if the <em>docker.host</em> Maven property
is set. This has been changed in order to prevent the <code>build-docker-image</code> and <code>build-native-image</code> profiles being
activated at the same time when running something like</p>
<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mvn clean install -Ddocker.host<span style="color:#f92672">=</span>tcp//host:port -Pbuild-native-image
</code></pre></div><p>Activating the <code>build-docker-image</code> profile by default can easily be achieved by adding <code>-Pbuild-docker-image</code> to
the <em>MAVEN_OPTS</em> environment variable instead.</p>
</li>
</ul>
<h2 id="162">1.6.2</h2>
<h3 id="fixes--enhancements-10">Fixes &amp; Enhancements</h3>
<ul>
<li>The CoAP adapter did not correctly track the time it took to forward a command message to a device. This has been fixed.</li>
<li>Sending requests using the Hono AMQP request-response client erroneously increased the <code>hono.downstream.timeout</code> metric.
This has been fixed.</li>
</ul>
<h2 id="161">1.6.1</h2>
<h3 id="fixes--enhancements-11">Fixes &amp; Enhancements</h3>
<ul>
<li>The common configuration property for setting the vert.x instance&rsquo;s max-event-loop-execute-time had erroneously
been documented as <code>HONO_VERTX_MAX_EVENT_LOOP_EXECUTE_TIME_MILLIS</code>, accepting an integer representing the duration as
number of milliseconds. However, the correct property is named <code>HONO_VERTX_MAX_EVENT_LOOP_EXECUTE_TIME</code> and accepts an
ISO-8601 Duration string instead of an integer.</li>
<li>The MQTT adapter failed to handle a command response message if the corresponding tenant object wasn&rsquo;t available
in the cache. This has been fixed.</li>
<li>A failed connection attempt in the default <code>org.eclipse.hono.connection.ConnectionFactory</code> implementation could
have led to the AMQP connection not getting closed, occupying connection resources. This has been fixed.</li>
<li>Validation of MQTT topics containing property bags has been improved, preventing unhandled exceptions.</li>
<li>The protocol adapters might have run into a situation where devices connected to adapters did no longer receive
commands when using the Command Router service. The problem occurred when a Command Router service instance had been
restarted while one or more protocol adapters where connected to it. This has been fixed.</li>
</ul>
<h2 id="160">1.6.0</h2>
<h3 id="new-features-3">New Features</h3>
<ul>
<li>Apache Kafka is now supported as a messaging system for events and telemetry messages.
This can be enabled by configuring protocol adapters to use Hono&rsquo;s new Kafka-based
client. Please refer to <a href="https://www.eclipse.org/hono/docs/admin-guide/hono-kafka-client-configuration/">Hono Kafka Client Configuration</a>
for details.</li>
<li>New APIs have been added for the Kafka-based messaging. Please refer to
<a href="https://www.eclipse.org/hono/docs/api/telemetry-kafka/">Telemetry API for Kafka</a> and
<a href="https://www.eclipse.org/hono/docs/api/event-kafka/">Event API for Kafka</a> for the specifications.</li>
<li>The MQTT adapter now allows clients to indicate whether they want the target device&rsquo;s tenant and/or device IDs
to be included in the topic used when publishing commands.</li>
<li>The caching behavior of the protocol adapters' AMQP based registry clients has been changed. All adapter
Verticle instances now share a single cache instance <em>per service</em>. In particular, there is a single cache for
all responses returned by the Tenant, Device Registration and Credentials service respectively.
In addition, each cache is now being used for all responses to requests regardless of the tenant. Consequently, the
service client configurations' <em>responseCacheMinSize</em> and <em>responseCacheMaxSize</em> properties now determine
the overall number of responses that can be cached <em>per service</em>. In previous versions the properties determined
the number of entries <em>per client instance and tenant</em>. The new approach allows for better control over the maximum
amount of memory being used by the cache and should also increase cache hits when deploying multiple adapter
Verticle instances.
The <code>org.eclipse.hono.adapter.client.registry.amqp.ProtonBasedTenantClient</code> now makes sure that only a single
request to the Tenant service is issued when multiple (parallel) <em>get</em> method invocations run into a cache miss.
This should reduce the load on the Tenant service significantly in scenarios where devices of the same
tenant connect to an adapter at a high rate, e.g. in when re-connecting after one or more adapter pods have
crashed.</li>
<li>The Device Registry Management API&rsquo;s <em>update credentials</em> operation has been extended to allow specifying the
<em>auth-id</em> and validity period implicitly by means of including a (Base64 encoded) client certificate in the new
<em>cert</em> property. This can be used instead of specifying the client certificate&rsquo;s subject DN and public key&rsquo;s
validity period explicitly in the <em>auth-id</em> and <em>secrets</em> properties. This should make setting the correct <em>auth-id</em>
value much less error prone.</li>
<li>Hono now supports <em>auto-provisioning</em> of devices that connect via gateway. For more information please refer to the
<a href="https://www.eclipse.org/hono/docs/concepts/device-provisioning/#gateway-based-auto-provisioning">Device Provisioning</a> concept and to the
<a href="https://www.eclipse.org/hono/docs/api/management#/devices/createDeviceRegistration">Device registry management API</a> on how to
create a device registration for a gateway which is enabled for auto-provisioning.</li>
<li>The Device Registry Management API has been extended now to support searching tenants with optional filters,
paging and sorting options. Please refer to the
<a href="https://www.eclipse.org/hono/docs/api/management#/tenants/searchTenants">Device registry management API</a> for details.</li>
<li>The MongoDB based device registry now supports searching tenants with optional filters, paging and sorting options.</li>
</ul>
<h3 id="fixes--enhancements-12">Fixes &amp; Enhancements</h3>
<ul>
<li>The Mongo DB based Credentials service implementation failed to return the credentials matching the given
<em>type</em> and <em>auth-id</em> if multiple credentials of the same <em>type</em> but with different <em>auth-id</em> values were
registered for a device. This has been fixed.</li>
<li>The Mongo DB based registry container would have failed to start if the connection to the Mongo DB could not
be established quickly enough. This has been fixed by decoupling the creation of indices from the start up process.</li>
<li>The protocol adapters erroneously indicated a client related error to devices if the downstream AMQP container
rejected a message with an <code>amqp:resource-limit-exceeded</code> error condition. This has been fixed so that the adapters
now correctly indicate a server related problem instead.</li>
<li>The containers for the Device Registry implementations, the Authentication server, the Device Connection and
Command Router services did not shut down gracefully upon receiving a SIGTERM signal. This has been fixed.</li>
<li>The LoRA protocol adapter failed to start due to a missing bean declaration. This has been fixed.</li>
</ul>
<h3 id="deprecations-2">Deprecations</h3>
<ul>
<li>The <code>org.eclipse.hono.service.cache.SpringCacheProvider</code> and <code>org.eclipse.hono.service.cache.SpringBasedExpiringValueCache</code>
classes have been deprecated to further reduce the dependency on Spring Boot. Clients should use
<code>org.eclipse.hono.service.cache.CaffeineCacheProvider</code> and <code>org.eclipse.hono.service.cache.CaffeineBasedExpiringValueCache</code>
instead.</li>
<li>Most of the public interfaces of the legacy <code>client</code> module have been deprecated. Client code should be
adapted to use the corresponding interfaces and implementations from the <code>clients/adapter</code>, <code>clients/adapter-amqp</code>
and <code>clients/application-amqp</code> modules instead.</li>
<li>The Authentication server&rsquo;s <code>HONO_AUTH_SVC_PERMISSIONS_PATH</code> configuration property has been changed to no
longer accept generic Spring resource URIs. The value is now required to be a file system path. The path
may still contain a <code>file://</code> prefix in order to not break existing configurations. However, users are encouraged
to remove the prefix as it will no longer be supported in versions starting with 2.0.0.
The default permissions file has been removed from the Authentication server code base. Consequently,
permissions can no longer be loaded from the class path using a <code>classpath://</code> URI. In practice this should
have no impact because the Hono chart comes with a default permissions file which the Authentication
server is pre-configured to load from the file system.</li>
</ul>
<h2 id="152">1.5.2</h2>
<h3 id="fixes--enhancements-13">Fixes &amp; Enhancements</h3>
<ul>
<li>The protocol adapters erroneously indicated a client related error to devices if the downstream AMQP container
rejected a message with an <code>amqp:resource-limit-exceeded</code> error condition. This has been fixed so that the adapters
now correctly indicate a server related problem instead.</li>
<li>The containers for the Device Registry implementations, the Authentication server, the Device Connection and
Command Router services did not shut down gracefully upon receiving a SIGTERM signal. This has been fixed.</li>
<li>The LoRA protocol adapter failed to start due to a missing bean declaration. This has been fixed.</li>
</ul>
<h2 id="151">1.5.1</h2>
<h3 id="fixes--enhancements-14">Fixes &amp; Enhancements</h3>
<ul>
<li>The Mongo DB based Credentials service implementation failed to return the credentials matching the given
<em>type</em> and <em>auth-id</em> if multiple credentials of the same <em>type</em> but with different <em>auth-id</em> values were
registered for a device. This has been fixed.</li>
<li>When using the Command Router or Device Connection service component with an embedded cache, a cache
configuration file was required. Now, a default configuration will be used if no configuration file is
given.</li>
<li>The Mongo DB based registry container would have failed to start if the connection to the Mongo DB could not
be established quickly enough. This has been fixed by decoupling the creation of indices from the start up process.</li>
<li>The AMQP and MQTT adapters would erroneously forward commands to unauthorized gateway devices under certain
conditions. This has been fixed.</li>
</ul>
<h2 id="150">1.5.0</h2>
<h3 id="new-features-4">New Features</h3>
<ul>
<li>The CoAP adapter has been promoted from <em>experimental</em> to <em>fully supported</em>.</li>
<li>The Hono Client now supports several configuration properties that can be used
to limit its resource usage. In particular the AMQP connection&rsquo;s <em>max-frame-size</em>,
the AMQP session&rsquo;s incoming window size and the <em>max-message-size</em> of receiver
links can be configured (and thus limited).</li>
<li>A new way of routing Command &amp; Control messages from the AMQP messaging network
to the target protocol adapters has been introduced. For that, a new
<a href="https://www.eclipse.org/hono/docs/admin-guide/command-router-config">Command Router service</a>
component is used, receiving command messages and routing them to the appropriate
protocol adapters. Protocol adapters supply routing information to the component
by means of a new <a href="https://www.eclipse.org/hono/docs/api/command-router/">Command Router API</a>.
Protocol adapters can be configured to either use that new API or they can continue
using the now deprecated <a href="https://www.eclipse.org/hono/docs/api/device-connection/">Device Connection API</a>
instead, meaning command routing will be done without using the Command Router.</li>
<li>The pre-built Hono Docker images available from Docker Hub now include the Jaeger
OpenTracing client.</li>
</ul>
<h3 id="fixes--enhancements-15">Fixes &amp; Enhancements</h3>
<ul>
<li>The file based as well as the MongoDB based registry implementations now remove the shared-key from
PSK credentials returned in the response of the Management API&rsquo;s <em>get credentials</em> operation.</li>
<li>The Device Registry Management API erroneously declared the <em>plaintext password</em> conveyed in the
<em>update credentials</em> operation&rsquo;s request payload as a Base64 encoded byte array instead of a
plain string. This has been fixed.</li>
<li>The file based as well as the Mongo DB based registry implementations had failed to do both
updating an existing secret (referred to by ID) and adding a new secret to the same credentials
in a single request. This has been fixed.</li>
<li>The property names for specifying the patterns for validating Tenant and Device IDs have been fixed
in the admin guides for the file based and the Mongo DB based registry implementations.</li>
<li>The registry implementations did not accept X.509 credentials in an update Credentials request.
They also failed to remove existing credentials of a device if they were not included in an
update Credentials request. This has been fixed.</li>
<li>The file based device registry also now supports searching devices for a tenant with optional filters,
paging and sorting options.
Please refer to the <a href="https://www.eclipse.org/hono/docs/api/management#/devices/searchDevicesForTenant">Device registry management API</a>
for details.</li>
<li>The wildcards <code>?</code> and <code>*</code> are now supported by the search devices operation in the MongoDB based device registry.
Please refer to the <a href="https://www.eclipse.org/hono/docs/api/management#/devices/searchDevicesForTenant">Device registry management API</a>
for details.</li>
<li>Command messages that have their payload in an AMQP body section whose type isn&rsquo;t supported in Hono
now get rejected, instead of getting forwarded to the device with an empty payload.</li>
<li>The authentication providers in Hono use <code>CredentialsObject.getCandidateSecrets</code> to retrieve valid secrets.
The secrets are currently filtered based on their validity period regardless of whether the status is enabled
or not. This has been fixed now, so that the disabled secrets are filtered out.</li>
<li>The MQTT adapter now supports specifying the content-type of a telemetry/event message via a MQTT property bag.</li>
<li>The MQTT adapter now sets the MQTT client identifier as <em>client-id</em> in the payload of a Credentials API <em>get</em>
operation request also when authenticating a device using the username/password mechanism. Previously that was
only done for the client certificate authentication mechanism.</li>
<li>The HTTP adapter did not properly forward the QoS level for events when the <em>qos-level</em> header is not set
or set to AT_MOST_ONCE. This has been fixed.</li>
<li>An HTTP device sending a command response request with no <code>Content-Type</code> header meant that the northbound
application received a message with an empty content type. Now, the <code>application/octet-stream</code>
content type is set, as it is also done for telemetry/event HTTP requests with no <code>Content-Type</code> header.</li>
<li>There were errors sending Connection Events via the Events API if the corresponding tenant didn&rsquo;t
have a non-default <code>max-ttl</code> resource limit configuration. This has been fixed.</li>
</ul>
<h3 id="api-changes-2">API Changes</h3>
<ul>
<li>The deprecated configuration property <code>singleTenant</code> of the protocol adapters and the device registry has been removed.</li>
<li>The default pattern for valid device identifiers used for the file based and the MongoDB based registry
implementations now also contains a colon for compatibility with Eclipse Ditto.</li>
</ul>
<h3 id="end-of-life-2">End of Life</h3>
<ul>
<li>The <em>hono-jmeter</em> Maven module along with the JMeter plugin that is contained in it hasn&rsquo;t been updated for
over a year and is also not used in any automated test runs.
JMeter has turned out not to be the best choice for conducting load tests of Hono because it is difficult to
generate the needed AMQP message load with its (blocking) thread based execution model.
The JMeter plugin therefore has been removed.</li>
</ul>
<h2 id="145">1.4.5</h2>
<h3 id="fixes--enhancements-16">Fixes &amp; Enhancements</h3>
<ul>
<li>The tenant timeout mechanism doesn&rsquo;t close command consumer resources anymore if there are still active
command subscriptions from AMQP or MQTT devices of the corresponding tenant.</li>
<li>The Mongo DB based Credentials service implementation failed to return the credentials matching the given
<em>type</em> and <em>auth-id</em> if multiple credentials of the same <em>type</em> but with different <em>auth-id</em> values were
registered for a device. This has been fixed.</li>
<li>The Mongo DB based registry container would have failed to start if the connection to the Mongo DB could not
be established quickly enough. This has been fixed by decoupling the creation of indices from the start up process.</li>
<li>The AMQP and MQTT adapters would erroneously forward commands to unauthorized gateway devices under certain
conditions. This has been fixed.</li>
</ul>
<h2 id="144">1.4.4</h2>
<h3 id="fixes--enhancements-17">Fixes &amp; Enhancements</h3>
<ul>
<li>The HTTP adapter did not properly forward the QoS level for events when the <em>qos-level</em> header is not set
or set to AT_MOST_ONCE. This has been fixed.</li>
<li>An HTTP device sending a command response request with no <code>Content-Type</code> header meant that the north bound
application received a message with the content type set to an empty string. Now, the content type property
isn&rsquo;t set in this case.</li>
<li>There were errors sending Connection Events via the Events API if the corresponding tenant didn&rsquo;t
have a non-default <code>max-ttl</code> resource limit configuration. This has been fixed.</li>
</ul>
<h2 id="143">1.4.3</h2>
<h3 id="fixes--enhancements-18">Fixes &amp; Enhancements</h3>
<ul>
<li>The file based as well as the Mongo DB based registry implementations now remove the shared-key from
PSK credentials returned in the response of the Management API&rsquo;s <em>get credentials</em> operation.</li>
<li>The Device Registry Management API erroneously declared the <em>plain text password</em> conveyed in the
<em>update credentials</em> operation&rsquo;s request payload as a Base64 encoded byte array instead of a
plain string. This has been fixed.</li>
<li>The file based as well as the Mongo DB based registry implementations had failed to do both
updating an existing secret (referred to by ID) and adding a new secret to the same credentials
in a single request. This has been fixed.</li>
<li>The property names for specifying the patterns for validating Tenant and Device IDs have been fixed
in the admin guides for the file based and the Mongo DB based registry implementations.</li>
<li>The registry implementations did not accept X.509 credentials in an update Credentials request.
They also failed to remove existing credentials of a device if they were not included in an
update Credentials request. This has been fixed.</li>
<li>The AMQP protocol adapter did accept messages from clients (devices) exceeding the adapter&rsquo;s configured
max-message-size. This has been fixed and the adapter now closes the link to the device in this case.</li>
</ul>
<h3 id="api-changes-3">API Changes</h3>
<ul>
<li>The default pattern for valid device identifiers used for the file based and the MongoDB based registry
implementations now also contains a colon (<code>:</code>) for compatibility with Eclipse Ditto.</li>
</ul>
<h2 id="140">1.4.0</h2>
<h3 id="new-features-5">New Features</h3>
<ul>
<li>The protocol adapters now report connection attempts made by devices
in a new metric. In particular, the metric includes a tag reflecting the outcome
of the attempt to establish a connection and the reason for failure.
Please refer to the <a href="https://www.eclipse.org/hono/docs/api/metrics">Metrics API</a> for details.</li>
<li>A new Quarkus based HTTP protocol adapter is now available. This adapter version provides better memory consumption and
startup times comparing to the existing one.</li>
<li>The LoraWAN protocol adapter has been extended with support for the <em>Actility Enterprise</em> provider.</li>
<li>The LoraWAN protocol adapter has been extended with support for the <em>Orbiwise</em> provider.</li>
<li>Added metrics for tracking the RTT between sending an AMQP message to receiving the disposition.</li>
<li>The CoAP adapter now supports configuration of the <em>timeoutToAck</em> parameter at the tenant level
in addition to the adapter level. If set, the tenant specific value is used for all devices of the
particular tenant. If not set, the value defined at the adapter level is used.</li>
<li>The Device Registry Management API has been extended now to support searching devices for a tenant
with optional filters, paging and sorting options.
Please refer to the <a href="https://www.eclipse.org/hono/docs/api/management#/devices/searchDevicesForTenant">Device registry management API</a>
for details.</li>
<li>The MongoDB based device registry now supports searching devices for a tenant with optional filters,
paging and sorting options.</li>
</ul>
<h3 id="fixes--enhancements-19">Fixes &amp; Enhancements</h3>
<ul>
<li>The MongoDB based device registry now checks for tenant existence during device registration and credentials management operations.</li>
</ul>
<h3 id="deprecations-3">Deprecations</h3>
<ul>
<li>The configuration property <code>singleTenant</code> of the protocol adapters and the device registry is now deprecated
and planned to be removed in a future release. The use case of a system with just a single tenant should be
realized by configuring just one tenant in the device registry.</li>
<li>The <code>HONO_REGISTRY_REST_*</code> configuration properties of the file based device registry have been deprecated
in favor of corresponding properties with the <code>HONO_REGISTRY_HTTP_</code> prefix.</li>
</ul>
<h2 id="132">1.3.2</h2>
<h3 id="fixes--enhancements-20">Fixes &amp; Enhancements</h3>
<ul>
<li>The HTTP adapter did not properly forward the QoS level for events when the <em>qos-level</em> header is not set
or set to AT_MOST_ONCE. This has been fixed.</li>
<li>An HTTP device sending a command response request with no <code>Content-Type</code> header meant that the northbound
application received a message with the content type set to an empty string. Now, the content type property
isn&rsquo;t set in this case.</li>
<li>There were errors sending Connection Events via the Events API if the corresponding tenant didn&rsquo;t
have a non-default <code>max-ttl</code> resource limit configuration. This has been fixed.</li>
</ul>
<h2 id="131">1.3.1</h2>
<h3 id="fixes--enhancements-21">Fixes &amp; Enhancements</h3>
<ul>
<li>The file based as well as the Mongo DB based registry implementations now remove the shared-key from
PSK credentials returned in the response of the Management API&rsquo;s <em>get credentials</em> operation.</li>
<li>The Device Registry Management API erroneously declared the <em>plain text password</em> conveyed in the
<em>update credentials</em> operation&rsquo;s request payload as a Base64 encoded byte array instead of a
plain string. This has been fixed.</li>
<li>The file based as well as the Mongo DB based registry implementations had failed to do both
updating an existing secret (referred to by ID) and adding a new secret to the same credentials
in a single request. This has been fixed.</li>
<li>The property names for specifying the patterns for validating Tenant and Device IDs have been fixed
in the admin guides for the file based and the Mongo DB based registry implementations.</li>
<li>The registry implementations did not accept X.509 credentials in an update Credentials request.
They also failed to remove existing credentials of a device if they were not included in an
update Credentials request. This has been fixed.</li>
<li>The AMQP protocol adapter did accept messages from clients (devices) exceeding the adapter&rsquo;s configured
max-message-size. This has been fixed and the adapter now closes the link to the device in this case.</li>
</ul>
<h3 id="api-changes-4">API Changes</h3>
<ul>
<li>The default pattern for valid device identifiers used for the file based and the MongoDB based registry
implementations now also contains a colon (<code>:</code>) for compatibility with Eclipse Ditto.</li>
</ul>
<h2 id="130">1.3.0</h2>
<h3 id="new-features-6">New Features</h3>
<ul>
<li>The LoraWAN protocol adapter has been extended with support for the <em>ChirpStack</em> provider.</li>
<li>Hono&rsquo;s integration tests can now be run with a Jaeger back end in order to collect tracing
information.</li>
<li>The AMQP 1.0 event message based Connection Event producer now sets a TTL on the event messages
it produces. The TTL is the <em>max TTL</em> configured at the tenant level.</li>
<li>A new Device Registry implementation based on MongoDB database is now available in Hono.
Please refer to the <a href="https://www.eclipse.org/hono/docs/user-guide/mongodb-based-device-registry">MongoDB Device Registry User Guide</a>
for additional information.</li>
<li>Hono protocol adapters can now be configured to use address rewriting when opening AMQP 1.0 links to the messaging network.
This allows an easier deployment in multi-tenant messaging environments.
Please refer to the <a href="https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/#address-rewriting">Hono Client Configuration Guide</a>
for additional information.</li>
</ul>
<h3 id="fixes--enhancements-22">Fixes &amp; Enhancements</h3>
<ul>
<li>An admin guide for the CoAP adapter has been added.</li>
<li>The Prometheus based resource limits checker now supports configuring a query timeout.
Please refer to <a href="https://www.eclipse.org/hono/docs/admin-guide/common-config/#resource-limits-checker-configuration">Resource Limits Checker Configuration</a>
for additional information.</li>
<li>When sending a command message to a device, the AMQP adapter now waits for a
configurable period of time (default is 1 second) for the acknowledgement from the device.
If none is received, the downstream command sender gets back a <code>released</code> outcome.
Please refer to the <code>sendMessageToDeviceTimeout</code> property description in the
AMQP Adapter admin guide for additional information.</li>
<li>The client for storing device connection information to a data grid now supports configuring
the name of the cache to store the data in.</li>
<li>When the connection to a device is closed or lost, a protocol adapter instance will now
stop listening for commands targeted at the device.</li>
<li>The AMQP adapter before accepting any connections checks if the connection limit is exceeded
or not and if the adapter is enabled or not. These checks are currently done inside the
<code>AmqpAdapterSaslAuthenticatorFactory</code>. Thereby, if any of these checks failed, the AMQP adapter
reported authentication failure instead of the actual reason. This has been fixed now.</li>
<li>The AMQP adapter did not consider the <code>HONO_CONNECTIONEVENTS_PRODUCER</code> configuration variable
to set a Connection Event producer. This has been fixed.</li>
<li>The <em>logging</em> Connection Event producer now supports configuring the level
at which information should be logged. The producer type <em>none</em> has been added to explicitly
turn off connection event reporting altogether.
Please refer to the <em>Common Configuration</em> admin guide for details.</li>
<li>The packages <code>org.eclipse.hono.service.credentials</code>, <code>org.eclipse.hono.service.management</code>,
<code>org.eclipse.hono.service.management.credentials</code>, <code>org.eclipse.hono.service.management.device</code>,
<code>org.eclipse.hono.service.management.tenant</code>, <code>org.eclipse.hono.service.registration</code> and
<code>org.eclipse.hono.service.tenant</code> have been moved from the <em>service-base</em> to the
<em>device-registry-base</em> module.</li>
<li>The Device Connection service did return a 500 error code if no <em>last known gateway</em> could
be found for a device ID. This has been fixed so that the service now returns a 404 in that
case as specified by the Device Connection API.</li>
<li>The cache based Device Connection service implementation now applies a lifespan of 28 days
when setting/updating cache entries containing <em>last known gateway</em> information. This means
no global expiration configuration is needed anymore for the cache.</li>
<li>Protocol adapters failed to re-establish receiver links for commands to be routed after loss
of connection to the AMQP Messaging Network. This has been fixed.</li>
<li>The AMQP adapter reported an incorrect number of connections if resource limits had been
defined and exceeded. This has been fixed.</li>
<li>The device registry management HTTP endpoints now reject requests to register or update objects
containing unknown properties. In the past such properties had been simply ignored.</li>
<li>The Device Registry Management API has been amended with example messages and more thorough
description of operations.</li>
<li>The CoAP adapter has been enhanced to asynchronously look up a device&rsquo;s PSK during the
DTLS handshake. This will allow the adapter to handle a lot more handshakes concurrently.
The adapter also employs a more efficient message de-duplicator which reduces the adapter&rsquo;s
memory footprint.</li>
</ul>
<h3 id="api-changes-5">API Changes</h3>
<ul>
<li>The <code>getRemoteContainer</code> method in <code>org.eclipse.hono.client.HonoConnection</code> has been
renamed to <code>getRemoteContainerId</code>.</li>
<li>The <code>getName</code> method in <code>org.eclipse.hono.connection.ConnectionFactory</code> has been removed
and an additional <code>connect</code> method has been added.</li>
<li>The <em>set command-handling protocol adapter instance</em> operation of the <em>Device Connection</em> API
has been extended to support an additional parameter which can be used to indicate the
maximum amount of time that the given information is to be considered valid.</li>
<li>The <code>hono-core</code> module no longer embeds any external classes by default.
This includes the <em>OpenTracing API</em> and <em>Spring Crypto</em> classes. You can still
embed the classes, as in Hono versions 1.2.x and before, by enabling the
Maven profile <code>embed-dependencies</code> (e.g. using the command line switch
<code>-Pembed-dependencies</code>). By default this profile is not active.</li>
<li>The <code>org.eclipse.hono.client.DeviceRegistration</code> interface&rsquo;s <em>get</em> methods have been removed
because the Device Registration API does not define a corresponding operation.
Consequently, the C&amp;C functionality of the Kerlink Lora provider which relied on the <em>get</em>
method has been removed.</li>
<li>Protocol adapters implementing the <code>org.eclipse.hono.service.AbstractAdapterConfig</code> class
now need to implement the <code>getAdapterName</code> method. The <code>customizeDownstreamSenderFactoryConfig</code>
method has been renamed to <code>getDownstreamSenderFactoryConfigDefaults</code>, while now returning
properties instead of working on given ones. The new method name now more accurately conveys
what the method is used for. The same change has been applied to the other <code>customize[*]Config</code>
methods in the <code>AbstractAdapterConfig</code> class.</li>
<li>The file based as well as the MongoDB based device registry implementations now disallow certain
special characters in device and tenant identifiers. The configuration properties
<code>HONO_REGISTRY_HTTP_TENANT_ID_PATTERN</code> and <code>HONO_REGISTRY_HTTP_DEVICE_ID_PATTERN</code> (and corresponding ones with
prefix <code>HONO_REGISTRY_REST</code> for the file based registry) can be used to override the patterns for matching
valid identifiers. Please refer to the
<a href="https://www.eclipse.org/hono/docs/admin-guide/file-based-device-registry-config/#service-configuration">file based registry</a> or
<a href="https://www.eclipse.org/hono/docs/admin-guide/mongodb-device-registry-config/#service-configuration">MongoDB based registry</a>
configuration guide for details.</li>
</ul>
<h3 id="deprecations-4">Deprecations</h3>
<ul>
<li>The configuration property <code>HONO_MQTT_COMMAND_ACK_TIMEOUT</code> of the MQTT adapter is now deprecated
and planned to be removed in a future release. Use <code>HONO_MQTT_SEND_MESSAGE_TO_DEVICE_TIMEOUT</code> instead.</li>
</ul>
<h2 id="124">1.2.4</h2>
<h3 id="fixes--enhancements-23">Fixes &amp; Enhancements</h3>
<ul>
<li>The <code>HonoConnection</code> implementation didn&rsquo;t use a delay before a reconnect attempt after
a certain number of reconnect attempts (58 with the default configuration) had already
failed. This has been fixed.</li>
<li>An error when freeing Command &amp; Control related resources of an idle tenant has been fixed.</li>
<li>The Hotrod based DeviceConnectionClientFactory has been improved to prevent locking of
objects in a clustered cache.</li>
<li>The AMQP adapter reported an incorrect number of connections if resource limits had been
defined and exceeded. This has been fixed.</li>
</ul>
<h2 id="123">1.2.3</h2>
<h3 id="fixes--enhancements-24">Fixes &amp; Enhancements</h3>
<ul>
<li>The Device Connection service did return a 500 error code if no <em>last known gateway</em> could
be found for a device ID. This has been fixed so that the service now returns a 404
in that case as specified by the Device Connection API.</li>
<li>The cache based Device Connection service implementation now applies a lifespan of 28 days
when setting/updating cache entries containing <em>last known gateway</em> information. This means
no global expiration configuration is needed anymore for the cache.</li>
<li>Protocol adapters failed to re-establish receiver links for commands to be routed after loss
of connection to the AMQP Messaging Network. This has been fixed.</li>
</ul>
<h3 id="api-changes-6">API Changes</h3>
<ul>
<li>The <code>org.eclipse.hono.client.DeviceRegistration</code> interface&rsquo;s <em>get</em> methods have been removed
because the Device Registration API does not define a corresponding operation.
Consequently, the C&amp;C functionality of the Kerlink Lora provider which relied on the <em>get</em>
method has been removed.</li>
</ul>
<h2 id="122">1.2.2</h2>
<h3 id="fixes--enhancements-25">Fixes &amp; Enhancements</h3>
<ul>
<li>Commands might not have been routed to the target device or gateway if multiple
Verticle instances were deployed in a protocol adapter instance. This has been fixed.</li>
<li>The example registry&rsquo;s admin guide has been amended with some missing configuration
variables.</li>
<li>The documentation of the underlying concepts of Hono&rsquo;s Command &amp; Control functionality
has been updated to reflect recent changes.</li>
<li>Some dependencies have been updated to more recent versions fixing potential
vulnerabilities.</li>
</ul>
<h2 id="121">1.2.1</h2>
<h3 id="fixes--enhancements-26">Fixes &amp; Enhancements</h3>
<ul>
<li>The AMQP adapter didn&rsquo;t report any metrics anymore. This has been fixed.</li>
<li>The CoAP and HTTP adapters' user guide now correctly documents the 413 status code returned
in response to a request that contains a payload exceeding the configured maximum size.</li>
</ul>
<h2 id="120">1.2.0</h2>
<h3 id="new-features-7">New Features</h3>
<ul>
<li>The protocol adapters can now be configured with a direct connection to a data grid
for storing device connection information.
This has the advantage of saving the network hop to the Device Connection service.
Please refer to the protocol adapter Admin Guides for details.</li>
<li>The Prometheus based resource limits check can now be configured with a trust store, key material
and/or a username and password in order to be able to connect to a Prometheus server
that requires TLS and/or client authentication.</li>
<li>A Java client for the communication with the AMQP protocol adapter has been added.
It can be used to implement devices, (protocol) gateways and for testing purposes.
For more information refer to <a href="https://www.eclipse.org/hono/docs/dev-guide/amqp_adapter_client/">AMQP Adapter Client for Java</a>.</li>
<li>Devices can now be configured with <em>groups</em> of gateways that are allowed to act on behalf of the
device. This makes it easier to support scenarios in which a device may <em>roam</em> between multiple
gateways. The HTTP based management API has been adapted accordingly.</li>
<li>The CoAP adapter now supports forwarding commands to devices in the response body of requests for
uploading telemetry data and/or events, analogous to the HTTP adapter.
Please note that the CoAP adapter is still considered <em>experimental</em> and its device facing API
is therefore still subject to change.</li>
</ul>
<h3 id="fixes--enhancements-27">Fixes &amp; Enhancements</h3>
<ul>
<li>When a message arrived, the <em>message limit</em> checks failed to calculate the payload size
of the incoming message based on the configured <em>minimum message size</em>. Instead, it used the
actual payload size to verify if the <em>message limit</em> has been exceeded or not. This has been
fixed now.</li>
<li>The Command &amp; Control implementation in the protocol adapters has been optimized to use
far fewer consumer links to the AMQP Messaging Network, saving up on resources.
Before this change, the protocol adapters created a separate receiver link for each device that wanted
to receive commands. Now each protocol adapter instance creates only a single receiver link over
which all commands for all devices connected to the adapter instance are transmitted.</li>
<li>The base classes for implementing a device registry have been moved into their own <code>device-registry-based</code>
module.</li>
<li>The example device registry&rsquo;s AMQP and HTTP endpoints do no longer exchange incoming request messages and outgoing
response messages with the service implementation verticles over the Vert.x EventBus. This reduces complexity
and should improve throughput as messages no longer need to be serialized anymore.</li>
<li>A first version of the CoAP User Guide has been added.</li>
<li>A concept page explaining the different ways devices can be connected to Hono&rsquo;s protocol adapters has been
added. There is also example code illustrating how a protocol gateway which connects to the AMQP adapter can
be implemented.</li>
<li>If both AMQP and Kafka messaging systems are configured, then Command &amp; Control messages will be received from
both systems. A command response message from a device will by default be forwarded using the messaging system
that the corresponding command message was received in.</li>
</ul>
<h3 id="api-changes-7">API Changes</h3>
<ul>
<li>The device registry credentials endpoint will no longer hand out sensitive details for hashed-password secrets.
<code>pwd-hash</code>, <code>salt</code> and <code>hash-function</code> are stored by the device registry but not returned to the user.
Each secret is given an ID which is now returned, along with the other metadata (time validity and optional fields).</li>
<li>The <code>tenant</code> and <code>devices</code> endpoints of the management HTTP API now accept creation requests without a body.
As there is no mandatory field, having a mandatory body was confusing.</li>
<li>The methods of the service base classes <code>CredentialsManagementService</code>, <code>CredentialsService</code>,
<code>DeviceConnectionService</code>, <code>DeviceManagementService</code>, <code>RegistrationService</code>, <code>TenantManagementService</code> and
<code>TenantService</code> have been refactored to now return a Vert.x Future instead of taking a Handler as an argument.</li>
<li>The <code>CommandConsumerFactory</code> interface has been renamed to <code>ProtocolAdapterCommandConsumerFactory</code> and method
signatures have been changed slightly. Also, a new <code>initialize</code> method has been added to be called on protocol
adapter startup.</li>
<li>The AMQP Messaging Network now has to be configured in such a way that protocol adapters can send and
receive messages on the <code>command_internal/*</code> instead of the <code>control/*</code> address pattern.</li>
<li>The Device Registry Management API has been extended to support the definition of <em>Gateway Groups</em> which
can be referenced in a device&rsquo;s <em>viaGroups</em> property in order to authorize all gateways that are a member
of any of the groups to act on behalf of the device.</li>
</ul>
<h2 id="112">1.1.2</h2>
<h3 id="api-changes-8">API Changes</h3>
<ul>
<li>The <code>org.eclipse.hono.client.DeviceRegistration</code> interface&rsquo;s <em>get</em> methods have been removed
because the Device Registration API does not define a corresponding operation.
Consequently, the C&amp;C functionality of the Kerlink Lora provider which relied on the <em>get</em>
method has been removed.</li>
</ul>
<h2 id="111">1.1.1</h2>
<h3 id="fixes--enhancements-28">Fixes &amp; Enhancements</h3>
<ul>
<li>The <em>FireFly</em> LoRa adapter now supports mapping of the <em>mic</em> property.</li>
<li>A bug preventing the lora and SigFox adapters to start up correctly has been fixed.</li>
<li>The MQTT adapter failed to accept command response messages from authenticated gateways that had
been published to the <code>command//${device-id}/res/${req-id}/${status}</code> topic. This has been fixed
and the adapter now correctly uses the gateway&rsquo;s tenant in this case.</li>
<li>When a north bound application sent a command to a device that is connected via a gateway, the
AMQP adapter set the gateway&rsquo;s ID instead of the device&rsquo;s ID in the command response forwarded
to the application. This has been fixed.</li>
</ul>
<h2 id="110">1.1.0</h2>
<h3 id="new-features-8">New Features</h3>
<ul>
<li>The Sigfox and LoRaWAN adapters now report metrics analogously to the other protocol
adapters.</li>
<li>With the release of <a href="https://www.eclipse.org/californium">Eclipse Californium</a> 2.0.0,
the CoAP adapter became an official part of the Hono release. The adapter also supports
tracking of request processing using OpenTracing but is still considered <em>experimental</em>.</li>
<li>A lorawan provider has been added for the <em>loriot</em> network provider.</li>
<li>Hono&rsquo;s protocol adapters now support Server Name Indication in order
to allow devices to establish a TLS connection with adapters using a tenant specific
server certificate and host name. Please refer to the <em>Secure Communication</em> admin
guide for details.</li>
<li>Hono now supports <em>auto-provisioning</em> of devices that authenticate with X.509 client certificates.
For more information please refer to the <a href="https://www.eclipse.org/hono/docs/concepts/device-provisioning/">Device Provisioning</a>
concept and for details to the <a href="https://www.eclipse.org/hono/docs/api/tenant/#trusted-ca-format">Tenant API</a>
and the <a href="https://www.eclipse.org/hono/docs/api/credentials/#get-credentials">Credentials API</a>.</li>
<li>The Hono Auth Server and Device Registry components now support configuring the SASL
mechanisms advertised to a client connecting to these components. This can be used to
restrict the support to only one of the SASL PLAIN and EXTERNAL mechanisms instead of both.</li>
<li>A new metric namely <em>hono.connections.authenticated.duration</em> has been introduced to track the
connection duration of the authenticated devices. Please refer to the
<a href="https://www.eclipse.org/hono/docs/api/metrics/">Metrics API</a> for more details.</li>
<li>The protocol adapters that maintain <em>connection state</em> can now be configured to verify the <em>connection
duration limit</em> for each tenant before accepting any new connection request from the devices. Please
refer to the <a href="https://www.eclipse.org/hono/docs/concepts/resource-limits/#connection-duration-limit">resource-limits</a>
section for more details.</li>
<li>Hono&rsquo;s example device registry now supports configuring a time out for processing requests from clients.
This is configured using the property <code>sendTimeOutInMs</code> in <code>org.eclipse.hono.config.ServiceConfigProperties</code>.</li>
<li>Hono&rsquo;s Helm chart is now available from the
<a href="https://www.eclipse.org/packages/repository/">Eclipse IoT Packages chart repository</a>.
All future development of the chart will be done in the IoT Packages project only.
The deployment guide has been adapted accordingly.</li>
</ul>
<h3 id="fixes--enhancements-29">Fixes &amp; Enhancements</h3>
<ul>
<li>Hono&rsquo;s Helm chart now supports configuring resource requests and limits of the container images.</li>
<li>The MQTT adapter now includes a device&rsquo;s MQTT client ID in its request to retrieve the device&rsquo;s
credentials. This additional information can be used by device registry implementations when determining
the device identity.</li>
<li>The domain name of the <a href="/hono/sandbox/">Hono Sandbox</a> has been changed to
<code>hono.eclipseprojects.io</code>.
It will still be available at the old domain name for some time as well, though.</li>
<li>Hono&rsquo;s OpenTracing instrumentation has been upgraded to Opentracing 0.33.0.
The example deployment now uses the Jaeger Java client in version 0.35.2 and the
Jaeger 1.16 agent and back end components.</li>
<li>Some of the environment variable names documented in the user guides which can be used for configuring
Hono components had not been recognized during start up of the components.
In particular, the names for configuring the connection to the Device Connection service
and for configuring a heath check server have been fixed.</li>
<li>The AMQP adapter now correctly accepts command response messages from devices that do not
contain any payload. Such responses are useful to only convey a status code in reply to
a command.</li>
</ul>
<h3 id="api-changes-9">API Changes</h3>
<ul>
<li>The already deprecated endpoints with the <code>control</code> prefix have been removed. The northbound and southbound
Command &amp; Control endpoints can now only be used with the <code>command</code> and <code>command_response</code> prefixes
(or the respective shorthand version). Note that the AMQP Messaging Network still needs to be
configured in such a way that protocol adapters can send and receive messages on the <code>control/*</code>
address pattern. This is now used for internal communication between protocol adapters only.</li>
<li>The <code>create</code> method in <code>org.eclipse.hono.client.HonoConnection</code> now requires its Vertx parameter to be not null.</li>
</ul>
<h2 id="104">1.0.4</h2>
<h3 id="api-changes-10">API Changes</h3>
<ul>
<li>The <code>org.eclipse.hono.client.DeviceRegistration</code> interface&rsquo;s <em>get</em> methods have been removed
because the Device Registration API does not define a corresponding operation.
Consequently, the C&amp;C functionality of the Kerlink Lora provider which relied on the <em>get</em>
method has been removed.</li>
</ul>
<h2 id="103">1.0.3</h2>
<h3 id="fixes--enhancements-30">Fixes &amp; Enhancements</h3>
<ul>
<li>Hono&rsquo;s Helm Chart now correctly configures Prometheus based resource limit checks if
a Prometheus server is being used for collecting metrics.</li>
<li>Some OpenTracing spans used for tracking processing of messages haven&rsquo;t properly been finished.
This has been fixed.</li>
<li>Protocol adapters are now able to process messages while still trying to re-establish connections
to other services after a connection loss. This might result in fewer messages being rejected
in such situations.</li>
</ul>
<h2 id="102">1.0.2</h2>
<h3 id="fixes--enhancements-31">Fixes &amp; Enhancements</h3>
<ul>
<li>The example deployment now also works with Kubernetes 1.16 using Helm 2.15 and later.</li>
<li>The Hono chart can now also be deployed using the recently released Helm 3. In fact,
Helm 3 is now the recommended way for deploying Hono as it doesn&rsquo;t require installation
of any Helm specific components to the Kubernetes cluster.</li>
<li>The example data grid which can be deployed using the Hono Helm chart can now be scaled
out to more than one node.</li>
<li>Under rare circumstances an HTTP adapter instance might have gotten into a state where
a device&rsquo;s requests to receive commands could no longer be processed successfully
anymore until the adapter instance had been restarted. This has been fixed.</li>
<li>A potential issue has been identified where some command messages might not get sent to
the corresponding gateway. The scenario here involves the gateway sending event/telemetry
messages via HTTP with a <code>hono-ttd</code> header in order to receive commands, and doing so
with multiple concurrent requests for <em>different</em> devices. To resolve this issue, the
corresponding tenant can be configured with a <code>support-concurrent-gateway-device-command-requests</code>
option set to <code>true</code> in the <code>ext</code> field of an <code>adapters</code> entry of type <code>hono-http</code>.
Note that with this option it is not supported for the authenticated gateway to send
<em>one</em> message with a <code>hono-ttd</code> header and no device id to receive commands for <em>any</em>
device that has last sent a telemetry or event message via this gateway.</li>
</ul>
<h2 id="101">1.0.1</h2>
<h3 id="fixes--enhancements-32">Fixes &amp; Enhancements</h3>
<ul>
<li>The AMQP protocol adapter now requests devices to send traffic periodically in order
to prevent a time out of the connection. This way the adapter is able to detect and
close stale connections which is important to reliably close the device&rsquo;s corresponding
command consumer. The time period after which the adapter should consider a connection stale
can be configured using an environment variable. Please refer to the AMQP adapter&rsquo;s
admin guide for details.</li>
<li>The example deployment using the Helm chart correctly creates the <code>DEFAULT_TENANT</code> again.</li>
</ul>
<h2 id="100">1.0.0</h2>
<h3 id="new-features-9">New Features</h3>
<ul>
<li>A tenant can now be configured with a <em>max-ttl</em> which is used as an upper boundary for default
TTL values configured for devices/tenants. Please refer to the <a href="https://www.eclipse.org/hono/docs/api/tenant#resource-limits-configuration-format">Tenant API</a>
for details.
The AMQP, HTTP, MQTT and Kura protocol adapters consider this property when setting a TTL on
downstream event messages.</li>
<li>A protocol adapter can now be configured with a timeout for idle tenants. When there has been no
communication between a protocol adapter instance and the devices of a tenant, the former one releases
allocated resources of the tenant. Currently this means that it closes AMQP links and stops reporting
metrics for this tenant. The timeout is configured with the property <code>tenantIdleTimeout</code> for a protocol
adapter. Please refer to the protocol adapter <a href="https://www.eclipse.org/hono/docs/admin-guide/">configuration guides</a>
for details.</li>
<li>The accounting period for the <em>message limit</em> checks can now be configured as <code>monthly</code>.
In this case the data usage for a tenant is calculated from the beginning till the end of the
(Gregorian) calendar month. Refer <a href="https://www.eclipse.org/hono/docs/concepts/resource-limits/">resource limits</a>
for more information.</li>
<li>The devices can now indicate a <em>time-to-live</em> duration for event messages published using
the HTTP and MQTT adapters by setting the <em>hono-ttl</em> property in requests explicitly. Please refer to the
<a href="https://www.eclipse.org/hono/docs/user-guide/http-adapter/#publish-an-event-authenticated-device">HTTP Adapter</a>
and <a href="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/#publishing-events">MQTT Adapter</a> for details.</li>
<li>The device registry HTTP management API now properly implements <em>cross-origin resource sharing (CORS)</em> support,
by allowing the service to be exposed to configured domains (by default, it&rsquo;s exposed to all domains).</li>
<li>The <code>org.eclipse.hono.util.MessageHelper</code> now provides convenience factory methods for creating
new downstream messages from basic properties.
<code>org.eclipse.hono.service.AbstractProtocolAdapterBase</code> has been adapted to delegate to these
new factory methods.</li>
<li>Hono&rsquo;s protocol adapters can now use multiple trusted certificate authorities per tenant to authenticate
devices based on client certificates. The list of trusted certificate authorities can be managed at the
tenant level using the Device Registry Management API.</li>
<li>Authenticated gateway devices can now subscribe to commands for specific devices. Before, gateways
could only subscribe to commands directed at any of the devices that the gateway has acted on behalf of.
With the new feature of also being able to subscribe to commands for specific devices, northbound
applications will get notified of such a subscription along with the specific device id.</li>
<li>Now a <em>max-ttd</em> value, which is used as an upper boundary for the <em>hono-ttd</em> value specified by the devices,
can be set as an <em>extension</em> property in the adapters section of the tenant configuration.</li>
</ul>
<h3 id="api-changes-11">API Changes</h3>
<ul>
<li>The already deprecated <em>legacy metrics</em> support has been removed.</li>
<li>The already deprecated <em>legacy device registry</em> and the corresponding base classes, which had been deprecated
as well, have been removed.</li>
<li>The topic filters used by MQTT devices to subscribe to commands has been changed slightly
to better fit the addressing scheme used by the other protocol adapters.
The existing topic filters have been deprecated but are still supported.
Please refer to the <a href="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/#command-control">MQTT adapter user guide</a>
for details.</li>
<li>The interface <code>ResourceLimitChecks</code> and its implementation classes have been moved to
package <code>org.eclipse.hono.service.resourcelimits</code> from <code>org.eclipse.hono.service.plan</code>.
Also the configuration parameters for the resource limits were renamed from <code>hono.plan</code>
to <code>hono.resourceLimits</code>. Please refer to the protocol adapter <a href="https://www.eclipse.org/hono/docs/admin-guide/">configuration guides</a>
for more information.</li>
<li>The response payload of the <em>get Tenant</em> operation of the Tenant API has been changed to contain
a list of trusted certificate authorities instead of just a single one. This way, protocol
adapters can now authenticate devices based on client certificates signed by one of multiple
different trusted root authorities defined for a tenant.
All standard protocol adapters have been adapted to this change.
The <em>Tenant</em> JSON schema object used in the tenant related resources of the Device Registry Management API
has also been adapted to contain a list of trusted authorities instead of a single one.</li>
</ul>
<h3 id="deprecations-5">Deprecations</h3>
<ul>
<li>The OpenShift specific source-to-image deployment model has been removed in
favor of the Helm charts and the Eclipse IoT Packages project. You can still
deploy Hono on OpenShift using the Helm charts.</li>
<li>Defining password secrets with user provided password hash, function and salt is deprecated in the device registry management
API and will be removed in the upcoming versions. You should use <code>pwd-plain</code> property only going forward.</li>
</ul>
<h2 id="10-m7">1.0-M7</h2>
<h3 id="new-features-10">New Features</h3>
<ul>
<li>The Hono Helm chart now supports to choose if the example Device Registry, example AMQP Messaging Network
and/or the example Jaeger back end should be deployed and used with the Hono components or not.
In the latter case, the chart now also supports setting configuration properties for using an already
existing AMQP Messaging Network, Device Registry and/or Jaeger back end.</li>
<li>A data grid based implementation of the Device Connection API has been added to Hono. This implementation
can be used in production environments using a highly scalable data grid for storing device connection
information. The service can be used instead of the simple implementation provided by the example Device
Registry by means of setting a configuration property when <a href="https://www.eclipse.org/hono/docs/deployment/helm-based-deployment/#using-the-device-connection-service">deploying using the Helm chart</a>.</li>
<li>A tenant can now be configured so that <em>all</em> OpenTracing spans created when processing messages for that
specific tenant will be recorded in the tracing backend (overriding the default sampling strategy that
might only record a certain percentage of traces). See
<a href="https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/#enforcing-the-recording-of-traces-for-a-tenant">Monitoring &amp; Tracing</a>
for more details.</li>
</ul>
<h3 id="api-changes-12">API Changes</h3>
<ul>
<li>The obsolete method variants of <code>reportTelemetry</code> in <code>org.eclipse.hono.service.metric.Metrics</code>
have been removed. The new variants of this method accept an additional parameter of type <code>TenantObject</code>.</li>
<li>The already deprecated <code>org.eclipse.hono.service.AbstractProtocolAdapterBase.getRegistrationAssertion</code>
method has been removed. The alternate variant of the <code>getRegistrationAssertion</code> method which accepts an
additional OpenTracing span parameter should be used.</li>
<li>The already deprecated <code>getRegistrationAssertion</code>, <code>getTenantConfiguration</code>, <code>sendConnectedTtdEvent</code>,
<code>sendDisconnectedTtdEvent</code> and <code>sendTtdEvent</code> methods in <code>org.eclipse.hono.service.AbstractProtocolAdapterBase</code>
have been removed. The alternate variant of these methods which accepts an additional OpenTracing span parameter
should be used.</li>
</ul>
<h3 id="deprecations-6">Deprecations</h3>
<ul>
<li>The deprecated Kura adapter is no longer deployed by default by the Helm chart.
However, it can still be deployed by means of <a href="https://www.eclipse.org/hono/docs/deployment/helm-based-deployment/#deploying-optional-adapters">setting a configuration property</a>.</li>
</ul>
<h2 id="10-m6">1.0-M6</h2>
<h3 id="new-features-11">New Features</h3>
<ul>
<li>Implementation of the new HTTP management API for tenants, devices and
credentials.</li>
<li>The health check endpoints of services can now be called securely via TLS.
Please refer to the protocol adapter <a href="https://www.eclipse.org/hono/docs/admin-guide/">configuration guides</a>
for the new parameters available.</li>
<li>The <a href="https://www.eclipse.org/hono/docs/api/tenant/#resource-limits-configuration-format">Tenant API</a> now optionally allows
specifying <em>minimum message size</em>. If it is specified, then the payload size of the incoming telemetry, event
and command messages are calculated in accordance with the <em>minimum message size</em> by the AMQP, HTTP and MQTT
protocol adapters and then recorded in the metrics system.
See <a href="https://www.eclipse.org/hono/docs/api/metrics/#minimum-message-size">Metrics</a> for more details.</li>
</ul>
<h3 id="fixes--enhancements-33">Fixes &amp; Enhancements</h3>
<ul>
<li>The automatic reconnect handling of the <code>HonoConnection</code> implementation has been
improved and now applies an exponential back-off algorithm. The behavior can be
configured using the <code>${PREFIX}_RECONNECT_*</code> configuration variables. Please
refer to the <a href="https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/">Hono Client Configuration guide</a>
for details regarding these new variables.</li>
<li>The <em>message limit</em> checks is now extended to include command and control messages.
Please refer to the <a href="https://www.eclipse.org/hono/docs/concepts/resource-limits/">resource limits</a> for details.</li>
<li>The health check server endpoint will now bind to a default port value of 8088 if no values
are set explicitly in the configuration. It is also possible to start both a secure and an insecure
server (using different ports)
Refer to the <a href="https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config">Monitoring configuration guide</a>
for details.</li>
</ul>
<h3 id="api-changes-13">API Changes</h3>
<ul>
<li>With the implementation of the new HTTP management API for the device registry,
the class hierarchy for implementing device registry was significantly
refactored. This also includes the deprecation of a list of classes and tests.
Also see <a href="#device-registry-changes">Device registry changes</a> for more information.</li>
<li>The <em>complete</em> interfaces, and the <em>base</em> and <em>complete</em> implementation
classes for services got deprecated, and are planned to be removed in a future
release. Also see <a href="#device-registry-changes">Device registry changes</a> for
more information.</li>
<li>The example Device Registry that comes with Hono now implements the new
HTTP management API. Consequently, the URI endpoints for managing the content
of the registry have changed accordingly.</li>
<li>The configuration parameters for the health check endpoint were moved from
<code>hono.app</code> to <code>hono.healthCheck</code> and renamed. <code>hono.app.healthCheckPort</code> is now
<code>hono.healthCheck.insecurePort</code> and <code>hono.app.healthCheckBindAddress</code> is now
<code>hono.healthCheck.insecurePortBindAdress</code>. Please refer to the protocol adapter
<a href="https://www.eclipse.org/hono/docs/admin-guide/">configuration guides</a> for additional
information on the new naming.</li>
</ul>
<h3 id="device-registry-changes">Device registry changes</h3>
<p>The section summarizes changes made for 1.0-M5 in the device registry.</p>
<p>During the development of Hono 1.0, we defined a new HTTP API for managing
information stored in the device registry. This API replaces the current,
provisional API, which was originally intended for tests to manipulate the file
based device registry during system tests. The new HTTP based API is intended
to replace the existing HTTP API, as well as the management part of the AMQP
based API.</p>
<p>The first major change is, that all the <em>complete</em> classes got deprecated. As
they are based on the services for the protocol adapters. And those services
are no longer considered to be used for managing information. The replacement
for those classes are the new management APIs.</p>
<p>Each of the three APIs got a companion API for <em>management</em>, which are located
in the <code>org.eclipse.hono.service.management</code> base package.</p>
<p>The class hierarchy was decoupled in order to make it easier to implement those
services. The new design only requires to implement a service, which is not
based on any other interface. And while your concrete implement still can
implement the <code>Verticle</code> interface, this is no longer a requirement.</p>
<p>Also the <em>base</em> classes got deprecated. Instead of inheriting the common
functionality, to bind to the <em>event bus</em>, that functionality got moved into new
<em>event bus adapter</em> classes, which take the reference of a service, and bind
this service to the <em>event bus</em> instead of using inheritance. Those change
make it possible to  re-use much of the functionality, but do not impose the
requirement to inherit from either the <em>complete</em> or <em>base</em> classes. And
this finally allows your service implementation to be extend your specific
base class, and re-use common Hono functionality at the same time. This allows
service implementations to implement both the standard API, as well as the
management API in the same class. As Java does not allow inheritance
from multiple classes, this was not possible before.</p>
<p>The new default file based device registry, was modified to use the new class
hierarchy and support the new management model.</p>
<p>The device registry, which was provided in 1.0-M4 and before, is still part of
the source tree, but was moved to <code>services/device-registry-legacy</code>. It is
there to show the compatibility with the older class hierarchy, using the,
now deprecated, <em>base</em> and <em>complete</em> classes. Newer implementations should not
be build on this model.</p>
<p>Clients of the <em>base</em> variants of the services, like the protocol adapters,
do not need to make any changes.</p>
<p>Implementations of the device registry services, using the existing <em>base</em> and
<em>complete</em> can re-use that model, but are encouraged to migrate to the new model
as soon as possible, as the legacy model is planned to be removed. The only
impacting change is that the service interfaces no longer extend from
<code>Verticle</code> directly, but that has been moved to the <em>base</em> implementation.</p>
<p>Implementations of the services for protocol adapters (the non-management API),
can switch to the new class hierarchy by dropping inheritance to the <em>base</em>
class, and starting up a new instance of the corresponding <em>event bus adapter</em>,
providing a reference to the service. For the <code>RegistrationService</code> it is also
possible to inherit common functionality from <code>AbstractRegistrationService</code>.</p>
<p>Implementations of the services for management need to simply inherit from the
new management interfaces, and set up the <em>event bus adapters</em> the same way.</p>
<p>The module <code>device-registry-legacy</code> as well as all classes and interfaces,
which got deprecated, are planned to be dropped in 1.1.</p>
<h2 id="10-m5">1.0-M5</h2>
<h3 id="new-features-12">New Features</h3>
<ul>
<li>Hono&rsquo;s protocol adapters and the other components now support using ECC based server certificates.
The protocol adapters also support authenticating devices which present an ECC based client certificate.
The example configuration now uses ECC based certificates by default.</li>
<li>Hono now specifies a <a href="https://www.eclipse.org/hono/docs/api/device-connection/">Device Connection API</a> and
contains an exemplary implementation of this API included in the device registry component. The purpose of the API is
to be able to set and retrieve information about the connections from devices or gateways to the protocol adapters.</li>
<li>This version implements the new HTTP management API for tenants, devices, and credentials.</li>
</ul>
<h3 id="fixes--enhancements-34">Fixes &amp; Enhancements</h3>
<ul>
<li>The Hono Sandbox&rsquo;s protocol adapters support using the gateway mode again.</li>
<li>The <a href="/hono/getting-started/">Getting Started</a> guide has been rewritten
to use the <a href="/hono/sandbox/">Hono Sandbox</a> or a local Minikube cluster
instead of Docker Swarm.</li>
<li>The MQTT adapter now closes the network connection to device on publish failures.</li>
</ul>
<h3 id="api-changes-14">API Changes</h3>
<ul>
<li>The optional methods of the <a href="https://www.eclipse.org/hono/docs/api/tenant/">Tenant API</a> have been
removed. Implementations of the Tenant API are encouraged to expose the <em>tenants</em> endpoint defined by
<a href="https://www.eclipse.org/hono/docs/api/management">Hono&rsquo;s HTTP based management API</a> instead.
Several of the formerly mandatory to include properties of the request and response messages have
been made optional or removed altogether. Existing clients should not be affected by these changes, though.</li>
<li>The optional methods of the
<a href="https://www.eclipse.org/hono/docs/api/device-registration/">Device Registration API</a> have been
removed. Implementations of the Device Registration API are encouraged to expose the <em>devices</em> endpoint defined by
<a href="https://www.eclipse.org/hono/docs/api/management">Hono&rsquo;s HTTP based management API</a> instead.
Several of the formerly mandatory to include properties of the request and response messages have
been made optional or removed altogether. Existing clients should not be affected by these changes, though.</li>
<li>The response message format of the <em>assert Device Registration</em> operation of the Device Registration API
has been changed, replacing the optional <code>gw-supported</code> boolean field with an optional <code>via</code> field.
The value of this field contains the list of gateway that may act on behalf of the device on which
the operation is invoked.</li>
<li>The methods for invoking the optional operations of the Device Registration API have been removed
from <code>org.eclipse.hono.client.RegistrationClient</code> and <code>org.eclipse.hono.client.impl.RegistrationClientImpl</code>.</li>
<li>The optional methods of the <a href="https://www.eclipse.org/hono/docs/api/credentials/">Credentials API</a>
have been removed. Implementations of the Credentials API are encouraged to expose the <em>credentials</em> endpoint defined
by <a href="https://www.eclipse.org/hono/docs/api/management">Hono&rsquo;s HTTP based management API</a> instead.
Several of the formerly mandatory to include properties of the request and response messages have
been made optional or removed altogether. Existing clients should not be affected by these changes, though.</li>
<li>The <code>control</code> prefix in the northbound and southbound Command &amp; Control endpoints has been renamed to <code>command</code>.
The endpoint names with the <code>control</code> prefix are still supported but deprecated. The northbound endpoint for
<em>business applications</em> to receive command responses has the <code>command_response</code> prefix now. The old <code>control</code> prefix
for the receiver address is also still supported but deprecated.</li>
<li>The <code>deviceId</code> parameter of the <code>getOrCreateCommandClient</code> and <code>getOrCreateAsyncCommandClient</code> methods of the
<code>org.eclipse.hono.client.ApplicationClientFactory</code> interface has been removed.
This means that a <code>CommandClient</code> or <code>AsyncCommandClient</code> instance can be used to send commands to arbitrary
devices of a tenant now. Accordingly, the <code>CommandClient.sendCommand</code> and <code>AsyncCommandClient.sendAsyncCommand</code>
methods now require an additional <code>deviceId</code> parameter.</li>
<li>The deprecated methods of <code>org.eclipse.hono.client.HonoConnection</code> have been removed.</li>
</ul>
<h2 id="10-m4">1.0-M4</h2>
<h3 id="new-features-13">New Features</h3>
<ul>
<li>Default properties can now also be set at the tenant level, affecting all devices
belonging to the tenant. Please refer to the
<a href="https://www.eclipse.org/hono/docs/user-guide/">protocol adapter user guides</a> for details.</li>
<li><code>CredentialsClientImpl</code> now supports caching of response data received from a Credentials service based on
<em>cache directives</em>. The protocol adapters are now equipped to cache the response from the Credentials Service.
The protocol adapters support configuration variables to set the default cache timeout, the minimum
and maximum cache sizes for this service.</li>
<li>The example device registry&rsquo;s Credentials service implementation now includes a <em>cache directive</em>
in its response to the <em>get Credentials</em> operation which allows clients to cache credentials of
type <em>hashed-password</em> and <em>x509-cert</em> for a configurable amount of time. Please refer to the
<a href="https://www.eclipse.org/hono/docs/admin-guide/device-registry-config/">Device Registry Admin Guide</a>
for details regarding the configuration properties to use.</li>
<li>There is now an official specification of an HTTP API for managing the content of a device registry.
The <a href="https://www.eclipse.org/hono/docs/api/management">HTTP Management API</a> is defined using by
means of OpenAPI v3. Note, that the API is not yet implemented by the example device registry that comes with Hono.</li>
<li>The Command &amp; Control feature now supports gateway agnostic addressing of devices. This means that applications are
able to send commands to devices without knowing the particular gateway they may be connected to.</li>
<li>The concept and implementation of <em>message limit</em> have been added. The protocol adapters can be now
enabled to verify this <em>message limit</em> for each tenant before accepting any telemetry/event messages.
Please refer to the <a href="https://www.eclipse.org/hono/docs/concepts/resource-limits/">resource limits</a> for details.</li>
<li>A basic Sigfox protocol adapter, for use with the Sigfox backend. Please read
the <a href="https://www.eclipse.org/hono/docs/user-guide/sigfox-adapter/">Sigfox protocol adapter</a>
documentation to learn more about pre-requisites and limitations.</li>
</ul>
<h3 id="fixes--enhancements-35">Fixes &amp; Enhancements</h3>
<ul>
<li>vert.x has been updated to version 3.7.0.</li>
</ul>
<h3 id="api-changes-15">API Changes</h3>
<ul>
<li>The <code>org.eclipse.hono.util.RegistrationConstants.FIELD_DEFAULTS</code> constant
has been renamed to <code>org.eclipse.hono.util.RegistrationConstants.FIELD_PAYLOAD_DEFAULTS</code>.</li>
<li>The <code>org.eclipse.hono.service.AbstractProtocolAdapterBase.newMessage</code> and
<code>org.eclipse.hono.service.AbstractProtocolAdapterBase.addProperties</code> methods have
been changed to accept an additional parameter of type <code>TenantObject</code> which may contain default
properties defined for the tenant to be included in downstream messages.</li>
<li>The <em>get Registration Information</em> operation of the Device Registration API is not optional anymore,
it is now mandatory to implement. For device registry implementations based on the
<code>CompleteRegistrationService</code> interface, there is no change needed as the operation is already
defined there.</li>
<li>The response message of the <em>assert Device Registration</em> operation does not contain an assertion
token anymore. The <code>org.eclipse.hono.service.registration.BaseRegistrationService</code> class
has been adapted accordingly.</li>
<li>The already deprecated <code>org.eclipse.hono.client.CommandConsumerFactory.closeCommandConsumer</code>
method has been removed.</li>
<li>The response message format of the <em>assert Device Registration</em> operation of the Device Registration API
has been changed to include an optional <code>gw-supported</code> boolean field. The value of this field refers to
whether the device on which the operation is invoked allows one or more gateways to act on its behalf.</li>
<li>The AMQP sender link address to be used by <em>business applications</em> to send commands to devices has been
changed from <code>control/${tenant_id}/${device_id}</code> to <code>control/${tenant_id}</code> with command messages requiring
the <code>to</code> property to be set to <code>control/${tenant_id}/${device_id}</code>. Using <code>control/${tenant_id}/${device_id}</code>
as sender link address is still possible but gateway agnostic addressing of devices is not supported for
such command messages.</li>
</ul>
<h3 id="deprecations-7">Deprecations</h3>
<ul>
<li>Instructions for script based deployment to Kubernetes have been removed from the deployment guide.
Using Helm is now the only supported way of deploying Hono to Kubernetes.</li>
</ul>
<h2 id="10-m3">1.0-M3</h2>
<h3 id="fixes--enhancements-36">Fixes &amp; Enhancements</h3>
<ul>
<li>The protocol adapters add tracing information about invocations of the Device Registry
services again.</li>
<li>The example deployment now uses Qpid Dispatch Router 1.6.0.</li>
</ul>
<h2 id="10-m2">1.0-M2</h2>
<h3 id="new-features-14">New Features</h3>
<ul>
<li>A new <em>experimental</em> LoRa protocol adapter has been added which (so far) supports the reception
of telemetry data and events from devices connected to LoRa network providers and/or
LoRa gateways. Note that this adapter is <em>not</em> considered production ready yet.
Any help in improving and enhancing the adapter is more than welcome.</li>
<li>The concept and implementation of <em>resource limits</em> have been added. Now a connection limit to define
the maximum number of device connections to be allowed per tenant can be configured. The MQTT and AMQP
adapters can be enabled to verify this connection limit before accepting any new connections. Please
refer to the <a href="https://www.eclipse.org/hono/docs/concepts/resource-limits/">resource limits</a> for details.</li>
</ul>
<h3 id="fixes--enhancements-37">Fixes &amp; Enhancements</h3>
<ul>
<li>The base classes for implementing the AMQP and HTTP endpoints for the Credentials, Tenant
and Device Registration APIs now create an OpenTracing Span for tracking the
processing of requests at a high level.</li>
<li>The <code>hono-client</code> and <code>hono-core</code> artifacts use Java 8 level again so that they
can be used in applications using Java 8.</li>
<li>The protocol adapters now always specify values for the <em>ttd</em> and <em>qos</em> tags when
reporting telemetry messages using meter name <em>hono.messages.received</em>. This fixes
an issue when using the Prometheus back end where the HTTP adapter failed to report
messages that contained a TTD value and others that didn&rsquo;t.</li>
<li>The Helm based deployment of the device registry has been fixed by adding the secret
and deployment entries for the <code>device-identities.json</code>.</li>
<li>Before uploading command responses, the MQTT and AMQP adapters now check whether the device is
registered and also the adapter is enabled for the tenant.</li>
</ul>
<h3 id="api-changes-16">API Changes</h3>
<ul>
<li>The <code>hono-client</code> module has undergone several major and incompatible changes. The most
important change affects the <code>HonoClient</code> interface which no longer serves as a factory
for the arbitrary clients to the Hono service endpoints.
It has been renamed to <code>HonoConnection</code> and now only represents the underlying
AMQP connection to a peer and provides methods for managing the connection state
and registering listeners for arbitrary life-cycle events of the connection.
In addition to this, several factory interfaces have been added which can be used
to create specific clients to Hono&rsquo;s arbitrary services. All of the former <code>HonoClient</code>
interface&rsquo;s factory methods have been distributed accordingly to:
<ul>
<li><code>org.eclipse.hono.client.ApplicationClientFactory</code> for creating clients to
Hono&rsquo;s north bound Telemetry, Event and Command &amp; Control API.</li>
<li><code>org.eclipse.hono.client.DownstreamSenderFactory</code> for creating clients to
Hono&rsquo;s south bound Telemetry and Event APIs.</li>
<li><code>org.eclipse.hono.client.CommandConsumerFactory</code> for creating clients to
Hono&rsquo;s south bound Command &amp; Control API.</li>
<li><code>org.eclipse.hono.client.TenantClientFactory</code> for creating clients to
Hono&rsquo;s Tenant API.</li>
<li><code>org.eclipse.hono.client.RegistrationClientFactory</code> for creating clients to
Hono&rsquo;s Device Registration API.</li>
<li><code>org.eclipse.hono.client.CredentialsClientFactory</code> for creating clients to
Hono&rsquo;s Credentials API.</li>
</ul>
</li>
<li>In this context the <code>org.eclipse.hono.client.MessageSender</code> interface has been changed as follows:
<ul>
<li>The <em>send</em> methods have been changed to no longer accept a <em>registration assertion token</em>
which became obsolete with the removal of the <em>Hono Messaging</em> component.</li>
<li>The <em>isRegistrationAssertionRequired</em> method has been removed from the interface.</li>
<li>All <em>send</em> method variants which accept specific message parameters have been moved into
the new <code>org.eclipse.hono.client.DownstreamSender</code> interface which extends the existing
<code>MessageSender</code>.</li>
</ul>
</li>
<li>Several changes have been made to the <code>org.eclipse.hono.service.AbstractProtocolAdapterBase</code>
class:
<ul>
<li>The <em>newMessage</em> and <em>addProperties</em> methods no longer require a boolean parameter indicating
whether to include the assertion token in the message being created/amended.
Custom protocol adapters should simply omit the corresponding parameter.</li>
<li>The base class now uses <code>org.eclipse.hono.client.CommandConsumerFactory</code> instead of
<code>org.eclipse.hono.client.CommandConnection</code> for creating
<code>org.eclipse.hono.client.CommandConsumer</code> instances.
The <em>setCommandConnection</em> and <em>getCommandConnection</em> methods have been
renamed to <em>setCommandConsumerFactory</em> and <em>getCommandConsumerFactory</em>
correspondingly.</li>
<li>The base class now uses <code>org.eclipse.hono.client.TenantClientFactory</code> instead of
<code>org.eclipse.hono.client.HonoClient</code> for creating <code>org.eclipse.hono.client.TenantClient</code>
instances.
The <em>setTenantServiceClient</em> and <em>getTenantServiceClient</em> methods have been
renamed to <em>setTenantClientFactory</em> and <em>getTenantClientFactory</em> correspondingly.</li>
<li>The base class now uses <code>org.eclipse.hono.client.RegistrationClientFactory</code> instead of
<code>org.eclipse.hono.client.HonoClient</code> for creating
<code>org.eclipse.hono.client.RegistrationClient</code> instances.
The <em>setRegistrationServiceClient</em> and <em>getRegistrationServiceClient</em> methods have been
renamed to <em>setRegistrationClientFactory</em> and <em>getRegistrationClientFactory</em> correspondingly.</li>
<li>The base class now uses <code>org.eclipse.hono.client.CredentialsClientFactory</code> instead of
<code>org.eclipse.hono.client.HonoClient</code> for creating
<code>org.eclipse.hono.client.CredentialsClient</code> instances.
The <em>setCredentialsServiceClient</em> and <em>getCredentialsServiceClient</em> methods have been
renamed to <em>setCredentialsClientFactory</em> and <em>getCredentialsClientFactory</em> correspondingly.</li>
<li>The base class now uses <code>org.eclipse.hono.client.DownstreamSendertFactory</code> instead of
<code>org.eclipse.hono.client.HonoClient</code> for creating
<code>org.eclipse.hono.client.DownstreamSender</code> instances.
The <em>setHonoMessagingClient</em> and <em>getHonoMessagingClient</em> methods have been
renamed to <em>setDownstreamSenderFactory</em> and <em>getDownstreamSenderFactory</em> correspondingly.</li>
</ul>
</li>
<li>The <code>org.eclipse.hono.service.auth.device.UsernamePasswordAuthProvider</code> and the
<code>org.eclipse.hono.service.auth.device.X509AuthProvider</code> now accept a
<code>org.eclipse.hono.client.CredentialsClientFactory</code> instead of a
<code>org.eclipse.hono.client.HonoClient</code> in their constructors.</li>
<li>The <code>org.eclipse.hono.adapter.http.HonoBasicAuthHandler</code> and
<code>org.eclipse.hono.adapter.http.X509AuthHandler</code> classes have been moved to
package <code>org.eclipse.hono.service.http</code> in the <em>service-base</em> module for
consistency reasons as all other reusable classes for implementing HTTP services/
adapters are located in that package already.</li>
<li>The <code>org.eclipse.hono.client.HonoClient</code> class has been renamed to
<code>org.eclipse.hono.client.HonoConnection</code> to better reflect its sole responsibility
for establishing (and maintaining) the connection to a Hono service endpoint.</li>
</ul>
<h3 id="deprecations-8">Deprecations</h3>
<ul>
<li>The optional operations defined by the Tenant, Device Registration and Credentials API
have been deprecated. They will be removed from Hono 1.0 altogether.
A new HTTP based API will be defined instead which can then be used to <em>manage</em> the content
of a device registry.</li>
<li><code>org.eclipse.hono.client.HonoConnection</code>&rsquo;s <em>connect</em> method variants accepting
a disconnect handler have been deprecated and will be removed in Hono 1.0.
Client code should use one of the other <em>connect</em> methods instead and register a
<code>org.eclipse.hono.client.DisconnectListener</code> and/or a
<code>org.eclipse.hono.client.ReconnectListener</code> to get notified about life-cycle
events of the underlying AMQP connection.</li>
</ul>
<h2 id="10-m1">1.0-M1</h2>
<h3 id="new-features-15">New Features</h3>
<ul>
<li>The AMQP adapter now supports limiting the number of concurrent connections in order
to prevent Out of Memory errors. Please refer to
<a href="https://www.eclipse.org/hono/docs/admin-guide/amqp-adapter-config/">AMQP Adapter Configuration</a> for details.</li>
<li>The <code>org.eclipse.hono.client.AsyncCommandClient</code> has been added to support the sending of
commands to devices and the receiving of responses in an asynchronous way. This can be used
to decouple the sender and receiver from each other.</li>
<li>The <code>org.eclipse.hono.service.tenant.CompleteBaseTenantService</code> class now rejects malformed
encodings of public keys/certificates included in a request to add a trust anchor to a tenant.</li>
</ul>
<h3 id="deprecations-9">Deprecations</h3>
<ul>
<li>The <code>HonoClient.closeCommandConsumer()</code> method will be removed in Hono 1.0.
The <code>CommandConsumer.close()</code> method should be used instead.</li>
</ul>
<h2 id="09">0.9</h2>
<h3 id="new-features-16">New Features</h3>
<ul>
<li>The MQTT adapter now supports commands to be published using QoS 1. Please refer to
<a href="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/">MQTT adapter User Guide</a> for details.</li>
<li>The MQTT adapter now supports limiting the number of concurrent connections in order
to prevent running out of resources. Please refer to
<a href="https://www.eclipse.org/hono/docs/admin-guide/mqtt-adapter-config/">MQTT Adapter Configuration</a> for details.</li>
<li>The new <em>Helm deployment</em> for Kubernetes has been added. Please refer to
<a href="https://www.eclipse.org/hono/docs/deployment/helm-based-deployment/">Helm based deployment guide</a> for details.</li>
</ul>
<h3 id="fixes--enhancements-38">Fixes &amp; Enhancements</h3>
<ul>
<li><code>org.eclipse.hono.util.RequestResponseResult</code> now provides access to AMQP application-properties conveyed in the
response message.</li>
<li>The <code>org.eclipse.hono.service.registration.BaseRegistrationService</code> class now supports authorization of gateways
(acting on behalf of a device) against a list of gateway identifiers instead of a single identifier only. For that purpose
the <code>via</code> property of the device&rsquo;s registration information may contain either a single string or a JSON array containing
multiple strings. Based on this, a device can now be configured to connect via arbitrary gateways instead of just a single
one.</li>
</ul>
<h3 id="api-changes-17">API Changes</h3>
<ul>
<li>The layout and structure of the metrics reported by Hono have been changed substantially. Many of the existing meters and tags
have been changed or replaced in order to provide a more consistent set of metrics and increase the value of the information
being reported. The legacy metrics still remain unchanged, though.
Please refer to the <a href="https://www.eclipse.org/hono/docs/api/metrics/">Metrics definition</a> for details.</li>
<li>In case of a failed connection attempt, <code>HonoClientImpl</code> will now determine based on the error whether it will re-try
to connect to the peer. Before, reconnect attempts were done unconditionally, by default infinitely or up to the
number of times defined in the <em>reconnectAttempts</em> property in the <code>ClientConfigProperties</code>. Now, when the outcome
of the SASL handshake received from the peer during connection establishment indicates that invalid credentials were
provided or that the server encountered a permanent error when handling the request, no further reconnect attempts
will be done.</li>
<li>The deprecated methods have been removed from <code>org.eclipse.hono.client.MessageSender</code> and
its implementations.</li>
<li>The Command &amp; Control API&rsquo;s <em>send a request/response command</em> operation has been changed. The response
message to a command now must include the device and tenant identifiers of the device. Including
these two properties should make it much easier to implement competing command response consumers
in business applications.
As a consequence, the <code>org.eclipse.hono.client.CommandResponse</code>&rsquo;s factory methods have been changed to
accept the tenant and device IDs as parameters.</li>
<li>The <em>connectTimeout</em> configuration variable for the <code>HonoClient</code> now defines the time to wait not only for the TCP/TLS
connection establishment but also for the SASL handshake and the exchange of the AMQP <em>open</em> frame.</li>
<li>The (already deprecated) Hono Messaging component has been removed from Hono.</li>
</ul>
<h3 id="deprecations-10">Deprecations</h3>
<ul>
<li>The script based deployment to Kubernetes has been deprecated and will be removed in the next version.
The Helm based deployment should be used instead.</li>
<li>The <em>sendCommandResponse(String, String, Buffer, Map, int, SpanContext)</em> of the
<code>org.eclipse.hono.client.CommandResponseSender</code> interface has been deprecated and
will be removed in the next version. Custom protocol adapters should use
<em>sendCommandResponse(CommandResponse, SpanContext)</em> instead.</li>
</ul>
<h2 id="09-m2">0.9-M2</h2>
<h3 id="new-features-17">New Features</h3>
<ul>
<li>The MQTT protocol adapter now supports authentication of devices using X.509 client certificates. Please refer to
the <a href="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/">MQTT adapter user guide</a> for details regarding configuration.</li>
</ul>
<h3 id="fixes--enhancements-39">Fixes &amp; Enhancements</h3>
<ul>
<li>
<p>The OpenShift <em>source-to-image</em> (S2I) deployment is now the default
OpenShift / OKD deployment. The plain OpenShift deployment, which had been deprecated
in Hono 0.8, has been removed.</p>
</li>
<li>
<p>The protocol adapters can now be configured with a custom <em>DNS timeout</em> value, limiting the time that the adapter
will wait for the response to a DNS query. By default, a DNS query will time out after 5 seconds.
Please refer to the protocol adapter admin guides for details regarding the new configuration variable.</p>
</li>
<li>
<p>The following configuration variables have been added to <code>HonoClient</code>:</p>
<ul>
<li>
<p><em>connectTimeout</em>: Sets a limit on the time that the client will wait for a TCP/TLS connection with the peer
to be established. By default, a connection attempt will time out after 5 seconds.</p>
</li>
<li>
<p><em>idleTimeout</em>: The idle timeout defines the amount of time after which a connection will be closed when no frames
have been received from the remote peer. The default value is 16 seconds.</p>
</li>
<li>
<p><em>sendMessageTimeout</em>: Limits the time to wait for a downstream consumer&rsquo;s acknowledgement of
an event or command response message received from a device. The default value is 1 second.</p>
<p>Please refer to the <a href="https://www.eclipse.org/hono/docs/admin-guide/hono-client-configuration/">Hono Client Configuration guide</a>
for details regarding the new configuration variables.</p>
</li>
</ul>
</li>
</ul>
<h3 id="api-changes-18">API Changes</h3>
<ul>
<li>Some of the <em>tags</em> used by Hono&rsquo;s components when reporting metrics have been changed. The common tag <em>component</em>
has been renamed to <em>component-type</em>. The <em>protocol</em> tag formerly used by adapters to indicate the transport protocol
that a message has been received over, has been replaced by the generic <em>component-name</em> tag which indicates the name
of the component that a metric has been reported by. Please refer to the <a href="https://www.eclipse.org/hono/docs/api/metrics/">Metrics API</a>
for details. Note that these changes do not affect the legacy Graphite based metrics back end.</li>
</ul>
<h3 id="deprecations-11">Deprecations</h3>
<ul>
<li>The Hono Messaging component is now  deprecated and will be removed from Hono in version 0.9 altogether.
The example deployment has not been using Hono Messaging since 0.6 and there is no practical reason for
using it anymore.</li>
</ul>
<h2 id="09-m1">0.9-M1</h2>
<h3 id="new-features-18">New Features</h3>
<ul>
<li>The default Micrometer back end is now Prometheus, the Grafana dash boards have been updated
to retrieve data from Prometheus instead of the old InfluxDB.
The Graphite based legacy metrics format can still be used but requires building Hono from source and activating
the <code>metrics-graphite</code> Maven build profile.
Please refer to the <a href="https://www.eclipse.org/hono/docs/admin-guide/monitoring-tracing-config/">Monitoring admin guide</a> for details.</li>
<li>The <code>org.eclipse.hono.service.credentials.CompleteBaseCredentialsService</code> class now supports the transparent
<em>on-the-fly</em> hashing of clear text passwords contained in <em>hashed-password</em> credentials. Please refer to the
<a href="https://www.eclipse.org/hono/docs/user-guide/device-registry/#managing-credentials">Device Registry user guide</a> for details.</li>
</ul>
<h3 id="fixes--enhancements-40">Fixes &amp; Enhancements</h3>
<ul>
<li>The base classes for implementing the Device Registration and Tenant APIs have been instrumented
with OpenTracing. New variants of the <code>RegistrationService.assertRegistration</code>, <code>TenantService.get</code> and <code>CredentialsService.get</code>
methods have been added which also accept an OpenTracing span as a parameter.
The default implementations of these methods still default to the previously existing methods.
In <code>RegistrationService</code> implementations based on <code>BaseRegistrationService</code> an OpenTracing span will be created,
passed on to the <code>assertRegistration</code> method and finished eventually. The same applies to <code>TenantService</code> implementations
based on <code>BaseTenantService</code> concerning the <code>get</code> method and to <code>CredentialsService</code> implementations based on
<code>BaseCredentialsService</code> concerning the <code>get</code> method.</li>
</ul>
<h3 id="api-changes-19">API Changes</h3>
<ul>
<li>The <code>org.eclipse.hono.service.credentials.CompleteBaseCredentialsService</code> class now requires an
<code>org.eclipse.hono.auth.HonoPasswordEncoder</code> to be passed into its constructor.
The <code>org.eclipse.hono.auth.SpringBasedHonoPasswordEncoder</code> has been added as a default implementation for
this purpose.</li>
<li>The <a href="https://www.eclipse.org/hono/docs/api/tenant/#trusted-ca-format">Tenant API</a> now optionally allows specifying an
X.509 certificate instead of a public key when defining a trusted CA.</li>
</ul>

                        </div>

                    </div>

                </div>
                

            </div>
            

            
        </div>
        

        <footer id="footer">
    <div class="container">

        <div class="col-md-4 col-sm-6">
            <h4>More</h4>

            <ul>
                <li><a href="https://github.com/eclipse/hono" title="View Source Code on GitHub"><i class='fab fa-github'></i> GitHub Repository</a></li>
                <li><a href="https://twitter.com/EclipseHono" title="Follow us on Twitter"><i class='fab fa-twitter'></i> Twitter</a></li>
                <li><a href="https://gitter.im/eclipse/hono" title="Chat with us on Gitter"><i class='fab fa-gitter'></i> Chat with us</a></li>
                <li><a href='/hono/community/thankyou/'>Thank you</a></li>
            </ul>

            <hr class="hidden-md hidden-lg hidden-sm">

        </div>
        

        <div class="col-md-4 col-sm-6">

            <h4>Eclipse Legal</h4>

            <ul>
                <li><a href="http://www.eclipse.org/legal/privacy.php" target="_blank">Privacy Policy</a></li>
                <li><a href="http://www.eclipse.org/legal/termsofuse.php" target="_blank">Terms of Use</a></li>
                <li><a href="http://www.eclipse.org/legal/copyright.php" target="_blank">Copyright Agent</a></li>
                <li><a href="http://www.eclipse.org/legal/" target="_blank">Legal</a></li>
                <li><a href="https://www.eclipse.org/legal/epl-2.0/" target="_blank">License</a></li>
                <li><a href="https://eclipse.org/security/" target="_blank">Report a Vulnerability</a></li>
            </ul>

            <hr class="hidden-md hidden-lg">

        </div>
        

        <div class="col-md-4 col-sm-6">

            <div class="eclipse-logos">
                <div class="pull-left">
                    <a href="https://www.eclipse.org" target="_blank">
                        <img src="https://www.eclipse.org/hono/img/eclipse_foundation_logo_wo.svg" id="logo-eclipse-foundation"/>
                    </a>
                </div>
                <div class="pull-right">
                    <a href="https://iot.eclipse.org" target="_blank">
                        <img src="https://www.eclipse.org/hono/img/iot-logo.png"/>
                    </a>
                </div>
            </div>

        </div>
        

    </div>
    
</footer>







<div id="copyright">
    <div class="container">
        <div class="col-md-12">
            
            <p class="pull-left">&copy; 2019-2021 The Eclipse Hono Project</p>
            
            <p class="pull-right">
              Template by <a href="https://bootstrapious.com/p/universal-business-e-commerce-template">Bootstrapious</a>.
              

              Ported to Hugo by <a href="https://github.com/devcows/hugo-universal-theme">DevCows</a>.
            </p>
        </div>
    </div>
</div>





    </div>
    

    
<script src="//code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/waypoints/4.0.1/jquery.waypoints.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/Counter-Up/1.0/jquery.counterup.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery-parallax/1.1.3/jquery-parallax.js"></script>

<script src="/hono/js/front.js"></script>


<script src="/hono/js/owl.carousel.min.js"></script>



<script>
    (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
            new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
        j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
        'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
    })(window,document,'script','dataLayer','GTM-5WLCZXC');
</script>


<script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>

<script src="//iot.eclipse.org/assets/js/eclipsefdn.adopters.js"></script>
<script>
    eclipseFdnAdopters.getList({
        project_id: "iot.hono",
        selector: ".eclipsefdn-adopters",
        logo_white: true
    });
</script>


  </body>
</html>
