<!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>Release Notes :: Eclipse Hono&trade;</title>
  <meta name="author" content="" />

  

  
  <meta name="description" content="A set of micro-services for connecting millions of devices.">	
  

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

  <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="https://use.fontawesome.com/releases/v5.8.2/css/all.css" integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay" crossorigin="anonymous">
  <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="https://www.eclipse.org/hono//index.xml" type="application/rss+xml" title="Eclipse Hono&amp;trade;">

  
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:site" content="@EclipseHono">
  <meta name="twitter:title" content="Release Notes :: Eclipse Hono&amp;trade;">
  <meta name="twitter:image" content="https://www.eclipse.org/hono/img/twitter_image.png">
  <meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">

  
  <meta property="og:title" content="Release Notes :: Eclipse Hono&amp;trade;" />
  <meta property="og:type" content="website" />
  <meta property="og:url" content="https://www.eclipse.org/hono/release-notes//" />
  <meta property="og:image" content="https://www.eclipse.org/hono/img/twitter_image.png" />

  <link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">

</head>


  <body>

    <div id="all">

        <header>

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

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

        <div class="container">
            <div class="navbar-header">
                <a class="navbar-brand home" href="https://www.eclipse.org/hono/">
                    <img src="https://www.eclipse.org/hono/img/HONO-Logo_Bild-Wort_quer-s-310x120px.svg" alt="Release Notes logo" class="logo">
                    <span class="sr-only">Release Notes - 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="fa 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>
                      
                    </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="fa 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>Release Notes</h1>
            </div>
        </div>
    </div>
</div>


        <div id="content">
            

            <div class="container">

                <div class="row">

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

                        <div>
                          

<h2 id="1-5-0-not-yet-released">1.5.0 (not yet released)</h2>

<h3 id="new-features">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">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">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">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="1-4-4">1.4.4</h2>

<h3 id="fixes-enhancements-1">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="1-4-3">1.4.3</h2>

<h3 id="fixes-enhancements-2">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-1">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="1-4-0">1.4.0</h2>

<h3 id="new-features-1">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-3">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">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="1-3-2">1.3.2</h2>

<h3 id="fixes-enhancements-4">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="1-3-1">1.3.1</h2>

<h3 id="fixes-enhancements-5">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-2">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="1-3-0">1.3.0</h2>

<h3 id="new-features-2">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-6">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-3">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-1">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="1-2-4">1.2.4</h2>

<h3 id="fixes-enhancements-7">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="1-2-3">1.2.3</h2>

<h3 id="fixes-enhancements-8">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-4">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="1-2-2">1.2.2</h2>

<h3 id="fixes-enhancements-9">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="1-2-1">1.2.1</h2>

<h3 id="fixes-enhancements-10">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&rsquo; 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="1-2-0">1.2.0</h2>

<h3 id="new-features-3">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-11">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>
</ul>

<h3 id="api-changes-5">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="1-1-2">1.1.2</h2>

<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="1-1-1">1.1.1</h2>

<h3 id="fixes-enhancements-12">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="1-1-0">1.1.0</h2>

<h3 id="new-features-4">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/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-13">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-7">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="1-0-4">1.0.4</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="1-0-3">1.0.3</h2>

<h3 id="fixes-enhancements-14">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="1-0-2">1.0.2</h2>

<h3 id="fixes-enhancements-15">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="1-0-1">1.0.1</h2>

<h3 id="fixes-enhancements-16">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="1-0-0">1.0.0</h2>

<h3 id="new-features-5">New Features</h3>

<ul>
<li>A tenant can now be configured with a <em>max-ttl</em> which is used as a 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.<br /></li>
</ul>

<h3 id="api-changes-9">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-2">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="1-0-m7">1.0-M7</h2>

<h3 id="new-features-6">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-10">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.<br /></li>
</ul>

<h3 id="deprecations-3">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="1-0-m6">1.0-M6</h2>

<h3 id="new-features-7">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-17">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-11">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="1-0-m5">1.0-M5</h2>

<h3 id="new-features-8">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-18">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-12">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="1-0-m4">1.0-M4</h2>

<h3 id="new-features-9">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-19">Fixes &amp; Enhancements</h3>

<ul>
<li>vert.x has been updated to version 3.7.0.</li>
</ul>

<h3 id="api-changes-13">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-4">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="1-0-m3">1.0-M3</h2>

<h3 id="fixes-enhancements-20">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="1-0-m2">1.0-M2</h2>

<h3 id="new-features-10">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-21">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-14">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-5">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="1-0-m1">1.0-M1</h2>

<h3 id="new-features-11">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-6">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="0-9">0.9</h2>

<h3 id="new-features-12">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-22">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-15">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-7">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="0-9-m2">0.9-M2</h2>

<h3 id="new-features-13">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-23">Fixes &amp; Enhancements</h3>

<ul>
<li>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.</li>
<li>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.</li>

<li><p>The following configuration variables have been added to <code>HonoClient</code>:</p>

<ul>
<li><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.</li>
<li><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.</li>
<li><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.</li>
</ul>

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

<h3 id="api-changes-16">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-8">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="0-9-m1">0.9-M1</h2>

<h3 id="new-features-14">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-24">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-17">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/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 The Eclipse Hono Project</p>
            
            <p class="pull-right">
                Template by <a href="http://bootstrapious.com/free-templates">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="https://www.eclipse.org/hono/js/front.js"></script>


<script src="https://www.eclipse.org/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="https://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>
